You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2005/08/30 12:30:18 UTC
svn commit: r264755 [3/4] - in /cocoon/branches/BRANCH_2_1_X: ./ legal/ lib/
lib/optional/ src/blocks/portal/conf/
src/blocks/portal/java/org/apache/cocoon/portal/wsrp/
src/blocks/portal/java/org/apache/cocoon/portal/wsrp/adapter/
src/blocks/portal/jav...
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/ProducerRegistryImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/ProducerRegistryImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/ProducerRegistryImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/ProducerRegistryImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,218 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter;
+import org.apache.wsrp4j.consumer.ConsumerEnvironment;
+import org.apache.wsrp4j.consumer.Producer;
+import org.apache.wsrp4j.consumer.driver.GenericProducerRegistryImpl;
+import org.apache.wsrp4j.consumer.driver.ProducerImpl;
+import org.apache.wsrp4j.exception.WSRPException;
+
+/**
+ * A producer registry storing all producers in a {@link java.util.Hashtable}
+ * in memory.<br/>
+ * On startup/login the registry is full by the wsrp adapter.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ **/
+public class ProducerRegistryImpl
+ extends GenericProducerRegistryImpl
+ implements LogEnabled, Configurable, RequiresConsumerEnvironment, RequiresWSRPAdapter {
+
+ /** The logger. */
+ protected Logger logger;
+
+ /** The environment. */
+ protected ConsumerEnvironment environment;
+
+ /** All producer descriptions. */
+ protected Map descriptions = new Hashtable();
+
+ /** Initialized? */
+ protected boolean initialized = false;
+
+ /** The wsrp adapter. */
+ protected WSRPAdapter adapter;
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.RequiresConsumerEnvironment#setConsumerEnvironment(org.apache.wsrp4j.consumer.ConsumerEnvironment)
+ */
+ public void setConsumerEnvironment(ConsumerEnvironment env) {
+ this.environment = env;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.RequiresWSRPAdapter#setWSRPAdapter(org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter)
+ */
+ public void setWSRPAdapter(WSRPAdapter adapter) {
+ this.adapter = adapter;
+ }
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration c) throws ConfigurationException {
+ if ( c != null ) {
+ Configuration config = c.getChild("producers", true);
+ // create a list of descriptions
+ Configuration[] children = config.getChildren("producer");
+ for(int i=0; i<children.length; i++) {
+ final Configuration current = children[i];
+ final ProducerDescription desc = ProducerDescription.fromConfiguration(current, this.environment);
+ this.descriptions.put(desc.getId(), desc);
+ }
+ }
+ }
+
+ /**
+ * @see org.apache.avalon.framework.logger.LogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+ */
+ public void enableLogging(Logger newLogger) {
+ this.logger = newLogger;
+ }
+
+ /**
+ * Check if we have read our configuration already.
+ * If not, read the config and invoke the configure method.
+ */
+ protected void checkInitialized() {
+ if ( !this.initialized ) {
+ synchronized (this) {
+ if (! this.initialized ) {
+ this.initialized = true;
+ try {
+ this.configure(this.adapter.getWsrpConfiguration());
+ } catch (ConfigurationException ce) {
+ this.logger.error("Unable to read wsrp configuration.", ce);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a new producer<br/>
+ *
+ * @param desc The producer description.
+ * @return Returns true if the producer could be added.
+ */
+ public boolean addProducer(ProducerDescription desc) {
+ this.checkInitialized();
+ try {
+ final Producer producer = new ProducerImpl(desc.getId(),
+ desc.getMarkupInterfaceUrl(),
+ desc.getServiceDescriptionInterfaceUrl(),
+ desc.getRegistrationInterfaceUrl(),
+ desc.getPortletManagementInterfaceUrl(),
+ desc.getRegistrationData());
+ producer.setName(desc.getName());
+ producer.setDescription(desc.getDescription());
+ this.addProducer(producer);
+ return true;
+ } catch (WSRPException we) {
+ this.logger.error("Unable to add wsrp producer: " + desc.getId()
+ + " - Continuing without configured producer.", we);
+ return false;
+ }
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.ProducerRegistry#addProducer(org.apache.wsrp4j.consumer.Producer)
+ */
+ public void addProducer(Producer producer) {
+ this.checkInitialized();
+ // remove the description
+ this.descriptions.remove(producer.getID());
+ super.addProducer(producer);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.ProducerRegistry#existsProducer(java.lang.String)
+ */
+ public boolean existsProducer(String id) {
+ this.checkInitialized();
+ if ( this.descriptions.containsKey(id) ) {
+ return true;
+ }
+ return super.existsProducer(id);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.ProducerRegistry#getAllProducers()
+ */
+ public Iterator getAllProducers() {
+ this.checkInitialized();
+ // create all producers from pending descriptions
+ if ( this.descriptions.size() > 0 ) {
+ final Iterator i = this.descriptions.values().iterator();
+ while ( i.hasNext() ) {
+ final ProducerDescription desc = (ProducerDescription)i.next();
+ this.addProducer(desc);
+ }
+ this.descriptions.clear();
+ }
+ return super.getAllProducers();
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.ProducerRegistry#getProducer(java.lang.String)
+ */
+ public Producer getProducer(String id) {
+ this.checkInitialized();
+ // create pending description
+ ProducerDescription desc = (ProducerDescription)this.descriptions.remove(id);
+ if ( desc != null ) {
+ this.addProducer(desc);
+ }
+ return super.getProducer(id);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.ProducerRegistry#removeAllProducers()
+ */
+ public void removeAllProducers() {
+ this.checkInitialized();
+ this.descriptions.clear();
+ super.removeAllProducers();
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.ProducerRegistry#removeProducer(java.lang.String)
+ */
+ public Producer removeProducer(String id) {
+ this.checkInitialized();
+ // unfortunately we have to return the producer, so
+ // we have to create a pending producer first just
+ // to be able to remove it later on
+ if ( this.descriptions.containsKey(id) ) {
+ this.getProducer(id);
+ }
+ return super.removeProducer(id);
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/ProducerRegistryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/ProducerRegistryImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/Request.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/Request.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/Request.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/Request.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import oasis.names.tc.wsrp.v1.types.NamedString;
+
+/**
+ * Defines a request from the end-user to the swing consumer as result
+ * of an interaction (e.g. click on hyperlink) of the end-user with the
+ * representation of a remote portlet.<br/>
+ *
+ * Due to the two phase protocol of WSRP this request carries information
+ * which need to be passed back to the producer in order to process the
+ * interaction at the producer-side.<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ **/
+public interface Request {
+
+ /**
+ * Set the interaction state of a portlet which should be passed
+ * to the producer.
+ *
+ * @param state the interaction state of a portlet
+ **/
+ void setInteractionState(String state);
+
+ /**
+ * Get the interaction state of the portlet.
+ *
+ * @return interaction state of a portlet carried in a request
+ **/
+ String getInteractionState();
+
+ /**
+ * Add any parameters to the request. These parameters should
+ * be carried in the form parameters field of WSRP.
+ *
+ * @param name The key which identifies the parameter
+ * @param value The value of the parameter
+ **/
+ void addFormParameter(String name, String value);
+
+ /**
+ * Get all form parameters from the request. The returned
+ * <code>NamedString</code> array contains all parameter key/value pairs
+ * and can directly be passed to the form parameter field in WSRP.
+ *
+ * @return Array with all set parameters
+ **/
+ NamedString[] getFormParameters();
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/Request.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/Request.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequestImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequestImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequestImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequestImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import oasis.names.tc.wsrp.v1.types.NamedString;
+
+/**
+ * This class implements the Request interface and used by
+ * the swing consumer to store request related information.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ **/
+public class RequestImpl implements Request {
+
+ /** Map to store all form params. */
+ protected Map formParameters;
+
+ /** interaction state. */
+ protected String interactionState;
+
+ /**
+ * Default constructor
+ **/
+ public RequestImpl() {
+ this.formParameters = new HashMap();
+ }
+
+ /**
+ * Add any parameters to the request. These parameters should
+ * be carried in the form parameters field of WSRP.
+ *
+ * @param name The key which identifies the parameter
+ * @param value The value of the parameter
+ **/
+ public void addFormParameter(String name, String value) {
+ this.formParameters.put(name, value);
+ }
+
+ /**
+ * Get all form parameters from the request. The returned
+ * <code>NamedString</code> array contains all parameter key/value pairs
+ * and can directly be passed to the form parameter field in WSRP.
+ *
+ * @return Array with all set parameters
+ **/
+ public NamedString[] getFormParameters() {
+ ArrayList paramList = new ArrayList();
+ Iterator params = this.formParameters.keySet().iterator();
+ while (params.hasNext()) {
+ String name = (String)params.next();
+
+ NamedString parameter = new NamedString();
+ parameter.setName(name);
+ parameter.setValue((String)this.formParameters.get(name));
+ paramList.add(parameter);
+ }
+
+ NamedString[] formParams = new NamedString[paramList.size()];
+ paramList.toArray(formParams);
+
+ return formParams;
+ }
+
+ /**
+ * Set the interaction state of a portlet which should be passed
+ * to the producer.
+ *
+ * @param state the interaction state of a portlet
+ **/
+ public void setInteractionState(String state) {
+ this.interactionState = state;
+ }
+
+ /**
+ * Get the interaction state of the portlet.
+ *
+ * @return interaction state of a portlet carried in a request
+ **/
+ public String getInteractionState() {
+ return this.interactionState;
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequestImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequestImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresConsumerEnvironment.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresConsumerEnvironment.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresConsumerEnvironment.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresConsumerEnvironment.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.wsrp4j.consumer.ConsumerEnvironment;
+
+/**
+ * This interface marks a component if the component needs a reference to consumer environment.
+ *
+ * @version $Id$
+ **/
+public interface RequiresConsumerEnvironment {
+
+ void setConsumerEnvironment(ConsumerEnvironment env);
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresConsumerEnvironment.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresConsumerEnvironment.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresPortalService.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresPortalService.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresPortalService.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresPortalService.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.cocoon.portal.PortalService;
+
+/**
+ * This interface marks a component if the component needs a reference to the
+ * portal service.
+ *
+ * @version $Id$
+ **/
+public interface RequiresPortalService {
+
+ void setPortalService(PortalService service);
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresPortalService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresPortalService.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresWSRPAdapter.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresWSRPAdapter.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresWSRPAdapter.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresWSRPAdapter.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter;
+
+/**
+ * This interface marks a component if the component needs a reference to the WSRP adapter.
+ *
+ * @version $Id$
+ **/
+public interface RequiresWSRPAdapter {
+
+ void setWSRPAdapter(WSRPAdapter adapter);
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresWSRPAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/RequiresWSRPAdapter.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SessionHandlerImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SessionHandlerImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SessionHandlerImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SessionHandlerImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,97 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import java.util.Hashtable;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.wsrp4j.consumer.ConsumerEnvironment;
+import org.apache.wsrp4j.consumer.SessionHandler;
+import org.apache.wsrp4j.consumer.UserSession;
+import org.apache.wsrp4j.consumer.UserSessionMgr;
+import org.apache.wsrp4j.exception.WSRPException;
+
+/**
+ * Simple Session Handler<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ **/
+public class SessionHandlerImpl
+ extends AbstractLogEnabled
+ implements SessionHandler, RequiresConsumerEnvironment {
+
+ /** Holds all user-sessions */
+ protected Hashtable userSessions = new Hashtable();
+
+ /** The consumerEnvironment */
+ protected ConsumerEnvironment consumerEnv;
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.RequiresConsumerEnvironment#setConsumerEnvironment(org.apache.wsrp4j.consumer.ConsumerEnvironment)
+ */
+ public void setConsumerEnvironment(ConsumerEnvironment env) {
+ this.consumerEnv = env;
+ }
+
+ /**
+ * Get the session manager of the user session with the given user ID and producer ID<br/>
+ *
+ * @return The user session object representing a session between an end-user and
+ * a producer.
+ **/
+ public UserSessionMgr getUserSession(String producerID, String userID)
+ throws WSRPException {
+ UserSessionMgr userSession = null;
+
+ if (producerID != null && userID != null) {
+ String key = createKey(userID, producerID);
+ userSession = (UserSessionMgr)this.userSessions.get(key);
+
+ if (userSession == null) {
+ String url = consumerEnv.getProducerRegistry().getProducer(producerID).getMarkupInterfaceEndpoint();
+ userSession = new UserSessionImpl(producerID, userID, url, this.getLogger());
+ addUserSession(userSession);
+ }
+ }
+
+ return userSession;
+ }
+
+ /**
+ * Set the Session into the sessionHandler
+ *
+ * @param userSession
+ */
+ private void addUserSession(UserSession userSession) {
+ if (userSession != null) {
+ this.userSessions.put(createKey(userSession.getUserID(), userSession.getProducerID()), userSession);
+ }
+ }
+
+ /**
+ * Represents the values of the user and the producer in a nice form<br/>
+ *
+ * @param userID
+ * @param producerID
+ * @return the string containing information of the user and the producer
+ */
+ private String createKey(String userID, String producerID) {
+ return "user :" + userID + " producer:" + producerID;
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SessionHandlerImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SessionHandlerImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSession.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSession.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSession.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSession.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.wsrp4j.consumer.PortletWindowSession;
+
+/**
+ * Defines a portlet window session used by the cocoon portal
+ * In additional to <code>SimplePortletWindowSession</code>
+ * it contains information about the current window state and mode of a portlet window.<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ **/
+public interface SimplePortletWindowSession extends PortletWindowSession {
+
+ /**
+ * Get the window state of the portlet window
+ * this session belongs to.<br/>
+ *
+ * @return the window state
+ **/
+ String getWindowState();
+
+ /**
+ * Set the window state of the portlet window
+ * this session belongs to.<br/>
+ *
+ * @param windowState The window state
+ **/
+ void setWindowState(String windowState);
+
+ /**
+ * Get the portlet mode of the portlet window.<br/>
+ *
+ * @return The portlet mode
+ **/
+ String getMode();
+
+ /**
+ * Set the portlet mode of the portlet window.<br/>
+ *
+ * @param mode The portlet mode
+ **/
+ void setMode(String mode);
+
+ /**
+ * Get the navigational state for the portlet window the session belongs to<br/>
+ *
+ * @return the navigational state
+ **/
+ String getNavigationalState();
+
+ /**
+ * Set the navigational state for the portlet window the session belongs to<br/>
+ *
+ * @param navState the navigational state
+ **/
+ void setNavigationalState(String navState);
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSession.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSession.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSessionImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSessionImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSessionImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSessionImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.wsrp4j.consumer.PortletSession;
+import org.apache.wsrp4j.consumer.driver.GenericPortletWindowSessionImpl;
+
+/**
+ * Holds the parameters for displaying the portlet in a portlet-window.<br/>
+ * The attributes <tt>windowState</tt>, <tt>portletMode</tt> and the navigationalState
+ * are representing all preferences of the portlet-window. <br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class SimplePortletWindowSessionImpl
+ extends GenericPortletWindowSessionImpl
+ implements SimplePortletWindowSession {
+
+ /** The windowState the portlet has (minimized, normal, maximized)
+ * @see org.apache.wsrp4j.util.Constants */
+ private String windowState;
+
+ /** The portletMode the portlet has (minimized, normal, maximized)
+ * @see org.apache.wsrp4j.util.Constants */
+ private String mode;
+
+ /** The navigationalState of the portlet */
+ private String navState;
+
+ /**
+ * Constructor
+ *
+ * @param windowID
+ * @param pSession
+ */
+ public SimplePortletWindowSessionImpl(
+ String windowID,
+ PortletSession pSession) {
+ super(windowID, pSession);
+ }
+
+ /**
+ * Get the window state of the portlet window
+ * this session belongs to<br/>
+ *
+ * @return the window state
+ **/
+ public String getWindowState() {
+ return windowState;
+ }
+
+ /**
+ * Get the portlet mode<br/>
+ *
+ * @return The portlet mode of the portlet window.
+ **/
+ public String getMode() {
+ return mode;
+ }
+
+ /**
+ * Set the window state of the portlet instance
+ * this session belongs to<br/>
+ *
+ * @param windowState The window state of the portlet window
+ **/
+ public void setWindowState(String windowState) {
+ this.windowState = windowState;
+ }
+
+ /**
+ * Set the portlet mode<br/>
+ *
+ * @param mode The portlet mode of the portlet window
+ **/
+ public void setMode(String mode) {
+ this.mode = mode;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.SimplePortletWindowSession#getNavigationalState()
+ */
+ public String getNavigationalState() {
+ return navState;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.SimplePortletWindowSession#setNavigationalState(java.lang.String)
+ */
+ public void setNavigationalState(String navState) {
+ this.navState = navState;
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSessionImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/SimplePortletWindowSessionImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLGeneratorImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLGeneratorImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLGeneratorImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLGeneratorImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,151 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.coplet.CopletInstanceData;
+import org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter;
+import org.apache.cocoon.portal.wsrp.adapter.WSRPEventAspect;
+import org.apache.wsrp4j.consumer.URLGenerator;
+import org.apache.wsrp4j.util.Constants;
+
+/**
+ * Implements the URLGenerator interface providing methods
+ * to query the consumer's urls.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class URLGeneratorImpl
+ implements URLGenerator, RequiresPortalService, RequiresWSRPAdapter {
+
+ /** The portal service. */
+ protected PortalService service;
+
+ /** The WSRP Adapter. */
+ protected WSRPAdapter adapter;
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.RequiresWSRPAdapter#setWSRPAdapter(org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter)
+ */
+ public void setWSRPAdapter(WSRPAdapter adapter) {
+ this.adapter = adapter;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.RequiresPortalService#setPortalService(org.apache.cocoon.portal.PortalService)
+ */
+ public void setPortalService(PortalService service) {
+ this.service = service;
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLGenerator#getBlockingActionURL(java.util.Map)
+ */
+ public String getBlockingActionURL(Map params) {
+ return this.generateUrl(params);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLGenerator#getRenderURL(java.util.Map)
+ */
+ public String getRenderURL(Map params) {
+ return this.generateUrl(params);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLGenerator#getResourceURL(java.util.Map)
+ */
+ public String getResourceURL(Map params) {
+ // this is a little bit tricky
+ // we create a usual portal link first with
+ // all the infos
+ String portalLink = this.generateUrl(params);
+
+ // now we replace the portal pipeline with
+ // the resource pipeline
+ int linkEndPos = portalLink.indexOf('?');
+ int pipelineStartPos = portalLink.lastIndexOf('/', linkEndPos);
+
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(portalLink.substring(0, pipelineStartPos+1));
+ buffer.append("wsrprsc");
+ buffer.append(portalLink.substring(linkEndPos));
+ return buffer.toString();
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLGenerator#getNamespacedToken(java.lang.String)
+ */
+ public String getNamespacedToken(String token) {
+ final CopletInstanceData coplet = this.adapter.getCurrentCopletInstanceData();
+ return coplet.getId();
+ }
+
+ /**
+ * Generate the url.<br/>
+ * We simply create a new wsrp event and use the portal link service.<br/>
+ *
+ * @param params Url-parameters
+ * @return portal-url including all required attributes
+ */
+ protected String generateUrl(Map params) {
+ if ( params == null ) {
+ params = new HashMap();
+ }
+ Boolean secureLink = null;
+ if ( "true".equalsIgnoreCase((String)params.get(Constants.SECURE_URL)) ) {
+ secureLink = Boolean.TRUE;
+ }
+ final CopletInstanceData coplet = this.adapter.getCurrentCopletInstanceData();
+ params.put(WSRPEventAspect.REQUEST_PARAMETER_NAME, coplet.getId());
+ final StringBuffer buffer = new StringBuffer(this.service.getComponentManager().getLinkService().getRefreshLinkURI(secureLink));
+ boolean hasParams = buffer.indexOf("?") > 0;
+ Iterator i = params.entrySet().iterator();
+ while ( i.hasNext() ) {
+ final Map.Entry entry = (Map.Entry)i.next();
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ hasParams = true;
+ buffer.append('?');
+ }
+ buffer.append(entry.getKey()).append('=').append(entry.getValue());
+ }
+ // append consumer parameters
+ Map consumerParameters = (Map)coplet.getTemporaryAttribute(WSRPAdapter.ATTRIBUTE_NAME_CONSUMER_MAP);
+ if ( consumerParameters != null ) {
+ i = consumerParameters.entrySet().iterator();
+ while (i.hasNext()) {
+ final Map.Entry entry = (Map.Entry)i.next();
+ if ( hasParams ) {
+ buffer.append('&');
+ } else {
+ hasParams = true;
+ buffer.append('?');
+ }
+ buffer.append(entry.getKey()).append('=').append(entry.getValue());
+ }
+ }
+ return buffer.toString();
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLGeneratorImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLGeneratorImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLRewriterImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLRewriterImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLRewriterImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLRewriterImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,219 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.wsrp4j.consumer.URLGenerator;
+import org.apache.wsrp4j.consumer.URLRewriter;
+import org.apache.wsrp4j.util.Constants;
+
+/**
+ * Implements the URLRewriter interface providing a method
+ * to rewrite urls (Consumer URL Rewriting).<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class URLRewriterImpl
+ extends AbstractLogEnabled
+ implements URLRewriter {
+
+ /** The url generator. */
+ protected URLGenerator urlGenerator;
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLRewriter#setURLGenerator(org.apache.wsrp4j.consumer.URLGenerator)
+ */
+ public void setURLGenerator(URLGenerator urlGenerator) {
+ this.urlGenerator = urlGenerator;
+ }
+
+ /**
+ * Rewriting: get url from URLGenerator and append it<br/>
+ *
+ * @param markup
+ * @param rewriteURL
+ */
+ protected void rewrite(StringBuffer markup, String rewriteURL) {
+ if ( rewriteURL.startsWith(Constants.REWRITE_START + Constants.PARAMS_START) ) {
+ // handle URL rewriting
+ Map params = createParameterMap(rewriteURL);
+
+ // What kind of link has to be rewritten?
+ if (rewriteURL.indexOf(Constants.URL_TYPE_BLOCKINGACTION) != -1) {
+ markup.append(urlGenerator.getBlockingActionURL(params));
+ } else if (rewriteURL.indexOf(Constants.URL_TYPE_RENDER) != -1) {
+ markup.append(urlGenerator.getRenderURL(params));
+ } else if (rewriteURL.indexOf(Constants.URL_TYPE_RESOURCE) != -1) {
+ markup.append(urlGenerator.getResourceURL(params));
+ }
+ } else if (rewriteURL.startsWith(Constants.REWRITE_START + Constants.NAMESPACE_START) ) {
+ markup.append(urlGenerator.getNamespacedToken(""));
+ } else {
+ this.getLogger().error("No valid rewrite expression found in: " + rewriteURL);
+ }
+ }
+
+ /**
+ * Extracts parameters from url to be rewritten copies them into a map.<br/>
+ *
+ * @param rewriteURL
+ * @return Map
+ */
+ protected Map createParameterMap(String rewriteURL) {
+
+ Map params = new HashMap();
+
+ if (rewriteURL.indexOf(Constants.URL_TYPE_BLOCKINGACTION) != -1) {
+ params.put(Constants.URL_TYPE, Constants.URL_TYPE_BLOCKINGACTION);
+ } else if (rewriteURL.indexOf(Constants.URL_TYPE_RENDER) != -1) {
+ params.put(Constants.URL_TYPE, Constants.URL_TYPE_RENDER);
+ } else if (rewriteURL.indexOf(Constants.URL_TYPE_RESOURCE) != -1) {
+ params.put(Constants.URL_TYPE, Constants.URL_TYPE_RESOURCE);
+ } else {
+ this.getLogger().error("no valid url-type: " + rewriteURL);
+ }
+
+ // begin parsing
+ int equals = 0;
+ int next = 0;
+ int end = rewriteURL.indexOf(Constants.REWRITE_END);
+ int index = rewriteURL.indexOf(Constants.NEXT_PARAM);
+ int lengthNext = 0;
+ String subNext = null;
+
+ while (index != -1) {
+ // support "&" as parameter seperator
+ // see if & was used
+ subNext = rewriteURL.substring(index, index + Constants.NEXT_PARAM_AMP.length());
+ if (subNext.equals(Constants.NEXT_PARAM_AMP)) {
+ lengthNext = Constants.NEXT_PARAM_AMP.length();
+ }
+ else {
+ lengthNext = Constants.NEXT_PARAM.length();
+ }
+
+ equals = rewriteURL.indexOf(Constants.EQUALS, index + lengthNext);
+ next = rewriteURL.indexOf(Constants.NEXT_PARAM, equals);
+
+ if (equals != -1) {
+ if (next != -1) {
+ params.put(rewriteURL.substring(index + lengthNext, equals), rewriteURL.substring(equals + 1, next));
+ } else {
+ params.put(rewriteURL.substring(index + lengthNext, equals), rewriteURL.substring(equals + 1, end));
+ }
+ }
+ index = next;
+ }
+
+ return params;
+
+ }
+
+ /**
+ * Parses markup and performs URL rewriting.<br/>
+ *
+ * Principle:<br/>
+ * - Iterate over markup-string once and copy processed markup to result
+ * buffer (StringBuffer)<br/>
+ * - If url to be rewritten found (during markup iteration),<br/>
+ * ... append markup before url to result buffer,<br/>
+ * ... perform rewriting (call URLGenerator) and append rewritten url to result buffer.<br/>
+ *
+ * Incomplete rewrite-pairs (e.g. a rewrite-begin-token not followed by a
+ * rewrite-end-token) are considered as 'normal' markup.<br/>
+ *
+ * @param markup String representing the markup to be processed.
+ *
+ * @return String representing the processed markup.
+ *
+ * @see org.apache.wsrp4j.consumer.URLRewriter#rewriteURLs(java.lang.String)
+ */
+ public String rewriteURLs(String markup) {
+ StringBuffer resultMarkup = new StringBuffer("");
+ int markupIndex = 0;
+ int rewriteStartPos = -1;
+ int rewriteEndPos = -1;
+ int currentPos = 0;
+ String exprType = null;
+
+ // loop through the markup, find rewrite expressions, rewrite them
+ while ( markupIndex < markup.length() ) {
+ rewriteStartPos = -1;
+ rewriteEndPos = -1;
+
+ // get fist occurance of wsrp rewrite expression
+ rewriteStartPos = markup.indexOf(Constants.REWRITE_START,markupIndex);
+
+ if (! ( rewriteStartPos == -1 ||
+ ( rewriteStartPos + Constants.REWRITE_START.length() - 1 ) >
+ ( markup.length() - 2 ) ) ) {
+ // found a rewrite start token, and token is not at the end of markup so we can
+ // determine the rewrite type, i.e. there is at least 1 char after the rewrite start token
+
+ // namespace or URL? The single char string after the token decides
+ exprType = markup.substring(rewriteStartPos+Constants.REWRITE_START.length() - 1 + 1,
+ rewriteStartPos+Constants.REWRITE_START.length() - 1 + 2);
+
+ if ( exprType.equals(Constants.NAMESPACE_START)) {
+ // ok, we have a namespace rewrite here
+ rewriteEndPos = rewriteStartPos + Constants.REWRITE_START.length()
+ + Constants.NAMESPACE_START.length() - 1;
+ } else if ( exprType.equals(Constants.PARAMS_START) ) {
+ // ok, we have a URL rewrite here
+ // get the position of the end token
+ rewriteEndPos = markup.indexOf(Constants.REWRITE_END,markupIndex);
+ if (rewriteEndPos != -1) {
+ // now let's see if we find a rewrite start token nearer to the end token
+ currentPos = rewriteStartPos;
+
+ while ((currentPos != -1) && (currentPos < rewriteEndPos)) {
+ // update rewriteStartPos with position of found rewrite begin token being 'nearer'
+ rewriteStartPos = currentPos;
+ // look for next URL rewrite start expression
+ currentPos = markup.indexOf(Constants.REWRITE_START+Constants.PARAMS_START,
+ rewriteStartPos + Constants.REWRITE_START.length()
+ + Constants.PARAMS_START.length());
+ }
+ rewriteEndPos = rewriteEndPos + Constants.REWRITE_END.length() - 1;
+ }
+ }
+ }
+
+ if ( (rewriteStartPos != -1) && (rewriteEndPos != -1) ) {
+ // append markup before rewrite expression
+ resultMarkup.append(markup.substring(markupIndex,rewriteStartPos));
+ // append rewritten expression
+ rewrite(resultMarkup,markup.substring(rewriteStartPos,rewriteEndPos+1));
+ // set markup index after the last char of the rewriteExpression
+ markupIndex = rewriteEndPos + 1;
+ } else {
+ // append rest of markup
+ resultMarkup.append(markup.substring(markupIndex,markup.length()));
+ markupIndex = markup.length();
+ }
+ }
+
+ return resultMarkup.toString();
+ }
+}
+
+
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLRewriterImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLRewriterImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLTemplateComposerImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLTemplateComposerImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLTemplateComposerImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLTemplateComposerImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,440 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.cocoon.portal.coplet.CopletInstanceData;
+import org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter;
+import org.apache.wsrp4j.consumer.URLGenerator;
+import org.apache.wsrp4j.consumer.URLTemplateComposer;
+import org.apache.wsrp4j.util.Constants;
+
+/**
+ * Implements the {@link org.apache.wsrp4j.consumer.URLTemplateComposer} interface
+ * providing methods to generate URL templates.<br/>
+ * The generated templates will be transmitted to producers (or respectively portlets)
+ * that are willing to properly write URLs for a consumer. (With templates the consumer
+ * indicates how it needs URLs formatted in order to process them properly.)
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class URLTemplateComposerImpl
+ implements URLTemplateComposer, RequiresWSRPAdapter {
+
+ /** The url generator. */
+ protected URLGenerator urlGenerator;
+
+ /** The wsrp adapter. */
+ protected WSRPAdapter adapter;
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.RequiresWSRPAdapter#setWSRPAdapter(org.apache.cocoon.portal.wsrp.adapter.WSRPAdapter)
+ */
+ public void setWSRPAdapter(WSRPAdapter adapter) {
+ this.adapter = adapter;
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#setURLGenerator(org.apache.wsrp4j.consumer.URLGenerator)
+ */
+ public void setURLGenerator(URLGenerator urlGenerator) {
+ this.urlGenerator = urlGenerator;
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createBlockingActionTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createBlockingActionTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+
+ return createTemplate(
+ urlGenerator.getBlockingActionURL(null),
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createSecureBlockingActionTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createSecureBlockingActionTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getBlockingActionURL(null),
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createRenderTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createRenderTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getRenderURL(null),
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ false,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createSecureRenderTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createSecureRenderTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getRenderURL(null),
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ false,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createResourceTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createResourceTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getResourceURL(null),
+ true,
+ false,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createSecureResourceTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createSecureResourceTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getResourceURL(null),
+ true,
+ false,
+ false,
+ false,
+ false,
+ true,
+ true,
+ true,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createDefaultTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createDefaultTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getRenderURL(null),
+ true,
+ true,
+ true,
+ true,
+ true,
+ false,
+ true,
+ true,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#createSecureDefaultTemplate(boolean, boolean, boolean, boolean)
+ */
+ public String createSecureDefaultTemplate(boolean includePortletHandle,
+ boolean includeUserContextKey,
+ boolean includePortletInstanceKey,
+ boolean includeSessionID) {
+ return createTemplate(
+ urlGenerator.getRenderURL(null),
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ true,
+ includePortletHandle,
+ includeUserContextKey,
+ includePortletInstanceKey,
+ includeSessionID);
+ }
+
+ /**
+ * @see org.apache.wsrp4j.consumer.URLTemplateComposer#getNamespacePrefix()
+ */
+ public String getNamespacePrefix() {
+ final CopletInstanceData coplet = this.adapter.getCurrentCopletInstanceData();
+ return coplet.getId();
+ }
+
+ /**
+ * creates the url for the producer<br/>
+ *
+ * @param url
+ * @param needsURLType
+ * @param needsPortletMode
+ * @param needsNavState
+ * @param needsInteractionState
+ * @param needsWinState
+ * @param needsSecURL
+ * @param needsURL
+ * @param needsRewriteResource
+ * @param needsPortletHandle
+ * @param needsUserContextKey
+ * @param needsPortletInstanceKey
+ * @param needsSessionID
+ * @return url for the producer
+ */
+ protected String createTemplate(String url,
+ boolean needsURLType,
+ boolean needsPortletMode,
+ boolean needsNavState,
+ boolean needsInteractionState,
+ boolean needsWinState,
+ boolean needsSecURL,
+ boolean needsURL,
+ boolean needsRewriteResource,
+ boolean needsPortletHandle,
+ boolean needsUserContextKey,
+ boolean needsPortletInstanceKey,
+ boolean needsSessionID) {
+
+ StringBuffer template = new StringBuffer();
+ StringBuffer remainder = null;
+
+ boolean isFirstParam = true;
+ int index;
+
+ // check if url already contains parameters
+ if ((index = url.indexOf(Constants.PARAMS_START)) != -1) {
+ template.append(url.substring(0, index));
+ remainder = new StringBuffer(url.substring(index + 1));
+ } else {
+ template.append(url.toString());
+ }
+
+ if (needsURLType) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ }
+ template.append(insertPair(Constants.URL_TYPE));
+ }
+
+ if (needsPortletMode) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.PORTLET_MODE));
+ }
+
+ if (needsNavState) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.NAVIGATIONAL_STATE));
+ }
+
+ if (needsInteractionState) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.INTERACTION_STATE));
+ }
+
+ if (needsWinState) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.WINDOW_STATE));
+ }
+
+ if (needsSecURL) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.SECURE_URL));
+ }
+
+ if (needsURL) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.URL));
+ }
+
+ if (needsRewriteResource) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.REWRITE_RESOURCE));
+ }
+
+ if (needsPortletHandle) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.PORTLET_HANDLE));
+ }
+
+ if (needsUserContextKey) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.USER_CONTEXT_KEY));
+ }
+
+ if (needsPortletInstanceKey) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.PORTLET_INSTANCE_KEY));
+ }
+
+ if (needsSessionID) {
+ if (isFirstParam) {
+ template.append(Constants.PARAMS_START);
+ isFirstParam = false;
+ } else {
+ template.append(Constants.NEXT_PARAM);
+ }
+ template.append(insertPair(Constants.SESSION_ID));
+ }
+
+ // append remainder (static parameters)
+ if (remainder != null) {
+ template.append(Constants.NEXT_PARAM);
+ template.append(remainder);
+ }
+
+ return template.toString();
+ }
+
+ /**
+ * creates a pair of an attribute<br/>
+ *
+ * @param token
+ * @return String with the following format: token={token}
+ */
+ protected String insertPair(String token) {
+ StringBuffer result = new StringBuffer(token);
+ result.append(Constants.EQUALS);
+ result.append(Constants.REPLACE_START);
+ result.append(token);
+ result.append(Constants.REPLACE_END);
+
+ return result.toString();
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLTemplateComposerImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/URLTemplateComposerImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextExtension.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextExtension.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextExtension.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextExtension.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,74 @@
+package org.apache.cocoon.portal.wsrp.consumer;
+
+import oasis.names.tc.wsrp.v1.types.UserContext;
+
+/**
+ * Extends the <tt>UserContext</tt>-class with the supportedLocales.
+ * Without these extension the supportedLocales can only be set global for
+ * the consumerEnvironment. In that case all users have the same locale.
+ * Now the supportedLocales can be set per user.<br/>
+ *
+ * The order of the locales is important. If the first entry is not offered
+ * by the portlet the second will be tested and so on. The first match delivers
+ * the used locale.<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class UserContextExtension extends UserContext {
+
+ /** The locales for the user. */
+ protected String[] supportedLocales;
+
+ /** User Authentication. */
+ protected String userAuthentication;
+
+ /**
+ * Default constructor
+ */
+ public UserContextExtension() {
+ super();
+ }
+
+ /**
+ * Constructor
+ *
+ * @param extensions
+ * @param profile
+ * @param userCategories
+ * @param userContextKey
+ */
+ public UserContextExtension(
+ oasis.names.tc.wsrp.v1.types.Extension[] extensions,
+ oasis.names.tc.wsrp.v1.types.UserProfile profile,
+ java.lang.String[] userCategories,
+ java.lang.String userContextKey) {
+ super(extensions, profile, userCategories, userContextKey);
+ }
+
+ /**
+ * Set the supportedLocales for the current user
+ *
+ * @param supportedLocales
+ */
+ public void setSupportedLocales(String[] supportedLocales) {
+ this.supportedLocales = supportedLocales;
+ }
+
+ /**
+ * @return all locales the user wants to support
+ */
+ public String[] getSupportedLocales() {
+ return this.supportedLocales;
+ }
+
+ public String getUserAuthentication() {
+ return userAuthentication;
+ }
+
+ public void setUserAuthentication(String userAuthentication) {
+ this.userAuthentication = userAuthentication;
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextExtension.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextExtension.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProvider.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProvider.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProvider.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProvider.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+/**
+ * This component provides the {@link oasis.names.tc.wsrp.v1.types.UserContext}
+ * for a portal user.
+ * Cocoon uses an extension of the user context: {@link UserContextExtension}
+ * to store additional information about the user.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public interface UserContextProvider {
+
+ /** The component role. */
+ String ROLE = UserContextProvider.class.getName();
+
+ /**
+ * Delivers a <tt>UserContext</tt>-object for the given User-id <br />
+ * the data will be read out of an individual location <br />
+ *
+ * @param userId
+ * @return UserContextExtension
+ */
+ UserContextExtension createUserContext(String userId);
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProvider.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProviderImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProviderImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProviderImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProviderImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.wsrp4j.consumer.util.ConsumerConstants;
+import org.apache.wsrp4j.util.Constants;
+
+import oasis.names.tc.wsrp.v1.types.Contact;
+import oasis.names.tc.wsrp.v1.types.EmployerInfo;
+import oasis.names.tc.wsrp.v1.types.PersonName;
+import oasis.names.tc.wsrp.v1.types.UserProfile;
+
+/**
+ * This is the default implementation just returning an empty
+ * user context.<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class UserContextProviderImpl implements UserContextProvider, ThreadSafe {
+
+ /**
+ * @see org.apache.cocoon.portal.wsrp.consumer.UserContextProvider#createUserContext(java.lang.String)
+ */
+ public UserContextExtension createUserContext(String userId) {
+ final UserContextExtension userContext = new UserContextExtension();
+
+ userContext.setUserContextKey(userId);
+
+ UserProfile userProfile = new UserProfile();
+ this.fill(userProfile, userContext);
+
+ PersonName personName = new PersonName();
+ this.fill(personName, userContext);
+
+ userProfile.setName(personName);
+ userContext.setProfile(userProfile);
+
+ userContext.setUserAuthentication(ConsumerConstants.PASSWORD);
+ this.setSupportedLocales(userContext);
+ return userContext;
+ }
+
+ /**
+ * Sets the supportedLocales out of an individual location
+ * This method can be overwritten in sub classes.<br/>
+ *
+ * @param userContext
+ */
+ protected void setSupportedLocales(UserContextExtension userContext) {
+ String[] supportedLocales = new String[2];
+ supportedLocales[0] = Constants.LOCALE_EN_US;
+ supportedLocales[1] = Constants.LOCALE_DE_DE;
+ userContext.setSupportedLocales(supportedLocales);
+ }
+
+ /**
+ * Fill the user profile.<br/>
+ * This method can be overwritten in sub classes.<br/
+ *
+ * @param profile
+ * @param context
+ */
+ protected void fill(UserProfile profile, UserContextExtension context) {
+ profile.setEmployerInfo(new EmployerInfo());
+ profile.setHomeInfo(new Contact());
+ profile.setBusinessInfo(new Contact());
+ }
+
+ /**
+ * Fill the name.<br/>
+ * This method can be overwritten in sub classes.<br/>
+ *
+ * @param name
+ * @param context
+ */
+ protected void fill(PersonName name, UserContextExtension context) {
+ name.setNickname(context.getUserContextKey());
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProviderImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserContextProviderImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserRegistryImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserRegistryImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserRegistryImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserRegistryImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import org.apache.wsrp4j.consumer.driver.GenericUserRegistryImpl;
+
+/**
+ * User registry storing all users in a {@link java.util.Hashtable}
+ * in memory. The user registry is filled by the wsrp adapter.
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ */
+public class UserRegistryImpl extends GenericUserRegistryImpl {
+
+ /**
+ * Default constructor
+ */
+ public UserRegistryImpl() {
+ super();
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserRegistryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserRegistryImpl.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserSessionImpl.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserSessionImpl.java?rev=264755&view=auto
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserSessionImpl.java (added)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserSessionImpl.java Tue Aug 30 03:29:21 2005
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2005 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.cocoon.portal.wsrp.consumer;
+
+import java.util.Hashtable;
+
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.wsrp4j.consumer.GroupSessionMgr;
+import org.apache.wsrp4j.consumer.driver.GenericUserSessionImpl;
+import org.apache.wsrp4j.exception.WSRPException;
+
+/**
+ * Implements a simple consumer-based user session<br/>
+ *
+ * Note: Since most of this methods all only for the session handler,
+ * consider to make most of the methods package scoped.<br/>
+ *
+ * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
+ * @author <a href="mailto:malessandrini@s-und-n.de">Michel Alessandrini</a>
+ *
+ * @version $Id$
+ **/
+public class UserSessionImpl extends GenericUserSessionImpl {
+
+ /** The logger */
+ protected final Logger logger;
+
+ /**
+ * Constructor <br/
+ *
+ * @param producerID
+ * @param userID
+ * @param markupURL
+ * @param logger
+ * @throws WSRPException
+ */
+ public UserSessionImpl(String producerID,
+ String userID,
+ String markupURL,
+ Logger logger)
+ throws WSRPException {
+ super(producerID, userID, markupURL);
+ this.logger = logger;
+ this.setGroupSessionTable(new Hashtable());
+ }
+
+ /**
+ * Get the group session for this group ID<br/>
+ *
+ * @param groupID ID of the portlet application
+ * @return The a group session for the provided group ID or a new groupSession
+ **/
+ public GroupSessionMgr getGroupSession(String groupID) throws WSRPException {
+ GroupSessionMgr groupSession = null;
+ if (groupID != null) {
+ groupSession = (GroupSessionMgr)this.groupSessions.get(groupID);
+ if (groupSession == null) {
+ groupSession = new GroupSessionImpl(groupID, this.getMarkupInterfaceURL(), this.logger);
+ addGroupSession(groupSession);
+ }
+ }
+ return groupSession;
+ }
+}
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserSessionImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/wsrp/consumer/UserSessionImpl.java
------------------------------------------------------------------------------
svn:keywords = Id