You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wsrp4j-dev@portals.apache.org by dl...@apache.org on 2006/12/10 22:09:46 UTC
svn commit: r485259 - in /portals/wsrp4j/trunk/consumer-proxyportlet: ./
src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/
src/java/org/apache/wsrp4j/consumer/proxyportlet/template/
src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspee...
Author: dlouzan
Date: Sun Dec 10 13:09:44 2006
New Revision: 485259
URL: http://svn.apache.org/viewvc?view=rev&rev=485259
Log:
- Added support for producer template processing using a plugin system. Currently working plugin for PlutoPortal
Added:
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposer.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerService.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerServiceFactory.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposer.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposerService.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalControlParameter.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposer.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposerService.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalURL.java
Modified:
portals/wsrp4j/trunk/consumer-proxyportlet/pom.xml
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/ProxyPortlet.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/URLTemplateComposerImpl.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/util/Constants.java
portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/log4j.properties
portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/wsrp4j-config.properties
Modified: portals/wsrp4j/trunk/consumer-proxyportlet/pom.xml
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/pom.xml?view=diff&rev=485259&r1=485258&r2=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/pom.xml (original)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/pom.xml Sun Dec 10 13:09:44 2006
@@ -38,6 +38,10 @@
<include>Messages.properties</include>
</includes>
</resource>
+ <resource>
+ <directory>src/webapp/WEB-INF/classes</directory>
+ <filtering>true</filtering>
+ </resource>
</resources>
<plugins>
<plugin>
@@ -91,6 +95,12 @@
<artifactId>commons-beanutils</artifactId>
<groupId>commons-beanutils</groupId>
<version>${commons-beanutils.version}</version>
+ </dependency>
+ <dependency>
+ <artifactId>pluto</artifactId>
+ <groupId>org.apache.pluto</groupId>
+ <version>${pluto.version}</version>
+ <scope>provided</scope>
</dependency>
</dependencies>
</project>
Modified: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/ProxyPortlet.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/ProxyPortlet.java?view=diff&rev=485259&r1=485258&r2=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/ProxyPortlet.java (original)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/ProxyPortlet.java Sun Dec 10 13:09:44 2006
@@ -79,8 +79,8 @@
import org.apache.wsrp4j.commons.consumer.interfaces.portlet.PortletKey;
import org.apache.wsrp4j.commons.consumer.interfaces.portlet.WSRPPortlet;
import org.apache.wsrp4j.commons.consumer.interfaces.urlgenerator.URLGenerator;
-import org.apache.wsrp4j.commons.consumer.interfaces.urlgenerator.
- URLTemplateComposer;
+import org.apache.wsrp4j.commons.consumer.interfaces.urlgenerator.URLRewriter;
+import org.apache.wsrp4j.commons.consumer.interfaces.urlgenerator.URLTemplateComposer;
import org.apache.wsrp4j.commons.consumer.driver.portlet.PortletKeyImpl;
import org.apache.wsrp4j.commons.consumer.driver.user.UserImpl;
@@ -429,13 +429,22 @@
URLGenerator urlGenerator =
URLGeneratorImpl.getInstance(renderResponse,
getPortletConfig());
+
URLTemplateComposer templateComposer =
consumerEnv.getTemplateComposer();
if(templateComposer != null) {
templateComposer.setURLGenerator(urlGenerator);
+ /* For testing, hardcode the subclass */
+ if (templateComposer instanceof URLTemplateComposerImpl) {
+ ((URLTemplateComposerImpl) templateComposer).setCurrentRequest(request);
+ ((URLTemplateComposerImpl) templateComposer).setCurrentResponse(renderResponse);
+ }
+ }
+ URLRewriter urlRewriter =
+ consumerEnv.getURLRewriter();
+ if (urlRewriter != null) {
+ urlRewriter.setURLGenerator(urlGenerator);
}
-
- consumerEnv.getURLRewriter().setURLGenerator(urlGenerator);
}
// do a getMarkup call and check the response
Modified: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/URLTemplateComposerImpl.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/URLTemplateComposerImpl.java?view=diff&rev=485259&r1=485258&r2=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/URLTemplateComposerImpl.java (original)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/impl/URLTemplateComposerImpl.java Sun Dec 10 13:09:44 2006
@@ -15,8 +15,15 @@
*/
package org.apache.wsrp4j.consumer.proxyportlet.impl;
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
import org.apache.wsrp4j.commons.consumer.interfaces.urlgenerator.URLGenerator;
import org.apache.wsrp4j.commons.consumer.interfaces.urlgenerator.URLTemplateComposer;
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposer;
+
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposerService;
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposerServiceFactory;
/**
* <p>
@@ -38,6 +45,10 @@
private static URLTemplateComposer instance;
private URLGenerator urlGenerator;
+ private PortalTemplateComposerService composerService;
+
+ private PortletRequest currentRequest;
+ private PortletResponse currentResponse;
public static URLTemplateComposer getInstance() {
if (instance == null) {
@@ -48,6 +59,15 @@
}
private URLTemplateComposerImpl() {
+ composerService = PortalTemplateComposerServiceFactory.getService();
+ }
+
+ public void setCurrentRequest(PortletRequest request) {
+ currentRequest = request;
+ }
+
+ public void setCurrentResponse(PortletResponse response) {
+ currentResponse = response;
}
/**
@@ -62,10 +82,16 @@
boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
-
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getBlockingActionTemplate();
+ }
+
return template;
+
}
public String createSecureBlockingActionTemplate(boolean includePortletHandle,
@@ -73,26 +99,32 @@
boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
- /*
- *
- * if (this.urlGenerator != null) { template = createTemplate(
- * urlGenerator.getBlockingActionURL(null), false, true, true, true,
- * true, true, false, false, includePortletHandle,
- * includeUserContextKey, includePortletInstanceKey, includeSessionID); }
- */
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getSecureBlockingActionTemplate();
+ }
+
return template;
+
}
public String createRenderTemplate(boolean includePortletHandle, boolean includeUserContextKey,
boolean includePortletInstanceKey, boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
-
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getRenderTemplate();
+ }
+
return template;
+
}
public String createSecureRenderTemplate(boolean includePortletHandle,
@@ -100,9 +132,14 @@
boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
-
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getSecureRenderTemplate();
+ }
+
return template;
}
@@ -111,10 +148,16 @@
boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
-
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getResourceTemplate();
+ }
+
return template;
+
}
public String createSecureResourceTemplate(boolean includePortletHandle,
@@ -122,21 +165,33 @@
boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
-
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getSecureResourceTemplate();
+ }
+
return template;
+
}
public String createDefaultTemplate(boolean includePortletHandle,
boolean includeUserContextKey, boolean includePortletInstanceKey,
boolean includeSessionID) {
-
+
String template = null;
- // TODO: Template processing Pluto case
-
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getDefaultTemplate();
+ }
+
return template;
+
}
public String createSecureDefaultTemplate(boolean includePortletHandle,
@@ -144,10 +199,16 @@
boolean includeSessionID) {
String template = null;
-
- // TODO: Template processing Pluto case
-
+
+ if (composerService != null) {
+ PortalTemplateComposer templateComposer =
+ composerService.getPortalTemplateComposer(
+ currentRequest, currentResponse);
+ template = templateComposer.getSecureDefaultTemplate();
+ }
+
return template;
+
}
public String getNamespacePrefix() {
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposer.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposer.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposer.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposer.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template;
+
+
+public interface PortalTemplateComposer {
+
+ public String getBlockingActionTemplate();
+ public String getSecureBlockingActionTemplate();
+ public String getRenderTemplate();
+ public String getSecureRenderTemplate();
+ public String getResourceTemplate();
+ public String getSecureResourceTemplate();
+ public String getDefaultTemplate();
+ public String getSecureDefaultTemplate();
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerService.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerService.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerService.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerService.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template;
+
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
+
+public interface PortalTemplateComposerService {
+
+ public PortalTemplateComposer getPortalTemplateComposer(
+ PortletRequest request, PortletResponse response);
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerServiceFactory.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerServiceFactory.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerServiceFactory.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/PortalTemplateComposerServiceFactory.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.wsrp4j.commons.util.configuration.ConfigurationParametersManager;
+import org.apache.wsrp4j.commons.util.configuration.MissingConfigurationParameterException;
+
+import org.apache.wsrp4j.consumer.proxyportlet.util.Constants;
+
+
+public class PortalTemplateComposerServiceFactory {
+
+ private static final Log log = LogFactory.getLog(
+ PortalTemplateComposerServiceFactory.class);
+
+ private static PortalTemplateComposerService _service;
+
+ static {
+ _service = null;
+ try {
+ String className = ConfigurationParametersManager.getParameter(
+ Constants.PROXYPORTLET_PORTAL_TEMPLATE_COMPOSER);
+ Class theClass = Class.forName(className);
+ _service = (PortalTemplateComposerService) theClass.newInstance();
+ } catch (MissingConfigurationParameterException e) {
+ log.fatal("PortalTemplateComposer class configuration parameter" +
+ " not found", e);
+ } catch (ClassNotFoundException e) {
+ log.fatal("PortalTemplateComposer class configuration parameter" +
+ " not found on classpath", e);
+ } catch (InstantiationException e) {
+ log.fatal("Error while instantiating service", e);
+ } catch (IllegalAccessException e) {
+ log.fatal("Error while instantiating service", e);
+ }
+ }
+
+ public static PortalTemplateComposerService getService() {
+ return _service;
+ }
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposer.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposer.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposer.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposer.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template.jetspeed;
+
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposer;
+
+
+public class JetspeedPortalTemplateComposer implements PortalTemplateComposer {
+
+ private PortletRequest request;
+ private PortletResponse response;
+
+ public JetspeedPortalTemplateComposer(PortletRequest request,
+ PortletResponse response) {
+ this.request = request;
+ this.response = response;
+ }
+
+ public String getBlockingActionTemplate() {
+ return null;
+ }
+
+ public String getSecureBlockingActionTemplate() {
+ return null;
+ }
+
+ public String getRenderTemplate() {
+ return null;
+ }
+
+ public String getSecureRenderTemplate() {
+ return null;
+ }
+
+ public String getResourceTemplate() {
+ return null;
+ }
+
+ public String getSecureResourceTemplate() {
+ return null;
+ }
+
+ public String getDefaultTemplate() {
+ return null;
+ }
+
+ public String getSecureDefaultTemplate() {
+ return null;
+ }
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposerService.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposerService.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposerService.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/jetspeed/JetspeedPortalTemplateComposerService.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template.jetspeed;
+
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposer;
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposerService;
+
+
+public class JetspeedPortalTemplateComposerService
+ implements PortalTemplateComposerService {
+
+ public JetspeedPortalTemplateComposerService() {}
+
+ public PortalTemplateComposer getPortalTemplateComposer(
+ PortletRequest request, PortletResponse response) {
+ return new JetspeedPortalTemplateComposer(request, response);
+ }
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalControlParameter.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalControlParameter.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalControlParameter.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalControlParameter.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,429 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template.pluto;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.portlet.PortletMode;
+import javax.portlet.WindowState;
+
+import org.apache.pluto.om.window.PortletWindow;
+import org.apache.pluto.util.StringUtils;
+
+public class PlutoPortalControlParameter {
+
+ static public final String ACTION = "ac";
+ static public final String MODE = "md";
+ static public final String PORTLET_ID = "pid";
+ static public final String PREFIX = "_";
+ static public final String PREV_MODE = "pm";
+ static public final String PREV_STATE = "ps";
+ static public final String RENDER_PARAM = "rp";
+ static public final String STATE = "st";
+
+ private Map requestParameter = new HashMap();
+
+ /**
+ * The map containing the encoded statefull control parameters.
+ * They are encoded in the sense, that names and values of
+ * <i>render parameters</i> and render parameters only are encoded
+ * using {{@link #encodeRenderParamName(PortletWindow, String)}}
+ * and {{@link #encodeRenderParamValues(String[])}}.
+ */
+ private Map encodedStateFullControlParameter;
+
+ private Map stateLessControlParameter;
+ private PlutoPortalURL url;
+
+
+ public PlutoPortalControlParameter(PlutoPortalURL url) {
+ this.url = url;
+ encodedStateFullControlParameter = this.url.getClonedEncodedStateFullControlParameter();
+ stateLessControlParameter = this.url.getClonedStateLessControlParameter();
+ }
+
+
+ /**
+ * Encodes the given String. Encoding means that all characters that might
+ * interfere with the algorithm used to prefix parameters to associate them
+ * with the correct portal window will be encoded. The reverse method is
+ * {{@link #decodeString(String)}}.
+ * @param value The String to be encoded.
+ * @return The encoded String.
+ * @see #decodeParameterName(String)
+ */
+ private static String encodeString(String value) {
+ value = StringUtils.replace(value, "0x", "0xx");
+ value = StringUtils.replace(value, "_", "0x1" );
+ value = StringUtils.replace(value, ".", "0x2" );
+ value = StringUtils.replace(value, "/", "0x3" );
+ value = StringUtils.replace(value, "\r", "0x4" );
+ value = StringUtils.replace(value, "\n", "0x5" );
+ value = StringUtils.replace(value, "<", "0x6" );
+ value = StringUtils.replace(value, ">", "0x7" );
+ value = StringUtils.replace(value, " ", "0x8" );
+ return value;
+ }
+
+ /**
+ * Decodes the given String. This is the reverse method to
+ * {{@link #encodeString(String)}}.
+ * @param value The string to be decoded.
+ * @return The decoded String.
+ */
+ private static String decodeString(String value) {
+ value = StringUtils.replace(value, "0x1", "_" );
+ value = StringUtils.replace(value, "0x2", "." );
+ value = StringUtils.replace(value, "0x3", "/" );
+ value = StringUtils.replace(value, "0x4", "\r" );
+ value = StringUtils.replace(value, "0x5", "\n" );
+ value = StringUtils.replace(value, "0x6", "<" );
+ value = StringUtils.replace(value, "0x7", ">" );
+ value = StringUtils.replace(value, "0x8", " " );
+ value = StringUtils.replace(value, "0xx", "0x");
+ return value;
+ }
+
+ /**
+ * Each parameter is encoded by prefixing it with the String
+ * {@link #PREFIX}. The reverse method is {{@link #decodeParameterName(String)}}.
+ * Don't mistake this method for {{@link #encodeRenderParamName(PortletWindow, String)}}
+ * or {{@link #encodeRenderParamValues(String[])}}.
+ * @param param The parameter to be encoded / prefixed.
+ * @return The encoded parameter.
+ */
+ public static String encodeParameterName(String param) {
+ return PREFIX + param;
+ }
+
+ /**
+ * Decodes a parameter by deleting the prefix, if the parameter
+ * was prefixed. Reverse method to {{@link #encodeParameterName(String)}}.
+ * Don't mistake this method for {{@link #decodeRenderParameterName(String)}}
+ * or {{@link #decodeRenderParamValues(String)}}.
+ * @param param The parameter to be decoded.
+ * @return The decoded parameter.
+ */
+ public static String decodeParameterName(String param) {
+ if (param.startsWith(PREFIX)) {
+ return param.substring(PREFIX.length());
+ } else {
+ return param;
+ }
+ }
+
+ /**
+ * Dummy method. Does nothing!
+ */
+ public static String decodeParameterValue(String paramName, String paramValue) {
+ return paramValue;
+ }
+
+ /**
+ * Encodes the given render parameter name. The name will be encoded using the
+ * {{@link #encodeValue(String)}} method, meaning that characters that will
+ * interfere with plutos internal url encoding and decoding
+ * mechanisms, like "/" or "_" will be encoded. The parameter name will then
+ * be prefixed with a string that encodes the portlet window the parameter belongs to.
+ * This prefix contains the characters ("/", "_", ...) that had to be encoded in
+ * the parameter name to later allow for a safe parsing of the prefix.
+ * @return A string encoding the given render parameter name to be used in portal urls.
+ */
+ public static String encodeRenderParamName(PortletWindow window, String paramName) {
+ String encodedParamName = encodeString(paramName);
+ StringBuffer returnvalue = new StringBuffer(50);
+ returnvalue.append(getRenderParamKey(window));
+ returnvalue.append("_");
+ returnvalue.append(encodedParamName);
+ return returnvalue.toString();
+ }
+
+ /**
+ * Reverse method for method {{@link #encodeRenderParamName(PortletWindow, String)}}.
+ */
+ public static String decodeRenderParamName(PortletWindow window, String encodedRenderParamName) {
+ String prefix = getRenderParamKey(window);
+ String unprefixedRenderParamName = null;
+ if (encodedRenderParamName.startsWith(prefix)) {
+ unprefixedRenderParamName = encodedRenderParamName.substring(prefix.length());
+ } else {
+ unprefixedRenderParamName = encodedRenderParamName;
+ }
+ return decodeString(unprefixedRenderParamName);
+ }
+
+ /**
+ * Encodes the given render parameter values. The values are encoded
+ * in one single string that will be used in portal urls.
+ * @param paramValues The render parameter values to be encoded.
+ * @return A string containing the encoded render parameter values.
+ */
+ public static String encodeRenderParamValues(String[] paramValues)
+ {
+ StringBuffer returnvalue = new StringBuffer(100);
+ returnvalue.append(paramValues.length);
+ for (int i=0; i<paramValues.length; i++) {
+ returnvalue.append("_");
+ if(paramValues[i]!=null) {
+ returnvalue.append(encodeString(paramValues[i]));
+ }
+ }
+ return returnvalue.toString();
+ }
+
+ /**
+ * Reverse method for the method {{@link #encodeRenderParamValues(String[])}}.
+ */
+ private static String[] decodeRenderParamValues(String encodedParamValues) {
+ StringTokenizer tokenizer = new StringTokenizer(encodedParamValues, "_");
+ if (!tokenizer.hasMoreTokens()) {
+ return null;
+ }
+ String _count = tokenizer.nextToken();
+ int count = Integer.valueOf(_count).intValue();
+ String[] values = new String[count];
+ for (int i = 0; i < count; i++) {
+ if (!tokenizer.hasMoreTokens()) {
+ return null;
+ }
+ values[i] = decodeString(tokenizer.nextToken());
+ }
+ return values;
+ }
+
+ /**
+ * Retrieve the key to use to prefix render parameters of the given
+ * portlet window.
+ * @param window
+ * @return
+ */
+ public static String getRenderParamKey(PortletWindow window) {
+ return RENDER_PARAM + "_" + window.getId().toString();
+ }
+
+ /**
+ * Check whether the given string encodes a control parameter.
+ */
+ public static boolean isControlParameter(String param) {
+ return param.startsWith(PREFIX);
+ }
+
+ /**
+ * Check whether the given string encodes a stateful parameter,
+ * i.e. mode, previous mode, window state, previous window state or
+ * render parameter.
+ */
+ public static boolean isStateFullParameter(String param) {
+ if (isControlParameter(param)) {
+ if ((param.startsWith(PREFIX + MODE)) ||
+ (param.startsWith(PREFIX + PREV_MODE)) ||
+ (param.startsWith(PREFIX + STATE)) ||
+ (param.startsWith(PREFIX + PREV_STATE)) ||
+ (param.startsWith(PREFIX + RENDER_PARAM))) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Deletes all render parameter that belong to the given window.
+ */
+ public void clearRenderParameters(PortletWindow portletWindow) {
+ String prefix = getRenderParamKey(portletWindow);
+ Iterator keyIterator = encodedStateFullControlParameter.keySet().iterator();
+ while (keyIterator.hasNext()) {
+ String encodedName = (String)keyIterator.next();
+ if (encodedName.startsWith(prefix)) {
+ keyIterator.remove();
+ }
+ }
+ }
+
+ private String getActionKey(PortletWindow window)
+ {
+ return ACTION+"_"+window.getId().toString();
+ }
+
+ public String[] getActionParameter(PortletWindow window, String paramName) {
+ String encodedValues = (String)encodedStateFullControlParameter.get(encodeRenderParamName(window, paramName));
+ String[] decodedValues = decodeRenderParamValues(encodedValues);
+ return decodedValues;
+ }
+
+ public PortletMode getMode(PortletWindow window) {
+ String mode = (String)encodedStateFullControlParameter.get(getModeKey(window));
+ if (mode != null) {
+ return new PortletMode(mode);
+ } else {
+ return PortletMode.VIEW;
+ }
+ }
+
+ private String getModeKey(PortletWindow window) {
+ return MODE + "_" + window.getId().toString();
+ }
+
+ public String getPIDValue() {
+ String value = (String)stateLessControlParameter.get(getPortletIdKey());
+ return value == null ? "" : value;
+ }
+
+ private String getPortletIdKey() {
+ return PORTLET_ID;
+ }
+
+ public PortletMode getPrevMode(PortletWindow window) {
+ String mode = (String)encodedStateFullControlParameter.get(getPrevModeKey(window));
+ if (mode != null) {
+ return new PortletMode(mode);
+ } else {
+ return null;
+ }
+ }
+
+ private String getPrevModeKey(PortletWindow window) {
+ return PREV_MODE + "_" + window.getId().toString();
+ }
+
+ public WindowState getPrevState(PortletWindow window) {
+ String state = (String)encodedStateFullControlParameter.get(getPrevStateKey(window));
+ if (state!=null)
+ return new WindowState(state);
+ else
+ return null;
+ }
+
+ private String getPrevStateKey(PortletWindow window) {
+ return PREV_STATE + "_" + window.getId().toString();
+ }
+
+ public Iterator getRenderParamNames(PortletWindow window) {
+ ArrayList returnvalue = new ArrayList();
+ String prefix = getRenderParamKey(window);
+ Iterator keyIterator = encodedStateFullControlParameter.keySet().iterator();
+ while (keyIterator.hasNext()) {
+ String encodedName = (String)keyIterator.next();
+ if (encodedName.startsWith(prefix)) {
+ // remove specific render parameter name encoding
+ String decodedName = decodeRenderParamName(window, encodedName);
+ // remove general parameter encoding
+ String unprefixedName = decodeParameterName(decodedName);
+ returnvalue.add(unprefixedName);
+ }
+ }
+ return returnvalue.iterator();
+ }
+
+ public String[] getRenderParamValues(PortletWindow window, String paramName) {
+ String encodedValues = (String)encodedStateFullControlParameter.get(encodeRenderParamName(window, paramName));
+ String[] decodedValues = decodeRenderParamValues(encodedValues);
+ return decodedValues;
+ }
+
+ public Map getRequestParameter() {
+ return requestParameter;
+ }
+
+ public WindowState getState(PortletWindow window) {
+ String state = (String)encodedStateFullControlParameter.get(getStateKey(window));
+ if (state != null) {
+ return new WindowState(state);
+ } else {
+ return WindowState.NORMAL;
+ }
+ }
+
+ public Map getEncodedStateFullControlParameter() {
+ return encodedStateFullControlParameter;
+ }
+
+ private String getStateKey(PortletWindow window) {
+ return STATE + "_" + window.getId().toString();
+ }
+
+ public Map getStateLessControlParameter() {
+ return stateLessControlParameter;
+ }
+
+ public boolean isPortletModeParameter(PortletWindow portletWindow,
+ String name) {
+ return name.equals(getModeKey(portletWindow));
+ }
+
+ public boolean isWindowStateParameter(PortletWindow portletWindow,
+ String name) {
+ return name.equals(getStateKey(portletWindow));
+ }
+
+ public boolean isOnePortletWindowMaximized() {
+ Iterator iterator = encodedStateFullControlParameter.keySet().iterator();
+ while (iterator.hasNext()) {
+ String encodedName = (String)iterator.next();
+ if (encodedName.startsWith(STATE)) {
+ if (encodedStateFullControlParameter.get(encodedName).equals(WindowState.MAXIMIZED.toString())) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public void setAction(PortletWindow window) {
+ getEncodedStateFullControlParameter().put(getActionKey(window),ACTION.toUpperCase());
+ }
+
+ public void setMode(PortletWindow window, String mode) {
+ Object prevMode = encodedStateFullControlParameter.get(getModeKey(window));
+ if (prevMode!=null)
+ encodedStateFullControlParameter.put(getPrevModeKey(window), prevMode);
+ // set current mode
+ encodedStateFullControlParameter.put(getModeKey(window), mode);
+ }
+
+ public void setPortletId(PortletWindow window) {
+ getEncodedStateFullControlParameter().put(getPortletIdKey(),window.getId().toString());
+ //getStateLessControlParameter().put(getPortletIdKey(),window.getId().toString());
+ }
+
+ /**
+ * Sets the given render parameter. Note that its name as well as its values will
+ * be encoded for storage using {{@link #encodeRenderParamName(PortletWindow, String)}}
+ * and {{@link #encodeRenderParamValues(String[])}.
+ */
+ public void setRenderParam(PortletWindow window, String name, String[] values) {
+ encodedStateFullControlParameter.put(encodeRenderParamName(window, name),
+ encodeRenderParamValues(values) );
+ }
+
+ public void setRequestParam(String name, String[] values ) {
+ requestParameter.put(name, values );
+ }
+
+
+ public void setState(PortletWindow window, String state) {
+ Object prevState = encodedStateFullControlParameter.get(getStateKey(window));
+ if (prevState != null) {
+ encodedStateFullControlParameter.put(getPrevStateKey(window), prevState);
+ }
+ encodedStateFullControlParameter.put(getStateKey(window), state);
+ }
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposer.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposer.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposer.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposer.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,179 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template.pluto;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+import javax.portlet.PortletURL;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.pluto.core.CoreUtils;
+import org.apache.pluto.factory.PortletObjectAccess;
+import org.apache.pluto.om.window.PortletWindow;
+
+import org.apache.wsrp4j.commons.util.Constants;
+
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposer;
+
+
+public class PlutoPortalTemplateComposer implements PortalTemplateComposer {
+
+ private final static Log log = LogFactory.getLog(PlutoPortalTemplateComposer.class);
+
+ private static final String RESOURCE_PROXY_URL = "/WSRP4JResourceProxy";
+
+ private PortletRequest request;
+ private PortletResponse response;
+ private PortletWindow portletWindow;
+ private HttpServletRequest servletRequest;
+ private HttpServletResponse servletResponse;
+
+ public PlutoPortalTemplateComposer(PortletRequest request,
+ PortletResponse response) {
+
+ this.request = request;
+ this.response = response;
+
+ this.portletWindow =
+ CoreUtils.getInternalRequest(request).getInternalPortletWindow();
+
+ /* In Pluto we can downcast the portlet request and response
+ * objects to their corresponding http servlet request and response */
+ this.servletRequest = (HttpServletRequest) request;
+ this.servletResponse = (HttpServletResponse) response;
+
+ }
+
+ public String getBlockingActionTemplate() {
+
+ boolean isAction = true;
+ PortletURL baseURL = PortletObjectAccess.getPortletURL(
+ portletWindow, servletRequest, servletResponse, isAction);
+ PlutoPortalURL plutoURL =
+ new PlutoPortalURL(baseURL.toString(), portletWindow);
+ PlutoPortalControlParameter controlParam =
+ new PlutoPortalControlParameter(plutoURL);
+
+ controlParam.setAction(portletWindow);
+ controlParam.setMode(portletWindow, Constants.PORTLET_MODE_TEMPLATE);
+ controlParam.setState(portletWindow, Constants.WINDOW_STATE_TEMPLATE);
+ controlParam.setRenderParam(portletWindow, Constants.NAVIGATIONAL_STATE,
+ new String[] {Constants.NAVIGATIONAL_STATE_TEMPLATE});
+ controlParam.setRequestParam(Constants.INTERACTION_STATE,
+ new String[] {Constants.INTERACTION_STATE_TEMPLATE});
+ plutoURL.analyzeControlInformation(controlParam);
+
+ String template = plutoURL.toString(controlParam);
+ if (log.isDebugEnabled()) {
+ log.debug("Sending BlockingActionTemplate: " + template);
+ }
+ return template;
+
+ }
+
+ public String getSecureBlockingActionTemplate() {
+ return null;
+ }
+
+ public String getRenderTemplate() {
+
+ boolean isAction = false;
+ PortletURL baseURL = PortletObjectAccess.getPortletURL(
+ portletWindow, servletRequest, servletResponse, isAction);
+ PlutoPortalURL plutoURL =
+ new PlutoPortalURL(baseURL.toString(), portletWindow);
+ PlutoPortalControlParameter controlParam =
+ new PlutoPortalControlParameter(plutoURL);
+
+ controlParam.setMode(portletWindow, Constants.PORTLET_MODE_TEMPLATE);
+ controlParam.setState(portletWindow, Constants.WINDOW_STATE_TEMPLATE);
+ controlParam.setRenderParam(portletWindow, Constants.NAVIGATIONAL_STATE,
+ new String[] {Constants.NAVIGATIONAL_STATE_TEMPLATE});
+ plutoURL.analyzeControlInformation(controlParam);
+
+ String template = plutoURL.toString(controlParam);
+ if (log.isDebugEnabled()) {
+ log.debug("Sending RenderTemplate: " + template);
+ }
+ return template;
+
+ }
+
+ public String getSecureRenderTemplate() {
+ return null;
+ }
+
+ public String getResourceTemplate() {
+ String resourceProxy = response.encodeURL(
+ request.getContextPath() + RESOURCE_PROXY_URL);
+ PlutoPortalURL plutoURL =
+ new PlutoPortalURL(resourceProxy, portletWindow);
+ PlutoPortalControlParameter controlParam =
+ new PlutoPortalControlParameter(plutoURL);
+
+ controlParam.setRequestParam(Constants.REWRITE_RESOURCE,
+ new String[] {Constants.REWRITE_RESOURCE_TEMPLATE});
+ controlParam.setRequestParam(Constants.URL,
+ new String[] {Constants.URL_TEMPLATE});
+ plutoURL.analyzeControlInformation(controlParam);
+
+ String template = plutoURL.toString(controlParam);
+ if (log.isDebugEnabled()) {
+ log.debug("Sending ResourceTemplate: " + template);
+ }
+ return template;
+
+ }
+
+ public String getSecureResourceTemplate() {
+ return null;
+ }
+
+ public String getDefaultTemplate() {
+ boolean isAction = true;
+ PortletURL baseURL = PortletObjectAccess.getPortletURL(
+ portletWindow, servletRequest, servletResponse, isAction);
+ PlutoPortalURL plutoURL =
+ new PlutoPortalURL(baseURL.toString(), portletWindow);
+ PlutoPortalControlParameter controlParam =
+ new PlutoPortalControlParameter(plutoURL);
+
+ controlParam.setAction(portletWindow);
+ controlParam.setMode(portletWindow, Constants.PORTLET_MODE_TEMPLATE);
+ controlParam.setState(portletWindow, Constants.WINDOW_STATE_TEMPLATE);
+ controlParam.setRenderParam(portletWindow, Constants.NAVIGATIONAL_STATE,
+ new String[] {Constants.NAVIGATIONAL_STATE_TEMPLATE});
+ controlParam.setRequestParam(Constants.INTERACTION_STATE,
+ new String[] {Constants.INTERACTION_STATE_TEMPLATE});
+ plutoURL.analyzeControlInformation(controlParam);
+
+ String template = plutoURL.toString(controlParam);
+ if (log.isDebugEnabled()) {
+ log.debug("Sending DefaultTemplate: " + template);
+ }
+ return template;
+ }
+
+ public String getSecureDefaultTemplate() {
+ return null;
+ }
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposerService.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposerService.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposerService.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalTemplateComposerService.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template.pluto;
+
+import javax.portlet.PortletRequest;
+import javax.portlet.PortletResponse;
+
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposer;
+import org.apache.wsrp4j.consumer.proxyportlet.template.PortalTemplateComposerService;
+
+
+public class PlutoPortalTemplateComposerService
+ implements PortalTemplateComposerService {
+
+ public PlutoPortalTemplateComposerService() {}
+
+ public PortalTemplateComposer getPortalTemplateComposer(
+ PortletRequest request, PortletResponse response) {
+ return new PlutoPortalTemplateComposer(request, response);
+ }
+
+}
Added: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalURL.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalURL.java?view=auto&rev=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalURL.java (added)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/template/pluto/PlutoPortalURL.java Sun Dec 10 13:09:44 2006
@@ -0,0 +1,346 @@
+/*
+ * Copyright 2003-2006 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.wsrp4j.consumer.proxyportlet.template.pluto;
+
+import java.net.URLEncoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.pluto.om.window.PortletWindow;
+
+import org.apache.wsrp4j.commons.util.Constants;
+
+
+public class PlutoPortalURL {
+
+ private String plutoURL = null;
+ private PortletWindow portletWindow = null;
+
+ private List startGlobalNavigation = new ArrayList();
+ private List startLocalNavigation = new ArrayList();
+ private HashMap encodedStartControlParameter = new HashMap();
+ private HashMap startStateLessControlParameter = new HashMap();
+
+ public PlutoPortalURL(String plutoURL, PortletWindow portletWindow) {
+ this.plutoURL = plutoURL;
+ this.portletWindow = portletWindow;
+ analyzeRequestInformation();
+ }
+
+ public String getBasePortalURL(HttpServletRequest servletRequest) {
+ StringBuffer result = new StringBuffer(256);
+
+ result.append(servletRequest.getContextPath());
+ result.append(servletRequest.getServletPath());
+
+ return result.toString();
+ }
+
+ public PortletWindow getPortletWindow() {
+ return portletWindow;
+ }
+
+ /**
+ * Adds a navigational information pointing to a portal part, e.g. PageGroups
+ * or Pages
+ *
+ * @param nav the string pointing to a portal part
+ */
+ public void addGlobalNavigation(String nav) {
+ startGlobalNavigation.add(nav);
+ }
+
+ /**
+ * Sets the local navigation. Because the local navigation is always handled
+ * by the Browser, therefore the local navigation cleared.
+ */
+ public void setLocalNavigation() {
+ startLocalNavigation = new ArrayList();
+ }
+
+ /**
+ * Adds a navigational information pointing to a local portal part inside
+ * of a global portal part, for example, a portlet on a page.
+ *
+ * @param nav the string pointing to a local portal part
+ */
+ public void addLocalNavigation(String nav) {
+ startLocalNavigation.add(nav);
+ }
+
+ /**
+ * Returns true if the given string is part of the global navigation of this URL
+ *
+ * @param nav the string to check
+ * @return true, if the string is part of the navigation
+ */
+ public boolean isPartOfGlobalNavigation(String nav) {
+ return startGlobalNavigation.contains(nav);
+ }
+
+ /**
+ * Returns true if the given string is part of the local navigation of this URL
+ *
+ * @param nav the string to check
+ * @return true, if the string is part of the navigation
+ */
+ public boolean isPartOfLocalNavigation(String nav) {
+ return startLocalNavigation.contains(nav);
+ }
+
+ private String urlEncode(String value) {
+ value = URLEncoder.encode(value);
+ // java.net.URLEncoder encodes space (' ') as a plus sign ('+'),
+ // instead of %20 thus it will not be decoded properly by tomcat when the
+ // request is parsed. Therefore replace all '+' by '%20'.
+ // If there would have been any plus signs in the original string, they would
+ // have been encoded by URLEncoder.encode()
+ // control = control.replace("+", "%20");//only works with JDK 1.5
+ value = value.replaceAll("\\+", "%20");
+ return value;
+ }
+
+ public String getGlobalNavigationAsString() {
+ StringBuffer result = new StringBuffer(200);
+ Iterator iterator = startGlobalNavigation.iterator();
+ if (iterator.hasNext()) {
+ result.append((String)iterator.next());
+ while (iterator.hasNext()) {
+ result.append("/");
+ String st = (String)iterator.next();
+ result.append(st);
+ }
+ }
+ return result.toString();
+ }
+
+ public String getLocalNavigationAsString() {
+ StringBuffer result = new StringBuffer(30);
+ Iterator iterator = startLocalNavigation.iterator();
+ if (iterator.hasNext()) {
+ result.append((String)iterator.next());
+ while (iterator.hasNext()) {
+ result.append(".");
+ result.append((String)iterator.next());
+ }
+ }
+ return result.toString();
+ }
+
+ public String getControlParameterAsString(
+ PlutoPortalControlParameter controlParam) {
+
+ Map encodedStateFullParams = encodedStartControlParameter;
+ if (controlParam != null) {
+ encodedStateFullParams = controlParam.getEncodedStateFullControlParameter();
+ }
+
+ StringBuffer result = new StringBuffer(100);
+ Iterator iterator = encodedStateFullParams.keySet().iterator();
+ while (iterator.hasNext()) {
+ result.append("/");
+ String encodedName = (String) iterator.next();
+ String encodedValue = (String) encodedStateFullParams.get(encodedName);
+ if(encodedValue != null) {
+ // appends the prefix (currently "_") in front of the encoded parameter name
+ result.append(PlutoPortalControlParameter.encodeParameterName(encodedName));
+ result.append("/");
+ /* If it's a wsrp render parameter (for instance, wsrp-navigationalState),
+ * a PortletMode or a WindowState parameter, then do not
+ * www-url-encode the value */
+ if (Constants.isWsrpURLParam(controlParam.decodeParameterName(
+ PlutoPortalControlParameter.decodeRenderParamName(
+ portletWindow, encodedName))) ||
+ controlParam.isPortletModeParameter(portletWindow, encodedName) ||
+ controlParam.isWindowStateParameter(portletWindow, encodedName)) {
+ result.append(encodedValue);
+ } else {
+ result.append(urlEncode(encodedValue));
+ }
+ }
+ }
+
+ return result.toString();
+
+ }
+
+ public String getRequestParameterAsString(
+ PlutoPortalControlParameter controlParam) {
+
+ if (controlParam!=null) {
+ Map requestParams = controlParam.getRequestParameter();
+
+ StringBuffer result = new StringBuffer(100);
+ Iterator iterator = requestParams.keySet().iterator();
+ boolean hasNext = iterator.hasNext();
+ if (hasNext) {
+ result.append("?");
+ }
+
+ while (hasNext) {
+ String name = (String)iterator.next();
+ Object value = requestParams.get(name);
+ String[] values = value instanceof String ?
+ new String[] {(String)value} : (String[])value;
+
+ result.append(urlEncode(name));
+ result.append("=");
+ if (Constants.isWsrpURLParam(name)) {
+ result.append(values[0]);
+ } else {
+ result.append(urlEncode(values[0]));
+ }
+ for (int i = 1; i < values.length; i++) {
+ result.append("&");
+ result.append(urlEncode(name));
+ result.append("=");
+ if (Constants.isWsrpURLParam(name)) {
+ result.append(values[i]);
+ } else {
+ result.append(urlEncode(values[i]));
+ }
+ }
+
+ hasNext=iterator.hasNext();
+ if (hasNext) {
+ result.append("&");
+ }
+ }
+
+ return result.toString();
+ }
+ return "";
+
+ }
+
+ public String toString() {
+ return toString(null);
+ }
+
+ public String toString(PlutoPortalControlParameter controlParam) {
+
+ String url = new String();
+
+ String global = getGlobalNavigationAsString();
+ if (global.length() > 0) {
+ url += "/";
+ url += global;
+ }
+
+ String control = getControlParameterAsString(controlParam);
+ if (control.length() > 0) {
+ url += control;
+ }
+
+ String requestParam = getRequestParameterAsString(controlParam);
+ if (requestParam.length() > 0) {
+ url += requestParam;
+ }
+
+ String local = getLocalNavigationAsString();
+ if (local.length() > 0) {
+ url += "#";
+ url += local;
+ }
+
+ return url;
+ }
+
+ Map getClonedEncodedStateFullControlParameter() {
+ analyzeRequestInformation();
+ return(Map)encodedStartControlParameter.clone();
+ }
+
+ Map getClonedStateLessControlParameter() {
+ analyzeRequestInformation();
+ return(Map)startStateLessControlParameter.clone();
+ }
+
+ void analyzeControlInformation(PlutoPortalControlParameter control) {
+ encodedStartControlParameter =
+ (HashMap) control.getEncodedStateFullControlParameter();
+ startStateLessControlParameter =
+ (HashMap) control.getStateLessControlParameter();
+ }
+
+ void analyzeRequestInformation() {
+
+ startGlobalNavigation = new ArrayList();
+ startLocalNavigation = new ArrayList();
+ encodedStartControlParameter = new HashMap();
+ startStateLessControlParameter = new HashMap();
+
+ // check the complete pathInfo for
+ // * navigational information
+ // * control information
+
+ if (this.plutoURL != null) {
+ StringTokenizer tokenizer = new StringTokenizer(this.plutoURL, "/");
+
+ int mode = 0; // 0=navigation, 1=control information
+ String encodedName = null;
+ while (tokenizer.hasMoreTokens()) {
+ String token = tokenizer.nextToken();
+ if (PlutoPortalControlParameter.isControlParameter(token)) {
+ mode = 1;
+ encodedName = token;
+ } else if (mode==0) {
+ startGlobalNavigation.add(token);
+ } else if (mode==1) {
+ if ((PlutoPortalControlParameter.isStateFullParameter(encodedName))) {
+ // cut the prefix before saving the parameter name
+ encodedName = PlutoPortalControlParameter.decodeParameterName(encodedName);
+ encodedStartControlParameter.put(encodedName, token);
+ } else {
+ startStateLessControlParameter.put(
+ PlutoPortalControlParameter.decodeParameterName(encodedName),
+ PlutoPortalControlParameter.decodeParameterValue(encodedName,token));
+ }
+ mode = 0;
+ }
+ }
+ }
+
+ }
+
+ public void setRenderParameter(PortletWindow portletWindow, String name,
+ String[] values) {
+
+ encodedStartControlParameter.put(
+ PlutoPortalControlParameter.encodeRenderParamName(portletWindow, name),
+ PlutoPortalControlParameter.encodeRenderParamValues(values));
+
+ }
+
+ public void clearRenderParameters(PortletWindow portletWindow) {
+ String prefix = PlutoPortalControlParameter.getRenderParamKey(portletWindow);
+ Iterator keyIterator = encodedStartControlParameter.keySet().iterator();
+ while (keyIterator.hasNext()) {
+ String name = (String)keyIterator.next();
+ if (name.startsWith(prefix)) {
+ keyIterator.remove();
+ }
+ }
+ }
+
+}
Modified: portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/util/Constants.java
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/util/Constants.java?view=diff&rev=485259&r1=485258&r2=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/util/Constants.java (original)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/java/org/apache/wsrp4j/consumer/proxyportlet/util/Constants.java Sun Dec 10 13:09:44 2006
@@ -38,6 +38,14 @@
"default";
/**
+ * Portal template composer used by proxyportlet template composer
+ * for generating the url templates. Each portal environment where
+ * proxyportlet can live in must provide its own implementation
+ */
+ public final static String PROXYPORTLET_PORTAL_TEMPLATE_COMPOSER =
+ "org.apache.wsrp4j.consumer.proxyportlet.templatecomposer";
+
+ /**
* Parameters needed for showing the exceptions on the portlet
*/
public final static String PROXYPORTLET_ATTR_EXCEPTION = "exception";
Modified: portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/log4j.properties
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/log4j.properties?view=diff&rev=485259&r1=485258&r2=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/log4j.properties (original)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/log4j.properties Sun Dec 10 13:09:44 2006
@@ -28,7 +28,7 @@
log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.Append=false
-log4j.appender.A1.File=${catalina.base}/logs/wsrp4j-consumer.log
+log4j.appender.A1.File=${maven.tomcat.home}/logs/wsrp4j-consumer.log
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c: %m%n
Modified: portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/wsrp4j-config.properties
URL: http://svn.apache.org/viewvc/portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/wsrp4j-config.properties?view=diff&rev=485259&r1=485258&r2=485259
==============================================================================
--- portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/wsrp4j-config.properties (original)
+++ portals/wsrp4j/trunk/consumer-proxyportlet/src/webapp/WEB-INF/classes/wsrp4j-config.properties Sun Dec 10 13:09:44 2006
@@ -19,6 +19,19 @@
wsrp4j.proxyportlet.persistent.factory=\
org.apache.wsrp4j.persistence.xml.driver.ProxyPersistentFactoryImpl
+
+# Portal template composer service (different for each portal container)
+# Uncomment the appropriate one
+
+# Pluto Portal composer service
+org.apache.wsrp4j.consumer.proxyportlet.templatecomposer=\
+ org.apache.wsrp4j.consumer.proxyportlet.template.pluto.PlutoPortalTemplateComposerService
+# Jetspeed composer service
+#org.apache.wsrp4j.consumer.proxyportlet.templatecomposer=\
+# org.apache.wsrp4j.consumer.proxyportlet.template.jetspeed.JetspeedPortalTemplateComposerService
+
+
+# ProxyPortlet environment class implementation
wsrp4j.proxyportlet.environment.class=\
org.apache.wsrp4j.consumer.proxyportlet.impl.ConsumerEnvironmentImpl
@@ -28,7 +41,7 @@
# Persistence dir for Castor-based producer management. The files will be under
# directory ${wsrp4j.proxyportlet.persistence.xml.dir}/producers
wsrp4j.proxyportlet.persistence.xml.dir=\
- /home/diego/local/apache-tomcat-5.5.16-cons/webapps/wsrp4j-proxyportlet/WEB-INF
+ ${maven.tomcat.home}/webapps/wsrp4j-proxyportlet/WEB-INF
# Implementation of the services needed by configportlet for producer registry
wsrp4j.configportlet.producerregistry.delegate=\