📄 portletwindowconfig.java
字号:
/*
* 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.pluto.driver.services.portal;
/**
* Configuration of a portlet window on the portal page.
*/
public class PortletWindowConfig {
// Private Member Variables ------------------------------------------------
/** The context path of the associated portlet. */
private String contextPath;
/** The portlet name. */
private String portletName;
/** The metaInfo that provides uniqueness across window ids. */
private String metaInfo;
// Constructor -------------------------------------------------------------
/**
* No-arg constructor.
*/
public PortletWindowConfig() {
// Do nothing.
}
private PortletWindowConfig(String contextPath, String portletName, String metaInfo) {
this.contextPath = contextPath;
this.portletName = portletName;
this.metaInfo = metaInfo;
}
// Public Methods ----------------------------------------------------------
public String getId() {
return createPortletId(contextPath, portletName, metaInfo);
}
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 String getMetaInfo() {
return metaInfo;
}
public void setMetaInfo(String metaInfo) {
this.metaInfo = metaInfo;
}
// 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, String metaInfo)
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");
}
if(metaInfo == null) {
metaInfo = "";
}
if (contextPath.charAt(0) == '/')
{
contextPath = contextPath.substring(1);
}
return contextPath + "." + portletName + "!" + metaInfo;
}
/**
* 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);
if (portletId.charAt(0) != '/')
{
return "/" + portletId.substring(0, index);
}
else
{
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);
String postfix = portletId.substring(index + 1);
index = postfix.indexOf("!");
if(index > -1) {
return postfix.substring(0, index);
}
return postfix;
}
public static String parseMetaInfo(String portletId) {
int index = portletId.indexOf("!");
if(index > -1) {
return portletId.substring(index+1);
}
return "";
}
// Private Static Method ---------------------------------------------------
/**
* Parses the portlet ID and returns the separator (".") index. The portlet
* ID passed in should be a valid ID: not null 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.
* @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");
}
return index;
}
public static PortletWindowConfig fromId(String portletWindowId) {
String contextPath = parseContextPath(portletWindowId);
String portletName = parsePortletName(portletWindowId);
String metaInfo = parseMetaInfo(portletWindowId);
return new PortletWindowConfig(contextPath, portletName, metaInfo);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -