blob: 300061ce59a7876eaf18bd1485348f299f912451 [file] [log] [blame]
/*
* 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.HashMap;
import java.util.Locale;
import java.util.Vector;
import javax.servlet.ServletContext;
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.ObjectID;
import org.apache.pluto.om.common.ParameterSet;
import org.apache.pluto.om.common.SecurityRoleSet;
import org.apache.pluto.om.portlet.PortletApplicationDefinition;
import org.apache.pluto.om.servlet.ServletDefinitionList;
import org.apache.pluto.om.servlet.WebApplicationDefinition;
import org.apache.cocoon.portal.pluto.om.common.ObjectIDImpl;
import org.apache.cocoon.portal.pluto.om.common.ParameterSetImpl;
import org.apache.cocoon.portal.pluto.om.common.ResourceRefSet;
import org.apache.cocoon.portal.pluto.om.common.SecurityRoleSetImpl;
import org.apache.cocoon.portal.pluto.om.common.Support;
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.TagDefinitionSet;
/**
*
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
*
* @version CVS $Id$
*/
public class WebApplicationDefinitionImpl
implements WebApplicationDefinition, Support {
// <not used variables - only for castor>
public String icon;
public String distributable;
public String sessionConfig;
public String mimeMapping;
public String welcomeFileList;
public String errorPage;
public String taglib;
public String resourceRef;
public String loginConfig;
public String securityRole;
public String envEntry;
public String ejbRef;
private Collection castorMimeMappings = new ArrayList();
// </not used variables - only for castor>
private Collection securityConstraints = new ArrayList();
private String contextPath;
private DescriptionSet descriptions = new DescriptionSetImpl();
private DisplayNameSet displayNames = new DisplayNameSetImpl();
private String id = "";
private ParameterSet initParams = new ParameterSetImpl();
/** The object id */
private ObjectID objectId;
private Collection servletMappings = new ArrayList();
private ServletDefinitionList servlets = new ServletDefinitionListImpl();
private SecurityRoleSet securityRoles = new SecurityRoleSetImpl();
// modified by YCLI: START :: to handle multiple taglib tags and resource-ref tag
// private TagDefinition castorTagDefinition = new TagDefinition();
private TagDefinitionSet taglibs = new TagDefinitionSet();
private ResourceRefSet castorResourceRef = new ResourceRefSet();
// modified by YCLI: END
// WebApplicationDefinition implementation.
public ObjectID getId() {
if (this.objectId == null) {
this.objectId = ObjectIDImpl.createFromString(id);
}
return this.objectId;
}
/* (non-Javadoc)
* @see org.apache.pluto.om.servlet.WebApplicationDefinition#getDisplayName(Locale)
*/
public DisplayName getDisplayName(Locale locale) {
return displayNames.get(locale);
}
/* (non-Javadoc)
* @see org.apache.pluto.om.servlet.WebApplicationDefinition#getDescription(java.util.Locale)
*/
public Description getDescription(Locale locale) {
return descriptions.get(locale);
}
/* (non-Javadoc)
* @see org.apache.pluto.om.servlet.WebApplicationDefinition#getInitParameterSet()
*/
public ParameterSet getInitParameterSet() {
return initParams;
}
/* (non-Javadoc)
* @see org.apache.pluto.om.servlet.WebApplicationDefinition#getServletDefinitionList()
*/
public ServletDefinitionList getServletDefinitionList() {
return servlets;
}
/* (non-Javadoc)
* @see org.apache.pluto.om.servlet.WebApplicationDefinition#getServletContext(javax.servlet.ServletContext)
*/
public ServletContext getServletContext(ServletContext servletContext) {
return servletContext.getContext(contextPath);
}
/* (non-Javadoc)
* @see org.apache.pluto.om.servlet.WebApplicationDefinition#getContextRoot()
*/
public String getContextRoot() {
return contextPath;
}
/* (non-Javadoc)
* @see org.apache.cocoon.portal.pluto.om.common.Support#postBuild(java.lang.Object)
*/
public void postBuild(Object parameter) throws Exception {
// not needed in this implementation
}
/* (non-Javadoc)
* @see org.apache.cocoon.portal.pluto.om.common.Support#postLoad(java.lang.Object)
*/
public void postLoad(Object parameter) throws Exception {
Vector structure = (Vector)parameter;
PortletApplicationDefinition portletApplication = (PortletApplicationDefinition)structure.get(0);
((Support)portletApplication).postLoad(this);
((Support)servlets).postLoad(this);
((Support)descriptions).postLoad(parameter);
((Support)displayNames).postLoad(parameter);
}
/* (non-Javadoc)
* @see org.apache.cocoon.portal.pluto.om.common.Support#postStore(java.lang.Object)
*/
public void postStore(Object parameter) throws Exception {
((Support)servlets).postStore(this);
}
/* (non-Javadoc)
* @see org.apache.cocoon.portal.pluto.om.common.Support#preBuild(java.lang.Object)
*/
public void preBuild(Object parameter) throws Exception {
Vector structure = (Vector)parameter;
PortletApplicationDefinition portletApplication = (PortletApplicationDefinition)structure.get(0);
String contextString = (String)structure.get(1);
setContextRoot(contextString);
HashMap servletMap = new HashMap(1);
Vector structure2 = new Vector();
structure2.add(this);
structure2.add(servletMappings);
structure2.add(servletMap);
((Support)servlets).preBuild(structure2);
Vector structure3 = new Vector();
structure3.add(contextString);
structure3.add(this);
structure3.add(servletMap);
((Support)portletApplication).preBuild(structure3);
}
/* (non-Javadoc)
* @see org.apache.cocoon.portal.pluto.om.common.Support#preStore(java.lang.Object)
*/
public void preStore(Object parameter) throws Exception {
Vector structure = (Vector)parameter;
PortletApplicationDefinition portletApplication = (PortletApplicationDefinition)structure.get(0);
((Support)portletApplication).preStore(null);
((Support)servlets).preStore(this);
}
// additional methods.
public String getCastorId() {
if (id.length() > 0) {
return getId().toString();
}
return null;
}
public Collection getCastorInitParams() {
return(ParameterSetImpl)initParams;
}
public Collection getCastorServlets() {
return(ServletDefinitionListImpl)servlets;
}
public Collection getCastorDisplayNames() {
return(DisplayNameSetImpl)displayNames;
}
public Collection getCastorDescriptions() {
return(DescriptionSetImpl)descriptions;
}
public SecurityRoleSet getSecurityRoles() {
return securityRoles;
}
public Collection getServletMappings() {
return servletMappings;
}
public void setCastorId(String id) {
setId(id);
}
protected void setContextRoot(String contextPath)
{
// Test for IBM WebSphere
if (contextPath != null && contextPath.endsWith(".war"))
{
contextPath = contextPath.substring(0, contextPath.length()-4);
}
this.contextPath = contextPath;
}
public void setDescriptions(DescriptionSet descriptions) {
this.descriptions = descriptions;
}
public void setDisplayNames(DisplayNameSet displayNames) {
this.displayNames = displayNames;
}
public void setCastorDescriptions(DescriptionSet castorDescriptions) {
this.descriptions = castorDescriptions;
}
public void setCastorDisplayNames(DisplayNameSet castorDisplayNames) {
this.displayNames = castorDisplayNames;
}
public void setId(String id) {
this.id = id;
objectId = null;
}
// modified by YCLI: START :: handling multiple taglib tags and resource-ref tag
/**
* @return Custom tag definitions configured in the webapp.
*/
public TagDefinitionSet getTagDefinitionSet() {
return taglibs;
}
public Collection getCastorTagDefinitions() {
return taglibs;
}
public void setCastorTagDefinitions(TagDefinitionSet taglibs) {
this.taglibs = taglibs;
}
public ResourceRefSet getCastorResourceRefSet() {
return castorResourceRef;
}
public void setCastorResourceRefSet(ResourceRefSet resourceRefs) {
castorResourceRef = resourceRefs;
}
// modified by YCLI: END
/**
* @return Returns the castorMimeMappings.
*/
public Collection getCastorMimeMappings() {
return castorMimeMappings;
}
public Collection getSecurityConstraints() {
return securityConstraints;
}
/**
* @param castorMimeMappings The castorMimeMappings to set.
*/
public void setCastorMimeMappings(Collection castorMimeMappings) {
this.castorMimeMappings = castorMimeMappings;
}
public void setSecurityConstraints(Collection securityConstraints) {
this.securityConstraints = securityConstraints;
}
}