<?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>
<role-name>user</role-name>
</security-role-ref>
</portlet>
+
<portlet>
<portlet-name>HelloWorldPortlet</portlet-name>
<display-name>Hello World</display-name>
<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>
<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
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;
}
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) {
if (isFileUploadRequest((ActionRequest) request)) {
return RequestType.FILE_UPLOAD;
}
+ } else if (request instanceof EventRequest) {
+ return RequestType.EVENT;
}
return RequestType.UNKNOWN;
}
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
(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
}
}
+ @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 {