Move adsal into its own subdirectory.
[controller.git] / opendaylight / samples / clustersession / src / main / java / org / opendaylight / controller / clustersession / ClusterSessionUtil.java
diff --git a/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionUtil.java b/opendaylight/samples/clustersession/src/main/java/org/opendaylight/controller/clustersession/ClusterSessionUtil.java
deleted file mode 100644 (file)
index 01fad1a..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
- *
- */
-package org.opendaylight.controller.clustersession;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.security.Principal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.apache.catalina.authenticator.Constants;
-import org.apache.catalina.authenticator.SavedRequest;
-import org.apache.catalina.ha.session.SerializablePrincipal;
-import org.apache.catalina.realm.GenericPrincipal;
-import org.opendaylight.controller.clustersession.service.ClusterSessionService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ClusterSessionUtil will be used to convert ClusterSession object into ClusterSessionData object,
- * which is serializable and can be passed for storage. This class also perform deserialization to
- * create ClusterSession object
- * @author harman singh
- *
- */
-
-public class ClusterSessionUtil {
-
-  private static final Logger LOGGER = LoggerFactory.getLogger(ClusterSessionUtil.class);
-
-  private ClusterSessionUtil() {
-
-  }
-
-  /**
-   * Serialize the ClusterSession object to provide ClusterSessionData object,
-   * that will be used for storage like in inifinispan or memcache etc.
-   * @param session an instance of ClusterSession
-   * @return an instance of ClusterSessionData
-   */
-  public static ClusterSessionData getSerializableSession(ClusterSession session) {
-    if(session == null){
-      return null;
-    }
-    ClusterSessionData sessionData = new ClusterSessionData();
-    sessionData.setSession(session);
-    sessionData.setAuthType(session.getAuthType());
-    sessionData.setPrincipalData(serializePrincipal(session.getPrincipal()));
-    sessionData.setSavedRequestData(serializeSavedRequest(session.getNote(Constants.FORM_REQUEST_NOTE)));
-    Principal notePrincipal = (Principal) session.getNote(Constants.FORM_PRINCIPAL_NOTE);
-    byte[] principalBytes = serializePrincipal(notePrincipal);
-    sessionData.setSavedPrincipalData(principalBytes);
-    if(session.getPrincipal() == null && notePrincipal != null){
-      sessionData.setPrincipalData(principalBytes);
-    }
-    sessionData.setUserName((String) session.getNote(Constants.FORM_USERNAME));
-    sessionData.setPassword((String) session.getNote(Constants.FORM_PASSWORD));
-    return sessionData;
-  }
-
-  /**
-   * Deserialize the ClusterSessionData object that usually comes from storage
-   * to provide ClusterSession object,
-   * that will be used by Session Manager
-   * @param sessionData an instance of ClusterSessionData
-   * @param sessionService an instance of ClusterSessionService
-   * @param manager an instance of ClusterSessionManager
-   * @return an instance of ClusterSession
-   */
-
-  public static ClusterSession getDeserializedSession(ClusterSessionData sessionData, ClusterSessionService sessionService,
-      ClusterSessionManager manager) {
-    if(sessionData == null){
-      return null;
-    }
-    ClusterSession session = sessionData.getSession();
-    session.afterDeserialization();
-    session.setManager(manager);
-    session.setSessionService(sessionService);
-    if(sessionData.getAuthType() != null) {
-      session.setAuthTypeInternal(sessionData.getAuthType());
-    }
-    if(sessionData.getPrincipalData() != null && sessionData.getPrincipalData().length > 0){
-      session.setPrincipalInternal(deserializePrincipal(sessionData.getPrincipalData()));
-    }
-    if(sessionData.getSavedPrincipalData() != null && sessionData.getSavedPrincipalData().length > 0){
-      session.setNoteInternal(Constants.FORM_PRINCIPAL_NOTE, deserializePrincipal(sessionData.getSavedPrincipalData()));
-    }
-    if(sessionData.getSavedRequestData() != null && sessionData.getSavedRequestData().length > 0){
-      session.setNoteInternal(Constants.FORM_REQUEST_NOTE, deserializeSavedRequest(sessionData.getSavedRequestData()));
-    }
-    if(sessionData.getUserName() != null){
-      session.setNoteInternal(Constants.FORM_USERNAME, sessionData.getUserName());
-    }
-    if(sessionData.getPassword() != null){
-      session.setNoteInternal(Constants.FORM_PASSWORD, sessionData.getPassword());
-    }
-    return session;
-  }
-
-  private static byte[] serializePrincipal(final Principal principal){
-    if(principal == null) {
-      return new byte[0];
-    }
-    ByteArrayOutputStream bos = null;
-    ObjectOutputStream oos = null;
-    try {
-      bos = new ByteArrayOutputStream();
-      oos = new ObjectOutputStream(bos);
-      SerializablePrincipal.writePrincipal((GenericPrincipal) principal, oos );
-      oos.flush();
-      return bos.toByteArray();
-    } catch (IOException e) {
-      throw new IllegalArgumentException( "Non-serializable object", e);
-    } finally {
-      closeSilently(bos);
-      closeSilently(oos);
-    }
-  }
-
-  private static byte[] serializeSavedRequest(final Object obj) {
-    if(obj == null) {
-      return new byte[0];
-    }
-    final SavedRequest savedRequest = (SavedRequest) obj;
-    ByteArrayOutputStream bos = null;
-    ObjectOutputStream oos = null;
-    try {
-      bos = new ByteArrayOutputStream();
-      oos = new ObjectOutputStream(bos);
-      oos.writeObject(savedRequest.getContentType());
-      oos.writeObject(getHeaders(savedRequest));
-      oos.writeObject(newArrayList(savedRequest.getLocales()));
-      oos.writeObject(savedRequest.getMethod());
-      oos.writeObject(savedRequest.getQueryString());
-      oos.writeObject(savedRequest.getRequestURI());
-      oos.writeObject(savedRequest.getDecodedRequestURI());
-      oos.flush();
-      return bos.toByteArray();
-    } catch (IOException e) {
-      throw new IllegalArgumentException( "Non-serializable object", e);
-    } finally {
-      closeSilently(bos);
-      closeSilently(oos);
-    }
-  }
-
-  private static Principal deserializePrincipal(final byte[] data) {
-    ByteArrayInputStream bis = null;
-    ObjectInputStream ois = null;
-    try {
-      bis = new ByteArrayInputStream(data);
-      ois = new ObjectInputStream(bis);
-      return SerializablePrincipal.readPrincipal(ois);
-    } catch (IOException e) {
-      throw new IllegalArgumentException( "Could not deserialize principal", e);
-    } catch (ClassNotFoundException e) {
-      throw new IllegalArgumentException( "Could not deserialize principal", e);
-    } finally {
-      closeSilently(bis);
-      closeSilently(ois);
-    }
-  }
-
-  @SuppressWarnings("unchecked")
-  private static SavedRequest deserializeSavedRequest(final byte[] data) {
-    ByteArrayInputStream bis = null;
-    ObjectInputStream ois = null;
-    try {
-      bis = new ByteArrayInputStream(data);
-      ois = new ObjectInputStream(bis);
-      final SavedRequest savedRequest = new SavedRequest();
-      savedRequest.setContentType((String) ois.readObject());
-      setHeaders(savedRequest, (Map<String, List<String>>) ois.readObject());
-      setLocales(savedRequest, (List<Locale>) ois.readObject());
-      savedRequest.setMethod((String) ois.readObject());
-      savedRequest.setQueryString((String) ois.readObject());
-      savedRequest.setRequestURI((String) ois.readObject());
-      savedRequest.setDecodedRequestURI((String) ois.readObject());
-      return savedRequest;
-    } catch (final IOException e) {
-      throw new IllegalArgumentException( "Could not deserialize SavedRequest", e );
-    } catch (final ClassNotFoundException e) {
-      throw new IllegalArgumentException( "Could not deserialize SavedRequest", e );
-    } finally {
-      closeSilently(bis);
-      closeSilently(ois);
-    }
-  }
-
-  private static void setLocales(final SavedRequest savedRequest, final List<Locale> locales) {
-    if(locales != null && !locales.isEmpty()) {
-      for (final Locale locale : locales) {
-        savedRequest.addLocale(locale);
-      }
-    }
-  }
-
-  private static <T> List<T> newArrayList(final Iterator<T> iter) {
-    if(!iter.hasNext()) {
-      return Collections.emptyList();
-    }
-    final List<T> result = new ArrayList<T>();
-    while (iter.hasNext()) {
-      result.add(iter.next());
-    }
-    return result;
-  }
-
-  private static Map<String, List<String>> getHeaders(final SavedRequest obj) {
-    final Map<String, List<String>> result = new HashMap<String, List<String>>();
-    final Iterator<String> namesIter = obj.getHeaderNames();
-    while (namesIter.hasNext()) {
-      final String name = namesIter.next();
-      final List<String> values = new ArrayList<String>();
-      result.put(name, values);
-      final Iterator<String> valuesIter = obj.getHeaderValues(name);
-      while (valuesIter.hasNext()) {
-        final String value = valuesIter.next();
-        values.add(value);
-      }
-    }
-    return result;
-  }
-
-  private static void setHeaders(final SavedRequest obj, final Map<String, List<String>> headers) {
-    if(headers != null) {
-      for (final Entry<String, List<String>> entry : headers.entrySet()) {
-        final List<String> values = entry.getValue();
-        for (final String value : values) {
-          obj.addHeader(entry.getKey(), value);
-        }
-      }
-    }
-  }
-
-  private static void closeSilently(final OutputStream os) {
-    if (os != null) {
-      try {
-        os.close();
-      } catch (final IOException f) {
-        LOGGER.debug("Exception occurred while closing output stream",  f.toString());
-      }
-    }
-  }
-
-  private static void closeSilently(final InputStream is) {
-    if (is != null) {
-      try {
-        is.close();
-      } catch (final IOException f) {
-        LOGGER.debug("Exception occurred while closing input stream", f.toString());
-      }
-    }
-  }
-}