Author: woonsan
Date: Fri Apr 10 14:28:56 2009
New Revision: 763944
URL: http://svn.apache.org/viewvc?rev=763944&view=rev
Log:
JS2-961: Initially, modifies the GoogleMapsPortlet to use portlet 2.0 head
contributions feature. Now this portlet works under Jetspeed-2.2-trunk.
Because some generic constants such as head contribution element hint and ajax
support are not specified in the current portlet 2.0 specification, I think we
need to define these commonalities in a project under apache portals umbrella.
Modified:
portals/applications/demo/pom.xml
portals/applications/gems/pom.xml
portals/applications/gems/src/main/java/org/apache/portals/gems/googlemaps/GoogleMapsPortlet.java
Modified: portals/applications/demo/pom.xml
URL:
http://svn.apache.org/viewvc/portals/applications/demo/pom.xml?rev=763944&r1=763943&r2=763944&view=diff
==============================================================================
--- portals/applications/demo/pom.xml (original)
+++ portals/applications/demo/pom.xml Fri Apr 10 14:28:56 2009
@@ -41,6 +41,10 @@
Demo Portlets Container
</description>
+ <properties>
+
<portals.applications.apa-gems.version>2.2-SNAPSHOT</portals.applications.apa-gems.version>
+ </properties>
+
<!-- Dependencies -->
<dependencies>
@@ -67,7 +71,8 @@
</dependency>
<dependency>
<groupId>org.apache.portals.applications</groupId>
- <artifactId>portals-gems</artifactId>
+ <artifactId>apa-gems</artifactId>
+ <version>${portals.applications.apa-gems.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
Modified: portals/applications/gems/pom.xml
URL:
http://svn.apache.org/viewvc/portals/applications/gems/pom.xml?rev=763944&r1=763943&r2=763944&view=diff
==============================================================================
--- portals/applications/gems/pom.xml (original)
+++ portals/applications/gems/pom.xml Fri Apr 10 14:28:56 2009
@@ -1,106 +1,132 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
- $Id:$
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
-
- <modelVersion>4.0.0</modelVersion>
- <prerequisites>
- <maven>2.0.4</maven>
- </prerequisites>
-
- <!-- POM Identification -->
-
- <artifactId>portals-gems</artifactId>
- <parent>
- <groupId>org.apache.portals.applications</groupId>
- <artifactId>applications</artifactId>
- <version>2.2-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
- <packaging>jar</packaging>
- <name>Apache Portals Gems</name>
- <description>
- Reusable Portlets (Gems) for your Portlet Applications.
- </description>
-
- <!-- Dependencies -->
-
- <dependencies>
-
- <!-- Build Dependencies -->
- <dependency>
- <groupId>org.apache.portals.jetspeed-2</groupId>
- <artifactId>jetspeed-api</artifactId>
- <version>2.2-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.portals.jetspeed-2</groupId>
- <artifactId>jetspeed-commons</artifactId>
- <version>2.2-SNAPSHOT</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>commons-dbcp</groupId>
- <artifactId>commons-dbcp</artifactId>
- </dependency>
- <dependency>
- <groupId>velocity</groupId>
- <artifactId>velocity</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.portals.bridges</groupId>
- <artifactId>portals-bridges-velocity</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-portlet</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.poi</groupId>
- <artifactId>poi</artifactId>
- <version>3.0-FINAL</version>
- </dependency>
- </dependencies>
-
- <scm>
-
<connection>scm:svn:http://svn.apache.org/repos/asf/portals/jetspeed-2/trunk/applications/gems</connection>
-
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/portals/jetspeed-2/trunk/applications/gems</developerConnection>
-
<url>http://svn.apache.org/viewcvs.cgi/portals/jetspeed-2/trunk/applications/gems/</url>
- </scm>
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version
+ 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+ applicable law or agreed to in writing, software distributed under
+ the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+ OR CONDITIONS OF ANY KIND, either express or implied. See the
+ License for the specific language governing permissions and
+ limitations under the License. $Id$
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <prerequisites>
+ <maven>2.0.4</maven>
+ </prerequisites>
+
+ <!-- POM Identification -->
+
+ <parent>
+ <groupId>org.apache.portals</groupId>
+ <artifactId>applications-pom</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.apache.portals.applications</groupId>
+ <artifactId>apa-gems</artifactId>
+ <version>2.2-SNAPSHOT</version>
+
+ <packaging>jar</packaging>
+ <name>Apache Portals Gems</name>
+ <description>
+ Reusable Portlets (Gems) for your Portlet Applications.
+ </description>
+
+ <properties>
+ <portlet-api.version>2.0</portlet-api.version>
+ <jetspeed.version>2.2-SNAPSHOT</jetspeed.version>
+ <velocity.version>1.5</velocity.version>
+
<org.apache.portals.bridges.velocity.version>1.0.4</org.apache.portals.bridges.velocity.version>
+ <poi.version>3.0-FINAL</poi.version>
+ <commons-dbcp.version>1.2.2</commons-dbcp.version>
+ <commons-httpclient.version>3.0.1</commons-httpclient.version>
+ <commons-lang.version>2.1</commons-lang.version>
+ <commons-logging.version>1.1</commons-logging.version>
+ <spring.version>2.5.6</spring.version>
+ </properties>
+
+ <!-- Dependencies -->
+
+ <dependencies>
+
+ <!-- Build Dependencies -->
+ <dependency>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>${portlet-api.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.portals.jetspeed-2</groupId>
+ <artifactId>jetspeed-api</artifactId>
+ <version>${jetspeed.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.portals.jetspeed-2</groupId>
+ <artifactId>jetspeed-commons</artifactId>
+ <version>${jetspeed.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <version>${velocity.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.portals.bridges</groupId>
+ <artifactId>portals-bridges-velocity</artifactId>
+ <version>${org.apache.portals.bridges.velocity.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-dbcp</groupId>
+ <artifactId>commons-dbcp</artifactId>
+ <version>${commons-dbcp.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>${commons-lang.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>${commons-httpclient.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc-portlet</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.poi</groupId>
+ <artifactId>poi</artifactId>
+ <version>${poi.version}</version>
+ </dependency>
+ </dependencies>
+
+ <scm>
+
<connection>scm:svn:http://svn.apache.org/repos/asf/portals/jetspeed-2/trunk/applications/gems</connection>
+
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/portals/jetspeed-2/trunk/applications/gems</developerConnection>
+
<url>http://svn.apache.org/viewcvs.cgi/portals/jetspeed-2/trunk/applications/gems/</url>
+ </scm>
</project>
\ No newline at end of file
Modified:
portals/applications/gems/src/main/java/org/apache/portals/gems/googlemaps/GoogleMapsPortlet.java
URL:
http://svn.apache.org/viewvc/portals/applications/gems/src/main/java/org/apache/portals/gems/googlemaps/GoogleMapsPortlet.java?rev=763944&r1=763943&r2=763944&view=diff
==============================================================================
---
portals/applications/gems/src/main/java/org/apache/portals/gems/googlemaps/GoogleMapsPortlet.java
(original)
+++
portals/applications/gems/src/main/java/org/apache/portals/gems/googlemaps/GoogleMapsPortlet.java
Fri Apr 10 14:28:56 2009
@@ -18,27 +18,34 @@
import java.io.IOException;
-import java.util.HashMap;
import java.util.Map;
+import java.util.HashMap;
+import javax.portlet.PortletException;
import javax.portlet.ActionRequest;
+import javax.portlet.RenderRequest;
import javax.portlet.ActionResponse;
-import javax.portlet.PortletException;
+import javax.portlet.MimeResponse;
+import javax.portlet.RenderResponse;
import javax.portlet.PortletPreferences;
-import org.apache.jetspeed.headerresource.HeaderResource;
-import org.apache.jetspeed.portlet.PortletHeaderRequest;
-import org.apache.jetspeed.portlet.PortletHeaderResponse;
-import org.apache.portals.gems.dojo.AbstractDojoVelocityPortlet;
+import org.apache.portals.bridges.velocity.GenericVelocityPortlet;
+
+import org.w3c.dom.Element;
+
/**
* This is a simple class used to override processAction
* to save location form submission value to location preference
*
* @version $Id: GoogleMapsPortlet.java 393251 2006-04-22 15:50:52Z jdp $
*/
-public class GoogleMapsPortlet extends AbstractDojoVelocityPortlet
+public class GoogleMapsPortlet extends GenericVelocityPortlet
{
+ private static final String HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE
= "org.apache.portals.portal.page.head.element.contribution.merge.hint";
+
+ private static final String
HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_REQUIRE = "dojo.require";
+
/**
* no change
*/
@@ -53,47 +60,81 @@
* @see javax.portlet.GenericPortlet#processActions
*
*/
- public void processAction(ActionRequest request, ActionResponse
actionResponse)
- throws PortletException, IOException
+ public void processAction(ActionRequest request, ActionResponse
actionResponse) throws PortletException, IOException
{
String location = request.getParameter( "location" );
String mapHeight = request.getParameter( "mapheight" );
String apiKey = request.getParameter( "apikey" );
+
PortletPreferences preferences = request.getPreferences();
+
if ( location != null )
+ {
preferences.setValue( "Location", location );
+ }
+
if ( mapHeight != null )
+ {
preferences.setValue( "MapHeight", mapHeight );
+ }
+
if ( apiKey != null )
+ {
preferences.setValue( "APIKey", apiKey );
+ }
+
preferences.store();
}
- public void doHeader(PortletHeaderRequest request, PortletHeaderResponse
response)
- throws PortletException
+ @Override
+ protected void doHeaders(RenderRequest request, RenderResponse response)
+ {
+ String apiKey = request.getPreferences().getValue("APIKey", "");
+ contributeScript(response, "JavaScript", "text/javascript",
"http://maps.google.com/maps?file=api&v=2&key=" + apiKey, null);
+ contributeDojoRequire(response, "dojo.lang.*");
+ contributeDojoRequire(response, "dojo.event.*");
+ contributeDojoRequire(response, "dojo.io.*");
+ contributeDojoRequire(response, "dojo.widget.*");
+ contributeDojoRequire(response, "dojo.widget.Button");
+ }
+
+ private static void contributeScript(RenderResponse response, String
language, String type, String src, String textContent)
{
- StringBuffer headerInfoText = new StringBuffer();
- Map headerInfoMap = null;
+ Element headElem = response.createElement("script");
- // add google maps api script tag
- headerInfoText.setLength(0);
- headerInfoMap = new HashMap(8);
- headerInfoMap.put("language", "JavaScript");
- headerInfoMap.put("src",
"http://maps.google.com/maps?file=api&v=2&key=" +
request.getPreferences().getValue("APIKey","") );
- headerInfoMap.put("type", "text/javascript");
- response.getHeaderResource().addHeaderInfo("script", headerInfoMap,
headerInfoText.toString());
-
- super.doHeader(request, response);
+ if (language != null)
+ {
+ headElem.setAttribute("language", language);
+ }
+
+ if (src != null)
+ {
+ headElem.setAttribute("src", src);
+ }
+
+ if (type != null)
+ {
+ headElem.setAttribute("type", type);
+ }
+
+ if (textContent != null)
+ {
+
headElem.appendChild(headElem.getOwnerDocument().createTextNode(textContent));
+ }
+
+ response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, headElem);
}
- protected void includeHeaderContent( HeaderResource headerResource )
+ private static void contributeDojoRequire(RenderResponse response, String
dojoRequire)
{
- headerResource.dojoAddCoreLibraryRequire( "dojo.lang.*" );
- headerResource.dojoAddCoreLibraryRequire( "dojo.event.*" );
- headerResource.dojoAddCoreLibraryRequire( "dojo.io.*" );
- headerResource.dojoAddCoreLibraryRequire( "dojo.widget.*" );
- headerResource.dojoAddCoreLibraryRequire( "dojo.widget.Button" );
+ Element headElem = response.createElement("script");
+ headElem.setAttribute("language", "JavaScript");
+ headElem.setAttribute("type", "text/javascript");
+ headElem.setAttribute(HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_ATTRIBUTE,
HEAD_ELEMENT_CONTRIBUTION_MERGE_HINT_KEY_DOJO_REQUIRE);
+
headElem.appendChild(headElem.getOwnerDocument().createTextNode("dojo.require(\""
+ dojoRequire + "\");"));
+ response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, headElem);
}
+
}