Package org.gatein.wsrp.spec.v1

Source Code of org.gatein.wsrp.spec.v1.V1ToV2Converter$V1ToV2PortletDescription

/*
* 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;
         }
      }
   }
}
TOP

Related Classes of org.gatein.wsrp.spec.v1.V1ToV2Converter$V1ToV2PortletDescription

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.