⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 relativeportalurlimpl.java.svn-base

📁 portal越来越流行了
💻 SVN-BASE
字号:
/* * 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.url.impl;import java.util.Collection;import java.util.Collections;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import javax.portlet.PortletMode;import javax.portlet.WindowState;import javax.servlet.ServletContext;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.pluto.driver.AttributeKeys;import org.apache.pluto.driver.config.DriverConfiguration;import org.apache.pluto.driver.services.portal.PageConfig;import org.apache.pluto.driver.url.PortalURL;import org.apache.pluto.driver.url.PortalURLParameter;import org.apache.pluto.driver.url.PortalURLParser;import org.apache.pluto.util.StringUtils;/** * The portal URL. * @since 1.0 */public class RelativePortalURLImpl implements PortalURL {    private static final Log LOG = LogFactory.getLog(RelativePortalURLImpl.class);    private String servletPath;    private String renderPath;    private String actionWindow;        private String resourceWindow;    private Map<String, String[]> publicParameterCurrent = new HashMap<String, String[]>();        private Map<String, String[]> publicParameterNew = new HashMap<String, String[]>();        /**      * PortalURLParser used to construct the string     * representation of this portal url.     */    private PortalURLParser urlParser;    /** The window states: key is the window ID, value is WindowState. */    private Map windowStates = new HashMap();    private Map portletModes = new HashMap();    /** Parameters of the portlet windows. */    private Map parameters = new HashMap();    /**     * Constructs a PortalURLImpl instance using customized port.     * @param contextPath  the servlet context path.     * @param servletName  the servlet name.     * @param urlParser    the {@link PortalURLParser} used to construct a string representation of the url.     */    public RelativePortalURLImpl(String contextPath, String servletName, PortalURLParser urlParser) {    	StringBuffer buffer = new StringBuffer();    	buffer.append(contextPath);    	buffer.append(servletName);        servletPath = buffer.toString();        this.urlParser = urlParser;    }    /**     * Internal private constructor used by method <code>clone()</code>.     * @see #clone()     */    private RelativePortalURLImpl() {    	// Do nothing.    }    // Public Methods ----------------------------------------------------------    public void setRenderPath(String renderPath) {        this.renderPath = renderPath;    }    public String getRenderPath() {        return renderPath;    }    public void addParameter(PortalURLParameter param) {        parameters.put(param.getWindowId() + param.getName(), param);    }    public Collection getParameters() {        return parameters.values();    }    public void setActionWindow(String actionWindow) {        this.actionWindow = actionWindow;    }    public String getActionWindow() {        return actionWindow;    }    public Map getPortletModes() {        return Collections.unmodifiableMap(portletModes);    }    public PortletMode getPortletMode(String windowId) {        PortletMode mode = (PortletMode) portletModes.get(windowId);        if (mode == null) {            mode = PortletMode.VIEW;        }        return mode;    }    public void setPortletMode(String windowId, PortletMode portletMode) {        portletModes.put(windowId, portletMode);    }    public Map getWindowStates() {        return Collections.unmodifiableMap(windowStates);    }    /**     * Returns the window state of the specified window.     * @param windowId  the window ID.     * @return the window state. Default to NORMAL.     */    public WindowState getWindowState(String windowId) {        WindowState state = (WindowState) windowStates.get(windowId);        if (state == null) {            state = WindowState.NORMAL;        }        return state;    }    /**     * Sets the window state of the specified window.     * @param windowId  the window ID.     * @param windowState  the window state.     */    public void setWindowState(String windowId, WindowState windowState) {        this.windowStates.put(windowId, windowState);    }    /**     * Clear parameters of the specified window.     * @param windowId  the window ID.     */    public void clearParameters(String windowId) {    	for (Iterator it = parameters.entrySet().iterator(); it.hasNext(); ) {            Map.Entry entry = (Map.Entry) it.next();            PortalURLParameter param = (PortalURLParameter) entry.getValue();            if (param.getWindowId()!=null){            	if (param.getWindowId().equals(windowId)) {                	it.remove();                }            }        }    }    /**     * Converts to a string representing the portal URL.     * @return a string representing the portal URL.     * @see PortalURLParserImpl#toString(org.apache.pluto.driver.url.PortalURL)     */    public String toString() {        return urlParser.toString(this);    }    /**     * Returns the server URI (protocol, name, port).     * @return the server URI portion of the portal URL.     * @deprecated      */    public String getServerURI() {        return null;    }    /**     * Returns the servlet path (context path + servlet name).     * @return the servlet path.     */    public String getServletPath() {        return servletPath;    }    /**     * Clone a copy of itself.     * @return a copy of itself.     */    public Object clone() {    	RelativePortalURLImpl portalURL = new RelativePortalURLImpl();    	portalURL.servletPath = this.servletPath;    	portalURL.parameters = new HashMap(parameters);    	portalURL.portletModes = new HashMap(portletModes);    	portalURL.windowStates = new HashMap(windowStates);    	portalURL.renderPath = renderPath;    	portalURL.actionWindow = actionWindow;        portalURL.urlParser = urlParser;    	portalURL.resourceWindow = resourceWindow;    	portalURL.publicParameterCurrent = publicParameterCurrent;        return portalURL;    }//JSR-286 methods        public void addPublicRenderParametersNew(Map parameters){    	for (Iterator iter=parameters.keySet().iterator(); iter.hasNext();) {			String key = (String) iter.next();			if (publicParameterNew.containsKey(key)){				publicParameterNew.remove(key);			}			String[] values = (String[])parameters.get(key);			if (values[0]!= null){				publicParameterNew.put(key, values);			}		}    }            public void addPublicParameterCurrent(String name, String[] values){    	publicParameterCurrent.put(name, values);    }        public void addPublicParameterActionResourceParameter(String parameterName, String value) {    	//add at the first position		if (publicParameterCurrent.containsKey(parameterName)){			String[] tmp = publicParameterCurrent.get(parameterName);						String[] values = new String[tmp.length + 1];			values[0] = value;			for (int i = 0; i < tmp.length; i++) {				values[i+1] = tmp[i];			}			publicParameterCurrent.remove(parameterName);			publicParameterCurrent.put(parameterName, StringUtils.copy(values));		}		else			publicParameterCurrent.put(parameterName, new String[]{value});	}        public Map<String, String[]> getPublicParameters() {    	Map<String,String[]> tmp = new HashMap<String, String[]>();				for (Iterator iter = publicParameterCurrent.keySet().iterator(); iter.hasNext();) {           String paramname = (String) iter.next();           if (!publicParameterNew.containsKey(paramname)){               String[] paramvalue = publicParameterCurrent.get(paramname);               tmp.put(paramname, paramvalue);           }        }		for (Iterator iter = publicParameterNew.keySet().iterator();iter.hasNext();){			String paramname = (String) iter.next();			String[] paramvalue = publicParameterNew.get(paramname);			if (paramvalue[0]!=null){				tmp.put(paramname, paramvalue);			}		}		return tmp;    }	public PageConfig getPageConfig(ServletContext servletContext) {		String requestedPageId = getRenderPath();        if (LOG.isDebugEnabled()) {            LOG.debug("Requested Page: " + requestedPageId);        }        return ((DriverConfiguration) servletContext.getAttribute(        		AttributeKeys.DRIVER_CONFIG)).getPageConfig(requestedPageId);	}        public String getResourceWindow() {		return resourceWindow;	}	public void setResourceWindow(String resourceWindow) {		this.resourceWindow = resourceWindow;	}	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -