package edu.mayo.cts2.framework.webapp.soap.directoryuri; import java.io.ByteArrayOutputStream; import java.util.Set; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang.SerializationUtils; import org.apache.commons.lang.StringUtils; import edu.mayo.cts2.framework.model.service.core.FilterComponent; public class DirectoryUriUtils { private static final String DIRECTORY_URI_NSI = "directoryuri"; private static final String URN = "urn"; private static final String DIRECTORY_URI_PREFIX = URN + ":" + DIRECTORY_URI_NSI + ":"; private DirectoryUriUtils() { super(); } public static SoapDirectoryUriRequest<?> deserialize(String serializedDirectoryUri) { String directoryUri = StringUtils.substringAfter(serializedDirectoryUri, DIRECTORY_URI_PREFIX); byte[] bytes = Base64.decodeBase64(directoryUri.getBytes()); return (SoapDirectoryUriRequest<?>) SerializationUtils.deserialize(bytes); } public static String serialize(SoapDirectoryUriRequest<?> directoryUri) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); SerializationUtils.serialize(directoryUri, baos); String serializedDirectoryUri = new String(Base64.encodeBase64(baos.toByteArray())); return DIRECTORY_URI_PREFIX + serializedDirectoryUri; } public static <T> SoapDirectoryUriRequest<T> buildSoapDirectoryUriRequest( int page, Set<FilterComponent> filters, T restrictions){ DefaultSoapDirectoryUri<T> uri = new DefaultSoapDirectoryUri<T>(); uri.setFilterComponents(filters); uri.setRestrictions(restrictions); DefaultSoapDirectoryUriRequest<T> request = new DefaultSoapDirectoryUriRequest<T>(); request.setPage(page); request.setSoapDirectoryUri(uri); return request; } }