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

📄 portalurlparserimpl.java.svn-base

📁 portal越来越流行了
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
        }                // Append action and render parameters.        StringBuffer query = new StringBuffer("?");        boolean firstParam = true;        for (Iterator it = portalURL.getParameters().iterator();        		it.hasNext(); ) {                    	PortalURLParameter param = (PortalURLParameter) it.next();                        // Encode action params in the query appended at the end of the URL.            if (portalURL.getActionWindow() != null            		&& portalURL.getActionWindow().equals(param.getWindowId())            		|| (portalURL.getResourceWindow() != null            				&& portalURL.getResourceWindow().equals(param.getWindowId()))) {            	for (int i = 0; i < param.getValues().length; i++) {                    // FIX for PLUTO-247                    if ( firstParam ) {                        firstParam = false;                    } else {                        query.append("&");                    }                    query.append(encodeQueryParam(param.getName())).append("=")                    		.append(encodeQueryParam(param.getValues()[i]));                }            }                        // Encode render params as a part of the URL.            else if (param.getValues() != null            		&& param.getValues().length > 0) {                String valueString = encodeMultiValues(param.getValues());                if (valueString.length() > 0) {                	buffer.append("/").append(                			encodeControlParameter(RENDER_PARAM, param.getWindowId(),                               param.getName()));                	buffer.append("/").append(valueString);                }            }        }        StringUtils.encode(buffer);                        Map<String, String[]> publicParamList = portalURL.getPublicParameters();        if (publicParamList!=null){	        for (Iterator iter = publicParamList.keySet().iterator();iter.hasNext();){	        	String paramname = (String)iter.next();	        	String[] tmp = (String[])publicParamList.get(paramname);	        	String valueString = encodeMultiValues(tmp);	        	if (valueString.length()>0){	        		buffer.append("/").append(encodePublicParamname(PUBLIC_RENDER_PARAM, paramname));	        		buffer.append("/").append(valueString);	        	}	        }        }                // Construct the string representing the portal URL.        // Fix for PLUTO-247 - check if query string contains parameters        if ( query.length() > 1 ) {            return buffer.append(query).toString();        }                // Construct the string representing the portal URL.        return buffer.append(query).toString();    }    private String encodeQueryParam(String param) {        try {            return URLEncoder.encode(param, "UTF-8");        }        catch (UnsupportedEncodingException e) {            // If this happens, we've got bigger problems.            throw new RuntimeException(e);        }    }    // Private Encoding/Decoding Methods ---------------------------------------        /**     * Encode a control parameter.     * @param type  the type of the control parameter, which may be:     *              portlet mode, window state, or render parameter.     * @param windowId  the portlet window ID.     * @param name  the name to encode.     */    private String encodeControlParameter(String type,                                          String windowId,                                          String name) {    	StringBuffer buffer = new StringBuffer();    	buffer.append(PREFIX).append(type)    			.append(encodeCharacters(windowId))    			.append(DELIM).append(name);    	return buffer.toString();    }        private String encodePublicParamname(String type, String name){    	StringBuffer buffer = new StringBuffer();    	buffer.append(PREFIX).append(type)    	.append(DELIM).append(name);    	return buffer.toString();    }        /**     * Encode a string array containing multiple values into a single string.     * This method is used to encode multiple render parameter values.     * @param values  the string array to encode.     * @return a single string containing all the values.     */    private String encodeMultiValues(String[] values) {    	StringBuffer buffer = new StringBuffer();        for (int i = 0; i < values.length; i++) {        	// Do not operate on the array reference        	String currentValue = values[i];        	try {        		if (currentValue != null)        			currentValue = URLEncoder.encode(values[i], "UTF-8");			} catch (UnsupportedEncodingException e) {				LOG.warn(e);			}        	buffer.append(currentValue != null ? currentValue : "");            if (i + 1 < values.length) {            	buffer.append(VALUE_DELIM);            }        }        return encodeCharacters(buffer.toString());    }        /**     * Encode special characters contained in the string value.     * @param string  the string value to encode.     * @return the encoded string.     */    private String encodeCharacters(String string) {        for (int i = 0; i < ENCODINGS.length; i++) {            string = StringUtils.replace(string,                                         ENCODINGS[i][0],                                         ENCODINGS[i][1]);        }        return string;    }    /**     * Decode a control parameter.     * @param control  the control parameter to decode.     * @return values  a pair of decoded values.     */    private String[] decodeControlParameter(String control) {        String[] valuePair = new String[2];        control = control.substring((PREFIX + PORTLET_ID).length());        int index = control.indexOf(DELIM);        if (index >= 0) {        	valuePair[0] = control.substring(0, index);        	valuePair[0] = decodeCharacters(valuePair[0]);        	if (index + 1 <= control.length()) {        		valuePair[1] = control.substring(index + 1);        		valuePair[1] = decodeCharacters(valuePair[1]);        	} else {        		valuePair[1] = "";        	}        } else {        	valuePair[0] = decodeCharacters(control);        }        return valuePair;    }    /**     * Decode a name-value pair into a portal URL parameter.     * @param name  the parameter name.     * @param value  the parameter value.     * @return the decoded portal URL parameter.     */    private PortalURLParameter decodeParameter(String name, String value) {    	        if (LOG.isDebugEnabled()) {            LOG.debug("Decoding parameter: name=" + name            		+ ", value=" + value);        }    	    	// Decode the name into window ID and parameter name.        String noPrefix = name.substring((PREFIX + PORTLET_ID).length());        String windowId = noPrefix.substring(0, noPrefix.indexOf(DELIM));        String paramName = noPrefix.substring(noPrefix.indexOf(DELIM) + 1);                // Decode special characters in window ID and parameter value.        windowId = decodeCharacters(windowId);        if (value != null) {        	value = decodeCharacters(value);        }                // Split multiple values into a value array.        String[] paramValues = value.split(VALUE_DELIM);        for (int i = 0; i < paramValues.length;i++){        	try {        		paramValues[i] = URLDecoder.decode(paramValues[i], "UTF-8");			} catch (UnsupportedEncodingException e) {				LOG.warn(e);			}        }        // Construct portal URL parameter and return.        return new PortalURLParameter(windowId, paramName, paramValues);    }        private PortalURLParameter decodePublicParameter(String name, String value) {    	        if (LOG.isDebugEnabled()) {            LOG.debug("Decoding parameter: name=" + name            		+ ", value=" + value);        }    	//    	// Decode the name into window ID and parameter name.        String noPrefix = name.substring((PREFIX + PORTLET_ID).length());        String paramName = noPrefix.substring(noPrefix.indexOf(DELIM) + 1);                // Decode special characters in parameter value.        if (value != null) {        	value = decodeCharacters(value);        }                // Split multiple values into a value array.        String[] paramValues = value.split(VALUE_DELIM);                // Construct portal URL parameter and return.        return new PortalURLParameter(null, paramName, paramValues);    }        /**     * Decode special characters contained in the string value.     * @param string  the string value to decode.     * @return the decoded string.     */    private String decodeCharacters(String string) {        for (int i = 0; i < ENCODINGS.length; i++) {        	string = StringUtils.replace(string,        	                             ENCODINGS[i][1],        	                             ENCODINGS[i][0]);        }		return string;    }}

⌨️ 快捷键说明

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