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 2010/03/09 23:14:39 UTC

svn commit: r921164 - in /incubator/wookie/trunk/src: opensocial.properties org/apache/wookie/util/gadgets/GadgetUtils.java org/apache/wookie/util/opensocial/OpenSocialUtils.java widgetserver.properties

Author: scottbw
Date: Tue Mar  9 22:14:39 2010
New Revision: 921164

URL: http://svn.apache.org/viewvc?rev=921164&view=rev
Log:
This is part 3 of 3 updates of the Shindig integration code that brings it up to date with the other changes to the Wookie core code; See WOOKIE-52 for more information on wookie-shindig integration.

Modified:
    incubator/wookie/trunk/src/opensocial.properties
    incubator/wookie/trunk/src/org/apache/wookie/util/gadgets/GadgetUtils.java
    incubator/wookie/trunk/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
    incubator/wookie/trunk/src/widgetserver.properties

Modified: incubator/wookie/trunk/src/opensocial.properties
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/opensocial.properties?rev=921164&r1=921163&r2=921164&view=diff
==============================================================================
--- incubator/wookie/trunk/src/opensocial.properties (original)
+++ incubator/wookie/trunk/src/opensocial.properties Tue Mar  9 22:14:39 2010
@@ -1,4 +1,4 @@
 opensocial.enable=true
-opensocial.token=secure
+opensocial.token=plain
 opensocial.key=UNSECURED_TOKEN_KEY
 opensocial.proxy.id=gadgetsdefaultkey
\ No newline at end of file

Modified: incubator/wookie/trunk/src/org/apache/wookie/util/gadgets/GadgetUtils.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/util/gadgets/GadgetUtils.java?rev=921164&r1=921163&r2=921164&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/util/gadgets/GadgetUtils.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/util/gadgets/GadgetUtils.java Tue Mar  9 22:14:39 2010
@@ -27,7 +27,11 @@ import org.apache.commons.httpclient.Htt
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.methods.PostMethod;
 import org.apache.commons.httpclient.methods.StringRequestEntity;
+import org.apache.wookie.beans.Name;
+import org.apache.wookie.beans.Description;
+import org.apache.wookie.beans.StartFile;
 import org.apache.wookie.beans.Widget;
