You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2011/09/01 11:17:52 UTC

svn commit: r1163957 - in /incubator/wookie/trunk/src/org/apache/wookie: controller/Controller.java controller/WidgetInstancesController.java flatpack/FlatpackController.java

Author: scottbw
Date: Thu Sep  1 09:17:52 2011
New Revision: 1163957

URL: http://svn.apache.org/viewvc?rev=1163957&view=rev
Log:
Refactored generation of Wookie server URLs - pushed up to Controller from duplicate code in WidgetInstancesController and FlatpackController.

Modified:
    incubator/wookie/trunk/src/org/apache/wookie/controller/Controller.java
    incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
    incubator/wookie/trunk/src/org/apache/wookie/flatpack/FlatpackController.java

Modified: incubator/wookie/trunk/src/org/apache/wookie/controller/Controller.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/Controller.java?rev=1163957&r1=1163956&r2=1163957&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/Controller.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/Controller.java Thu Sep  1 09:17:52 2011
@@ -23,6 +23,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.configuration.Configuration;
 import org.apache.log4j.Logger;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
@@ -350,5 +351,35 @@ public abstract class Controller extends
 		return HTML;
 	}
 
+	/**
+	 * Get a URL for a resource on the current Wookie server; this is either determined from the request or overridden by properties
+	 * defined in widgetserver.properties to support virtual hosts
+	 * @param request the originating request
+	 * @param path an optional path to the resource
+	 * @return a URL pointing to the resource on the Wookie server
+	 * @throws MalformedURLException
+	 */
+	protected static URL getWookieServerURL(HttpServletRequest request, String path) throws MalformedURLException{
+
+    //
+    // Use the request to generate the initial URL components
+    //
+    String scheme = request.getScheme();
+    String serverName = request.getServerName();
+    int serverPort = request.getServerPort();
+    
+    //
+    // Override with configuration properties where present
+    //
+    Configuration properties = (Configuration) request.getSession().getServletContext().getAttribute("properties"); //$NON-NLS-1$
+    if (properties.getString("widget.server.scheme")!=null && !properties.getString("widget.server.scheme").trim().equals("")) scheme = properties.getString("widget.server.scheme"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+    if (properties.getString("widget.server.hostname")!=null && !properties.getString("widget.server.hostname").trim().equals("")) serverName = properties.getString("widget.server.hostname"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+    if (properties.getString("widget.server.port")!=null && !properties.getString("widget.server.port").trim().equals("")) serverPort = Integer.parseInt(properties.getString("widget.server.port")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+
+    //
+    // Construct and return URL
+    //
+    return new URL(scheme, serverName, serverPort, path);
+	}
 
 }

Modified: incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java?rev=1163957&r1=1163956&r2=1163957&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/controller/WidgetInstancesController.java Thu Sep  1 09:17:52 2011
@@ -323,25 +323,31 @@ public class WidgetInstancesController e
 	protected static String getUrl(HttpServletRequest request, IWidgetInstance instance) throws IOException{
 		String url = "";
 
+		//
+		// Locate the startfile for the Widget Instance
+		//
 		IStartFile[] startFiles = instance.getWidget().getStartFiles().toArray(new IStartFile[instance.getWidget().getStartFiles().size()]);
-    IStartFile sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{instance.getLang()}, instance.getWidget().getDefaultLocale());
-		// Try default locale if no appropriate localization found
+        IStartFile sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, new String[]{instance.getLang()}, instance.getWidget().getDefaultLocale());
+    
+        //
+        // Try default locale if no appropriate localization found
+        //
 		if (sf == null) sf = (IStartFile) LocalizationUtils.getLocalizedElement(startFiles, null, instance.getWidget().getDefaultLocale());
+		
+		//
 		// No start file found, so throw an exception
+		//
 		if (sf == null) throw new IOException("No start file located for widget "+instance.getWidget().getGuid());
 		
-		// Use settings defined in properties if available, otherwise use the request context
-        Configuration properties = (Configuration) request.getSession().getServletContext().getAttribute("properties"); //$NON-NLS-1$
-        String scheme = request.getScheme();
-        String serverName = request.getServerName();
-        int serverPort = request.getServerPort();
+		//
+		// Get a URL for the start file on this Wookie server
+		//
         String path = sf.getUrl();
-        if (properties.getString("widget.server.scheme")!=null && !properties.getString("widget.server.scheme").trim().equals("")) scheme = properties.getString("widget.server.scheme"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        if (properties.getString("widget.server.hostname")!=null && !properties.getString("widget.server.hostname").trim().equals("")) serverName = properties.getString("widget.server.hostname"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-        if (properties.getString("widget.server.port")!=null && !properties.getString("widget.server.port").trim().equals("")) serverPort = Integer.parseInt(properties.getString("widget.server.port")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		URL urlWidget =  new URL(scheme, serverName, serverPort, path);
+		URL urlWidget =  getWookieServerURL(request, path);
 		
+		//
+		// Append querystring parameters for the URL: id key, proxy URL, and social token
+		//
 		if (urlWidget.getQuery() != null){
 			url+= urlWidget + "&idkey=" + instance.getIdKey()  //$NON-NLS-1$
 					+ "&proxy=" + urlWidgetProxyServer.toExternalForm()  //$NON-NLS-1$

Modified: incubator/wookie/trunk/src/org/apache/wookie/flatpack/FlatpackController.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/flatpack/FlatpackController.java?rev=1163957&r1=1163956&r2=1163957&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/flatpack/FlatpackController.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/flatpack/FlatpackController.java Thu Sep  1 09:17:52 2011
@@ -202,10 +202,10 @@ public class FlatpackController extends 
 		if (!WidgetKeyManager.isValidRequest(request)) throw new UnauthorizedAccessException();
 		String path;
 		try {
-		  //
-		  // Construct a FlatpackFactory for the instance identified in the request
-		  // If no instance can be found, throw an exception
-		  //
+		    //
+		    // Construct a FlatpackFactory for the instance identified in the request
+		    // If no instance can be found, throw an exception
+		    //
 			IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
 			if (instance == null) throw new InvalidParametersException();
 			FlatpackFactory fac = new FlatpackFactory(instance);
@@ -220,25 +220,16 @@ public class FlatpackController extends 
 			//
 			File flatpack = fac.pack();
 			
-		  //
-			// Construct the URL pointing to the exported .wgt file
-			// Use settings defined in properties if available, otherwise use the request context
-			// to construct a URL. Note that the resource begins with the servlet path, typically
-			// "/wookie"
+            //
+            // Construct the URL pointing to the exported .wgt file
+            //  Note that the resource begins with the servlet path, typically "/wookie"
 			//
-      Configuration properties = (Configuration) request.getSession().getServletContext().getAttribute("properties"); //$NON-NLS-1$
-      String scheme = request.getScheme();
-      String serverName = request.getServerName();
-      int serverPort = request.getServerPort();
-      String resource = request.getSession().getServletContext().getContextPath() + "/" + FlatpackFactory.DEFAULT_FLATPACK_FOLDER + "/" + flatpack.getName();
-      if (properties.getString("widget.server.scheme")!=null && !properties.getString("widget.server.scheme").trim().equals("")) scheme = properties.getString("widget.server.scheme"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-      if (properties.getString("widget.server.host")!=null && !properties.getString("widget.server.host").trim().equals("")) serverName = properties.getString("widget.server.host"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-      if (properties.getString("widget.server.port")!=null && !properties.getString("widget.server.port").trim().equals("")) serverPort = Integer.parseInt(properties.getString("widget.server.port")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-      URL url =  new URL(scheme, serverName, serverPort, resource);
+            String resource = request.getSession().getServletContext().getContextPath() + "/" + FlatpackFactory.DEFAULT_FLATPACK_FOLDER + "/" + flatpack.getName();
+            URL url =  getWookieServerURL(request, resource);
       
-      //
-      // Return the String version of the URL pointing to the exported .wgt file
-      //
+            //
+            // Return the String version of the URL pointing to the exported .wgt file
+            //
 			path = url.toString();
 			
 		} catch (Exception e) {