You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-scm@portals.apache.org by uk...@apache.org on 2007/08/05 11:46:10 UTC
svn commit: r562844 - in /portals/pluto/branches/1.1-286-COMPATIBILITY:
pluto-container/src/main/java/org/apache/pluto/
pluto-container/src/main/java/org/apache/pluto/core/
pluto-container/src/main/java/org/apache/pluto/internal/impl/
pluto-container/s...
Author: ukuester
Date: Sun Aug 5 02:46:08 2007
New Revision: 562844
URL: http://svn.apache.org/viewvc?view=rev&rev=562844
Log:
Committed
8. eventing_0400807.patch
9. eventing_0400807_missingEventDefRefDD.patch
from JIRA 267
solves problems in subtask 372, 374 too.
Added:
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionReferenceDD.java
Modified:
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletSessionImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/StateAwareResponseImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/EventProvider.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/PortalCallbackService.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/ActionResponseWrapper.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletRequestWrapper.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletResponseWrapper.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionDD.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/ObjectFactory.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/PortletDD.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/jaxb.index
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-impl/src/test/java/org/apache/pluto/descriptors/services/jaxb/JaxBDescriptorServiceImplTest.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventAttribute.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventList.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortalCallbackServiceImpl.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java
portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/PortletContainer.java Sun Aug 5 02:46:08 2007
@@ -169,5 +169,7 @@
*/
public PortletAppDD getPortletApplicationDescriptor(String context)
throws PortletContainerException;
+
+ public ServletContext getServletContext();
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/core/PortletContainerImpl.java Sun Aug 5 02:46:08 2007
@@ -247,11 +247,12 @@
+ portletWindow.getPortletName());
PortletURLProvider portletURLProvider = requiredContainerServices.getPortalCallbackService().getPortletURLProvider(request, internalPortletWindow);
+
+ portletURLProvider.savePortalURL(request);
saveChangedParameters(actionRequest, actionResponse, portletURLProvider);
- portletURLProvider.savePortalURL(request);
EventProvider provider = this.getRequiredContainerServices().getPortalCallbackService().
- getEventProvider(request,response);
+ getEventProvider(request,response, this);
provider.fireEvents(this);
// After processing action, send a redirect URL for rendering.
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventRequestImpl.java Sun Aug 5 02:46:08 2007
@@ -18,6 +18,7 @@
import java.io.Serializable;
+import java.io.StringReader;
import javax.portlet.Event;
import javax.portlet.EventRequest;
@@ -28,13 +29,19 @@
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pluto.Constants;
import org.apache.pluto.PortletContainer;
+import org.apache.pluto.PortletContainerException;
import org.apache.pluto.descriptors.portlet.EventDefinitionDD;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
import org.apache.pluto.internal.InternalEventRequest;
import org.apache.pluto.internal.InternalPortletWindow;
import org.apache.pluto.spi.EventProvider;
@@ -58,6 +65,10 @@
*/
private PortletPreferences portletPreferences = null;
+ private PortletContainer container;
+
+ private InternalPortletWindow window;
+
private Event event;
// Constructor -------------------------------------------------------------
@@ -67,6 +78,8 @@
HttpServletRequest servletRequest, Event event) {
super(container, internalPortletWindow, servletRequest);
this.event = event;
+ this.window = internalPortletWindow;
+ this.container = container;
if (LOG.isDebugEnabled()) {
LOG.debug("Created Event request for: " + internalPortletWindow);
}
@@ -80,19 +93,37 @@
(EventProvider) this.getRequest().getAttribute(Constants.PROVIDER);
Object value = event.getValue();
- if (value instanceof XMLStreamReader) {
- XMLStreamReader xml = (XMLStreamReader) event.getValue();
- EventDefinitionDD eventDefinitionDD = provider.getEventDefinition(event.getQName());
+
+ XMLStreamReader xml = null;
+ try {
+ if (value instanceof String) {
+ String in = (String) value;
+ xml = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(in));
+ }
+ }
+ catch (XMLStreamException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ } catch (FactoryConfigurationError e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+
+ if (xml != null) {
+ //XMLStreamReader xml = (XMLStreamReader) event.getValue();
+
+ //provider.getEventDefinition(event.getQName());
try {
// now test if object is jaxb
-
+ EventDefinitionDD eventDefinitionDD = getEventDefintion(event.getQName());
+
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Class clazz = loader.loadClass(eventDefinitionDD.getJavaClass());
JAXBContext jc = JAXBContext.newInstance(clazz);
Unmarshaller unmarshaller = jc.createUnmarshaller();
- unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());
+// unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());
JAXBElement result = unmarshaller.unmarshal(xml,clazz);
@@ -103,13 +134,26 @@
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
- }
+ } catch (PortletContainerException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
return event;
}
// PortletRequestImpl impl -------------------------------------------------
+ private EventDefinitionDD getEventDefintion(QName name) throws PortletContainerException {
+ PortletAppDD appDD = container.getPortletApplicationDescriptor(window.getContextPath());
+ for (EventDefinitionDD def : appDD.getEvents()){
+ if (def.getName().equals(name)){
+ return def;
+ }
+ }
+ return null;
+ }
+
/**
* FIXME: (see ActionRequestImpl)
*/
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/EventResponseImpl.java Sun Aug 5 02:46:08 2007
@@ -48,17 +48,17 @@
- public ServletOutputStream getOutputStream() throws IOException {
- // TODO Auto-generated method stub
-// return null;
- throw new UnsupportedOperationException("This method needs to be implemented.");
- }
+// public ServletOutputStream getOutputStream() throws IOException {
+// // TODO Auto-generated method stub
+//// return null;
+// throw new UnsupportedOperationException("This method needs to be implemented.");
+// }
- public PrintWriter getWriter() throws IOException {
- // TODO Auto-generated method stub
-// return null;
- throw new UnsupportedOperationException();
- }
+// public PrintWriter getWriter() throws IOException {
+// // TODO Auto-generated method stub
+//// return null;
+// throw new UnsupportedOperationException();
+// }
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletConfigImpl.java Sun Aug 5 02:46:08 2007
@@ -81,9 +81,9 @@
throw new IllegalArgumentException("Parameter name == null");
}
- Iterator parms = portletDD.getInitParams().iterator();
+ Iterator<InitParamDD> parms = portletDD.getInitParams().iterator();
while(parms.hasNext()) {
- InitParamDD param = (InitParamDD)parms.next();
+ InitParamDD param = parms.next();
if (param.getParamName().equals(name)) {
return param.getParamValue();
}
@@ -91,21 +91,20 @@
return null;
}
- public Enumeration getInitParameterNames() {
- return new java.util.Enumeration() {
- private Iterator iterator =
- new ArrayList(portletDD.getInitParams()).iterator();
+ public Enumeration<String> getInitParameterNames() {
+ return new java.util.Enumeration<String>() {
+ private Iterator<InitParamDD> iterator =
+ new ArrayList<InitParamDD>(portletDD.getInitParams()).iterator();
public boolean hasMoreElements() {
return iterator.hasNext();
}
- public Object nextElement() {
+ public String nextElement() {
if (iterator.hasNext()) {
- return ((InitParamDD) iterator.next()).getParamName();
- } else {
- return null;
- }
+ return iterator.next().getParamName();
+ }
+ return null;
}
};
}
@@ -120,30 +119,40 @@
}
// --------------------------------------------------------------------------------------------
- public Enumeration getPublicRenderParameterNames() {
+ public Enumeration<String> getPublicRenderParameterNames() {
if (portletDD.getPublicRenderParameter() != null){
- return portletDD.getPublicRenderParameter().elements();
+ return Collections.enumeration(portletDD.getPublicRenderParameter());
}
return null;
}
public String getDefaultNamespace() {
+ // how to get the corresponding porletAppDD
// TODO Auto-generated method stub
throw new UnsupportedOperationException("This method needs to be implemented.");
}
public Enumeration<QName> getProcessingEventQNames() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
+
+ return (portletDD.getProcessingEvents() != null) ?
+ Collections.enumeration(portletDD.getProcessingEvents()) :
+ null;
}
public Enumeration<QName> getPublishingEventQNames() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
+ return (portletDD.getPublishingEvents() != null) ?
+ Collections.enumeration(portletDD.getPublishingEvents()) :
+ null;
}
public Enumeration<Locale> getSupportedLocales() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
+ // for each String entry in SupportedLocales (portletDD)
+ // add an entry in the resut list (new Locale(string))
+ List<Locale> locals = new ArrayList<Locale>();
+ List<String> localsAsStrings = portletDD.getSupportedLocale();
+ for (String string : localsAsStrings) {
+ locals.add(new Locale(string));
+ }
+ return Collections.enumeration(locals);
}
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletRequestImpl.java Sun Aug 5 02:46:08 2007
@@ -724,7 +724,6 @@
}
public String getWindowID() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
+ return internalPortletWindow.getId().getStringId();
}
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletSessionImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletSessionImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletSessionImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/PortletSessionImpl.java Sun Aug 5 02:46:08 2007
@@ -16,7 +16,10 @@
*/
package org.apache.pluto.internal.impl;
+import java.util.ArrayList;
import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Vector;
@@ -103,24 +106,23 @@
return getAttributeNames(DEFAULT_SCOPE);
}
- public Enumeration getAttributeNames(int scope) {
+ public Enumeration<String> getAttributeNames(int scope) {
// Return all attribute names in the nested HttpSession object.
if (scope == PortletSession.APPLICATION_SCOPE) {
return httpSession.getAttributeNames();
}
// Return attribute names with the portlet-scoped prefix.
- else {
- Vector portletScopedNames = new Vector();
- for (Enumeration en = httpSession.getAttributeNames();
- en.hasMoreElements(); ) {
- String name = (String) en.nextElement();
- if (isInCurrentPortletScope(name)) {
- portletScopedNames.add(
- PortletSessionUtil.decodeAttributeName(name));
- }
- }
- return portletScopedNames.elements();
+ Vector<String> portletScopedNames = new Vector<String>();
+ for (Enumeration<String> en = httpSession.getAttributeNames();
+ en.hasMoreElements(); ) {
+ String name = en.nextElement();
+ if (isInCurrentPortletScope(name)) {
+ portletScopedNames.add(
+ PortletSessionUtil.decodeAttributeName(name));
+ }
}
+ return portletScopedNames.elements();
+
}
public void removeAttribute(String name) {
@@ -282,14 +284,40 @@
public Map<String, Object> getMap() {
- // TODO Auto-generated method stub
- return null;
+ List<String> paramNames = getAttributeNamesAsList(DEFAULT_SCOPE);
+ return fillMap(paramNames, DEFAULT_SCOPE);
}
-
public Map<String, Object> getMap(int scope) {
- // TODO Auto-generated method stub
- return null;
+ List<String> paramNames = getAttributeNamesAsList(scope);
+ return fillMap(paramNames, scope);
}
+// ***** private methods *****
+
+ /**
+ * transforms the getAttributeNames enumeration to a list
+ * @return list of getAttributeNames
+ */
+ private List<String> getAttributeNamesAsList(int scope) {
+ //transform Enum to List
+ List<String> paramNames = new ArrayList<String>();
+ Enumeration<String> e = getAttributeNames(scope);
+ while (e.hasMoreElements()){
+ paramNames.add(e.nextElement());
+ }
+ return paramNames;
+ }
+
+ /**
+ * @param paramNames list of the attribute names to be filled in the map
+ * @return the filled map
+ */
+ private Map<String, Object> fillMap(List<String> paramNames, int scope) {
+ Map<String, Object> resultMap = new HashMap<String, Object>();
+ for (String string : paramNames) {
+ resultMap.put(string, getAttribute(string,scope));
+ }
+ return resultMap;
+ }
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/StateAwareResponseImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/StateAwareResponseImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/StateAwareResponseImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/internal/impl/StateAwareResponseImpl.java Sun Aug 5 02:46:08 2007
@@ -17,17 +17,15 @@
package org.apache.pluto.internal.impl;
import java.io.IOException;
-import java.io.Reader;
import java.io.Serializable;
-import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import java.rmi.MarshalException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.portlet.PortalContext;
import javax.portlet.PortletException;
@@ -40,14 +38,13 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
+import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.namespace.QName;
import javax.xml.stream.FactoryConfigurationError;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.apache.commons.logging.Log;
@@ -55,6 +52,7 @@
import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
import org.apache.pluto.descriptors.portlet.EventDefinitionDD;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
import org.apache.pluto.descriptors.portlet.PortletDD;
import org.apache.pluto.descriptors.portlet.SupportsDD;
import org.apache.pluto.internal.InternalPortletWindow;
@@ -105,85 +103,89 @@
/* (non-Javadoc)
* @see javax.portlet.StateAwareResponse#setEvent(javax.xml.namespace.QName, java.lang.Object)
*/
- public void setEvent(QName qname, java.io.Serializable value) {
+ public void setEvent(QName qname, Serializable value) throws IllegalArgumentException {
EventProvider provider = callback.getEventProvider(
- getHttpServletRequest(),getHttpServletResponse());
-
- XMLStreamReader xml = null;
- try {
-
- EventDefinitionDD eventDefinitionDD = provider.getEventDefinition(qname);
- if (value != null && eventDefinitionDD == null) {
- // TODO: throw the right exception
- throw new PortletException("No Event Defintion!");
- } if (eventDefinitionDD == null) {
- // TODO: throw the right exception
- throw new PortletException("No Event Defintion!");
- }
+ getHttpServletRequest(),getHttpServletResponse(), container);
+
+ if (isDeclaredAsPublishingEvent(qname)) {
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
- Class clazz = loader.loadClass(eventDefinitionDD.getJavaClass());
+ if (!isValueInstanceOfDefinedClass(qname,value))
+ throw new IllegalArgumentException("Payload has not the right class");
- JAXBContext jc = JAXBContext.newInstance(clazz);
+ XMLStreamReader xml = null;
+ try {
- Marshaller marshaller = jc.createMarshaller();
-// marshaller.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT,
-// Boolean.TRUE );
+ if (value == null) {
+ provider.registerToFireEvent(new EventImpl(qname));
+ } else if (!(value instanceof Serializable)) {
+ throw new IllegalArgumentException("Object payload must implement Serializable");
+ }
+ else {
+
+ Class clazz = value.getClass();
- Writer out = new StringWriter();
-
- marshaller.marshal(new JAXBElement(
- eventDefinitionDD.getName(),clazz,value), out);
+ JAXBContext jc = JAXBContext.newInstance(clazz);
- Reader in = new StringReader(out.toString());
+ Marshaller marshaller = jc.createMarshaller();
- xml = XMLInputFactory.newInstance().createXMLStreamReader(in);
+ Writer out = new StringWriter();
- if (xml != null) {
- provider.registerToFireEvent(new EventImpl(qname,(Serializable) xml));
- } else {
- provider.registerToFireEvent(new EventImpl(qname,(Serializable) value));
+ marshaller.marshal(new JAXBElement(qname,clazz,value), out);
+// marshaller.marshal(value, out);
+
+ if (out != null) {
+ provider.registerToFireEvent(new EventImpl(qname,(Serializable) out.toString()));
+ } else {
+ provider.registerToFireEvent(new EventImpl(qname,(Serializable) value));
+ }
+ }
+ } catch (ServletException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (PortletException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (PortletContainerException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (MarshalException e) {
+ // there is no valid jaxb binding
+ e.printStackTrace();
+ } catch (JAXBException e) {
+ // maybe there is no valid jaxb binding
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (FactoryConfigurationError e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+// } catch (ClassNotFoundException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
}
- } catch (ServletException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (PortletException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (PortletContainerException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (MarshalException e) {
- // there is no valid jaxb binding
- e.printStackTrace();
- } catch (JAXBException e) {
- // maybe there is no valid jaxb binding
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (XMLStreamException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (FactoryConfigurationError e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ }
}
/* (non-Javadoc)
- * @see javax.portlet.StateAwareResponse#setEvents(java.util.Map)
+ * @see javax.portlet.StateAwareResponse#setEvent(java.lang.String, java.lang.Object)
*/
- public void setEvents(java.util.Map<javax.xml.namespace.QName, java.io.Serializable> events) {
- Set keys = events.keySet();
- for (Object key : keys) {
- setEvent((QName)key,events.get(key));
- }
+ public void setEvent(String name, Serializable value) {
+ String defaultEventNamespace = getDefaultEventNamespace();
+ setEvent((new QName(defaultEventNamespace, name)),value);
}
+
+ /* (non-Javadoc)
+ * @see javax.portlet.StateAwareResponse#setEvents(java.util.Map)
+ */
+// Not in API anymore
+// public void setEvents(Map events) {
+// Set keys = events.keySet();
+// for (Object key : keys) {
+// setEvent((QName)key,(Serializable)events.get(key));
+// }
+// }
/* (non-Javadoc)
* @see javax.servlet.http.HttpServletResponseWrapper#sendRedirect(java.lang.String)
@@ -437,16 +439,53 @@
// TODO Auto-generated method stub
throw new UnsupportedOperationException("This method needs to be implemented.");
}
-
- public void setEvent(String name, java.io.Serializable value) {
- // TODO Auto-generated method stub
-
+
+// Not in API anymore
+// public void setDefaultNamspacedEvents(Map<String, Object> events) {
+// String defaultEventNamespace = getDefaultEventNamespace();
+// Set<String> keys = events.keySet();
+// for (String key : keys) {
+// setEvent((new QName(defaultEventNamespace, key)),(Serializable) events.get(key));
+// }
+// }
+
+ /**
+ * Gets the default event namespace.
+ *
+ * @return the default event namespace
+ */
+ private String getDefaultEventNamespace() {
+ EventProvider provider = callback.getEventProvider(
+ getHttpServletRequest(),getHttpServletResponse(), container);
+ String defaultEventNamespace = provider.getDefaultEventNamespace(this.getInternalPortletWindow().getPortletName());
+ return (defaultEventNamespace == null || defaultEventNamespace.equals("")) ? XMLConstants.NULL_NS_URI : defaultEventNamespace;
}
+
+ // ****** private methods ******
- public void setDefaultNamespacedEvents(Map<String, Object> events) {
- // TODO Auto-generated method stub
-
+ private boolean isDeclaredAsPublishingEvent(QName qname) {
+ List<QName> events = internalPortletWindow.getPortletEntity()
+ .getPortletDefinition().getPublishingEvents();
+ return events != null && events.contains(qname);
}
-
+ private boolean isValueInstanceOfDefinedClass(QName qname, Serializable value){
+ PortletAppDD portletAppDD = null;
+ try {
+ portletAppDD =
+ container.getPortletApplicationDescriptor(internalPortletWindow.getContextPath());
+ if (portletAppDD.getEvents() != null) {
+ for (EventDefinitionDD event : portletAppDD.getEvents()) {
+ if (event.getName().toString().equals(qname.toString())){
+ return value.getClass().getName().equals(event.getJavaClass());
+ }
+ }
+ }
+ } catch (PortletContainerException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ // event not declared
+ return true;
+ }
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/EventProvider.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/EventProvider.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/EventProvider.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/EventProvider.java Sun Aug 5 02:46:08 2007
@@ -29,6 +29,7 @@
import org.apache.pluto.EventContainer;
import org.apache.pluto.PortletContainerException;
import org.apache.pluto.descriptors.portlet.EventDefinitionDD;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
/**
*
@@ -58,7 +59,7 @@
* the name of the event
* @return ArrayList of associated InternalPortletWindows
*/
- public abstract List<String> getAllPortletNames(String evtLabel);
+// public abstract List<String> getAllPortletNames(String evtLabel);
/**
* Bind an InternalPortletWindow to an event and/or create a new event
@@ -72,21 +73,21 @@
* null or the pw to be associated with the event
* @param eventDefinitionDD TODO
*/
- public abstract void registerEvent(String evtLabel, String portletName, EventDefinitionDD eventDefinitionDD);
+// public abstract void registerEvent(String evtLabel, String portletName, EventDefinitionDD eventDefinitionDD);
/**
*
* @param evtLabel -
* creates a new event with an empty ArrayList
*/
- public abstract void registerEvent(String evtLabel);
+// public abstract void registerEvent(String evtLabel);
/**
*
* @param evtLabel -
* removes an event
*/
- public abstract void removeEvent(String evtLabel);
+// public abstract void removeEvent(String evtLabel);
/**
*
@@ -96,34 +97,34 @@
* pw is removed from the events listed herein or all events if
* evtLabelsList is null
*/
- public abstract void removePortletName(String portletName,
- List<String> evtLabelsList);
+// public abstract void removePortletName(String portletName,
+// List<String> evtLabelsList);
/**
* Removes the portlet name.
*
* @param portletName the portlet name
*/
- public abstract void removePortletName(String portletName);
+// public abstract void removePortletName(String portletName);
/**
*
* @return Enumeration containing all events
*/
- public abstract Enumeration<String> getAllEventLabelsEnumeration();
+// public abstract Enumeration<String> getAllEventLabelsEnumeration();
/**
*
* @return String list containing all events
*/
- public abstract List<String> getAllEventLabelsList();
+// public abstract List<String> getAllEventLabelsList();
/**
* Gets all saved events.
*
* @return the saved events
*/
- public abstract List<Event> getAllSavedEvents();
+// public abstract List<Event> getAllSavedEvents();
/**
* Gets the event.
@@ -133,7 +134,7 @@
*
* @return the event
*/
- public abstract Event getEvent(String eventName, int eventNumber);
+// public abstract Event getEvent(String eventName, int eventNumber);
/**
* Fire events.
@@ -156,7 +157,7 @@
*
* @param eventDefinitionDD the event definition DD
*/
- public abstract void registerEventDefinitionDD(EventDefinitionDD eventDefinitionDD);
+// public abstract void registerEventDefinitionDD(EventDefinitionDD eventDefinitionDD);
/**
* Gets the request.
@@ -171,4 +172,18 @@
* @return the response
*/
public HttpServletResponse getResponse();
+
+ /**
+ * Gets the default event namespace.
+ *
+ * @return the default event namespace
+ */
+ public abstract String getDefaultEventNamespace(String portletName);
+
+ /**
+ * Sets the default event namespace.
+ *
+ * @return the string
+ */
+// public abstract void setDefaultEventNamespace(PortletAppDD portletAppDD);
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/PortalCallbackService.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/PortalCallbackService.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/PortalCallbackService.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/spi/PortalCallbackService.java Sun Aug 5 02:46:08 2007
@@ -21,6 +21,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletWindow;
/**
@@ -75,7 +76,8 @@
String property,
String value);
- public EventProvider getEventProvider(HttpServletRequest request, HttpServletResponse response);
+ public EventProvider getEventProvider(HttpServletRequest request,
+ HttpServletResponse response, PortletContainer container);
public EventProvider getEventProvider();
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/ActionResponseWrapper.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/ActionResponseWrapper.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/ActionResponseWrapper.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/ActionResponseWrapper.java Sun Aug 5 02:46:08 2007
@@ -88,10 +88,10 @@
this.getStateAwareResponse().setEvent(qname, value);
}
- public void setEvents(Map<javax.xml.namespace.QName, java.io.Serializable> events) {
- // TODO look for setEvents in StateAwareResponse
-// this.getStateAwareResponse().setEvents(events);
- }
+// public void setEvents(Map<javax.xml.namespace.QName, java.io.Serializable> events) {
+// // TODO look for setEvents in StateAwareResponse
+//// this.getStateAwareResponse().setEvents(events);
+// }
// --------------------------------------------------------------------------------------------
public PortletMode getPortletMode() {
@@ -106,19 +106,8 @@
return this.getStateAwareResponse().getWindowState();
}
- public void setNextPossiblePortletModes(Enumeration portletModes) {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
- }
-
- public void setDefaultNamespacedEvents(Map<String, Object> events) {
- // TODO Auto-generated method stub
-
- }
-
public void setEvent(String name, java.io.Serializable value) {
- // TODO Auto-generated method stub
-
+ this.getStateAwareResponse().setEvent(name, value);
}
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletRequestWrapper.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletRequestWrapper.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletRequestWrapper.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletRequestWrapper.java Sun Aug 5 02:46:08 2007
@@ -207,24 +207,12 @@
}
// --------------------------------------------------------------------------------------------
- public String getLifecyclePhase() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
- }
-
- public Cookie[] getCookieProperties() {
- // TODO Auto-generated method stub
- throw new UnsupportedOperationException("This method needs to be implemented.");
- }
-
public Map<String, String[]> getPrivateParameterMap() {
- // TODO Auto-generated method stub
- return null;
+ return this.getPortletRequest().getPrivateParameterMap();
}
public Map<String, String[]> getPublicParameterMap() {
- // TODO Auto-generated method stub
- return null;
+ return this.getPortletRequest().getPublicParameterMap();
}
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletResponseWrapper.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletResponseWrapper.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletResponseWrapper.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-container/src/main/java/org/apache/pluto/wrappers/PortletResponseWrapper.java Sun Aug 5 02:46:08 2007
@@ -100,8 +100,7 @@
}
public void addProperty(String key, Element element) {
- // TODO Auto-generated method stub
-
+ this.getPortletResponse().addProperty(key, element);
}
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionDD.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionDD.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionDD.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionDD.java Sun Aug 5 02:46:08 2007
@@ -64,6 +64,7 @@
@XmlType(name = "event-definitionType", propOrder = {
"description",
"name",
+ "qname",
"alias",
"javaClass"
})
@@ -76,13 +77,18 @@
/**
* Name of the Event
+ * <choice>
+ * <element name="qname" type="xs:QName"/>
+ * <element name="name" type="string"/>
+ * </choice>
*/
- private QName name;
+ private QName qname;
+ private String name;
/**
* Java-Type of the Event
*/
- @XmlElement(name = "java-class")
+ @XmlElement(name = "value-type")
private String javaClass;
/**
@@ -164,14 +170,14 @@
* @return Returns the name.
*/
public QName getName() {
- return name;
+ return (qname==null) ? new QName(name) : qname;
}
/**
* @param name The name to set.
*/
- public void setName(QName name) {
- this.name = name;
+ public void setName(QName qname) {
+ this.qname = qname;
}
/**
Added: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionReferenceDD.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionReferenceDD.java?view=auto&rev=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionReferenceDD.java (added)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/EventDefinitionReferenceDD.java Sun Aug 5 02:46:08 2007
@@ -0,0 +1,60 @@
+package org.apache.pluto.descriptors.portlet;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.namespace.QName;
+
+/**
+ *
+ * the event definition reference type
+ *
+ * <complexType name="event-definition-referenceType">
+ * <annotation>
+ * <documentation>
+ * The event-definition-referenceType is used to refernece events
+ * declared with the event-definition element on application level.
+ * Used in: portlet
+ * </documentation>
+ * </annotation>
+ * <choice>
+ * <element name="qname" type="xs:QName"/>
+ * <element name="name" type="string"/>
+ * </choice>
+ * <attribute name="id" type="string" use="optional"/>
+ * </complexType>
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "event-definition-referenceType", propOrder = {
+ "qname",
+ "name"
+})
+public class EventDefinitionReferenceDD {
+
+ /**
+ * Name of the Event
+ * <choice>
+ * <element name="qname" type="xs:QName"/>
+ * <element name="name" type="string"/>
+ * </choice>
+ */
+ private QName qname;
+ private String name;
+
+ /**
+ * @return Returns the name.
+ */
+ public QName getName() {
+ if ((qname == null) && (name == null))
+ return null;
+ return (qname==null) ? new QName(name) : qname;
+ }
+
+ /**
+ * @param name The name to set.
+ */
+ public void setName(QName qname) {
+ this.qname = qname;
+ }
+
+}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/ObjectFactory.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/ObjectFactory.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/ObjectFactory.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/ObjectFactory.java Sun Aug 5 02:46:08 2007
@@ -48,7 +48,7 @@
private final static QName _PortletApp1_QNAME = new QName("http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd", "portlet-app");
private final static QName _Portlet1DD_QNAME = new QName("http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd", "portlet");
private final static QName _PortletDD_QNAME = new QName("http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd", "portlet");
-
+
/**
* Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.sun.java.xml.ns.portlet.portlet_app_2_0
*
@@ -352,8 +352,8 @@
*
*/
@XmlElementDecl(namespace = "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd", name = "supported-publishing-event", scope = PortletDD.class)
- public JAXBElement<QName> createPortletDDSupportedPublishingEvent(QName value) {
- return new JAXBElement<QName>(_PortletDDSupportedPublishingEvent_QNAME, QName.class, PortletDD.class, value);
+ public JAXBElement<EventDefinitionReferenceDD> createPortletDDSupportedPublishingEvent(EventDefinitionReferenceDD value) {
+ return new JAXBElement<EventDefinitionReferenceDD>(_PortletDDSupportedPublishingEvent_QNAME, EventDefinitionReferenceDD.class, PortletDD.class, value);
}
/**
@@ -370,8 +370,8 @@
*
*/
@XmlElementDecl(namespace = "http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd", name = "supported-processing-event", scope = PortletDD.class)
- public JAXBElement<QName> createPortletDDSupportedProcessingEvent(QName value) {
- return new JAXBElement<QName>(_PortletDDSupportedProcessingEvent_QNAME, QName.class, PortletDD.class, value);
+ public JAXBElement<EventDefinitionReferenceDD> createPortletDDSupportedProcessingEvent(EventDefinitionReferenceDD value) {
+ return new JAXBElement<EventDefinitionReferenceDD>(_PortletDDSupportedProcessingEvent_QNAME, EventDefinitionReferenceDD.class, PortletDD.class, value);
}
/**
@@ -473,4 +473,5 @@
return new JAXBElement<PortletAppDD>(_PortletApp1_QNAME, PortletAppDD.class, null, value);
}
+
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/PortletDD.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/PortletDD.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/PortletDD.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/PortletDD.java Sun Aug 5 02:46:08 2007
@@ -17,6 +17,7 @@
*/
package org.apache.pluto.descriptors.portlet;
+import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
@@ -127,7 +128,7 @@
/** the supported processing Events */
@XmlElement(name = "supported-processing-event")
- private List<QName> processingEvents = null;
+ private List<EventDefinitionReferenceDD> processingEvents = null;
/** The unique name of the portlet. */
@XmlElement(name = "portlet-name")
@@ -150,13 +151,13 @@
/** the supported publishing Events */
@XmlElement(name = "supported-publishing-event")
- private List<QName> publishingEvents = null;
+ private List<EventDefinitionReferenceDD> publishingEvents = null;
@XmlElement (name = "supported-locale")
- private String supportedLocale = null;
+ private List<String> supportedLocale = null;
@XmlElement (name = "supported-locale", namespace = QNAME_JSR168)
- private String supportedLocale1 = null;
+ private List<String> supportedLocale1 = null;
@XmlElement(name = "portlet-info")
private PortletInfoDD portletInfo = null;
@@ -198,7 +199,7 @@
/** the supported public render parameter */
@XmlElement(name = "supported-public-render-parameter")
- private Vector<String> publicRenderParameter = null;
+ private List<String> publicRenderParameter = null;
// Constructor -------------------------------------------------------------
@@ -314,31 +315,45 @@
public List<QName> getProcessingEvents() {
- return processingEvents;
+ List<QName> list = new ArrayList<QName>();
+ if (processingEvents != null) {
+ for (EventDefinitionReferenceDD ref : processingEvents) {
+ list.add(ref.getName());
+ }
+ return list;
+ }
+ return null;
}
- public void setProcessingEvents(List<QName> processingEvents) {
+ public void setProcessingEvents(List<EventDefinitionReferenceDD> processingEvents) {
this.processingEvents = processingEvents;
}
public List<QName> getPublishingEvents() {
- return publishingEvents;
+ List<QName> list = new ArrayList<QName>();
+ if (publishingEvents != null) {
+ for (EventDefinitionReferenceDD ref : publishingEvents) {
+ list.add(ref.getName());
+ }
+ return list;
+ }
+ return null;
}
- public void setPublishingEvents(List<QName> publishingEvents) {
+ public void setPublishingEvents(List<EventDefinitionReferenceDD> publishingEvents) {
this.publishingEvents = publishingEvents;
}
- public Vector<String> getPublicRenderParameter() {
+ public List<String> getPublicRenderParameter() {
return publicRenderParameter;
}
- public void setPublicRenderParameter(Vector<String> publicRenderParameter) {
+ public void setPublicRenderParameter(List<String> publicRenderParameter) {
this.publicRenderParameter = publicRenderParameter;
}
@@ -407,14 +422,14 @@
}
- public String getSupportedLocale() {
+ public List<String> getSupportedLocale() {
if (supportedLocale != null)
return supportedLocale;
return supportedLocale1;
}
- public void setSupportedLocale(String supportedLocale) {
+ public void setSupportedLocale(List<String> supportedLocale) {
this.supportedLocale = supportedLocale;
this.supportedLocale1 = supportedLocale;
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/jaxb.index
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/jaxb.index?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/jaxb.index (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-api/src/main/java/org/apache/pluto/descriptors/portlet/jaxb.index Sun Aug 5 02:46:08 2007
@@ -8,3 +8,4 @@
PublicRenderParamDD
SupportsDD
ExpirationCacheDD
+EventDefinitionReferenceDD
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-impl/src/test/java/org/apache/pluto/descriptors/services/jaxb/JaxBDescriptorServiceImplTest.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-impl/src/test/java/org/apache/pluto/descriptors/services/jaxb/JaxBDescriptorServiceImplTest.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-impl/src/test/java/org/apache/pluto/descriptors/services/jaxb/JaxBDescriptorServiceImplTest.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-descriptor-impl/src/test/java/org/apache/pluto/descriptors/services/jaxb/JaxBDescriptorServiceImplTest.java Sun Aug 5 02:46:08 2007
@@ -107,8 +107,8 @@
"<role-name>NMTOKEN</role-name>\n" +
"<role-link>role-link</role-link>\n" +
"</security-role-ref>\n" +
- "<supported-processing-event>supported-processing-event</supported-processing-event>\n" +
- "<supported-publishing-event>supported-publishing-event</supported-publishing-event>\n" +
+ "<supported-processing-event><name>supported-processing-event</name></supported-processing-event>\n" +
+ "<supported-publishing-event><qname xmlns:x=\"http://test.com\">supported-publishing-event</qname></supported-publishing-event>\n" +
"<supported-public-render-parameter>supported-public-render-parameter</supported-public-render-parameter>\n" +
"</portlet>\n" );
attrs286.append("" +
@@ -155,7 +155,7 @@
"<description xml:lang=\"de\">description</description>\n" +
"<name>QName</name>\n" +
"<alias>QName</alias>\n" +
- "<java-class>java-class</java-class>\n" +
+ "<value-type>java-class</value-type>\n" +
"</event-definition>\n" +
"<public-render-parameter id=\"public1\">\n" +
"<description xml:lang=\"de\">description</description>\n" +
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventAttribute.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventAttribute.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventAttribute.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventAttribute.java Sun Aug 5 02:46:08 2007
@@ -19,6 +19,7 @@
* The Class EventAttribute.
* Stores the attributes for a given event.
*/
+@Deprecated
public class EventAttribute {
/** The event number. */
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventList.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventList.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventList.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventList.java Sun Aug 5 02:46:08 2007
@@ -30,7 +30,7 @@
public class EventList {
/** The events. */
- private Map<Event,EventAttribute> events = new HashMap<Event, EventAttribute>();;
+ private Map<Event,Boolean> events = new HashMap<Event, Boolean>();;
/**
* Adds an event.
@@ -38,8 +38,8 @@
* @param event the event
* @param eventNumber the event number
*/
- public void addEvent(Event event, int eventNumber){
- events.put(event, new EventAttribute(eventNumber));
+ public void addEvent(Event event){
+ events.put(event, new Boolean(true));
}
/**
@@ -63,7 +63,7 @@
* @return true, if is not processed
*/
public boolean isNotProcessed(Event event) {
- return events.get(event).isNotProcessed();
+ return events.get(event).booleanValue();
}
/**
@@ -72,9 +72,9 @@
* @return true, if has more events
*/
public boolean hasMoreEvents() {
- Collection<EventAttribute> attr = this.events.values();
- for (EventAttribute attribute : attr) {
- if (attribute.isNotProcessed())
+ Collection<Boolean> attr = this.events.values();
+ for (Boolean attribute : attr) {
+ if (attribute.booleanValue())
return true;
}
return false;
@@ -86,8 +86,8 @@
* @param event the processed
*/
public void setProcessed(Event event) {
- EventAttribute attr = events.remove(event);
- attr.setNotProcessed(false);
+ events.remove(event);
+ Boolean attr = new Boolean(false);
events.put(event, attr);
}
@@ -99,24 +99,12 @@
*
* @return the event
*/
- public Event getEvent(String eventName, int eventNumber){
+ public Event getEvent(String eventName){
for (Event event : getEvents()) {
if ((event.getName() != null) && (event.getName().toString().equals(eventName)))
- if (events.get(event).getEventNumber() == eventNumber)
- return event;
+ return event;
}
return null;
- }
-
- /**
- * Gets the number.
- *
- * @param event the event
- *
- * @return the number
- */
- public int getNumber(Event event){
- return events.get(event).getEventNumber();
}
/**
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/EventProviderImpl.java Sun Aug 5 02:46:08 2007
@@ -20,9 +20,11 @@
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.Vector;
import javax.portlet.Event;
@@ -37,13 +39,19 @@
import org.apache.commons.logging.LogFactory;
import org.apache.pluto.Constants;
import org.apache.pluto.EventContainer;
+import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletContainerException;
import org.apache.pluto.PortletWindow;
+import org.apache.pluto.PortletWindowID;
import org.apache.pluto.core.PortletContainerImpl;
import org.apache.pluto.descriptors.portlet.EventDefinitionDD;
+import org.apache.pluto.descriptors.portlet.PortletAppDD;
+import org.apache.pluto.descriptors.portlet.PortletDD;
import org.apache.pluto.driver.AttributeKeys;
+import org.apache.pluto.driver.PortalDriverServlet;
import org.apache.pluto.driver.config.DriverConfiguration;
import org.apache.pluto.driver.core.PortletWindowImpl;
+import org.apache.pluto.driver.services.portal.PageConfig;
import org.apache.pluto.driver.services.portal.PortletApplicationConfig;
import org.apache.pluto.driver.services.portal.PortletWindowConfig;
import org.apache.pluto.driver.url.PortalURL;
@@ -52,35 +60,22 @@
public class EventProviderImpl implements org.apache.pluto.spi.EventProvider {
+ private static final int DEFAULT_MAPSIZE = 10;
+
/** Logger. */
private static final Log LOG = LogFactory.getLog(EventProviderImpl.class);
private static final long WAITING_CYCLE = 100;
-
- private int eventNumber = 0;
private HttpServletRequest request;
private HttpServletResponse response;
+ private PortletContainer container;
ThreadGroup threadGroup = new ThreadGroup("FireEventThreads");
- /**
- * Map that contains our events. The key is a string with the name of the event.
- * The value is a List with all associated PortletWindows.
- * FIXME: should be in another class
- */
- private static Map<String, List<String>> portalEvts =
- new HashMap<String, List<String>>(100);
- private static Map<String, EventDefinitionDD> portalEvtsDefs =
- new HashMap<String, EventDefinitionDD>(100);
-
- //private Map<Event,Boolean> savedEvents = new HashMap<Event,Boolean>();
-
private EventList savedEvents = new EventList();
- //private Map<Event, List<String>> savedEventsAndPortlets = new HashMap<Event, List<String>>();
-
- private Map<PortletWindow,PortletWindowThread> portletWindowThreads = new HashMap<PortletWindow, PortletWindowThread>();
+ private Map<String,PortletWindowThread> portletWindowThreads = new HashMap<String, PortletWindowThread>();
/**
* factory method
@@ -90,12 +85,13 @@
* @return The corresponding EventProvierImpl instance
*/
public static EventProviderImpl getEventProviderImpl(HttpServletRequest request,
- HttpServletResponse response) {
+ HttpServletResponse response, PortletContainer container) {
EventProviderImpl event = (EventProviderImpl) request.getAttribute(Constants.PROVIDER);
if (event == null) {
event = new EventProviderImpl();
event.request = request;
event.response = response;
+ event.container = container;
request.setAttribute(Constants.PROVIDER, event);
}
return event;
@@ -128,143 +124,10 @@
*/
public void registerToFireEvent(Event event)
throws ServletException, IOException, PortletException, PortletContainerException {
- savedEvents.addEvent(event, ++eventNumber);
+ savedEvents.addEvent(event);
}
/**
- * Get all Portlets, which are registered to this event
- * @param evtLabel - the name of the event
- * @return String list of associated InternalPortletWindows
- */
- public List<String> getAllPortletNames(String evtLabel) {
- return portalEvts.get(evtLabel);
- }
-
- /**
- * Bind an PortletWindow to an event and/or create a new event label.
- * If the event label isn't already in the portalEvts hashmap, add it.
- *
- *
- * @param evtLabel - the event we want to add
- * @param portletName - null or the pw to be associated with the event
- */
- public void registerEvent(String evtLabel, String portletName, EventDefinitionDD eventDefinitionDD) {
- if (evtLabel == null)
- return ;
-
- // check, if event by that name already exists
- if (portalEvts.containsKey(evtLabel)) {
- if (portletName != null) {
- // we don't want duplicate Portlet Window entries, so leave 'em out
- if (!this.containsValue(portletName, portalEvts.get(evtLabel))){
- portalEvts.get(evtLabel).add(portletName);
- }
-
- }
- }
-
- else {
- List<String> list = new ArrayList<String>();
- if (portletName != null)
- list.add(portletName);
- portalEvts.put(evtLabel, list);
- }
- }
-
- /**
- *
- * @param evtLabel - creates a new event with an empty ArrayList
- */
- public void registerEvent(String evtLabel) {
- if (evtLabel != null)
- registerEvent(evtLabel, null, null);
- }
-
- /**
- *
- * @param evtLabel - removes an event
- */
- public synchronized void removeEvent(String evtLabel) {
- if (!portalEvts.containsKey(evtLabel))
- return ;
-
- portalEvts.remove(evtLabel);
- }
-
- /**
- *
- * @param pw - the InternalPortletWindow to be removed
- * @param evtLabelsList - pw is removed from the events listed herein or all events if evtLabelsList is null
- */
- public synchronized void removePortletName(String portletName, List<String> evtLabelsList) {
-
- // set up a list of events that are going to be looked up for the portlet window we want
- // to remove OR just a list of all events
- List<String> listOfEvtLabels = (evtLabelsList==null)?this.getAllEventLabelsList():evtLabelsList;
-
- // iterate through the elements of the evtLabelsList and remove the InternalPortletWindow if any
- List<String> tmp;
- for (String element : listOfEvtLabels) {
- tmp = portalEvts.get(element);
- if (this.containsValue(portletName, tmp))
- tmp.remove(portletName);
- }
- }
-
- public synchronized void removePortletName(String portletName){
- removePortletName(portletName,null);
- }
-
- /**
- *
- * @return String enumeration containing all events
- */
- public Enumeration<String> getAllEventLabelsEnumeration () {
- Vector<String> v = new Vector<String>();
-
- for (String element : portalEvts.keySet()) {
- v.add(element);
- }
- return v.elements();
- }
-
- /**
- *
- * @return String list containing all events
- */
- public List<String> getAllEventLabelsList () {
- List<String> l = new ArrayList<String>();
-
- for (String element : portalEvts.keySet()) {
- l.add(element);
- }
-
- return l;
- }
-
- // private
-
- /**
- * returns if InternalPortletWindow pw is contained in the ArrayList l of PortletWindows
- */
- private boolean containsValue(String portletName, List<String> l) {
-
- for (String element : l)
- if (element.equals(portletName))
- return true;
-
- return false;
- }
-
- /**
- * @return Returns the savedEvents.
- */
- public List<Event> getAllSavedEvents() {
- return savedEvents.getEvents();
- }
-
-
- /**
* Fire all saved events
* Note, that the order isn't important @see PLT14.3.2
* @param eventContainer The {@link PortletContainerImpl} to fire the events
@@ -279,10 +142,12 @@
while (savedEvents.hasMoreEvents() && savedEvents.getSize() < Constants.MAX_EVENTS_SIZE){
Event eActual = getArbitraryEvent();
-
- List<String> portletNames = (eActual.getQName() != null) ? portalEvts.get(eActual.getQName().toString()) : null;
+
+ this.savedEvents.setProcessed(eActual);
+
+ List<String> portletNames = getAllPortletsRegisteredForEvent(eActual,driverConfig);
- Collection<PortletWindowConfig> portlets = getAllPortletsInPortal(driverConfig);
+ Collection<PortletWindowConfig> portlets = getAllPortlets();
// iterate all portlets in the portal
for (PortletWindowConfig config : portlets) {
@@ -290,25 +155,105 @@
if (portletNames != null) {
for (String portlet : portletNames) {
if (portlet.equals(config.getId())){
-
+
+ // the thread now is a new one, with possible waiting,
+ // for the old to exit
PortletWindowThread portletWindowThread =
getPortletWindowThread(eventContainer, config, window);
// is this event
portletWindowThread.addEvent(eActual);
-
+
portletWindowThread.start();
}
}
}
}
-
- this.savedEvents.setProcessed(eActual);
-
+ waitForEventExecution();
+ try {
+ Thread.sleep(WAITING_CYCLE);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
waitForEventExecution();
}
+ private List<String> getAllPortletsRegisteredForEvent(Event event, DriverConfiguration driverConfig) {
+ Set<String> resultSet = new HashSet<String>();
+ List<String> resultList = new ArrayList<String>();
+ QName eventName = event.getQName();
+ Collection<PortletWindowConfig> portlets = getAllPortlets();
+
+ for (PortletWindowConfig portlet : portlets) {
+ String contextPath = portlet.getContextPath();
+ PortletAppDD portletAppDD = null;
+ try {
+ portletAppDD = container.getPortletApplicationDescriptor(contextPath);
+ List<PortletDD> portletDDs = portletAppDD.getPortlets();
+ List<QName> aliases = getAllAliases(eventName, portletAppDD);
+ for (PortletDD portletDD : portletDDs) {
+ List<QName> processingEvents = portletDD.getProcessingEvents();
+ if ((processingEvents != null) && processingEvents.contains(eventName)){
+ if (portletDD.getPortletName().equals(portlet.getPortletName()) ){
+ resultSet.add(portlet.getId());
+ }
+ } else {
+
+ if (processingEvents!= null) {
+ for (QName name : processingEvents) {
+ // add also grouped portlets, that ends with "."
+ if (name.toString().endsWith(".") && eventName.toString().startsWith(name.toString())
+ && portletDD.getPortletName().equals(portlet.getPortletName())){
+ resultSet.add(portlet.getId());
+ }
+ // also look for alias names:
+ if (aliases != null) {
+ for (QName alias : aliases) {
+ if (alias.toString().equals(name.toString()) &&
+ portletDD.getPortletName().equals(portlet.getPortletName())) {
+ resultSet.add(portlet.getId());
+ }
+ }
+ }
+ // also look for default namespaced events
+ if (name.getNamespaceURI() == null || name.getNamespaceURI().equals("")){
+ String defaultNamespace = getDefaultEventNamespace(portlet.getPortletName());
+ QName qname = new QName(defaultNamespace,name.getLocalPart());
+ if (eventName.toString().equals(qname.toString()) &&
+ portletDD.getPortletName().equals(portlet.getPortletName())){
+ resultSet.add(portlet.getId());
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (PortletContainerException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ //make list
+ for (String name : resultSet) {
+ resultList.add(name);
+ }
+ return resultList;
+ }
+
+ private List<QName> getAllAliases(QName eventName, PortletAppDD portletAppDD) {
+ if (portletAppDD.getEvents() != null) {
+ for (EventDefinitionDD eventDefinition : portletAppDD.getEvents()) {
+ if (eventName.toString().equals(eventDefinition.getName().toString())){
+ return eventDefinition.getAlias();
+ }
+ }
+ }
+ return null;
+ }
+
/**
* gets the right PortletWindowThread or makes a new one,
* if theres none
@@ -318,11 +263,30 @@
* @return
*/
private PortletWindowThread getPortletWindowThread(EventContainer eventContainer, PortletWindowConfig config, PortletWindow window) {
- PortletWindowThread portletWindowThread = portletWindowThreads.get(window);
+ String windowID = window.getId().getStringId();
+ PortletWindowThread portletWindowThread = portletWindowThreads.get(windowID);
if (portletWindowThread == null){
portletWindowThread = new PortletWindowThread(
threadGroup,config.getId(),this, window, eventContainer);
- portletWindowThreads.put(window, portletWindowThread);
+ portletWindowThreads.put(windowID, portletWindowThread);
+ } else {
+ // a thread could be started twice, so we make a new one,
+ // after the old thread stopped
+// try {
+ try {
+ portletWindowThread.join();
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ portletWindowThreads.remove(portletWindowThread);
+ portletWindowThread = new PortletWindowThread(
+ threadGroup,config.getId(),this, window, eventContainer);
+ portletWindowThreads.put(windowID, portletWindowThread);
+// } catch (InterruptedException e) {
+// // TODO Auto-generated catch block
+// e.printStackTrace();
+// }
}
return portletWindowThread;
}
@@ -347,24 +311,6 @@
}
/**
- * Gets all portlets in portal.
- *
- * @param driverConfig the driver config
- *
- * @return the all portlets in portal
- */
- private Collection<PortletWindowConfig> getAllPortletsInPortal(DriverConfiguration driverConfig) {
- Collection<PortletWindowConfig> allPortlets = new ArrayList<PortletWindowConfig>();
- Iterator<PortletApplicationConfig> portletApps = driverConfig.getPortletApplications().iterator();
- while (portletApps.hasNext()){
- PortletApplicationConfig portletApp = portletApps.next();
- Collection<PortletWindowConfig> portlets = portletApp.getPortlets();
- allPortlets.addAll(portlets);
- }
- return allPortlets;
- }
-
- /**
* gets an arbitrary event, which is not processed yet.
* @return the arbitrary event
*/
@@ -382,7 +328,38 @@
* @see org.apache.pluto.spi.EventProvider#getEventDefinition(javax.xml.namespace.QName)
*/
public EventDefinitionDD getEventDefinition(QName qname) {
- return portalEvtsDefs.get(qname.toString());
+ Collection<PortletWindowConfig> portlets = getAllPortlets();
+ for (PortletWindowConfig portlet : portlets) {
+ String contextPath = portlet.getContextPath();
+ PortletAppDD portletAppDD = null;
+ try {
+ portletAppDD = container.getPortletApplicationDescriptor(contextPath);
+ for (EventDefinitionDD def : portletAppDD.getEvents()) {
+ if (def.getName().equals(qname)){
+ return def;
+ }
+ }
+ } catch (PortletContainerException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ /**
+ *
+ */
+ private Collection<PortletWindowConfig> getAllPortlets() {
+ ServletContext servletContext = container.getServletContext();
+ DriverConfiguration driverConfig = (DriverConfiguration) servletContext.getAttribute(
+ AttributeKeys.DRIVER_CONFIG);
+ Collection<PortletApplicationConfig> apps = driverConfig.getPortletApplications();
+ Collection<PortletWindowConfig> portlets = new ArrayList<PortletWindowConfig>();
+ for (PortletApplicationConfig app : apps) {
+ portlets.addAll(app.getPortlets());
+ }
+ return portlets;
}
/**
@@ -398,13 +375,6 @@
public HttpServletResponse getResponse() {
return response;
}
-
- /* (non-Javadoc)
- * @see org.apache.pluto.spi.EventProvider#getEvent(java.lang.String, int)
- */
- public Event getEvent(String eventName, int eventNumber) {
- return savedEvents.getEvent(eventName, eventNumber);
- }
/**
* Gets the saved events.
@@ -415,9 +385,22 @@
return savedEvents;
}
-
- public void registerEventDefinitionDD(EventDefinitionDD eventDefinitionDD) {
- // add EventDefinition
- portalEvtsDefs.put(eventDefinitionDD.getName().toString(), eventDefinitionDD);
+ public String getDefaultEventNamespace(String portletName) {
+ Collection<PortletWindowConfig> portlets = getAllPortlets();
+ for (PortletWindowConfig portlet : portlets) {
+ if (portlet.getPortletName().equals(portletName)){
+ String contextPath = portlet.getContextPath();
+ PortletAppDD portletAppDD = null;
+ try {
+ portletAppDD = container.getPortletApplicationDescriptor(contextPath);
+ return portletAppDD.getDefaultNamespace();
+
+ } catch (PortletContainerException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ return null;
}
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortalCallbackServiceImpl.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortalCallbackServiceImpl.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortalCallbackServiceImpl.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortalCallbackServiceImpl.java Sun Aug 5 02:46:08 2007
@@ -23,6 +23,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.apache.pluto.PortletContainer;
import org.apache.pluto.PortletWindow;
import org.apache.pluto.driver.AttributeKeys;
import org.apache.pluto.driver.core.ResourceURLProviderImpl;
@@ -97,8 +98,9 @@
}
public EventProvider getEventProvider(
- HttpServletRequest request,HttpServletResponse response) {
- return EventProviderImpl.getEventProviderImpl(request,response);
+ HttpServletRequest request,HttpServletResponse response,
+ PortletContainer container) {
+ return EventProviderImpl.getEventProviderImpl(request,response, container);
}
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver-impl/src/main/java/org/apache/pluto/driver/services/container/PortletWindowThread.java Sun Aug 5 02:46:08 2007
@@ -64,16 +64,10 @@
HttpServletRequest req = new PortalServletRequest(eventProvider.getRequest(), this.portletWindow);
HttpServletResponse res = eventProvider.getResponse();
try {
- synchronized (this) {
- eventContainer.fireEvent(req, res, portletWindow, events.get(0));
- //wait();
- Thread.sleep(1);
- events.remove(0);
- }
- } catch (InterruptedException e){
- System.out.println();
- System.out.println("============interupted exception===============");
- e.printStackTrace();
+// synchronized (this) {
+ Event event = events.remove(0);
+ eventContainer.fireEvent(req, res, portletWindow, event);
+// }
} catch (PortletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Modified: portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java
URL: http://svn.apache.org/viewvc/portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java?view=diff&rev=562844&r1=562843&r2=562844
==============================================================================
--- portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java (original)
+++ portals/pluto/branches/1.1-286-COMPATIBILITY/pluto-portal-driver/src/main/java/org/apache/pluto/driver/PortalDriverServlet.java Sun Aug 5 02:46:08 2007
@@ -236,9 +236,9 @@
getServletContext(),window);
PortletDD portletDD = win.getPortletEntity().getPortletDefinition();
- registerEvents(window, portletDD, portletAppDD);
+// registerEvents(window, portletDD, portletAppDD);
- registerEventDefinitions(portletAppDD);
+// registerEventDefinitions(portletAppDD);
registerPublicRenderParams(window, portletDD,portletAppDD);
}
@@ -278,57 +278,57 @@
* @param window The PortletWindow to store the event
* @param portletDD The PortletDD, where the event is declared
*/
- private void registerEvents(PortletWindow window, PortletDD portletDD,
- PortletAppDD portletAppDD) {
- EventProvider eventProvider = container.getRequiredContainerServices()
- .getPortalCallbackService().getEventProvider();
- List<QName> events = portletDD.getProcessingEvents();
- if (events != null) {
- for (QName event : events) {
- EventDefinitionDD eventDD = getEvent(event, portletAppDD);
- if (eventDD != null) {
-
- // register event only if it is declared as "processing-event"
- List<QName> processingEvents = portletDD.getProcessingEvents();
- for (QName name : processingEvents) {
- if (name.toString().equals(eventDD.getName().toString())) {
- eventProvider.registerEvent(event.toString(),window.getId().getStringId(), eventDD);
- if (LOG.isDebugEnabled()){
- LOG.debug(event+" registered successfully!");
- }
- }
- }
- }
- }
- }
- }
+// private void registerEvents(PortletWindow window, PortletDD portletDD,
+// PortletAppDD portletAppDD) {
+// EventProvider eventProvider = container.getRequiredContainerServices()
+// .getPortalCallbackService().getEventProvider();
+// List<QName> events = portletDD.getProcessingEvents();
+// if (events != null) {
+// for (QName event : events) {
+// EventDefinitionDD eventDD = getEvent(event, portletAppDD);
+// if (eventDD != null) {
+//
+// // register event only if it is declared as "processing-event"
+// List<QName> processingEvents = portletDD.getProcessingEvents();
+// for (QName name : processingEvents) {
+// if (name.toString().equals(eventDD.getName().toString())) {
+// eventProvider.registerEvent(event.toString(),window.getId().getStringId(), eventDD);
+// if (LOG.isDebugEnabled()){
+// LOG.debug(event+" registered successfully!");
+// }
+// }
+// }
+// }
+// }
+// }
+// }
/**
* Register event definitions.
*
* @param portletAppDD the portlet app DD
*/
- private void registerEventDefinitions(PortletAppDD portletAppDD) {
- EventProvider eventProvider = container.getRequiredContainerServices()
- .getPortalCallbackService().getEventProvider();
- List<EventDefinitionDD> defs = portletAppDD.getEvents();
- if (defs != null){
- for (EventDefinitionDD definitionDD : defs) {
- eventProvider.registerEventDefinitionDD(definitionDD);
- }
- }
- }
-
-
- private EventDefinitionDD getEvent(QName event, PortletAppDD portletAppDD) {
- List<EventDefinitionDD> events = portletAppDD.getEvents();
- for (EventDefinitionDD definitionDD : events) {
- if (definitionDD.getName().equals(event))
- return definitionDD;
- }
- // return null, if not found
- return null;
- }
+// private void registerEventDefinitions(PortletAppDD portletAppDD) {
+// EventProvider eventProvider = container.getRequiredContainerServices()
+// .getPortalCallbackService().getEventProvider();
+// List<EventDefinitionDD> defs = portletAppDD.getEvents();
+// if (defs != null){
+// for (EventDefinitionDD definitionDD : defs) {
+// eventProvider.registerEventDefinitionDD(definitionDD);
+// }
+// }
+// }
+//
+//
+// private EventDefinitionDD getEvent(QName event, PortletAppDD portletAppDD) {
+// List<EventDefinitionDD> events = portletAppDD.getEvents();
+// for (EventDefinitionDD definitionDD : events) {
+// if (definitionDD.getName().equals(event))
+// return definitionDD;
+// }
+// // return null, if not found
+// return null;
+// }
/**
* Returns the portal driver configuration object.