/* * JBoss, a division of Red Hat * Copyright 2010, Red Hat Middleware, LLC, and individual * contributors as indicated by the @authors tag. See the * copyright.txt in the distribution for a full listing of * individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.gatein.wsrp.spec.v1; import com.google.common.base.Function; import com.google.common.collect.Lists; import org.gatein.common.util.ParameterValidation; import org.gatein.pc.api.OpaqueStateString; import org.gatein.pc.portlet.impl.jsr168.PortletUtils; import org.gatein.wsrp.WSRPConstants; import org.gatein.wsrp.WSRPExceptionFactory; import org.gatein.wsrp.WSRPTypeFactory; import org.gatein.wsrp.WSRPUtils; import org.gatein.wsrp.spec.v2.ErrorCodes; import org.oasis.wsrp.v1.V1CacheControl; import org.oasis.wsrp.v1.V1ClientData; import org.oasis.wsrp.v1.V1ClonePortlet; import org.oasis.wsrp.v1.V1Contact; import org.oasis.wsrp.v1.V1CookieProtocol; import org.oasis.wsrp.v1.V1DestroyFailed; import org.oasis.wsrp.v1.V1DestroyPortlets; import org.oasis.wsrp.v1.V1EmployerInfo; import org.oasis.wsrp.v1.V1Extension; import org.oasis.wsrp.v1.V1GetMarkup; import org.oasis.wsrp.v1.V1GetPortletDescription; import org.oasis.wsrp.v1.V1GetPortletProperties; import org.oasis.wsrp.v1.V1GetPortletPropertyDescription; import org.oasis.wsrp.v1.V1GetServiceDescription; import org.oasis.wsrp.v1.V1InitCookie; import org.oasis.wsrp.v1.V1InteractionParams; import org.oasis.wsrp.v1.V1ItemDescription; import org.oasis.wsrp.v1.V1LocalizedString; import org.oasis.wsrp.v1.V1MarkupContext; import org.oasis.wsrp.v1.V1MarkupParams; import org.oasis.wsrp.v1.V1MarkupType; import org.oasis.wsrp.v1.V1ModelDescription; import org.oasis.wsrp.v1.V1ModelTypes; import org.oasis.wsrp.v1.V1ModifyRegistration; import org.oasis.wsrp.v1.V1NamedString; import org.oasis.wsrp.v1.V1Online; import org.oasis.wsrp.v1.V1PerformBlockingInteraction; import org.oasis.wsrp.v1.V1PersonName; import org.oasis.wsrp.v1.V1PortletContext; import org.oasis.wsrp.v1.V1PortletDescription; import org.oasis.wsrp.v1.V1Postal; import org.oasis.wsrp.v1.V1Property; import org.oasis.wsrp.v1.V1PropertyDescription; import org.oasis.wsrp.v1.V1PropertyList; import org.oasis.wsrp.v1.V1RegistrationContext; import org.oasis.wsrp.v1.V1RegistrationData; import org.oasis.wsrp.v1.V1ReleaseSessions; import org.oasis.wsrp.v1.V1ResetProperty; import org.oasis.wsrp.v1.V1Resource; import org.oasis.wsrp.v1.V1ResourceList; import org.oasis.wsrp.v1.V1ResourceValue; import org.oasis.wsrp.v1.V1RuntimeContext; import org.oasis.wsrp.v1.V1SessionContext; import org.oasis.wsrp.v1.V1SetPortletProperties; import org.oasis.wsrp.v1.V1StateChange; import org.oasis.wsrp.v1.V1Telecom; import org.oasis.wsrp.v1.V1TelephoneNum; import org.oasis.wsrp.v1.V1Templates; import org.oasis.wsrp.v1.V1UpdateResponse; import org.oasis.wsrp.v1.V1UploadContext; import org.oasis.wsrp.v1.V1UserContext; import org.oasis.wsrp.v1.V1UserProfile; import org.oasis.wsrp.v2.CacheControl; import org.oasis.wsrp.v2.ClientData; import org.oasis.wsrp.v2.ClonePortlet; import org.oasis.wsrp.v2.Contact; import org.oasis.wsrp.v2.CookieProtocol; import org.oasis.wsrp.v2.DestroyPortlets; import org.oasis.wsrp.v2.EmployerInfo; import org.oasis.wsrp.v2.Extension; import org.oasis.wsrp.v2.FailedPortlets; import org.oasis.wsrp.v2.GetMarkup; import org.oasis.wsrp.v2.GetPortletDescription; import org.oasis.wsrp.v2.GetPortletProperties; import org.oasis.wsrp.v2.GetPortletPropertyDescription; import org.oasis.wsrp.v2.GetServiceDescription; import org.oasis.wsrp.v2.InitCookie; import org.oasis.wsrp.v2.InteractionParams; import org.oasis.wsrp.v2.ItemDescription; import org.oasis.wsrp.v2.LocalizedString; import org.oasis.wsrp.v2.MarkupContext; import org.oasis.wsrp.v2.MarkupParams; import org.oasis.wsrp.v2.MarkupType; import org.oasis.wsrp.v2.ModelDescription; import org.oasis.wsrp.v2.ModelTypes; import org.oasis.wsrp.v2.ModifyRegistration; import org.oasis.wsrp.v2.NamedString; import org.oasis.wsrp.v2.Online; import org.oasis.wsrp.v2.PerformBlockingInteraction; import org.oasis.wsrp.v2.PersonName; import org.oasis.wsrp.v2.PortletContext; import org.oasis.wsrp.v2.PortletDescription; import org.oasis.wsrp.v2.Postal; import org.oasis.wsrp.v2.Property; import org.oasis.wsrp.v2.PropertyDescription; import org.oasis.wsrp.v2.PropertyList; import org.oasis.wsrp.v2.RegistrationContext; import org.oasis.wsrp.v2.RegistrationData; import org.oasis.wsrp.v2.ReleaseSessions; import org.oasis.wsrp.v2.ResetProperty; import org.oasis.wsrp.v2.Resource; import org.oasis.wsrp.v2.ResourceList; import org.oasis.wsrp.v2.ResourceValue; import org.oasis.wsrp.v2.RuntimeContext; import org.oasis.wsrp.v2.SessionContext; import org.oasis.wsrp.v2.SessionParams; import org.oasis.wsrp.v2.SetPortletProperties; import org.oasis.wsrp.v2.StateChange; import org.oasis.wsrp.v2.Telecom; import org.oasis.wsrp.v2.TelephoneNum; import org.oasis.wsrp.v2.Templates; import org.oasis.wsrp.v2.UpdateResponse; import org.oasis.wsrp.v2.UploadContext; import org.oasis.wsrp.v2.UserContext; import org.oasis.wsrp.v2.UserProfile; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.xml.datatype.XMLGregorianCalendar; /** * @author <a href="mailto:chris.laprun@jboss.com">Chris Laprun</a> * @version $Revision$ */ public class V1ToV2Converter { public static final V1ToV2Extension EXTENSION = new V1ToV2Extension(); public static final V1ToV2MarkupType MARKUPTYPE = new V1ToV2MarkupType(); public static final V1ToV2PortletDescription PORTLETDESCRIPTION = new V1ToV2PortletDescription(); public static final V1ToV2LocalizedString LOCALIZEDSTRING = new V1ToV2LocalizedString(); public static final V1ToV2ItemDescription ITEMDESCRIPTION = new V1ToV2ItemDescription(); public static final V1ToV2PropertyDescription PROPERTYDESCRIPTION = new V1ToV2PropertyDescription(); public static final V1ToV2Resource RESOURCE = new V1ToV2Resource(); public static final V1ToV2ResourceValue RESOURCEVALUE = new V1ToV2ResourceValue(); public static final V1ToV2NamedString NAMEDSTRING = new V1ToV2NamedString(); public static final V1ToV2UploadContext UPLOADCONTEXT = new V1ToV2UploadContext(); public static final V1ToV2Property PROPERTY = new V1ToV2Property(); public static final V1ToV2ResetProperty RESETPROPERTY = new V1ToV2ResetProperty(); public static MarkupParams toV2MarkupParams(V1MarkupParams v1MarkupParams) { if (v1MarkupParams != null) { MarkupParams markupParams = WSRPTypeFactory.createMarkupParams(v1MarkupParams.isSecureClientCommunication(), v1MarkupParams.getLocales(), v1MarkupParams.getMimeTypes(), v1MarkupParams.getMode(), v1MarkupParams.getWindowState()); markupParams.setClientData(toV2ClientData(v1MarkupParams.getClientData())); // we can't create an opaquestatestring if with a null string, so need to check if (v1MarkupParams.getNavigationalState() != null) { markupParams.setNavigationalContext(WSRPTypeFactory.createNavigationalContextOrNull( new OpaqueStateString(v1MarkupParams.getNavigationalState()), null)); } markupParams.setValidateTag(v1MarkupParams.getValidateTag()); List<String> charSets = v1MarkupParams.getMarkupCharacterSets(); if (charSets != null) { markupParams.getMarkupCharacterSets().addAll(charSets); } List<String> validNewModes = v1MarkupParams.getValidNewModes(); if (validNewModes != null) { markupParams.getValidNewModes().addAll(validNewModes); } List<String> validNewWindowStates = v1MarkupParams.getValidNewWindowStates(); if (validNewWindowStates != null) { markupParams.getValidNewWindowStates().addAll(validNewWindowStates); } List<Extension> extensions = WSRPUtils.transform(v1MarkupParams.getExtensions(), EXTENSION); if (extensions != null) { markupParams.getExtensions().addAll(extensions); } return markupParams; } else { return null; } } public static ClientData toV2ClientData(V1ClientData v1ClientData) { if (v1ClientData != null) { ClientData clientData = WSRPTypeFactory.createClientData(v1ClientData.getUserAgent()); List<V1Extension> extensions = v1ClientData.getExtensions(); if (extensions != null) { clientData.getExtensions().addAll(Lists.transform(extensions, EXTENSION)); } return clientData; } else { return null; } } public static PortletContext toV2PortletContext(V1PortletContext v1PortletContext) { if (v1PortletContext != null) { PortletContext portletContext = WSRPTypeFactory.createPortletContext(v1PortletContext.getPortletHandle(), v1PortletContext.getPortletState()); List<V1Extension> extensions = v1PortletContext.getExtensions(); if (extensions != null) { portletContext.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return portletContext; } else { return null; } } public static RegistrationContext toV2RegistrationContext(V1RegistrationContext registrationContext) { if (registrationContext != null) { RegistrationContext result = WSRPTypeFactory.createRegistrationContext(registrationContext.getRegistrationHandle()); result.setRegistrationState(registrationContext.getRegistrationState()); List<Extension> extensions = WSRPUtils.transform(registrationContext.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } public static RuntimeContext toV2RuntimeContext(V1RuntimeContext v1RuntimeContext, String portletHandle) { if (v1RuntimeContext != null) { String portletInstanceKey; String namespacePrefix; if (ParameterValidation.isNullOrEmpty(v1RuntimeContext.getPortletInstanceKey())) { portletInstanceKey = portletHandle; } else { portletInstanceKey = v1RuntimeContext.getPortletInstanceKey(); } if (ParameterValidation.isNullOrEmpty(v1RuntimeContext.getNamespacePrefix())) { namespacePrefix = PortletUtils.generateNamespaceFrom(portletHandle); } else { namespacePrefix = v1RuntimeContext.getNamespacePrefix(); } RuntimeContext runtimeContext = WSRPTypeFactory.createRuntimeContext(v1RuntimeContext.getUserAuthentication(), portletInstanceKey, namespacePrefix); SessionParams sessionParams = WSRPTypeFactory.createSessionParams(v1RuntimeContext.getSessionID()); runtimeContext.setSessionParams(sessionParams); runtimeContext.setTemplates(toV2Templates(v1RuntimeContext.getTemplates())); List<V1Extension> extensions = v1RuntimeContext.getExtensions(); if (extensions != null) { runtimeContext.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return runtimeContext; } else { return null; } } public static Templates toV2Templates(V1Templates v1Templates) { if (v1Templates != null) { String defaultTemplate = v1Templates.getDefaultTemplate(); String blockingActionTemplate = v1Templates.getBlockingActionTemplate(); String renderTemplate = v1Templates.getRenderTemplate(); String resourceTemplate = v1Templates.getResourceTemplate(); String secureDefaultTemplate = v1Templates.getSecureDefaultTemplate(); String secureBlockingActionTemplate = v1Templates.getSecureBlockingActionTemplate(); String secureRenderTemplate = v1Templates.getSecureRenderTemplate(); String secureResourceTemplate = v1Templates.getSecureResourceTemplate(); Templates templates = WSRPTypeFactory.createTemplates(defaultTemplate, blockingActionTemplate, renderTemplate, resourceTemplate, secureDefaultTemplate, secureBlockingActionTemplate, secureRenderTemplate, secureResourceTemplate); List<V1Extension> extensions = v1Templates.getExtensions(); if (extensions != null) { templates.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return templates; } else { return null; } } public static UserContext toV2UserContext(V1UserContext v1UserContext) { if (v1UserContext != null) { UserContext userContext = WSRPTypeFactory.createUserContext(v1UserContext.getUserContextKey()); userContext.setProfile(toV2UserProfile(v1UserContext.getProfile())); List<V1Extension> extensions = v1UserContext.getExtensions(); if (extensions != null) { userContext.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } if (v1UserContext.getUserCategories() != null) { userContext.getUserCategories().addAll(v1UserContext.getUserCategories()); } return userContext; } else { return null; } } public static UserProfile toV2UserProfile(V1UserProfile v1UserProfile) { if (v1UserProfile != null) { PersonName name = toV2PersonName(v1UserProfile.getName()); XMLGregorianCalendar bdate = v1UserProfile.getBdate(); String gender = v1UserProfile.getGender(); EmployerInfo employerInfo = toV2EmployerInfo(v1UserProfile.getEmployerInfo()); Contact homeInfo = toV2Context(v1UserProfile.getHomeInfo()); Contact businessInfo = toV2Context(v1UserProfile.getBusinessInfo()); UserProfile userProfile = WSRPTypeFactory.createUserProfile(name, bdate, gender, employerInfo, homeInfo, businessInfo); return userProfile; } else { return null; } } public static EmployerInfo toV2EmployerInfo(V1EmployerInfo v1EmployerInfo) { if (v1EmployerInfo != null) { String employer = v1EmployerInfo.getEmployer(); String department = v1EmployerInfo.getEmployer(); String jobTitle = v1EmployerInfo.getJobtitle(); EmployerInfo employerInfo = WSRPTypeFactory.createEmployerInfo(employer, department, jobTitle); List<V1Extension> extensions = v1EmployerInfo.getExtensions(); if (extensions != null) { employerInfo.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return employerInfo; } else { return null; } } public static PersonName toV2PersonName(V1PersonName v1PersonName) { if (v1PersonName != null) { PersonName personName = WSRPTypeFactory.createPersonName(v1PersonName.getPrefix(), v1PersonName.getGiven(), v1PersonName.getFamily(), v1PersonName.getMiddle(), v1PersonName.getSuffix(), v1PersonName.getNickname()); List<V1Extension> extensions = v1PersonName.getExtensions(); if (extensions != null) { personName.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return personName; } else { return null; } } public static Contact toV2Context(V1Contact v1Contact) { if (v1Contact != null) { Postal postal = toV2Postal(v1Contact.getPostal()); Telecom teleCom = toV2Telecom(v1Contact.getTelecom()); Online online = toV2Online(v1Contact.getOnline()); Contact contact = WSRPTypeFactory.createContact(postal, teleCom, online); List<V1Extension> extensions = v1Contact.getExtensions(); if (extensions != null) { contact.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return contact; } else { return null; } } public static Online toV2Online(V1Online v1Online) { if (v1Online != null) { Online online = WSRPTypeFactory.createOnline(v1Online.getEmail(), v1Online.getUri()); List<V1Extension> extensions = v1Online.getExtensions(); if (extensions != null) { online.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return online; } else { return null; } } public static Postal toV2Postal(V1Postal v1Postal) { if (v1Postal != null) { Postal postal = WSRPTypeFactory.createPostal(v1Postal.getName(), v1Postal.getStreet(), v1Postal.getCity(), v1Postal.getStateprov(), v1Postal.getPostalcode(), v1Postal.getCountry(), v1Postal.getOrganization()); List<V1Extension> extensions = v1Postal.getExtensions(); if (extensions != null) { postal.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return postal; } else { return null; } } public static Telecom toV2Telecom(V1Telecom v1Telecom) { if (v1Telecom != null) { TelephoneNum telephone = toV2TelephoneNum(v1Telecom.getTelephone()); TelephoneNum fax = toV2TelephoneNum(v1Telecom.getFax()); TelephoneNum mobile = toV2TelephoneNum(v1Telecom.getMobile()); TelephoneNum pager = toV2TelephoneNum(v1Telecom.getPager()); Telecom telecom = WSRPTypeFactory.createTelecom(telephone, fax, mobile, pager); List<V1Extension> extensions = v1Telecom.getExtensions(); if (extensions != null) { telecom.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return telecom; } else { return null; } } public static TelephoneNum toV2TelephoneNum(V1TelephoneNum v1TelephoneNum) { if (v1TelephoneNum != null) { String intCode = v1TelephoneNum.getIntcode(); String loccode = v1TelephoneNum.getLoccode(); String number = v1TelephoneNum.getNumber(); String ext = v1TelephoneNum.getExt(); String comment = v1TelephoneNum.getComment(); TelephoneNum telephoneNum = WSRPTypeFactory.createTelephoneNum(intCode, loccode, number, ext, comment); List<V1Extension> extensions = v1TelephoneNum.getExtensions(); if (extensions != null) { telephoneNum.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return telephoneNum; } else { return null; } } public static <E extends Exception> E toV2Exception(Class<E> v2ExceptionClass, Exception v1Exception) { if (!"org.oasis.wsrp.v2".equals(v2ExceptionClass.getPackage().getName())) { throw new IllegalArgumentException("Specified exception class is not a WSRP 2 exception: " + v2ExceptionClass); } Class<? extends Exception> v1ExceptionClass = v1Exception.getClass(); String v1Name = v1ExceptionClass.getSimpleName(); int v1Index = v1Name.indexOf("V1"); if (v1Index != 0 && !"org.oasis.wsrp.v1".equals(v1ExceptionClass.getPackage().getName())) { throw new IllegalArgumentException("Specified exception is not a WSRP 1 exception: " + v1Exception); } String v2Name = v2ExceptionClass.getSimpleName(); // V2 class name should match V1 class name minus "V1" if (!v2Name.equals(v1Name.substring(2))) { throw new IllegalArgumentException("Exception names do not match. Requested: " + v2Name + ", was given: " + v1Name); } return WSRPExceptionFactory.createWSException(v2ExceptionClass, v1Exception.getMessage(), v1Exception.getCause()); } public static InteractionParams toV2InteractionParams(V1InteractionParams v1InteractionParams) { if (v1InteractionParams != null) { InteractionParams interactionParams = WSRPTypeFactory.createInteractionParams(toV2StateChange(v1InteractionParams.getPortletStateChange())); interactionParams.setInteractionState(v1InteractionParams.getInteractionState()); interactionParams.getExtensions().addAll(Lists.transform(v1InteractionParams.getExtensions(), EXTENSION)); interactionParams.getFormParameters().addAll(Lists.transform(v1InteractionParams.getFormParameters(), NAMEDSTRING)); interactionParams.getUploadContexts().addAll(Lists.transform(v1InteractionParams.getUploadContexts(), UPLOADCONTEXT)); return interactionParams; } else { return null; } } public static StateChange toV2StateChange(V1StateChange v1StateChange) { if (v1StateChange != null) { return StateChange.fromValue((v1StateChange.value())); } else { return null; } } public static LocalizedString toV2LocalizedString(V1LocalizedString localizedString) { return LOCALIZEDSTRING.apply(localizedString); } public static CookieProtocol toV2CookieProtocol(V1CookieProtocol v1CookieProtocol) { if (v1CookieProtocol != null) { return CookieProtocol.fromValue(v1CookieProtocol.value()); } else { return null; } } public static ModelDescription toV2ModelDescription(V1ModelDescription v1ModelDescription) { if (v1ModelDescription != null) { ModelDescription result = WSRPTypeFactory.createModelDescription(WSRPUtils.transform(v1ModelDescription.getPropertyDescriptions(), PROPERTYDESCRIPTION)); List<Extension> extensions = WSRPUtils.transform(v1ModelDescription.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } result.setModelTypes(toV2ModelTypes(v1ModelDescription.getModelTypes())); return result; } else { return null; } } public static ModelTypes toV2ModelTypes(V1ModelTypes modelTypes) { if (modelTypes != null) { ModelTypes result = new ModelTypes(); result.setAny(modelTypes.getAny()); return result; } else { return null; } } public static ResourceList toV2ResourceList(V1ResourceList v1ResourceList) { if (v1ResourceList != null) { List<Resource> resources = WSRPUtils.transform(v1ResourceList.getResources(), RESOURCE); ResourceList result = WSRPTypeFactory.createResourceList(resources); List<Extension> extensions = WSRPUtils.transform(v1ResourceList.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } public static PropertyList toV2PropertyList(V1PropertyList v1PropertyList) { if (v1PropertyList != null) { PropertyList result = WSRPTypeFactory.createPropertyList(); List<Property> properties = WSRPUtils.transform(v1PropertyList.getProperties(), PROPERTY); if (properties != null) { result.getProperties().addAll(properties); } List<ResetProperty> resetProperties = WSRPUtils.transform(v1PropertyList.getResetProperties(), RESETPROPERTY); if (resetProperties != null) { result.getResetProperties().addAll(resetProperties); } List<Extension> extensions = WSRPUtils.transform(v1PropertyList.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } public static PortletDescription toV2PortletDescription(V1PortletDescription v1PortletDescription) { return PORTLETDESCRIPTION.apply(v1PortletDescription); } public static List<FailedPortlets> toV2FailedPortlets(List<V1DestroyFailed> destroyFailed) { if (ParameterValidation.existsAndIsNotEmpty(destroyFailed)) { // todo: might need improvements List<FailedPortlets> result = new ArrayList<FailedPortlets>(destroyFailed.size()); for (V1DestroyFailed failed : destroyFailed) { result.add(WSRPTypeFactory.createFailedPortlets(Collections.singletonList(failed.getPortletHandle()), ErrorCodes.Codes.OPERATIONFAILED, failed.getReason())); } return result; } else { return null; } } public static RegistrationData toV2RegistrationData(V1RegistrationData registrationData) { if (registrationData != null) { RegistrationData result = WSRPTypeFactory.createRegistrationData(registrationData.getConsumerName(), registrationData.getConsumerAgent(), registrationData.isMethodGetSupported()); List<Property> properties = WSRPUtils.transform(registrationData.getRegistrationProperties(), PROPERTY); if (properties != null) { result.getRegistrationProperties().addAll(properties); } List<String> modes = registrationData.getConsumerModes(); if (ParameterValidation.existsAndIsNotEmpty(modes)) { result.getConsumerModes().addAll(modes); } List<String> consumerUserScopes = registrationData.getConsumerUserScopes(); if (ParameterValidation.existsAndIsNotEmpty(consumerUserScopes)) { result.getConsumerUserScopes().addAll(consumerUserScopes); } List<String> windowStates = registrationData.getConsumerWindowStates(); if (ParameterValidation.existsAndIsNotEmpty(windowStates)) { result.getConsumerWindowStates().addAll(windowStates); } List<Extension> extensions = WSRPUtils.transform(registrationData.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } public static MarkupContext toV2MarkupContext(V1MarkupContext v1MarkupContext) { if (v1MarkupContext != null) { MarkupContext result = WSRPTypeFactory.createMarkupContext(v1MarkupContext.getMimeType(), v1MarkupContext.getMarkupString(), v1MarkupContext.getMarkupBinary(), v1MarkupContext.isUseCachedMarkup()); result.setCacheControl(toV2CacheControl(v1MarkupContext.getCacheControl())); result.setLocale(v1MarkupContext.getLocale()); result.setMimeType(v1MarkupContext.getMimeType()); result.setPreferredTitle(v1MarkupContext.getPreferredTitle()); result.setRequiresRewriting(v1MarkupContext.isRequiresUrlRewriting()); List<V1Extension> extensions = v1MarkupContext.getExtensions(); if (extensions != null) { result.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return result; } else { return null; } } private static CacheControl toV2CacheControl(V1CacheControl v1CacheControl) { if (v1CacheControl != null) { CacheControl result = WSRPTypeFactory.createCacheControl(v1CacheControl.getExpires(), v1CacheControl.getUserScope()); result.setValidateTag(v1CacheControl.getValidateTag()); List<V1Extension> extensions = v1CacheControl.getExtensions(); if (extensions != null) { result.getExtensions().addAll(WSRPUtils.transform(extensions, EXTENSION)); } return result; } else { return null; } } public static SessionContext toV2SessionContext(V1SessionContext sessionContext) { if (sessionContext != null) { SessionContext result = WSRPTypeFactory.createSessionContext(sessionContext.getSessionID(), sessionContext.getExpires()); result.getExtensions().addAll(Lists.transform(sessionContext.getExtensions(), EXTENSION)); return result; } else { return null; } } public static UpdateResponse toV2UpdateResponse(V1UpdateResponse updateResponse) { if (updateResponse != null) { UpdateResponse result = WSRPTypeFactory.createUpdateResponse(); result.setMarkupContext(toV2MarkupContext(updateResponse.getMarkupContext())); String state = updateResponse.getNavigationalState(); if (state != null) { result.setNavigationalContext(WSRPTypeFactory.createNavigationalContextOrNull(new OpaqueStateString(state), null)); } result.setNewWindowState(updateResponse.getNewWindowState()); result.setPortletContext(toV2PortletContext(updateResponse.getPortletContext())); result.setSessionContext(toV2SessionContext(updateResponse.getSessionContext())); result.setNewMode(updateResponse.getNewMode()); return result; } else { return null; } } public static GetServiceDescription toV2GetServiceDescription(V1GetServiceDescription getServiceDescription) { if (getServiceDescription != null) { GetServiceDescription result = WSRPTypeFactory.createGetServiceDescription(toV2RegistrationContext(getServiceDescription.getRegistrationContext()), null); List<String> locales = getServiceDescription.getDesiredLocales(); if (ParameterValidation.existsAndIsNotEmpty(locales)) { result.getDesiredLocales().addAll(locales); } return result; } else { return null; } } public static GetMarkup toV2GetMarkup(V1GetMarkup getMarkup) { if (getMarkup != null) { PortletContext portletContext = toV2PortletContext(getMarkup.getPortletContext()); RuntimeContext runtimeContext = toV2RuntimeContext(getMarkup.getRuntimeContext(), portletContext.getPortletHandle()); MarkupParams markupParams = toV2MarkupParams(getMarkup.getMarkupParams()); RegistrationContext registrationContext = toV2RegistrationContext(getMarkup.getRegistrationContext()); UserContext userContext = toV2UserContext(getMarkup.getUserContext()); return WSRPTypeFactory.createGetMarkup(registrationContext, portletContext, runtimeContext, userContext, markupParams); } else { return null; } } public static ModifyRegistration toV2ModifyRegistration(V1ModifyRegistration modifyRegistration) { if (modifyRegistration != null) { RegistrationContext registrationContext = toV2RegistrationContext(modifyRegistration.getRegistrationContext()); RegistrationData registrationData = toV2RegistrationData(modifyRegistration.getRegistrationData()); ModifyRegistration result = WSRPTypeFactory.createModifyRegistration(registrationContext, registrationData); return result; } else { return null; } } public static ClonePortlet toV2ClonePortlet(V1ClonePortlet clonePortlet) { if (clonePortlet != null) { RegistrationContext registrationContext = toV2RegistrationContext(clonePortlet.getRegistrationContext()); PortletContext portletContext = toV2PortletContext(clonePortlet.getPortletContext()); UserContext userContext = toV2UserContext(clonePortlet.getUserContext()); ClonePortlet result = WSRPTypeFactory.createClonePortlet(registrationContext, portletContext, userContext); return result; } else { return null; } } public static PerformBlockingInteraction toV2PerformBlockingInteraction(V1PerformBlockingInteraction performBlockingInteraction) { if (performBlockingInteraction != null) { InteractionParams interactionParams = toV2InteractionParams(performBlockingInteraction.getInteractionParams()); MarkupParams markupParams = toV2MarkupParams(performBlockingInteraction.getMarkupParams()); PortletContext portletContext = toV2PortletContext(performBlockingInteraction.getPortletContext()); RuntimeContext runtimeContext = toV2RuntimeContext(performBlockingInteraction.getRuntimeContext(), portletContext.getPortletHandle()); return WSRPTypeFactory.createPerformBlockingInteraction(toV2RegistrationContext(performBlockingInteraction.getRegistrationContext()), portletContext, runtimeContext, toV2UserContext(performBlockingInteraction.getUserContext()), markupParams, interactionParams); } else { return null; } } public static DestroyPortlets toV2DestroyPortlets(V1DestroyPortlets destroyPortlets) { if (destroyPortlets != null) { RegistrationContext registrationContext = toV2RegistrationContext(destroyPortlets.getRegistrationContext()); DestroyPortlets result = WSRPTypeFactory.createDestroyPortlets(registrationContext, destroyPortlets.getPortletHandles()); return result; } else { return null; } } public static SetPortletProperties toV2SetPortletProperties(V1SetPortletProperties setPortletProperties) { if (setPortletProperties != null) { RegistrationContext registrationContext = toV2RegistrationContext(setPortletProperties.getRegistrationContext()); PortletContext portletContext = toV2PortletContext(setPortletProperties.getPortletContext()); PropertyList propertyList = toV2PropertyList(setPortletProperties.getPropertyList()); SetPortletProperties result = WSRPTypeFactory.createSetPortletProperties(registrationContext, portletContext, propertyList); result.setUserContext(toV2UserContext(setPortletProperties.getUserContext())); return result; } else { return null; } } public static GetPortletProperties toV2GetPortletProperties(V1GetPortletProperties getPortletProperties) { if (getPortletProperties != null) { RegistrationContext registrationContext = toV2RegistrationContext(getPortletProperties.getRegistrationContext()); PortletContext portletContext = toV2PortletContext(getPortletProperties.getPortletContext()); UserContext userContext = toV2UserContext(getPortletProperties.getUserContext()); GetPortletProperties result = WSRPTypeFactory.createGetPortletProperties(registrationContext, portletContext, userContext, getPortletProperties.getNames()); return result; } else { return null; } } public static ReleaseSessions toV2ReleaseSessions(V1ReleaseSessions releaseSessions) { if (releaseSessions != null) { RegistrationContext registrationContext = toV2RegistrationContext(releaseSessions.getRegistrationContext()); ReleaseSessions result = WSRPTypeFactory.createReleaseSessions(registrationContext, releaseSessions.getSessionIDs()); return result; } else { return null; } } public static InitCookie toV2InitCookie(V1InitCookie initCookie) { if (initCookie != null) { RegistrationContext registrationContext = toV2RegistrationContext(initCookie.getRegistrationContext()); InitCookie result = WSRPTypeFactory.createInitCookie(registrationContext); return result; } else { return null; } } public static GetPortletPropertyDescription toV2GetPortletPropertyDescription(V1GetPortletPropertyDescription getPortletPropertyDescription) { if (getPortletPropertyDescription != null) { RegistrationContext registrationContext = toV2RegistrationContext(getPortletPropertyDescription.getRegistrationContext()); PortletContext portletContext = toV2PortletContext(getPortletPropertyDescription.getPortletContext()); UserContext userContext = toV2UserContext(getPortletPropertyDescription.getUserContext()); GetPortletPropertyDescription result = WSRPTypeFactory.createGetPortletPropertyDescription(registrationContext, portletContext, userContext, getPortletPropertyDescription.getDesiredLocales()); return result; } else { return null; } } public static GetPortletDescription toV2GetPortletDescription(V1GetPortletDescription getPortletDescription) { if (getPortletDescription != null) { RegistrationContext registrationContext = toV2RegistrationContext(getPortletDescription.getRegistrationContext()); PortletContext portletContext = toV2PortletContext(getPortletDescription.getPortletContext()); UserContext userContext = toV2UserContext(getPortletDescription.getUserContext()); GetPortletDescription result = WSRPTypeFactory.createGetPortletDescription(registrationContext, portletContext, userContext); result.getDesiredLocales().addAll(getPortletDescription.getDesiredLocales()); return result; } else { return null; } } public static class V1ToV2Extension implements Function<V1Extension, Extension> { public Extension apply(V1Extension from) { if (from != null) { Extension extension = WSRPTypeFactory.createExtension(from.getAny()); return extension; } else { return null; } } } public static class V1ToV2PortletDescription implements Function<V1PortletDescription, PortletDescription> { public PortletDescription apply(V1PortletDescription from) { if (from != null) { PortletDescription result = WSRPTypeFactory.createPortletDescription(from.getPortletHandle(), WSRPUtils.transform(from.getMarkupTypes(), MARKUPTYPE)); result.setDescription(LOCALIZEDSTRING.apply(from.getDescription())); result.setDisplayName(LOCALIZEDSTRING.apply(from.getDisplayName())); List<Extension> extensions = WSRPUtils.transform(from.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } List<LocalizedString> keywords = WSRPUtils.transform(from.getKeywords(), LOCALIZEDSTRING); if (keywords != null) { result.getKeywords().addAll(keywords); } List<String> userCategories = from.getUserCategories(); if (userCategories != null) { result.getUserCategories().addAll(userCategories); } List<String> userProfileItems = from.getUserProfileItems(); if (userProfileItems != null) { result.getUserProfileItems().addAll(userProfileItems); } result.setDefaultMarkupSecure(from.isDefaultMarkupSecure()); result.setDoesUrlTemplateProcessing(from.isDoesUrlTemplateProcessing()); result.setTemplatesStoredInSession(from.isTemplatesStoredInSession()); result.setHasUserSpecificState(from.isHasUserSpecificState()); result.setOnlySecure(from.isOnlySecure()); result.setUserContextStoredInSession(from.isUserContextStoredInSession()); result.setUsesMethodGet(from.isUsesMethodGet()); result.setShortTitle(LOCALIZEDSTRING.apply(from.getShortTitle())); result.setTitle(LOCALIZEDSTRING.apply(from.getTitle())); result.setGroupID(from.getGroupID()); return result; } else { return null; } } } public static class V1ToV2ItemDescription implements Function<V1ItemDescription, ItemDescription> { public ItemDescription apply(V1ItemDescription from) { if (from != null) { LocalizedString description = LOCALIZEDSTRING.apply(from.getDescription()); ItemDescription result = WSRPTypeFactory.createItemDescription(description, null, from.getItemName()); List<Extension> extensions = WSRPUtils.transform(from.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } } public static class V1ToV2NamedString implements Function<V1NamedString, NamedString> { public NamedString apply(V1NamedString v1NamedString) { if (v1NamedString != null) { return WSRPTypeFactory.createNamedString(v1NamedString.getName(), v1NamedString.getValue()); } else { return null; } } } public static class V1ToV2UploadContext implements Function<V1UploadContext, UploadContext> { public UploadContext apply(V1UploadContext v1UploadContext) { if (v1UploadContext != null) { UploadContext result = WSRPTypeFactory.createUploadContext(v1UploadContext.getMimeType(), v1UploadContext.getUploadData()); result.getExtensions().addAll(Lists.transform(v1UploadContext.getExtensions(), EXTENSION)); result.getMimeAttributes().addAll(Lists.transform(v1UploadContext.getMimeAttributes(), NAMEDSTRING)); return result; } else { return null; } } } public static class V1ToV2MarkupType implements Function<V1MarkupType, MarkupType> { public MarkupType apply(V1MarkupType from) { if (from != null) { MarkupType result = WSRPTypeFactory.createMarkupType(from.getMimeType(), from.getModes(), from.getWindowStates(), from.getLocales()); List<Extension> extensions = WSRPUtils.transform(from.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } } public static class V1ToV2LocalizedString implements Function<V1LocalizedString, LocalizedString> { public LocalizedString apply(V1LocalizedString from) { if (from != null) { return WSRPTypeFactory.createLocalizedString(from.getLang(), from.getResourceName(), from.getValue()); } else { return null; } } } public static class V1ToV2Resource implements Function<V1Resource, Resource> { public Resource apply(V1Resource from) { if (from != null) { Resource result = WSRPTypeFactory.createResource(from.getResourceName(), WSRPUtils.transform(from.getValues(), RESOURCEVALUE)); return result; } else { return null; } } } public static class V1ToV2ResourceValue implements Function<V1ResourceValue, ResourceValue> { public ResourceValue apply(V1ResourceValue from) { if (from != null) { ResourceValue result = WSRPTypeFactory.createResourceValue(from.getLang(), from.getValue()); List<Extension> extensions = WSRPUtils.transform(from.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } } public static class V1ToV2PropertyDescription implements Function<V1PropertyDescription, PropertyDescription> { public PropertyDescription apply(V1PropertyDescription from) { if (from != null) { PropertyDescription result = WSRPTypeFactory.createPropertyDescription(from.getName(), from.getType()); result.setHint(toV2LocalizedString(from.getHint())); result.setLabel(toV2LocalizedString(from.getLabel())); List<Extension> extensions = WSRPUtils.transform(from.getExtensions(), EXTENSION); if (extensions != null) { result.getExtensions().addAll(extensions); } return result; } else { return null; } } } public static class V1ToV2Property implements Function<V1Property, Property> { public Property apply(V1Property from) { if (from != null) { Property result = WSRPTypeFactory.createProperty(from.getName(), from.getLang(), from.getStringValue()); result.setType(WSRPConstants.XSD_STRING); // todo: not sure what to do here... :( List<Object> any = from.getAny(); if (ParameterValidation.existsAndIsNotEmpty(any)) { result.getAny().addAll(any); } return result; } else { return null; } } } private static class V1ToV2ResetProperty implements Function<V1ResetProperty, ResetProperty> { public ResetProperty apply(V1ResetProperty from) { if (from != null) { return WSRPTypeFactory.createResetProperty(from.getName()); } else { return null; } } } }