/* | |
* Copyright 2004 The Apache Software Foundation. | |
* | |
* Licensed 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.pluto.driver.services.portal; | |
/** | |
* Configuration of a portlet window on the portal page. | |
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a> | |
* @author <a href="mailto:zheng@apache.org">ZHENG Zhong</a> | |
*/ | |
public class PortletWindowConfig { | |
// Private Member Variables ------------------------------------------------ | |
/** The context path of the associated portlet. */ | |
private String contextPath = null; | |
/** The portlet name. */ | |
private String portletName = null; | |
// Constructor ------------------------------------------------------------- | |
/** | |
* No-arg constructor. | |
*/ | |
public PortletWindowConfig() { | |
// Do nothing. | |
} | |
// Public Methods ---------------------------------------------------------- | |
public String getId() { | |
return createPortletId(contextPath, portletName); | |
} | |
public String getContextPath() { | |
return contextPath; | |
} | |
public void setContextPath(String contextPath) { | |
this.contextPath = contextPath; | |
} | |
public String getPortletName() { | |
return portletName; | |
} | |
public void setPortletName(String portletName) { | |
this.portletName = portletName; | |
} | |
// Public Static Methods --------------------------------------------------- | |
/** | |
* Creates the portlet ID from context path and portlet name. The portlet ID | |
* is constructed by concatinating the context path and the portlet name | |
* using a dot ('.'). | |
* | |
* The method checks that the portlet name parameter does not have a dot. This check | |
* is not done for the portlet ID. | |
* | |
* @param contextPath the portlet context path. | |
* @param portletName the portlet name. | |
* @throws IllegalArgumentException if the portletName has a dot | |
* @throws NullPointerException if the portlet Name or context path is null. | |
*/ | |
public static String createPortletId(String contextPath, String portletName) | |
throws NullPointerException, IllegalArgumentException { | |
if (contextPath == null) { | |
throw new NullPointerException("Context path must not be null."); | |
} | |
if (portletName == null) { | |
throw new NullPointerException("Portlet name must not be null."); | |
} | |
if (portletName.indexOf('.') != -1) { | |
throw new IllegalArgumentException("Portlet name must not have a dot(period). Please remove the dot from the value of the portlet-name element ("+ portletName + ") in portlet.xml"); | |
} | |
return contextPath + "." + portletName; | |
} | |
/** | |
* Parses out the portlet context path from the portlet ID. | |
* @param portletId the portlet ID to parse. | |
* @return the portlet context path. | |
*/ | |
public static String parseContextPath(String portletId) { | |
int index = getSeparatorIndex(portletId); | |
return portletId.substring(0, index); | |
} | |
/** | |
* Parses out the portlet context path from the portlet ID. | |
* @param portletId the portlet ID to parse. | |
* @return the portlet context path. | |
*/ | |
public static String parsePortletName(String portletId) { | |
int index = getSeparatorIndex(portletId); | |
return portletId.substring(index + 1); | |
} | |
// Private Static Method --------------------------------------------------- | |
/** | |
* Parses the portlet ID and returns the separator (".") index. The portlet | |
* ID passed in should be a valid ID: not null, not starts with ".", | |
* not ends with ".", and contains ".". The portlet ID can have more than | |
* one dot, but the last one is taken to be the separator. | |
* | |
* @param portletId the portlet ID to parse. | |
* @return the separator index. | |
* @throws IllegalArgumentException if portlet ID does not contain a dot or the dot is the first or last character. | |
* @throws NullPointerException if the portlet ID is null | |
*/ | |
private static int getSeparatorIndex(String portletId) | |
throws NullPointerException, IllegalArgumentException { | |
if (portletId == null) { | |
throw new NullPointerException("Portlet ID is null"); | |
} | |
int index = portletId.lastIndexOf("."); | |
if (index <= 0 || index == portletId.length() - 1) { | |
throw new IllegalArgumentException("Portlet ID '" + portletId + "' does not contain a dot or the dot is the first or last character"); | |
} | |
return index; | |
} | |
} | |