]> source.dussan.org Git - vaadin-framework.git/commitdiff
Basic JBossPortal support: WAR deploys on JBossPortal, portlets show up; Fixes #1851
authorMarc Englund <marc.englund@itmill.com>
Fri, 27 Jun 2008 13:34:20 +0000 (13:34 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 27 Jun 2008 13:34:20 +0000 (13:34 +0000)
svn changeset:4963/svn branch:trunk

WebContent/WEB-INF/itmill-object.xml [new file with mode: 0644]
WebContent/WEB-INF/portlet-instances.xml [new file with mode: 0644]
build/buildhelpers/com/itmill/toolkit/buildhelpers/PortletConfigurationGenerator.java
src/com/itmill/toolkit/terminal/gwt/server/ApplicationPortlet.java

diff --git a/WebContent/WEB-INF/itmill-object.xml b/WebContent/WEB-INF/itmill-object.xml
new file mode 100644 (file)
index 0000000..2c70ae2
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!DOCTYPE deployments PUBLIC\r
+   "-//JBoss Portal//DTD Portal Object 2.6//EN"\r
+   "http://www.jboss.org/portal/dtd/portal-object_2_6.dtd">\r
+<deployments>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>PortletDemoPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>PortletDemoPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>SimpleReserverPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>SimpleReserverPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>SelectDemoPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>SelectDemoPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>TableDemoPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>TableDemoPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>FilterSelectPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>FilterSelectPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>FeatureBrowserPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>FeatureBrowserPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>ModalWindowPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>ModalWindowPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>CalcPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>CalcPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>NotificationDemoPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>NotificationDemoPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>ChatServletPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>ChatServletPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+   <deployment>\r
+      <parent-ref>default.default</parent-ref>\r
+      <if-exists>overwrite</if-exists>      <window>\r
+         <window-name>BrowserDemoPortletWindow</window-name>\r
+         <content>\r
+                <content-type>portlet</content-type>\r
+                <content-uri>BrowserDemoPortletInstance</content-uri>\r
+         </content>\r
+         <region>center</region>\r
+         <height>1</height>\r
+      </window>\r
+   </deployment>\r
+</deployments>
\ No newline at end of file
diff --git a/WebContent/WEB-INF/portlet-instances.xml b/WebContent/WEB-INF/portlet-instances.xml
new file mode 100644 (file)
index 0000000..ba4da73
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0" standalone="yes"?>\r
+<!DOCTYPE deployments PUBLIC\r
+   "-//JBoss Portal//DTD Portlet Instances 2.6//EN"\r
+   "http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd">\r
+<deployments>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>PortletDemoPortletInstance</instance-id>\r
+         <portlet-ref>PortletDemoPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>SimpleReserverPortletInstance</instance-id>\r
+         <portlet-ref>SimpleReserverPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>SelectDemoPortletInstance</instance-id>\r
+         <portlet-ref>SelectDemoPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>TableDemoPortletInstance</instance-id>\r
+         <portlet-ref>TableDemoPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>FilterSelectPortletInstance</instance-id>\r
+         <portlet-ref>FilterSelectPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>FeatureBrowserPortletInstance</instance-id>\r
+         <portlet-ref>FeatureBrowserPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>ModalWindowPortletInstance</instance-id>\r
+         <portlet-ref>ModalWindowPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>CalcPortletInstance</instance-id>\r
+         <portlet-ref>CalcPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>NotificationDemoPortletInstance</instance-id>\r
+         <portlet-ref>NotificationDemoPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>ChatServletPortletInstance</instance-id>\r
+         <portlet-ref>ChatServletPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+   <deployment>\r
+      <instance>\r
+         <instance-id>BrowserDemoPortletInstance</instance-id>\r
+         <portlet-ref>BrowserDemoPortlet</portlet-ref>\r
+      </instance>\r
+   </deployment>\r
+</deployments>
\ No newline at end of file
index 80a6d73031d9b749a149d4b6869925f7c0c9d506..8b026232d30039c94ab055d09328d34f8e7885c2 100644 (file)
@@ -31,6 +31,8 @@ public class PortletConfigurationGenerator {
     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 = "itmill-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
@@ -107,6 +109,35 @@ public class PortletConfigurationGenerator {
     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> [widgetset to use]\r
@@ -193,12 +224,35 @@ public class PortletConfigurationGenerator {
         } 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 insrance.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) {\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
@@ -264,16 +318,32 @@ public class PortletConfigurationGenerator {
                 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
@@ -290,6 +360,12 @@ public class PortletConfigurationGenerator {
             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
index 77cca2ac1b0e418a49a5357bf41280786a35edf2..894eba519b390162f531bee3cf0566ea67b3f981 100644 (file)
@@ -50,6 +50,7 @@ public class ApplicationPortlet implements Portlet {
     protected void writeAjaxWindow(RenderRequest request,\r
             RenderResponse response) throws IOException {\r
 \r
+        response.setContentType("text/html");\r
         if (app != null) {\r
             PortletSession sess = request.getPortletSession();\r
             PortletApplicationContext ctx = PortletApplicationContext\r
@@ -72,7 +73,6 @@ public class ApplicationPortlet implements Portlet {
                 dispatcher.include(request, response);\r
 \r
             } catch (PortletException e) {\r
-                response.setContentType("text/html");\r
                 PrintWriter out = response.getWriter();\r
                 out.print("<h1>Servlet include failed!</h1>");\r
                 out.print("<div>" + e + "</div>");\r