+import org.apache.wookie.beans.WidgetIcon;
 import org.json.JSONArray;
 import org.json.JSONObject;
 /**
@@ -72,6 +76,7 @@ public class GadgetUtils {
 			if (properties.getString("widget.metadata.url")!=null) svc = properties.getString("widget.metadata.url");
 			if (properties.getString("widget.shindig.url")!=null) shindig = properties.getString("widget.shindig.url");
 		} catch (Exception e) {
+			e.printStackTrace();
 			// Problem with the servlet context; we'll just let it go for now
 			// TODO log this error
 		}
@@ -120,7 +125,7 @@ public class GadgetUtils {
 			post.setRequestHeader("Content-Length", String.valueOf(req.getContentLength()));
 			response = executeMethod(post);
 		} catch (Exception e) {
-			System.err.println(e.getMessage());
+			e.printStackTrace();
 			throw new Exception("There was a problem connecting to the Shindig metadata service");
 		}
 		return response;
@@ -173,6 +178,7 @@ public class GadgetUtils {
 		if (gadgets.length() > 0){
 			gadget = gadgets.getJSONObject(0);
 			if (gadget.has("errors")) throw new Exception("Invalid gadget - Shindig error");
+			
 			widget = new Widget();
 			// Defaults
 			String title = "Untitled Gadget";
@@ -197,8 +203,11 @@ public class GadgetUtils {
 			// We should be able to use the "iframeUrl" property here, but
 			// it isn't very reliable at generating a usable value, so we construct
 			// a very basic URL instead
-			//widget.setUrl(shindig+"/gadgets/ifr?url="+gadget.getString("url")+"&lang=en&country=UK"); //TODO FIXME Later
-
+			StartFile sf = new StartFile();
+			sf.setWidget(widget);
+			// FIXME we need to use real locales in these URLs
+			sf.setUrl(shindig+"/gadgets/ifr?url="+gadget.getString("url")+"&lang=en&country=UK");
+			
 			if (gadget.has("height")) if (gadget.getInt("height") != 0) height = gadget.getInt("height");
 			if (gadget.has("width")) if (gadget.getInt("width") != 0) width = gadget.getInt("width");
 
@@ -246,11 +255,23 @@ public class GadgetUtils {
 			widget.setMaximize(false);
 			widget.setHeight(height);
 			widget.setWidth(width);
-			//widget.setWidgetTitle(title); // TODO FIXME 
-			//widget.setWidgetDescription(description);	//TODO FIXME	
-			//widget.setWidgetIconLocation(icon); //TODO FIXME
+			Name name = new Name();
+			name.setWidget(widget);
+			name.setName(title);
+			Description desc = new Description();
+			desc.setWidget(widget);
+			desc.setContent(description);
+			WidgetIcon wicon = new WidgetIcon();
+			wicon.setSrc(icon);
+			wicon.setWidget(widget);
 			widget.setWidgetAuthor(author);
-
+			
+			widget.save();
+			sf.save();
+			name.save();
+			wicon.save();
+			desc.save();
+			
 		}
 		return widget;
 	}

Modified: incubator/wookie/trunk/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java?rev=921164&r1=921163&r2=921164&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/util/opensocial/OpenSocialUtils.java Tue Mar  9 22:14:39 2010
@@ -21,7 +21,9 @@ import org.apache.log4j.Logger;
 import org.apache.shindig.auth.BlobCrypterSecurityToken;
 import org.apache.shindig.common.crypto.BasicBlobCrypter;
 import org.apache.wookie.Messages;
+import org.apache.wookie.beans.StartFile;
 import org.apache.wookie.beans.WidgetInstance;
+import org.apache.wookie.w3c.util.LocalizationUtils;
 
 /**
  * Utilities for supporting OpenSocial integration, such as creation of security tokens that
@@ -36,8 +38,6 @@ public class OpenSocialUtils {
 	private static final String DOMAIN_ID = "wookie"; //$NON-NLS-1$
 	// TODO once we have an API Key implementation, we can convey the actual container id rather than Wookie
 	private static final String CONTAINER_ID = "wookie"; //$NON-NLS-1$
-	// TODO once we get plugins to send owner Id, we can remove this
-	private static final String OWNER_ID = "0"; //$NON-NLS-1$
 	
 	
 	/**
@@ -65,15 +65,11 @@ public class OpenSocialUtils {
 			throw new Exception(localizedMessages.getString("OpenSocialUtils.1")); //$NON-NLS-1$
 		}
 
-		// We really need to implement viewer/owner info
-		String userid = "@anon"; //$NON-NLS-1$
-		if (instance.getUserId()!=null) if(!instance.getUserId().equals("")) userid = instance.getUserId(); //$NON-NLS-1$
-		
 		// Order of fields is:
 		// owner, viewer, app_id, domain, app_url, mod_id, container
 		// NOTE that we're hacking this now to push the id_key through the container value as Shindig won't let us use Strings for mod_id, only Longs
 		// TODO replace hack with a real solution
-		String[] fields = {OWNER_ID, userid, instance.getWidget().getGuid(), DOMAIN_ID, instance.getWidget().getUrl(), "0", String.valueOf(instance.getIdKey())}; //$NON-NLS-1$
+		String[] fields = {getOwnerId(instance), getUserId(instance), instance.getWidget().getGuid(), DOMAIN_ID, getUrl(instance), "0", String.valueOf(instance.getIdKey())}; //$NON-NLS-1$
 		for (int i = 0; i < fields.length; i++) {
 			// escape each field individually, for metachars in URL
 			fields[i] = URLEncoder.encode(fields[i], "UTF-8"); //$NON-NLS-1$
@@ -86,7 +82,7 @@ public class OpenSocialUtils {
 	
 	/**
 	 * Utility method for producing an encrypted token for OpenSocial applications
-	 * TODO Fix this method, its broken
+	 * TODO FIXME this method is broken, or at least a pain to test in real deployment
 	 * @param instance the widget instance to generate a token for
 	 * @return the encrypted token for the widget instance
 	 * @throws Exception
@@ -99,22 +95,39 @@ public class OpenSocialUtils {
 			throw new Exception(localizedMessages.getString("OpenSocialUtils.1")); //$NON-NLS-1$
 		}
 		
-		@SuppressWarnings("unused")
-		String userid = "@anon"; //$NON-NLS-1$
-		if (instance.getUserId()!=null) if(!instance.getUserId().equals("")) userid = instance.getUserId(); //$NON-NLS-1$
-		
 		BasicBlobCrypter crypter = new BasicBlobCrypter(key.getBytes());
 		BlobCrypterSecurityToken token = new BlobCrypterSecurityToken(crypter, CONTAINER_ID, DOMAIN_ID);
-		token.setAppUrl(instance.getWidget().getUrl());
+		token.setAppUrl(getUrl(instance));
 		// The ModuleId only takes a long, so we just have to hash the idKey for now. We could use the instance id,
 		// but this would involve updating the instance object in a two-step create, which is more fiddly and expensive.
-		token.setModuleId(0);
-		token.setOwnerId(OWNER_ID);
-		token.setViewerId(instance.getUserId());
-		String encryptedToken = null;
-		encryptedToken = token.encrypt();
+		token.setModuleId(instance.getIdKey().hashCode());
+		token.setOwnerId(getOwnerId(instance));
+		token.setViewerId(getUserId(instance));
+		// The URL used in the active request
+		token.setActiveUrl(getUrl(instance));
+		
+		String encryptedToken = token.encrypt();
+		
 		encryptedToken = URLEncoder.encode(encryptedToken, "UTF-8"); //$NON-NLS-1$
+		
 		return encryptedToken;
 	}
+	
+	private static String getOwnerId(WidgetInstance instance){
+		//TODO FIXME
+		return getUserId(instance);
+	}
+	
+	private static String getUserId(WidgetInstance instance){
+		String userid = "@anon"; //$NON-NLS-1$
+		if (instance.getUserId()!=null) if(!instance.getUserId().equals("")) userid = instance.getUserId(); //$NON-NLS-1$
+		return userid;
+	}
+	
+	private static String getUrl(WidgetInstance instance){
+		StartFile[] files = StartFile.findByValue("widget", instance.getWidget());
+		StartFile start = (StartFile) LocalizationUtils.getLocalizedElement(files, new String[]{"en"});
+		return start.getUrl();
+	}
 
 }

Modified: incubator/wookie/trunk/src/widgetserver.properties
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/widgetserver.properties?rev=921164&r1=921163&r2=921164&view=diff
==============================================================================
--- incubator/wookie/trunk/src/widgetserver.properties (original)
+++ incubator/wookie/trunk/src/widgetserver.properties Tue Mar  9 22:14:39 2010
@@ -1,7 +1,7 @@
-widget.version=0.8
-widget.build.date=12 January 2009
-widget.email.contact=p.sharples@bolton.ac.uk
-widget.web.page=http://incubator.apache.org/projects/wookie.html
+widget.version=0.8.1
+widget.build.date=
+widget.email.contact=wookie-dev@incubator.apache.org
+widget.web.page=http://incubator.apache.org/wookie
 # Keep this true while developing, but set to false for a build
 widget.debug=true
 #######################################################################
@@ -20,8 +20,8 @@ widget.deployfolder=/deploy
 widget.hot_deploy=true
 #######################################################################
 # Location of Shindig services
-widget.shindig.url=/wookie
-widget.metadata.url=/wookie/gadgets/metadata
+widget.shindig.url=/
+widget.metadata.url=/gadgets/metadata
 #######################################################################
 widget.proxy.usewhitelist=true
 widget.proxy.checkdomain=false