| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.cocoon.portal.pluto.om; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.Iterator; |
| import java.util.Locale; |
| import java.util.StringTokenizer; |
| |
| import org.apache.cocoon.portal.pluto.om.common.ContentTypeSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.DescriptionSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.DisplayNameSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.LanguageSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.ParameterSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.PreferenceSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.SecurityRoleRefSetImpl; |
| import org.apache.cocoon.portal.pluto.om.common.Support; |
| import org.apache.pluto.invoker.PortletInvoker; |
| import org.apache.pluto.om.common.Description; |
| import org.apache.pluto.om.common.DescriptionSet; |
| import org.apache.pluto.om.common.DisplayName; |
| import org.apache.pluto.om.common.DisplayNameSet; |
| import org.apache.pluto.om.common.LanguageSet; |
| import org.apache.pluto.om.common.ObjectID; |
| import org.apache.pluto.om.common.ParameterSet; |
| import org.apache.pluto.om.common.PreferenceSet; |
| import org.apache.pluto.om.common.SecurityRoleRefSet; |
| import org.apache.pluto.om.portlet.ContentTypeSet; |
| import org.apache.pluto.om.portlet.PortletApplicationDefinition; |
| import org.apache.pluto.om.portlet.PortletDefinition; |
| import org.apache.pluto.om.portlet.PortletDefinitionCtrl; |
| import org.apache.pluto.om.servlet.ServletDefinition; |
| |
| /** |
| * |
| * |
| * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a> |
| * |
| * @version CVS $Id$ |
| */ |
| public class PortletDefinitionImpl |
| implements PortletDefinition, PortletDefinitionCtrl, java.io.Serializable, Support { |
| |
| |
| private PortletApplicationDefinition application = null; |
| private LanguageSet castorResources = null; |
| |
| // contains String objects |
| private ArrayList castorSupportedLocales = new ArrayList(); |
| private ClassLoader classLoader; |
| private String className; |
| private ContentTypeSet contentTypes = new ContentTypeSetImpl(); |
| private DescriptionSet descriptions = new DescriptionSetImpl(); |
| |
| private DisplayNameSet displayNames = new DisplayNameSetImpl(); |
| private String expirationCache; |
| public String id = ""; |
| private ParameterSet initParams = new ParameterSetImpl(); |
| private SecurityRoleRefSet initSecurityRoleRefs = new SecurityRoleRefSetImpl(); |
| private String name; |
| |
| private ObjectID objectId; |
| private PreferenceSet preferences = new PreferenceSetImpl(); |
| |
| // private PortletInfoImpl portletInfo = null; |
| private String resourceBundle; |
| private ServletDefinition servlet; |
| |
| // contains Locale objects |
| private ArrayList supportedLocales = new ArrayList(); |
| |
| /** is this a local portlet? */ |
| protected boolean localPortlet = false; |
| |
| /** The local portlet invoker */ |
| protected PortletInvoker localPortletInvoker; |
| |
| // PortletDefinition implementation. |
| |
| public ObjectID getId() { |
| if (objectId==null) { |
| objectId = org.apache.cocoon.portal.pluto.om.common.ObjectIDImpl.createFromString(getGUID()); |
| } |
| |
| return objectId; |
| } |
| |
| public String getClassName() { |
| return className; |
| } |
| |
| public String getName() { |
| return name; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.apache.pluto.om.portlet.PortletDefinition#getDescription(Locale) |
| */ |
| public Description getDescription(Locale locale) { |
| return descriptions.get(locale); |
| } |
| |
| public LanguageSet getLanguageSet() { |
| ((LanguageSetImpl)castorResources).setClassLoader(this.getPortletClassLoader()); |
| return castorResources; |
| } |
| |
| public ParameterSet getInitParameterSet() { |
| return initParams; |
| } |
| |
| public SecurityRoleRefSet getInitSecurityRoleRefSet() { |
| return initSecurityRoleRefs; |
| } |
| |
| public PreferenceSet getPreferenceSet() { |
| ((PreferenceSetImpl)preferences).setClassLoader(this.getPortletClassLoader()); |
| return preferences; |
| } |
| |
| public ContentTypeSet getContentTypeSet() { |
| return contentTypes; |
| } |
| |
| public PortletApplicationDefinition getPortletApplicationDefinition() { |
| return application; |
| } |
| |
| public ServletDefinition getServletDefinition() { |
| return servlet; |
| } |
| |
| public DisplayName getDisplayName(Locale locale) { |
| return displayNames.get(locale); |
| } |
| |
| public String getExpirationCache() { |
| return expirationCache; |
| } |
| |
| // PortletDefinitionCtrl implementation. |
| |
| public void setId(String id) { |
| // todo excep |
| } |
| |
| public void setClassName(String className) { |
| this.className = className; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| /* (non-Javadoc) |
| * @see org.apache.pluto.om.portlet.PortletDefinitionCtrl#setDescriptions(DescriptionSet) |
| */ |
| public void setDescriptions(DescriptionSet descriptions) { |
| this.descriptions = descriptions; |
| } |
| |
| public void setDisplayNames(DisplayNameSet displayNames) { |
| this.displayNames = displayNames; |
| } |
| |
| public void setPortletClassLoader(ClassLoader loader) { |
| this.classLoader = loader; |
| } |
| |
| public void store() throws java.io.IOException { |
| // not supported |
| } |
| |
| |
| public void postBuild(Object parameter) throws Exception { |
| setServletDefinition((ServletDefinition)parameter); |
| ((Support)contentTypes).postBuild(this); |
| if (castorResources!=null) { |
| ((Support)castorResources).postBuild(this); |
| } |
| } |
| |
| public void postLoad(Object parameter) throws Exception { |
| ((Support)contentTypes).postLoad(this); |
| |
| // create Locale objects for given locale entries |
| Iterator iterator = castorSupportedLocales.iterator(); |
| while (iterator.hasNext()) { |
| |
| String locale = (String)iterator.next(); |
| |
| // parse locale String |
| StringTokenizer tokenizer = new StringTokenizer(locale,"_"); |
| String[] localeDef = new String[3]; |
| for (int i=0; i<3 ;i++) { |
| if (tokenizer.hasMoreTokens()) { |
| localeDef[i] = tokenizer.nextToken(); |
| } else { |
| localeDef[i] = ""; |
| } |
| } |
| supportedLocales.add(new java.util.Locale(localeDef[0], localeDef[1], localeDef[2])); |
| |
| } |
| |
| if (castorResources==null) { |
| castorResources = new LanguageSetImpl(); |
| } |
| if (resourceBundle!=null) { |
| ((LanguageSetImpl)castorResources).setResources(resourceBundle); |
| } |
| ((Support)castorResources).postLoad(this.supportedLocales); |
| ((Support)descriptions).postLoad(parameter); |
| ((Support)displayNames).postLoad(parameter); |
| |
| } |
| public void postStore(Object parameter) throws Exception { |
| ((Support)contentTypes).postStore(this); |
| if (castorResources!=null) { |
| ((Support)castorResources).postStore(this); |
| } |
| } |
| public void preBuild(Object parameter) throws Exception { |
| setPortletApplicationDefinition((PortletApplicationDefinition)parameter); |
| ((Support)contentTypes).preBuild(this); |
| if (castorResources!=null) { |
| ((Support)castorResources).preBuild(this); |
| } |
| } |
| public void preStore(Object parameter) throws Exception { |
| ((Support)contentTypes).preStore(this); |
| if (castorResources!=null) { |
| ((Support)castorResources).preStore(this); |
| } |
| } |
| |
| // additional methods. |
| |
| public Collection getCastorContentTypes() { |
| return(ContentTypeSetImpl)contentTypes; |
| } |
| |
| public Collection getCastorDisplayNames() { |
| return(DisplayNameSetImpl)displayNames; |
| } |
| |
| public Collection getCastorDescriptions() { |
| return(DescriptionSetImpl)descriptions; |
| } |
| |
| public Collection getDescriptions() { |
| return(DescriptionSetImpl)descriptions; |
| } |
| |
| public Collection getCastorInitParams() { |
| return(ParameterSetImpl)initParams; |
| } |
| |
| public SecurityRoleRefSet getCastorInitSecurityRoleRefs() { |
| return initSecurityRoleRefs; |
| } |
| |
| public PreferenceSet getCastorPreferences() { |
| return preferences; |
| } |
| |
| public LanguageSet getCastorResources() { |
| return castorResources; |
| } |
| |
| // not yet fully supported |
| // public Collection getSecurityRoleRef() |
| // { |
| // return securityRoleRef; |
| // } |
| |
| // public void setSecurityRoleRef(Collection securityRoleRef) |
| // { |
| // this.securityRoleRef = (ArrayList)securityRoleRef; |
| // } |
| |
| // additional internal methods |
| |
| public Collection getCastorSupportedLocales() { |
| return castorSupportedLocales; |
| } |
| |
| |
| private String getGUID() { |
| String portletID = ""; |
| if (getName()!=null) portletID += getName(); |
| |
| portletID = application.getId().toString() + "."+portletID; |
| return portletID; |
| } |
| |
| public ClassLoader getPortletClassLoader() { |
| return classLoader; |
| } |
| |
| public String getResourceBundle() { |
| return this.resourceBundle; |
| } |
| |
| public Collection getSupportedLocales() { |
| return supportedLocales; |
| } |
| |
| public void setCastorContentTypes(ContentTypeSet castorContentTypes) { |
| this.contentTypes = castorContentTypes; |
| } |
| |
| public void setCastorInitParams(ParameterSet castorInitParams) { |
| this.initParams = castorInitParams; |
| } |
| |
| public void setCastorInitSecurityRoleRefs(SecurityRoleRefSet castorInitSecurityRoleRefs) { |
| this.initSecurityRoleRefs = castorInitSecurityRoleRefs; |
| } |
| |
| public void setCastorDisplayNames(DisplayNameSet castorDisplayNames) { |
| this.displayNames = castorDisplayNames; |
| } |
| |
| public void setCastorDescriptions(DescriptionSet castorDescriptions) { |
| this.descriptions = castorDescriptions; |
| } |
| |
| public void setCastorPreferences(PreferenceSet castorPreferences) { |
| this.preferences = castorPreferences; |
| } |
| |
| public void setCastorResources(LanguageSet resources) { |
| this.castorResources = resources; |
| } |
| |
| public void setCastorSupportedLocales(Collection castorSupportedLocales) { |
| this.castorSupportedLocales = (ArrayList)castorSupportedLocales; |
| } |
| |
| public void setExpirationCache(String expirationCache) { |
| this.expirationCache = expirationCache; |
| } |
| |
| protected void setPortletApplicationDefinition(PortletApplicationDefinition application) { |
| this.application = application; |
| } |
| |
| public void setResourceBundle(String resourceBundle) { |
| this.resourceBundle = resourceBundle; |
| } |
| |
| protected void setServletDefinition(ServletDefinition servlet) { |
| this.servlet = servlet; |
| } |
| |
| /** |
| * @return Returns the localPortlet. |
| */ |
| public boolean isLocalPortlet() { |
| return this.localPortlet; |
| } |
| |
| /** |
| * @param localPortlet The localPortlet to set. |
| */ |
| public void setLocalPortlet(boolean localPortlet) { |
| this.localPortlet = localPortlet; |
| } |
| |
| /** |
| * @return Returns the localPortletInvoker. |
| */ |
| public PortletInvoker getLocalPortletInvoker() { |
| return this.localPortletInvoker; |
| } |
| |
| /** |
| * Set a local portlet invoker for caching |
| * @param localPortletInvoker The localPortletInvoker to set. |
| */ |
| public void setLocalPortletInvoker(PortletInvoker localPortletInvoker) { |
| this.localPortletInvoker = localPortletInvoker; |
| } |
| } |