]> source.dussan.org Git - vaadin-framework.git/commitdiff
Refactored.
authorMarc Englund <marc.englund@itmill.com>
Thu, 17 Apr 2008 07:38:21 +0000 (07:38 +0000)
committerMarc Englund <marc.englund@itmill.com>
Thu, 17 Apr 2008 07:38:21 +0000 (07:38 +0000)
Created PortletConfigurationGenerator that generates portlet.xml and liferay xml:s from web.xml.

svn changeset:4189/svn branch:trunk

portlet-src/com/itmill/toolkit/demo/PortletDemo.java [deleted file]
portlet-src/com/itmill/toolkit/demo/portlet/PortletDemo.java [new file with mode: 0644]
portlet-src/com/itmill/toolkit/portlet/util/PortletConfigurationGenerator.java [new file with mode: 0644]
portlet-src/com/itmill/toolkit/terminal/gwt/server/ApplicationPortlet.java

diff --git a/portlet-src/com/itmill/toolkit/demo/PortletDemo.java b/portlet-src/com/itmill/toolkit/demo/PortletDemo.java
deleted file mode 100644 (file)
index e408961..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/**\r
- * \r
- */\r
-package com.itmill.toolkit.demo;\r
-\r
-import java.util.Iterator;\r
-import java.util.Map;\r
-\r
-import javax.portlet.ActionRequest;\r
-import javax.portlet.ActionResponse;\r
-import javax.portlet.PortletMode;\r
-import javax.portlet.PortletRequest;\r
-import javax.portlet.PortletURL;\r
-import javax.portlet.RenderRequest;\r
-import javax.portlet.RenderResponse;\r
-import javax.portlet.WindowState;\r
-\r
-import com.itmill.toolkit.Application;\r
-import com.itmill.toolkit.terminal.ExternalResource;\r
-import com.itmill.toolkit.terminal.gwt.server.PortletApplicationContext;\r
-import com.itmill.toolkit.terminal.gwt.server.PortletApplicationContext.PortletListener;\r
-import com.itmill.toolkit.ui.Label;\r
-import com.itmill.toolkit.ui.Link;\r
-import com.itmill.toolkit.ui.TextField;\r
-import com.itmill.toolkit.ui.Window;\r
-import com.itmill.toolkit.ui.Window.Notification;\r
-\r
-/**\r
- * @author marc\r
- * \r
- */\r
-public class PortletDemo extends Application {\r
-\r
-    Window main = new Window();\r
-    TextField tf = new TextField("Some value");\r
-    Label userInfo = new Label();\r
-    Link portletEdit = new Link();\r
-    Link portletMax = new Link();\r
-    Link someAction = null;\r
-\r
-    public void init() {\r
-        main = new Window();\r
-        setMainWindow(main);\r
-\r
-        userInfo.setCaption("User info");\r
-        userInfo.setContentMode(Label.CONTENT_PREFORMATTED);\r
-        main.addComponent(userInfo);\r
-\r
-        tf.setEnabled(false);\r
-        tf.setImmediate(true);\r
-        main.addComponent(tf);\r
-\r
-        portletEdit.setEnabled(false);\r
-        main.addComponent(portletEdit);\r
-        portletMax.setEnabled(false);\r
-        main.addComponent(portletMax);\r
-\r
-        if (getContext() instanceof PortletApplicationContext) {\r
-            PortletApplicationContext ctx = (PortletApplicationContext) getContext();\r
-            ctx.addPortletListener(this, new DemoPortletListener());\r
-        } else {\r
-            getMainWindow().showNotification("Not inited via Portal!",\r
-                    Notification.TYPE_ERROR_MESSAGE);\r
-        }\r
-\r
-    }\r
-\r
-    private class DemoPortletListener implements PortletListener {\r
-\r
-        public void handleActionRequest(ActionRequest request,\r
-                ActionResponse response) {\r
-\r
-            main.addComponent(new Label("Action received"));\r
-\r
-        }\r
-\r
-        public void handleRenderRequest(RenderRequest request,\r
-                RenderResponse response) {\r
-            // Portlet up-and-running, enable stuff\r
-            portletEdit.setEnabled(true);\r
-            portletMax.setEnabled(true);\r
-\r
-            // Editable if we're in editmode\r
-            tf.setEnabled((request.getPortletMode() == PortletMode.EDIT));\r
-\r
-            // Show notification about current mode and state\r
-            getMainWindow().showNotification(\r
-                    "Portlet status",\r
-                    "Mode: " + request.getPortletMode() + " State: "\r
-                            + request.getWindowState(),\r
-                    Notification.TYPE_WARNING_MESSAGE);\r
-\r
-            // Display current user info\r
-            Map uinfo = (Map) request.getAttribute(PortletRequest.USER_INFO);\r
-            if (uinfo != null) {\r
-                String s = "";\r
-                for (Iterator it = uinfo.keySet().iterator(); it.hasNext();) {\r
-                    Object key = it.next();\r
-                    Object val = uinfo.get(key);\r
-                    s += key + ": " + val + "\n";\r
-                }\r
-                if (request.isUserInRole("administrator")) {\r
-                    s += "(administrator)";\r
-                }\r
-                userInfo.setValue(s);\r
-            } else {\r
-                userInfo.setValue("-");\r
-            }\r
-\r
-            // Create Edit/Done link (actionUrl)\r
-            PortletURL url = response.createActionURL();\r
-            try {\r
-                url\r
-                        .setPortletMode((request.getPortletMode() == PortletMode.VIEW ? PortletMode.EDIT\r
-                                : PortletMode.VIEW));\r
-                portletEdit.setResource(new ExternalResource(url.toString()));\r
-                portletEdit\r
-                        .setCaption((request.getPortletMode() == PortletMode.VIEW ? "Edit"\r
-                                : "Done"));\r
-            } catch (Exception e) {\r
-                portletEdit.setEnabled(false);\r
-            }\r
-            // Create Maximize/Normal link (actionUrl)\r
-            url = response.createActionURL();\r
-            try {\r
-                url\r
-                        .setWindowState((request.getWindowState() == WindowState.NORMAL ? WindowState.MAXIMIZED\r
-                                : WindowState.NORMAL));\r
-                portletMax.setResource(new ExternalResource(url.toString()));\r
-                portletMax\r
-                        .setCaption((request.getWindowState() == WindowState.NORMAL ? "Maximize"\r
-                                : "Back to normal"));\r
-            } catch (Exception e) {\r
-                portletMax.setEnabled(false);\r
-            }\r
-\r
-            if (someAction == null) {\r
-                url = response.createActionURL();\r
-                try {\r
-                    someAction = new Link("An action", new ExternalResource(url\r
-                            .toString()));\r
-                    main.addComponent(someAction);\r
-                } catch (Exception e) {\r
-                    // Oops\r
-                    System.err.println("Could not create someAction: " + e);\r
-                }\r
-\r
-            }\r
-\r
-        }\r
-    }\r
-}\r
diff --git a/portlet-src/com/itmill/toolkit/demo/portlet/PortletDemo.java b/portlet-src/com/itmill/toolkit/demo/portlet/PortletDemo.java
new file mode 100644 (file)
index 0000000..8645be2
--- /dev/null
@@ -0,0 +1,152 @@
+/**\r
+ * \r
+ */\r
+package com.itmill.toolkit.demo.portlet;\r
+\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+\r
+import javax.portlet.ActionRequest;\r
+import javax.portlet.ActionResponse;\r
+import javax.portlet.PortletMode;\r
+import javax.portlet.PortletRequest;\r
+import javax.portlet.PortletURL;\r
+import javax.portlet.RenderRequest;\r
+import javax.portlet.RenderResponse;\r
+import javax.portlet.WindowState;\r
+\r
+import com.itmill.toolkit.Application;\r
+import com.itmill.toolkit.terminal.ExternalResource;\r
+import com.itmill.toolkit.terminal.gwt.server.PortletApplicationContext;\r
+import com.itmill.toolkit.terminal.gwt.server.PortletApplicationContext.PortletListener;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.Link;\r
+import com.itmill.toolkit.ui.TextField;\r
+import com.itmill.toolkit.ui.Window;\r
+import com.itmill.toolkit.ui.Window.Notification;\r
+\r
+/**\r
+ * @author marc\r
+ * \r
+ */\r
+public class PortletDemo extends Application {\r
+\r
+    Window main = new Window();\r
+    TextField tf = new TextField("Some value");\r
+    Label userInfo = new Label();\r
+    Link portletEdit = new Link();\r
+    Link portletMax = new Link();\r
+    Link someAction = null;\r
+\r
+    public void init() {\r
+        main = new Window();\r
+        setMainWindow(main);\r
+\r
+        userInfo.setCaption("User info");\r
+        userInfo.setContentMode(Label.CONTENT_PREFORMATTED);\r
+        main.addComponent(userInfo);\r
+\r
+        tf.setEnabled(false);\r
+        tf.setImmediate(true);\r
+        main.addComponent(tf);\r
+\r
+        portletEdit.setEnabled(false);\r
+        main.addComponent(portletEdit);\r
+        portletMax.setEnabled(false);\r
+        main.addComponent(portletMax);\r
+\r
+        if (getContext() instanceof PortletApplicationContext) {\r
+            PortletApplicationContext ctx = (PortletApplicationContext) getContext();\r
+            ctx.addPortletListener(this, new DemoPortletListener());\r
+        } else {\r
+            getMainWindow().showNotification("Not inited via Portal!",\r
+                    Notification.TYPE_ERROR_MESSAGE);\r
+        }\r
+\r
+    }\r
+\r
+    private class DemoPortletListener implements PortletListener {\r
+\r
+        public void handleActionRequest(ActionRequest request,\r
+                ActionResponse response) {\r
+\r
+            main.addComponent(new Label("Action received"));\r
+\r
+        }\r
+\r
+        public void handleRenderRequest(RenderRequest request,\r
+                RenderResponse response) {\r
+            // Portlet up-and-running, enable stuff\r
+            portletEdit.setEnabled(true);\r
+            portletMax.setEnabled(true);\r
+\r
+            // Editable if we're in editmode\r
+            tf.setEnabled((request.getPortletMode() == PortletMode.EDIT));\r
+\r
+            // Show notification about current mode and state\r
+            getMainWindow().showNotification(\r
+                    "Portlet status",\r
+                    "Mode: " + request.getPortletMode() + " State: "\r
+                            + request.getWindowState(),\r
+                    Notification.TYPE_WARNING_MESSAGE);\r
+\r
+            // Display current user info\r
+            Map uinfo = (Map) request.getAttribute(PortletRequest.USER_INFO);\r
+            if (uinfo != null) {\r
+                String s = "";\r
+                for (Iterator it = uinfo.keySet().iterator(); it.hasNext();) {\r
+                    Object key = it.next();\r
+                    Object val = uinfo.get(key);\r
+                    s += key + ": " + val + "\n";\r
+                }\r
+                if (request.isUserInRole("administrator")) {\r
+                    s += "(administrator)";\r
+                }\r
+                userInfo.setValue(s);\r
+            } else {\r
+                userInfo.setValue("-");\r
+            }\r
+\r
+            // Create Edit/Done link (actionUrl)\r
+            PortletURL url = response.createActionURL();\r
+            try {\r
+                url\r
+                        .setPortletMode((request.getPortletMode() == PortletMode.VIEW ? PortletMode.EDIT\r
+                                : PortletMode.VIEW));\r
+                portletEdit.setResource(new ExternalResource(url.toString()));\r
+                portletEdit\r
+                        .setCaption((request.getPortletMode() == PortletMode.VIEW ? "Edit"\r
+                                : "Done"));\r
+            } catch (Exception e) {\r
+                portletEdit.setEnabled(false);\r
+            }\r
+            // Create Maximize/Normal link (actionUrl)\r
+            url = response.createActionURL();\r
+            try {\r
+                url\r
+                        .setWindowState((request.getWindowState() == WindowState.NORMAL ? WindowState.MAXIMIZED\r
+                                : WindowState.NORMAL));\r
+                portletMax.setResource(new ExternalResource(url.toString()));\r
+                portletMax\r
+                        .setCaption((request.getWindowState() == WindowState.NORMAL ? "Maximize"\r
+                                : "Back to normal"));\r
+            } catch (Exception e) {\r
+                portletMax.setEnabled(false);\r
+            }\r
+\r
+            if (someAction == null) {\r
+                url = response.createActionURL();\r
+                try {\r
+                    someAction = new Link("An action", new ExternalResource(url\r
+                            .toString()));\r
+                    main.addComponent(someAction);\r
+                } catch (Exception e) {\r
+                    // Oops\r
+                    System.err.println("Could not create someAction: " + e);\r
+                }\r
+\r
+            }\r
+\r
+        }\r
+    }\r
+}\r
diff --git a/portlet-src/com/itmill/toolkit/portlet/util/PortletConfigurationGenerator.java b/portlet-src/com/itmill/toolkit/portlet/util/PortletConfigurationGenerator.java
new file mode 100644 (file)
index 0000000..175e8bc
--- /dev/null
@@ -0,0 +1,269 @@
+/**\r
+ * \r
+ */\r
+package com.itmill.toolkit.portlet.util;\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
+ * @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
+\r
+    // "templates" follow;\r
+    private static final String PORTLET_XML_HEAD = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"\r
+            + "<portlet-app\r\n"\r
+            + "        xmlns=\"http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd\"\r\n"\r
+            + "        version=\"1.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\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\">\r\n";\r
+    private static final String PORTLET_XML_SECTION = "        <portlet>\r\n"\r
+            + "                <portlet-name>%PORTLETNAME%</portlet-name>\r\n"\r
+            + "                <display-name>IT Mill Toolkit %NAME%</display-name>\r\n"\r
+            + "                <portlet-class>com.itmill.toolkit.terminal.gwt.server.ApplicationPortlet</portlet-class>\r\n"\r
+            + "                <init-param>\r\n"\r
+            + "                        <name>application</name>\r\n"\r
+            + "                        <value>%URL%</value>\r\n"\r
+            + "                </init-param>\r\n"\r
+            + "                <supports>\r\n"\r
+            + "                        <mime-type>text/html</mime-type>\r\n"\r
+            + "                        <portlet-mode>view</portlet-mode>\r\n"\r
+            + "                        <portlet-mode>edit</portlet-mode>\r\n"\r
+            + "                        <portlet-mode>help</portlet-mode>\r\n"\r
+            + "                </supports>\r\n"\r
+            + "                <portlet-info>\r\n"\r
+            + "                        <title>IT Mill Toolkit %NAME%</title>\r\n"\r
+            + "                        <short-title>%NAME%</short-title>\r\n"\r
+            + "                </portlet-info>\r\n"\r
+            + "                \r\n"\r
+            + "                <security-role-ref>\r\n"\r
+            + "                        <role-name>administrator</role-name>\r\n"\r
+            + "                </security-role-ref>\r\n"\r
+            + "                <security-role-ref>\r\n"\r
+            + "                        <role-name>guest</role-name>\r\n"\r
+            + "                </security-role-ref>\r\n"\r
+            + "                <security-role-ref>\r\n"\r
+            + "                        <role-name>power-user</role-name>\r\n"\r
+            + "                </security-role-ref>\r\n"\r
+            + "                <security-role-ref>\r\n"\r
+            + "                        <role-name>user</role-name>\r\n"\r
+            + "                </security-role-ref>\r\n"\r
+            + "        </portlet>\r\n";\r
+    private static final String PORTLET_XML_FOOT = "</portlet-app>";\r
+\r
+    private static final String LIFERAY_PORTLET_XML_HEAD = "<?xml version=\"1.0\"?>\r\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\">\r\n"\r
+            + "\r\n" + "<liferay-portlet-app>\r\n" + "";\r
+    private static final String LIFERAY_PORTLET_XML_SECTION = "        <portlet>\r\n"\r
+            + "                <portlet-name>%PORTLETNAME%</portlet-name>\r\n"\r
+            + "                <instanceable>true</instanceable>       \r\n"\r
+            + "                <ajaxable>false</ajaxable>\r\n"\r
+            + "        </portlet>\r\n" + "";\r
+    private static final String LIFERAY_PORTLET_XML_FOOT = "    \r\n"\r
+            + "        <role-mapper>\r\n"\r
+            + "                <role-name>administrator</role-name>\r\n"\r
+            + "                <role-link>Administrator</role-link>\r\n"\r
+            + "        </role-mapper>\r\n" + "        <role-mapper>\r\n"\r
+            + "                <role-name>guest</role-name>\r\n"\r
+            + "                <role-link>Guest</role-link>\r\n"\r
+            + "        </role-mapper>\r\n" + "        <role-mapper>\r\n"\r
+            + "                <role-name>power-user</role-name>\r\n"\r
+            + "                <role-link>Power User</role-link>\r\n"\r
+            + "        </role-mapper>\r\n" + "        <role-mapper>\r\n"\r
+            + "                <role-name>user</role-name>\r\n"\r
+            + "                <role-link>User</role-link>\r\n"\r
+            + "        </role-mapper>\r\n" + "        \r\n"\r
+            + "</liferay-portlet-app>";\r
+    private static final String LIFERAY_DISPLAY_XML_HEAD = "<?xml version=\"1.0\"?>\r\n"\r
+            + "<!DOCTYPE display PUBLIC \"-//Liferay//DTD Display 4.0.0//EN\" \"http://www.liferay.com/dtd/liferay-display_4_0_0.dtd\">\r\n"\r
+            + "\r\n"\r
+            + "<display>\r\n"\r
+            + "        <category name=\"IT Mill Toolkit\">\r\n" + "";\r
+    private static final String LIFERAY_DISPLAY_XML_SECTION = "                <portlet id=\"%PORTLETNAME%\" />\r\n";\r
+    private static final String LIFERAY_DISPLAY_XML_FOOT = "\r\n"\r
+            + "        </category>\r\n" + "</display>";\r
+\r
+    /**\r
+     * @param args\r
+     *                <path to directory with web.xml>\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>");\r
+            return;\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
+\r
+        if (pout != null && lpout != null && ldout != null) {\r
+\r
+            String pstring = PORTLET_XML_HEAD;\r
+            String lpstring = LIFERAY_PORTLET_XML_HEAD;\r
+            String ldstring = LIFERAY_DISPLAY_XML_HEAD;\r
+\r
+            Pattern p = Pattern\r
+                    .compile(\r
+                            "<servlet-mapping>.*?<servlet-name>(.*?)<\\/servlet-name>.*?<url-pattern>(.*?)<\\/url-pattern>.*?<\\/servlet-mapping>",\r
+                            Pattern.MULTILINE);\r
+            Matcher m = p.matcher(webXml);\r
+            while (m.find()) {\r
+                if (m.groupCount() != 2) {\r
+                    System.out\r
+                            .println("Could not find servlet-name and url-pattern for: "\r
+                                    + m.group());\r
+                    continue;\r
+                }\r
+                String name = m.group(1);\r
+                // remove leading- and trailing whitespace\r
+                name = name.replaceAll("^\\s*", "");\r
+                name = name.replaceAll("\\s*$", "");\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
+                System.out.println("Mapping " + pname + " to " + url);\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
+                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
+            }\r
+\r
+            pstring += PORTLET_XML_FOOT;\r
+            lpstring += LIFERAY_PORTLET_XML_FOOT;\r
+            ldstring += LIFERAY_DISPLAY_XML_FOOT;\r
+\r
+            try {\r
+                pout.write(pstring);\r
+                lpout.write(lpstring);\r
+                ldout.write(ldstring);\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
+        } catch (IOException e) {\r
+            System.out.println("Close FAILED: " + e);\r
+        }\r
+        System.out.println("Done.");\r
+    }\r
+}\r
index e21a1b01f1f48d535f21286616bab16b2336d1c5..eebc38330b702e209f4e4e90e643a4f4c036f896 100644 (file)
@@ -17,7 +17,7 @@ import com.itmill.toolkit.Application;
 \r
 public class ApplicationPortlet implements Portlet {\r
     // The application to show\r
-    protected String app = "Calc";\r
+    protected String app = null;\r
     // some applications might require that the height is specified\r
     protected String height = null; // e.g "200px"\r
 \r