<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 4.0.0//EN" "http://www.liferay.com/dtd/liferay-display_4_0_0.dtd">
<display>
- <category name="Vaadin">
- <portlet id="PortletDemoPortlet" />
- <portlet id="SelectDemoPortlet" />
- <portlet id="TableDemoPortlet" />
- <portlet id="FilterSelectPortlet" />
- <portlet id="FeatureBrowserPortlet" />
- <portlet id="ModalWindowPortlet" />
- <portlet id="CalcPortlet" />
- <portlet id="NotificationDemoPortlet" />
- <portlet id="ChatServletPortlet" />
- <portlet id="BrowserDemoPortlet" />
- <portlet id="HelloWorldPortlet" />
- <portlet id="AddressBookPortlet" />
- <portlet id="CalcPortlet"/>
- <portlet id="SamplerPortlet"/>
- <!--
- <portlet id="InterPortletEventPortlet" />
- <portlet id="VaadinInterPortletEventPortlet" />
- -->
- <portlet id="Portlet Mode Example"/>
- <portlet id="Portlet HTML Mode Example"/>
- </category>
+ <category name="Vaadin">
+ <portlet id="PortletDemoPortlet" />
+ <portlet id="CalcPortlet" />
+ <portlet id="SamplerPortlet" />
+ <portlet id="Portlet Mode Example" />
+ <portlet id="Portlet HTML Mode Example" />
+ <portlet id="AddressBookPortlet" />
+
+ <!-- These should be used together -->
+ <portlet id="InterPortletEventPortlet" />
+ <portlet id="VaadinInterPortletEventPortlet" />
+ </category>
</display>
\ No newline at end of file
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 4.3.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_4_3_0.dtd">
<liferay-portlet-app>
- <portlet>
- <portlet-name>PortletDemoPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>SelectDemoPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>TableDemoPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>FilterSelectPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>FeatureBrowserPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>ModalWindowPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>CalcPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>NotificationDemoPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>ChatServletPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>BrowserDemoPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>HelloWorldPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>AddressBookPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>CalcPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>SamplerPortlet</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>Portlet Mode Example</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
- <portlet>
- <portlet-name>Portlet HTML Mode Example</portlet-name>
- <instanceable>true</instanceable>
- <ajaxable>false</ajaxable>
- </portlet>
-
- <role-mapper>
- <role-name>administrator</role-name>
- <role-link>Administrator</role-link>
- </role-mapper>
- <role-mapper>
- <role-name>guest</role-name>
- <role-link>Guest</role-link>
- </role-mapper>
- <role-mapper>
- <role-name>power-user</role-name>
- <role-link>Power User</role-link>
- </role-mapper>
- <role-mapper>
- <role-name>user</role-name>
- <role-link>User</role-link>
- </role-mapper>
-
+ <portlet>
+ <portlet-name>PortletDemoPortlet</portlet-name>
+ <instanceable>true</instanceable>
+ <ajaxable>false</ajaxable>
+ </portlet>
+ <portlet>
+ <portlet-name>CalcPortlet</portlet-name>
+ <instanceable>true</instanceable>
+ <ajaxable>false</ajaxable>
+ </portlet>
+ <portlet>
+ <portlet-name>SamplerPortlet</portlet-name>
+ <instanceable>true</instanceable>
+ <ajaxable>false</ajaxable>
+ </portlet>
+ <portlet>
+ <portlet-name>Portlet Mode Example</portlet-name>
+ <instanceable>true</instanceable>
+ <ajaxable>false</ajaxable>
+ </portlet>
+ <portlet>
+ <portlet-name>Portlet HTML Mode Example</portlet-name>
+ <instanceable>true</instanceable>
+ <ajaxable>false</ajaxable>
+ </portlet>
+ <portlet>
+ <portlet-name>AddressBookPortlet</portlet-name>
+ <instanceable>true</instanceable>
+ <ajaxable>false</ajaxable>
+ </portlet>
+
+ <role-mapper>
+ <role-name>administrator</role-name>
+ <role-link>Administrator</role-link>
+ </role-mapper>
+ <role-mapper>
+ <role-name>guest</role-name>
+ <role-link>Guest</role-link>
+ </role-mapper>
+ <role-mapper>
+ <role-name>power-user</role-name>
+ <role-link>Power User</role-link>
+ </role-mapper>
+ <role-mapper>
+ <role-name>user</role-name>
+ <role-link>User</role-link>
+ </role-mapper>
+
</liferay-portlet-app>
\ No newline at end of file
<name>application</name>
<value>PortletDemo</value>
</init-param>
-
<init-param>
<name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<role-name>user</role-name>
</security-role-ref>
</portlet>
+
<portlet>
- <portlet-name>FeatureBrowserPortlet</portlet-name>
- <display-name>Vaadin FeatureBrowser</display-name>
+ <portlet-name>CalcPortlet</portlet-name>
+ <display-name>Calc</display-name>
<portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
<init-param>
<name>application</name>
- <value>com.vaadin.tests.featurebrowser.FeaturesApplication</value>
- </init-param>
- <init-param>
- <name>style</name>
- <value>height:650px</value>
+ <value>com.vaadin.demo.Calc</value>
</init-param>
<init-param>
<name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
- <portlet-mode>edit</portlet-mode>
- <portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
- <title>FeatureBrowser</title>
- <short-title>FeatureBrowser</short-title>
+ <title>Calc</title>
+ <short-title>Calc</short-title>
</portlet-info>
<security-role-ref>
</portlet>
<portlet>
- <portlet-name>HelloWorldPortlet</portlet-name>
- <display-name>Hello World</display-name>
+ <portlet-name>SamplerPortlet</portlet-name>
+ <display-name>Sampler</display-name>
<portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
<init-param>
<name>application</name>
- <value>com.vaadin.demo.HelloWorld</value>
+ <value>com.vaadin.demo.sampler.SamplerApplication</value>
+ </init-param>
+ <init-param>
+ <name>widgetset</name>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
+ </init-param>
+ <init-param>
+ <name>style</name>
+ <value>height:650px</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
</supports>
<portlet-info>
- <title>HelloWorld</title>
- <short-title>HelloWorld</short-title>
+ <title>Sampler</title>
+ <short-title>Sampler</short-title>
</portlet-info>
+
+ <security-role-ref>
+ <role-name>administrator</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>guest</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>power-user</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>user</role-name>
+ </security-role-ref>
</portlet>
- <!--
- <portlet> <portlet-name>VaadinInterPortletEventPortlet</portlet-name>
- <display-name>Hello World Event</display-name>
- <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
- <init-param> <name>application</name>
- <value>com.vaadin.demo.portlet.VaadinInterPortletEventPortlet</value>
- </init-param> <init-param> <name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
- </init-param> <supports> <mime-type>text/html</mime-type>
- <portlet-mode>view</portlet-mode> </supports> <portlet-info>
- <title>Inter-portlet events</title> <short-title>Inter-portlet
- events</short-title> </portlet-info> <supported-processing-event>
- <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Hello</qname>
- </supported-processing-event> <supported-processing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:ReplyToVaadin</qname>
- </supported-processing-event> <supported-publishing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Reply</qname>
- </supported-publishing-event> <supported-publishing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:FromVaadin</qname>
- </supported-publishing-event>
- <supported-public-render-parameter>HelloState</supported-public-render-parameter>
- </portlet> <portlet>
- <portlet-name>InterPortletEventPortlet</portlet-name>
- <display-name>Hello World Event (non-Vaadin)</display-name>
- <portlet-class>com.vaadin.demo.portlet.InterPortletEventPortlet</portlet-class>
- <supports> <mime-type>text/html</mime-type>
- <portlet-mode>view</portlet-mode> </supports> <portlet-info>
- <title>Inter-portlet events (non-Vaadin)</title>
- <short-title>Inter-portlet events (non-Vaadin)</short-title>
- </portlet-info> <supported-processing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Reply</qname>
- </supported-processing-event> <supported-processing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:FromVaadin</qname>
- </supported-processing-event> <supported-publishing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Hello</qname>
- </supported-publishing-event> <supported-publishing-event> <qname
- xmlns:vaadin="http://www.vaadin.com/hello">vaadin:ReplyToVaadin</qname>
- </supported-publishing-event>
- <supported-public-render-parameter>HelloState</supported-public-render-parameter>
- </portlet>
- -->
<portlet>
<portlet-name>Portlet Mode Example</portlet-name>
<display-name>Portlet Mode Example</display-name>
<portlet-class>com.vaadin.demo.portlet.PortletModePortlet</portlet-class>
- <init-param>
- <name>widgetset</name>
- <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
- </init-param>
<init-param>
<name>application</name>
<value>com.vaadin.demo.portlet.PortletModeExample</value>
</init-param>
+ <init-param>
+ <name>widgetset</name>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
+ </init-param>
<supports>
<mime-type>text/html</mime-type>
<title>PortletModeExample</title>
<short-title>PortletModeExample</short-title>
</portlet-info>
+
+ <security-role-ref>
+ <role-name>administrator</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>guest</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>power-user</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>user</role-name>
+ </security-role-ref>
</portlet>
<portlet>
<portlet-name>Portlet HTML Mode Example</portlet-name>
<display-name>Portlet HTML Mode Example</display-name>
<portlet-class>com.vaadin.demo.portlet.HtmlModePortlet</portlet-class>
+ <init-param>
+ <name>widgetset</name>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
+ </init-param>
<supports>
<mime-type>text/html</mime-type>
<title>Portlet HTML Mode Example</title>
<short-title>Portlet HTML Mode Example</short-title>
</portlet-info>
+
+ <security-role-ref>
+ <role-name>administrator</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>guest</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>power-user</role-name>
+ </security-role-ref>
+ <security-role-ref>
+ <role-name>user</role-name>
+ </security-role-ref>
</portlet>
<portlet>
<name>application</name>
<value>com.vaadin.demo.tutorial.addressbook.AddressBookApplication</value>
</init-param>
- <supports>
- <mime-type>text/html</mime-type>
- <portlet-mode>view</portlet-mode>
- </supports>
- <portlet-info>
- <title>Address Book</title>
- <short-title>Address Book</short-title>
- </portlet-info>
- </portlet>
-
- <portlet>
- <portlet-name>SamplerPortlet</portlet-name>
- <display-name>Sampler</display-name>
- <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
- <init-param>
- <name>application</name>
- <value>com.vaadin.demo.sampler.SamplerApplication</value>
- </init-param>
<init-param>
<name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
- </init-param>
- <supports>
- <mime-type>text/html</mime-type>
- <portlet-mode>view</portlet-mode>
- </supports>
- <portlet-info>
- <title>Sampler</title>
- <short-title>Sampler</short-title>
- </portlet-info>
- </portlet>
-
- <portlet>
- <portlet-name>CalcPortlet</portlet-name>
- <display-name>Calc</display-name>
- <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
- <init-param>
- <name>application</name>
- <value>com.vaadin.demo.Calc</value>
- </init-param>
- <init-param>
- <name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
- </init-param>
- <supports>
- <mime-type>text/html</mime-type>
- <portlet-mode>view</portlet-mode>
- </supports>
- <portlet-info>
- <title>Calc</title>
- <short-title>Calc</short-title>
- </portlet-info>
- </portlet>
- <portlet>
- <portlet-name>ChatServletPortlet</portlet-name>
- <display-name>Vaadin ChatServlet</display-name>
- <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet</portlet-class>
- <init-param>
- <name>application</name>
- <value>chat</value>
- </init-param>
-
- <init-param>
- <name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
- <portlet-mode>edit</portlet-mode>
- <portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
- <title>ChatServlet</title>
- <short-title>ChatServlet</short-title>
+ <title>Address Book</title>
+ <short-title>Address Book</short-title>
</portlet-info>
<security-role-ref>
<role-name>user</role-name>
</security-role-ref>
</portlet>
+
+ <!-- A Vaadin portlet and a non-Vaadin portlet that can communicate with each other -->
<portlet>
- <portlet-name>BrowserDemoPortlet</portlet-name>
- <display-name>Vaadin BrowserDemo</display-name>
- <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet</portlet-class>
+ <portlet-name>VaadinInterPortletEventPortlet</portlet-name>
+ <display-name>Hello World Event</display-name>
+ <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet2</portlet-class>
<init-param>
<name>application</name>
- <value>BrowserDemo</value>
- </init-param>
- <init-param>
- <name>style</name>
- <value>height:650px</value>
+ <value>com.vaadin.demo.portlet.VaadinInterPortletEventPortlet</value>
</init-param>
<init-param>
<name>widgetset</name>
- <value>com.vaadin.demo.sampler.gwt.SamplerWidgetSet</value>
+ <value>com.vaadin.portal.gwt.PortalDefaultWidgetSet</value>
</init-param>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
- <portlet-mode>edit</portlet-mode>
- <portlet-mode>help</portlet-mode>
</supports>
<portlet-info>
- <title>BrowserDemo</title>
- <short-title>BrowserDemo</short-title>
+ <title>Inter-portlet events</title>
+ <short-title>Inter-portlet
+ events</short-title>
</portlet-info>
-
- <security-role-ref>
- <role-name>administrator</role-name>
- </security-role-ref>
- <security-role-ref>
- <role-name>guest</role-name>
- </security-role-ref>
- <security-role-ref>
- <role-name>power-user</role-name>
- </security-role-ref>
- <security-role-ref>
- <role-name>user</role-name>
- </security-role-ref>
+ <supported-processing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:Hello</qname>
+ </supported-processing-event>
+ <supported-processing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:ReplyToVaadin</qname>
+ </supported-processing-event>
+ <supported-publishing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:Reply</qname>
+ </supported-publishing-event>
+ <supported-publishing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:FromVaadin</qname>
+ </supported-publishing-event>
+ <supported-public-render-parameter>HelloState</supported-public-render-parameter>
</portlet>
-
+ <portlet>
+ <portlet-name>InterPortletEventPortlet</portlet-name>
+ <display-name>Hello World Event (non-Vaadin)</display-name>
+ <portlet-class>com.vaadin.demo.portlet.InterPortletEventPortlet</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>view</portlet-mode>
+ </supports>
+ <portlet-info>
+ <title>Inter-portlet events (non-Vaadin)</title>
+ <short-title>Inter-portlet events (non-Vaadin)</short-title>
+ </portlet-info>
+ <supported-processing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:Reply</qname>
+ </supported-processing-event>
+ <supported-processing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:FromVaadin</qname>
+ </supported-processing-event>
+ <supported-publishing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:Hello</qname>
+ </supported-publishing-event>
+ <supported-publishing-event>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:ReplyToVaadin</qname>
+ </supported-publishing-event>
+ <supported-public-render-parameter>HelloState</supported-public-render-parameter>
+ </portlet>
+
<!-- Used by the Portlet mode demo -->
<custom-portlet-mode>
<description>Custom mode</description>
be serializable and have JAXB binding.
-->
<event-definition>
- <qname xmlns:vaadin="http://www.vaadin.com/hello">vaadin:Hello</qname>
+ <qname xmlns:vaadin="http://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>
+ <qname xmlns:vaadin="http://vaadin.com/hello">vaadin:Reply</qname>
<value-type>java.lang.String</value-type>
</event-definition>
<public-render-parameter>
<identifier>HelloState</identifier>
- <qname xmlns:vaadin="http://www.vaadin.com/params">vaadin:HelloState</qname>
+ <qname xmlns:vaadin="http://vaadin.com/params">vaadin:HelloState</qname>
</public-render-parameter>
<!--
This can be used to work around an issue in liferay 5.0-5.1.1
- <container-runtime-option> <name>javax.portlet.escapeXml</name>
- <value>false</value> </container-runtime-option>
+ <container-runtime-option>
+ <name>javax.portlet.escapeXml</name>
+ <value>false</value>
+ </container-runtime-option>
-->
</portlet-app>
\ No newline at end of file
<servlet-mapping>\r
<servlet-name>FeatureBrowser</servlet-name>\r
<url-pattern>/FeatureBrowser/*</url-pattern>\r
- <!-- portlet style=height:650px -->\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
<servlet-name>Sampler</servlet-name>\r
<url-pattern>/sampler/*</url-pattern>\r
- <!-- portlet style=height:650px -->\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
<servlet-mapping>\r
<servlet-name>ModalWindow</servlet-name>\r
<url-pattern>/ModalWindow/*</url-pattern>\r
- <!-- portlet -->\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
<servlet-mapping>\r
<servlet-name>Calc</servlet-name>\r
<url-pattern>/Calc/*</url-pattern>\r
- <!-- portlet -->\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
<servlet-mapping>\r
<servlet-name>ChatServlet</servlet-name>\r
<url-pattern>/chat/*</url-pattern>\r
- <!-- portlet -->\r
</servlet-mapping>\r
\r
<servlet-mapping>\r
<include name="**/*" />
</fileset>
</copy>
- <java classname="com.vaadin.buildhelpers.PortletConfigurationGenerator" failonerror="yes" fork="yes" maxmemory="512m">
- <arg value="${output-dir}/WebContent/WEB-INF" />
- <arg value="com.vaadin.portal.gwt.PortalDefaultWidgetSet" />
- <classpath>
- <pathelement location="build/buildhelpers/" />
- </classpath>
- </java>
</target>
<target name="compile-fileupload">
+++ /dev/null
-/**\r
- * \r
- */\r
-package com.vaadin.buildhelpers;\r
-\r
-import java.io.BufferedReader;\r
-import java.io.File;\r
-import java.io.FileNotFoundException;\r
-import java.io.FileOutputStream;\r
-import java.io.FileReader;\r
-import java.io.IOException;\r
-import java.io.OutputStreamWriter;\r
-import java.nio.charset.Charset;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-/**\r
- * Generates portlet.xml, liferay-portlet.xml, liferay-display.xml from web.xml.\r
- * Currently uses regular expressions to avoid dependencies; does not strictly\r
- * adhere to xml rules, but should work with a 'normal' web.xml.\r
- * \r
- * To be included, the servlet-mapping must include a special comment: <!--\r
- * portlet --> If the portlet requires some special styles (i.e height): <!--\r
- * portlet style=height:400px -->\r
- * \r
- * @author marc\r
- */\r
-public class PortletConfigurationGenerator {\r
- // can be changed for debugging:\r
- private static final String WEB_XML_FILE = "web.xml";\r
- private static final String PORTLET_XML_FILE = "portlet.xml";\r
- private static final String LIFERAY_PORTLET_XML_FILE = "liferay-portlet.xml";\r
- private static final String LIFERAY_DISPLAY_XML_FILE = "liferay-display.xml";\r
- private static final String JBOSS_OBJECT_FILE = "vaadin-object.xml";\r
- private static final String JBOSS_INSTANCE_FILE = "portlet-instances.xml";\r
-\r
- // "templates" follow;\r
- private static final String PORTLET_XML_HEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"\r
- + "<portlet-app\n"\r
- + " xmlns=\"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd\"\n"\r
- + " version=\"1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"\r
- + " 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\">\n";\r
- private static final String PORTLET_XML_SECTION = " <portlet>\n"\r
- + " <portlet-name>%PORTLETNAME%</portlet-name>\n"\r
- + " <display-name>Vaadin %NAME%</display-name>\n"\r
- + " <portlet-class>com.vaadin.terminal.gwt.server.ApplicationPortlet</portlet-class>\n"\r
- + " <init-param>\n"\r
- + " <name>application</name>\n"\r
- + " <value>%URL%</value>\n"\r
- + " </init-param>\n"\r
- + " %EXTRAPARAMS%\n"\r
- + " <supports>\n"\r
- + " <mime-type>text/html</mime-type>\n"\r
- + " <portlet-mode>view</portlet-mode>\n"\r
- + " <portlet-mode>edit</portlet-mode>\n"\r
- + " <portlet-mode>help</portlet-mode>\n"\r
- + " </supports>\n"\r
- + " <portlet-info>\n"\r
- + " <title>%NAME%</title>\n"\r
- + " <short-title>%NAME%</short-title>\n"\r
- + " </portlet-info>\n" + " \n"\r
- + " <security-role-ref>\n"\r
- + " <role-name>administrator</role-name>\n"\r
- + " </security-role-ref>\n"\r
- + " <security-role-ref>\n"\r
- + " <role-name>guest</role-name>\n"\r
- + " </security-role-ref>\n"\r
- + " <security-role-ref>\n"\r
- + " <role-name>power-user</role-name>\n"\r
- + " </security-role-ref>\n"\r
- + " <security-role-ref>\n"\r
- + " <role-name>user</role-name>\n"\r
- + " </security-role-ref>\n" + " </portlet>\n";\r
- private static final String PORTLET_XML_FOOT = "\n" + "</portlet-app>";\r
-\r
- private static final String LIFERAY_PORTLET_XML_HEAD = "<?xml version=\"1.0\"?>\n"\r
- + "<!DOCTYPE liferay-portlet-app PUBLIC \"-//Liferay//DTD Portlet Application 4.3.0//EN\" \"http://www.liferay.com/dtd/liferay-portlet-app_4_3_0.dtd\">\n"\r
- + "\n" + "<liferay-portlet-app>\n" + "";\r
- private static final String LIFERAY_PORTLET_XML_SECTION = " <portlet>\n"\r
- + " <portlet-name>%PORTLETNAME%</portlet-name>\n"\r
- + " <instanceable>true</instanceable> \n"\r
- + " <ajaxable>false</ajaxable>\n"\r
- + " </portlet>\n" + "";\r
- private static final String LIFERAY_PORTLET_XML_FOOT = " \n"\r
- + " <role-mapper>\n"\r
- + " <role-name>administrator</role-name>\n"\r
- + " <role-link>Administrator</role-link>\n"\r
- + " </role-mapper>\n" + " <role-mapper>\n"\r
- + " <role-name>guest</role-name>\n"\r
- + " <role-link>Guest</role-link>\n"\r
- + " </role-mapper>\n" + " <role-mapper>\n"\r
- + " <role-name>power-user</role-name>\n"\r
- + " <role-link>Power User</role-link>\n"\r
- + " </role-mapper>\n" + " <role-mapper>\n"\r
- + " <role-name>user</role-name>\n"\r
- + " <role-link>User</role-link>\n"\r
- + " </role-mapper>\n" + " \n"\r
- + "</liferay-portlet-app>";\r
- private static final String LIFERAY_DISPLAY_XML_HEAD = "<?xml version=\"1.0\"?>\n"\r
- + "<!DOCTYPE display PUBLIC \"-//Liferay//DTD Display 4.0.0//EN\" \"http://www.liferay.com/dtd/liferay-display_4_0_0.dtd\">\n"\r
- + "\n"\r
- + "<display>\n"\r
- + " <category name=\"Vaadin\">\n" + "";\r
- private static final String LIFERAY_DISPLAY_XML_SECTION = " <portlet id=\"%PORTLETNAME%\" />\n";\r
- private static final String LIFERAY_DISPLAY_XML_FOOT = "\n"\r
- + " </category>\n" + "</display>";\r
-\r
- private static final String JBOSS_INSTANCE_HEAD = "<?xml version=\"1.0\" standalone=\"yes\"?>\r\n"\r
- + "<!DOCTYPE deployments PUBLIC\r\n"\r
- + " \"-//JBoss Portal//DTD Portlet Instances 2.6//EN\"\r\n"\r
- + " \"http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd\">\r\n"\r
- + "<deployments>\r\n";\r
- private static final String JBOSS_INSTANCE_SECTION = " <deployment>\r\n <instance>\r\n"\r
- + " <instance-id>%PORTLETNAME%Instance</instance-id>\r\n"\r
- + " <portlet-ref>%PORTLETNAME%</portlet-ref>\r\n"\r
- + " </instance>\r\n </deployment>\r\n";\r
- private static final String JBOSS_INSTANCE_FOOT = "</deployments>";\r
- private static final String JBOSS_OBJECT_HEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"\r
- + "<!DOCTYPE deployments PUBLIC\r\n"\r
- + " \"-//JBoss Portal//DTD Portal Object 2.6//EN\"\r\n"\r
- + " \"http://www.jboss.org/portal/dtd/portal-object_2_6.dtd\">\r\n"\r
- + "<deployments>\r\n";\r
- private static final String JBOSS_OBJECT_SECTION = " <deployment>\r\n"\r
- + " <parent-ref>default.default</parent-ref>\r\n"\r
- + " <if-exists>overwrite</if-exists>"\r
- + " <window>\r\n"\r
- + " <window-name>%PORTLETNAME%Window</window-name>\r\n"\r
- + " <content>\r\n"\r
- + " <content-type>portlet</content-type>\r\n"\r
- + " <content-uri>%PORTLETNAME%Instance</content-uri>\r\n"\r
- + " </content>\r\n"\r
- + " <region>center</region>\r\n"\r
- + " <height>1</height>\r\n"\r
- + " </window>\r\n </deployment>\r\n";\r
- private static final String JBOSS_OBJECT_FOOT = "</deployments>";\r
-\r
- /**\r
- * @param args\r
- * <path to directory with web.xml> [default widgetset to use]\r
- */\r
- public static void main(String[] args) {\r
- if (args.length < 1 || !new File(args[0]).isDirectory()) {\r
- System.err\r
- .println("Usage: PortletConfigurationGenerator <directory> [widgetset]");\r
- return;\r
- }\r
-\r
- String widgetset = "";\r
- if (args.length > 1) {\r
- widgetset = args[1];\r
- }\r
-\r
- /*\r
- * Read web.xml\r
- */\r
- File dir = new File(args[0]);\r
- File webxmlFile = new File(dir.getAbsolutePath() + File.separatorChar\r
- + WEB_XML_FILE);\r
- String webXml = "";\r
- BufferedReader in = null;\r
- try {\r
- in = new BufferedReader(new FileReader(webxmlFile));\r
- String line = in.readLine();\r
- while (line != null) {\r
- webXml += line;\r
- line = in.readLine();\r
- }\r
- } catch (FileNotFoundException e1) {\r
- System.out.println(webxmlFile + " not found!");\r
- return;\r
- } catch (IOException e2) {\r
- System.out.println("IOException while reading " + webxmlFile);\r
- webXml = null;\r
- }\r
- try {\r
- if (in != null) {\r
- in.close();\r
- }\r
- } catch (IOException e1) {\r
- System.out.println("IOException while closing " + webxmlFile);\r
- }\r
- if (webXml == null) {\r
- System.out.println("Could not read web.xml!");\r
- return;\r
- }\r
-\r
- /*\r
- * Open outputs\r
- */\r
-\r
- // Open portlet.xml\r
- File portletXmlFile = new File(args[0] + File.separatorChar\r
- + PORTLET_XML_FILE);\r
- OutputStreamWriter pout = null;\r
- try {\r
- pout = new OutputStreamWriter(new FileOutputStream(portletXmlFile),\r
- Charset.forName("UTF-8"));\r
- } catch (FileNotFoundException e) {\r
- System.out.println(portletXmlFile + " not found!");\r
- }\r
- // open liferay-portlet.xml\r
- File liferayPortletXmlFile = new File(args[0] + File.separatorChar\r
- + LIFERAY_PORTLET_XML_FILE);\r
- OutputStreamWriter lpout = null;\r
- try {\r
- lpout = new OutputStreamWriter(new FileOutputStream(\r
- liferayPortletXmlFile), Charset.forName("UTF-8"));\r
- } catch (FileNotFoundException e) {\r
- System.out.println(liferayPortletXmlFile + " not found!");\r
- }\r
- // open liferay-display.xml\r
- File liferayDisplayXmlFile = new File(args[0] + File.separatorChar\r
- + LIFERAY_DISPLAY_XML_FILE);\r
- OutputStreamWriter ldout = null;\r
- try {\r
- ldout = new OutputStreamWriter(new FileOutputStream(\r
- liferayDisplayXmlFile), Charset.forName("UTF-8"));\r
- } catch (FileNotFoundException e) {\r
- System.out.println(liferayDisplayXmlFile + " not found!");\r
- }\r
- // open jboss object.xml\r
- File jbossObjectXmlFile = new File(args[0] + File.separatorChar\r
- + JBOSS_OBJECT_FILE);\r
- OutputStreamWriter joout = null;\r
- try {\r
- joout = new OutputStreamWriter(new FileOutputStream(\r
- jbossObjectXmlFile), Charset.forName("UTF-8"));\r
- } catch (FileNotFoundException e) {\r
- System.out.println(jbossObjectXmlFile + " not found!");\r
- }\r
- // open jboss instance.xml\r
- File jbossInstanceXmlFile = new File(args[0] + File.separatorChar\r
- + JBOSS_INSTANCE_FILE);\r
- OutputStreamWriter jiout = null;\r
- try {\r
- jiout = new OutputStreamWriter(new FileOutputStream(\r
- jbossInstanceXmlFile), Charset.forName("UTF-8"));\r
- } catch (FileNotFoundException e) {\r
- System.out.println(jbossInstanceXmlFile + " not found!");\r
- }\r
-\r
- if (pout != null && lpout != null && ldout != null && joout != null\r
- && jiout != null) {\r
-\r
- String pstring = PORTLET_XML_HEAD;\r
- String lpstring = LIFERAY_PORTLET_XML_HEAD;\r
- String ldstring = LIFERAY_DISPLAY_XML_HEAD;\r
- String jostring = JBOSS_OBJECT_HEAD;\r
- String jistring = JBOSS_INSTANCE_HEAD;\r
-\r
- Pattern p1 = Pattern\r
- .compile("<servlet-mapping>.*?<servlet-name>(.*?)<\\/servlet-name>.*?<url-pattern>(.*?)<\\/url-pattern>(.*?)<\\/servlet-mapping>");\r
- Pattern p2 = Pattern\r
- .compile(".*?<!--\\s+portlet\\s?style=([^ ]*)?\\s+-->.*?");\r
- Pattern findWidgetset = Pattern\r
- .compile("<init-param>.*?<param-name>widgetset<\\/param-name>.*?<param-value>(.*?)<\\/param-value>");\r
-\r
- Matcher m = p1.matcher(webXml);\r
- while (m.find()) {\r
- if (m.groupCount() < 3) {\r
- // don't include\r
- continue;\r
- }\r
-\r
- String name = m.group(1);\r
- // remove leading- and trailing whitespace\r
- name = name.replaceAll("^\\s*", "");\r
- name = name.replaceAll("\\s*$", "");\r
-\r
- String comment = m.group(3);\r
- Matcher m2 = p2.matcher(comment);\r
- if (!m2.find()) {\r
- // don't include\r
- continue;\r
- }\r
-\r
- String style = "";\r
- if (m2.groupCount() == 1 && m2.group(1) != null\r
- && !m2.group(1).equals("")) {\r
- style = "<init-param><name>style</name><value>"\r
- + m2.group(1) + "</value></init-param>";\r
- }\r
-\r
- // Find widgetset\r
- Pattern findServlet = Pattern\r
- .compile("<servlet>.*?<servlet-name>" + name\r
- + "<\\/servlet-name>(.*?)<\\/servlet>");\r
- Matcher servletMatcher = findServlet.matcher(webXml);\r
- if (servletMatcher.find()) {\r
- String servletXml = servletMatcher.group(1);\r
- Matcher widgetsetMatcher = findWidgetset\r
- .matcher(servletXml);\r
- if (widgetsetMatcher.find()) {\r
- String definedWidgetSet = widgetsetMatcher.group(1);\r
- if (!definedWidgetSet.equals(widgetset)) {\r
- System.err\r
- .println("WARNING: Widgetset in web.xml ("\r
- + definedWidgetSet\r
- + ") does not match used ("\r
- + widgetset + ")");\r
- }\r
- }\r
- }\r
-\r
- if (widgetset != null && !widgetset.equals("")) {\r
- System.err.println("Using widgetset: " + widgetset);\r
- style += "\n "\r
- + "<init-param><name>widgetset</name><value>"\r
- + widgetset + "</value></init-param>";\r
-\r
- }\r
-\r
- String pname = name + "Portlet";\r
- String url = m.group(2);\r
- // remove leading- and trailing whitespace\r
- url = url.replaceAll("^\\s*", "");\r
- url = url.replaceAll("\\s*$", "");\r
- if (url.startsWith("/")) {\r
- url = url.substring(1);\r
- }\r
- if (url.endsWith("*")) {\r
- url = url.substring(0, url.length() - 1);\r
- }\r
- if (url.endsWith("/")) {\r
- url = url.substring(0, url.length() - 1);\r
- }\r
-\r
- System.out.println("Mapping " + pname + " to " + url);\r
-\r
- String s = PORTLET_XML_SECTION;\r
- s = s.replaceAll("%NAME%", name);\r
- s = s.replaceAll("%PORTLETNAME%", pname);\r
- s = s.replaceAll("%URL%", url);\r
- s = s.replaceAll("%EXTRAPARAMS%", style);\r
-\r
- pstring += s;\r
-\r
- s = LIFERAY_PORTLET_XML_SECTION;\r
- s = s.replaceAll("%NAME%", name);\r
- s = s.replaceAll("%PORTLETNAME%", pname);\r
- s = s.replaceAll("%URL%", url);\r
- lpstring += s;\r
-\r
- s = LIFERAY_DISPLAY_XML_SECTION;\r
- s = s.replaceAll("%NAME%", name);\r
- s = s.replaceAll("%PORTLETNAME%", pname);\r
- s = s.replaceAll("%URL%", url);\r
- ldstring += s;\r
-\r
- s = JBOSS_OBJECT_SECTION;\r
- s = s.replaceAll("%NAME%", name);\r
- s = s.replaceAll("%PORTLETNAME%", pname);\r
- s = s.replaceAll("%URL%", url);\r
- jostring += s;\r
-\r
- s = JBOSS_INSTANCE_SECTION;\r
- s = s.replaceAll("%NAME%", name);\r
- s = s.replaceAll("%PORTLETNAME%", pname);\r
- s = s.replaceAll("%URL%", url);\r
- jistring += s;\r
-\r
- }\r
-\r
- pstring += PORTLET_XML_FOOT;\r
- lpstring += LIFERAY_PORTLET_XML_FOOT;\r
- ldstring += LIFERAY_DISPLAY_XML_FOOT;\r
- jostring += JBOSS_OBJECT_FOOT;\r
- jistring += JBOSS_INSTANCE_FOOT;\r
-\r
- try {\r
- pout.write(pstring);\r
- lpout.write(lpstring);\r
- ldout.write(ldstring);\r
- joout.write(jostring);\r
- jiout.write(jistring);\r
- } catch (IOException e) {\r
- System.out.println("Write FAILED:" + e);\r
- }\r
-\r
- }\r
-\r
- try {\r
- if (pout != null) {\r
- pout.close();\r
- }\r
- if (lpout != null) {\r
- lpout.close();\r
- }\r
- if (ldout != null) {\r
- ldout.close();\r
- }\r
- if (joout != null) {\r
- joout.close();\r
- }\r
- if (jiout != null) {\r
- jiout.close();\r
- }\r
- } catch (IOException e) {\r
- System.out.println("Close FAILED: " + e);\r
- }\r
- System.out.println("Done.");\r
- }\r
-}\r
<servlet-mapping>
<servlet-name>PortletDemo</servlet-name>
<url-pattern>/PortletDemo/*</url-pattern>
- <!-- Hint for the automatic deployment descriptor generator -->
- <!-- portlet style= -->
</servlet-mapping>
<servlet-mapping>
<servlet-name>VaadinApplicationRunner</servlet-name>
<servlet-mapping>
<servlet-name>Sampler</servlet-name>
<url-pattern>/sampler/*</url-pattern>
- <!-- Hint for the automatic deployment descriptor generator -->
- <!-- portlet style=height:650px -->
</servlet-mapping>
<servlet-mapping>
<servlet-name>AddressBook</servlet-name>
<servlet-mapping>
<servlet-name>Calc</servlet-name>
<url-pattern>/Calc/*</url-pattern>
- <!-- Hint for the automatic deployment descriptor generator -->
- <!-- portlet style= -->
</servlet-mapping>
<servlet-mapping>
<servlet-name>ColorPickerApplication</servlet-name>