summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebContent/WEB-INF/liferay-display.xml1
-rw-r--r--WebContent/WEB-INF/portlet.xml44
-rw-r--r--src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java34
3 files changed, 70 insertions, 9 deletions
diff --git a/WebContent/WEB-INF/liferay-display.xml b/WebContent/WEB-INF/liferay-display.xml
index 288a4638c1..2981e08fd4 100644
--- a/WebContent/WEB-INF/liferay-display.xml
+++ b/WebContent/WEB-INF/liferay-display.xml
@@ -18,5 +18,6 @@
<portlet id="AddressBookPortlet" />
<portlet id="CalcPortlet"/>
<portlet id="SamplerPortlet"/>
+ <portlet id="HelloWorldEventPortlet"/>
</category>
</display> \ No newline at end of file
diff --git a/WebContent/WEB-INF/portlet.xml b/WebContent/WEB-INF/portlet.xml
index f097509c87..d05e88e8d7 100644
--- a/WebContent/WEB-INF/portlet.xml
+++ b/WebContent/WEB-INF/portlet.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
-<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
- version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd">
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>PortletDemoPortlet</portlet-name>
<display-name>Vaadin PortletDemo</display-name>
@@ -119,6 +119,7 @@
<role-name>user</role-name>
</security-role-ref>
</portlet>
+
<portlet>
<portlet-name>HelloWorldPortlet</portlet-name>
<display-name>Hello World</display-name>
@@ -135,7 +136,34 @@
<title>HelloWorld</title>
<short-title>HelloWorld</short-title>
</portlet-info>
+ <supported-processing-event>
+ <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Hello</qname>
+ </supported-processing-event>
+ <supported-publishing-event>
+ <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Reply</qname>
+ </supported-publishing-event>
</portlet>
+
+ <portlet>
+ <portlet-name>HelloWorldEventPortlet</portlet-name>
+ <display-name>Hello World Event (non-Vaadin)</display-name>
+ <portlet-class>com.vaadin.demo.HelloWorldEventPortlet</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>view</portlet-mode>
+ </supports>
+ <portlet-info>
+ <title>HelloWorldEvent (non-Vaadin)</title>
+ <short-title>HelloWorldEvent (non-Vaadin)</short-title>
+ </portlet-info>
+ <supported-processing-event>
+ <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Reply</qname>
+ </supported-processing-event>
+ <supported-publishing-event>
+ <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Hello</qname>
+ </supported-publishing-event>
+ </portlet>
+
<portlet>
<portlet-name>AddressBookPortlet</portlet-name>
<display-name>Address Book</display-name>
@@ -270,6 +298,16 @@
<role-name>user</role-name>
</security-role-ref>
</portlet>
+
+ <event-definition>
+ <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Hello</qname>
+ <value-type>java.lang.String</value-type>
+ </event-definition>
+
+ <event-definition>
+ <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Reply</qname>
+ <value-type>java.lang.String</value-type>
+ </event-definition>
<!--
This can be used to work around an issue in liferay 5.0-5.1.1
diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java
index 6119c048e0..4dcc38d21d 100644
--- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java
+++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java
@@ -22,6 +22,9 @@ import java.util.Properties;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
+import javax.portlet.EventPortlet;
+import javax.portlet.EventRequest;
+import javax.portlet.EventResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.MimeResponse;
import javax.portlet.PortletConfig;
@@ -255,7 +258,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
}
enum RequestType {
- FILE_UPLOAD, UIDL, RENDER, STATIC_FILE, APPLICATION_RESOURCE, DUMMY, UNKNOWN;
+ FILE_UPLOAD, UIDL, RENDER, STATIC_FILE, APPLICATION_RESOURCE, DUMMY, EVENT, UNKNOWN;
}
protected RequestType getRequestType(PortletRequest request) {
@@ -275,6 +278,8 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
if (isFileUploadRequest((ActionRequest) request)) {
return RequestType.FILE_UPLOAD;
}
+ } else if (request instanceof EventRequest) {
+ return RequestType.EVENT;
}
return RequestType.UNKNOWN;
}
@@ -310,18 +315,18 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
protected void handleRequest(PortletRequest request,
PortletResponse response) throws PortletException, IOException {
- System.out.println("AbstractApplicationPortlet.handleRequest() "
- + System.currentTimeMillis());
+// System.out.println("AbstractApplicationPortlet.handleRequest() "
+// + System.currentTimeMillis());
RequestType requestType = getRequestType(request);
- System.out.println(" RequestType: " + requestType);
- System.out.println(" WindowID: " + request.getWindowID());
+// System.out.println(" RequestType: " + requestType);
+// System.out.println(" WindowID: " + request.getWindowID());
if (requestType == RequestType.UNKNOWN) {
System.err.println("Unknown request type");
} else if (requestType == RequestType.DUMMY) {
- System.out.println("Printing Dummy page");
+// System.out.println("Printing Dummy page");
/*
* This dummy page is used by action responses to redirect to, in
* order to prevent the boot strap code from being rendered into
@@ -400,6 +405,17 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
(ResourceRequest) request,
(ResourceResponse) response, this);
return;
+ } else if (requestType == RequestType.EVENT) {
+ /*
+ * Redirect portlet event to application if it implements
+ * the EventPortlet interface (contains only one method).
+ */
+ // TODO Figure out a better way of handling events
+ if (application instanceof EventPortlet) {
+ ((EventPortlet) application).processEvent(
+ (EventRequest) request,
+ (EventResponse) response);
+ }
} else {
/*
* Removes the application if it has stopped
@@ -468,6 +484,12 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet
}
}
+ @Override
+ public void processEvent(EventRequest request, EventResponse response)
+ throws PortletException, IOException {
+ handleRequest(request, response);
+ }
+
private boolean handleURI(PortletCommunicationManager applicationManager,
Window window, ResourceRequest request, ResourceResponse response)
throws IOException {