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 2014/02/09 20:38:50 UTC

svn commit: r1566374 - in /wookie/trunk/wookie-server/src/main/java/org/apache/wookie: controller/ feature/wave/ server/

Author: scottbw
Date: Sun Feb  9 19:38:50 2014
New Revision: 1566374

URL: http://svn.apache.org/r1566374
Log:
updated to use AuthToken and SPIs instead of PersistenceManager and IWidgetInstance

Modified:
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/ParticipantsController.java
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/PropertiesController.java
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/feature/wave/WaveAPIImpl.java
    wookie/trunk/wookie-server/src/main/java/org/apache/wookie/server/LocalizedResourceFilter.java

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/ParticipantsController.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/ParticipantsController.java?rev=1566374&r1=1566373&r2=1566374&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/ParticipantsController.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/ParticipantsController.java Sun Feb  9 19:38:50 2014
@@ -22,8 +22,8 @@ import javax.servlet.http.HttpServletRes
 import javax.servlet.http.HttpSession;
 
 import org.apache.log4j.Logger;
+import org.apache.wookie.auth.AuthToken;
 import org.apache.wookie.beans.IParticipant;
-import org.apache.wookie.beans.IWidgetInstance;
 import org.apache.wookie.beans.SharedContext;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
@@ -31,6 +31,7 @@ import org.apache.wookie.exceptions.Reso
 import org.apache.wookie.exceptions.UnauthorizedAccessException;
 import org.apache.wookie.helpers.Notifier;
 import org.apache.wookie.helpers.ParticipantHelper;
+import org.apache.wookie.services.WidgetMetadataService;
 
 /**
  * Implementation of the REST API for working with Participants. For a description of the methods implemented by this controller see 
@@ -68,14 +69,16 @@ public class ParticipantsController exte
 	
 	@Override
 	public void show(String resourceId,HttpServletRequest request, HttpServletResponse response) throws UnauthorizedAccessException,ResourceNotFoundException, IOException{
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-		if (instance == null) throw new ResourceNotFoundException();
-		IParticipant[] participants = new SharedContext(instance).getParticipants();
-    switch (format(request)) {
-       case XML: returnXml(ParticipantHelper.createXMLParticipantsDocument(participants),response);break;
-       case JSON: returnJson(ParticipantHelper.createJSONParticipantsDocument(participants),response);break;
-       default: returnXml(ParticipantHelper.createXMLParticipantsDocument(participants),response);break;
-    }
+		
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new ResourceNotFoundException();
+		IParticipant[] participants = new SharedContext(authToken).getParticipants();
+		
+		switch (format(request)) {
+		case XML: returnXml(ParticipantHelper.createXMLParticipantsDocument(participants),response);break;
+		case JSON: returnJson(ParticipantHelper.createJSONParticipantsDocument(participants),response);break;
+		default: returnXml(ParticipantHelper.createXMLParticipantsDocument(participants),response);break;
+		}
 	}
 
 	@Override
@@ -98,8 +101,16 @@ public class ParticipantsController exte
 			throws ResourceDuplicationException, InvalidParametersException,
 			UnauthorizedAccessException {
 
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-		if (instance == null) throw new InvalidParametersException();
+		//
+		// Verify the auth token
+		//
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new InvalidParametersException();
+		
+		//
+		// Check the widget is real
+		//
+		if (WidgetMetadataService.Factory.getInstance().getWidget(authToken.getWidgetId()) == null) throw new InvalidParametersException();
 		
 		HttpSession session = request.getSession(true);						
 		String participantId = request.getParameter("participant_id"); //$NON-NLS-1$
@@ -113,8 +124,8 @@ public class ParticipantsController exte
 			throw new InvalidParametersException();
 		}
 
-		if (new SharedContext(instance).addParticipant(participantId, participantDisplayName, participantThumbnailUrl, participantRole)){
-			Notifier.notifyWidgets(session, instance, Notifier.PARTICIPANTS_UPDATED);
+		if (new SharedContext(authToken).addParticipant(participantId, participantDisplayName, participantThumbnailUrl, participantRole)){
+			Notifier.notifyWidgets(session, authToken, Notifier.PARTICIPANTS_UPDATED);
 			_logger.debug("added user to widget instance: " + participantId);
 			return true;
 		} else {
@@ -132,12 +143,22 @@ public class ParticipantsController exte
 	public static boolean remove(HttpServletRequest request)
 			throws ResourceNotFoundException, UnauthorizedAccessException,
 			InvalidParametersException {
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-		if (instance == null) throw new InvalidParametersException();
+		
+		//
+		// Verify the auth token
+		//
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new InvalidParametersException();
+		
+		//
+		// Check the widget is real
+		//
+		if (WidgetMetadataService.Factory.getInstance().getWidget(authToken.getWidgetId()) == null) throw new InvalidParametersException();
+		
 		HttpSession session = request.getSession(true);						
 		String participantId = request.getParameter("participant_id"); //$NON-NLS-1$
-		if(new SharedContext(instance).removeParticipant(participantId)){
-			Notifier.notifyWidgets(session, instance, Notifier.PARTICIPANTS_UPDATED);
+		if(new SharedContext(authToken).removeParticipant(participantId)){
+			Notifier.notifyWidgets(session, authToken, Notifier.PARTICIPANTS_UPDATED);
 			return true;
 		}else{
 			throw new ResourceNotFoundException();				

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/PropertiesController.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/PropertiesController.java?rev=1566374&r1=1566373&r2=1566374&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/PropertiesController.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/PropertiesController.java Sun Feb  9 19:38:50 2014
@@ -22,17 +22,15 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.log4j.Logger;
-import org.apache.wookie.beans.IPreference;
+import org.apache.wookie.auth.AuthToken;
 import org.apache.wookie.beans.ISharedData;
-import org.apache.wookie.beans.IWidgetInstance;
 import org.apache.wookie.beans.SharedContext;
-import org.apache.wookie.beans.util.IPersistenceManager;
-import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.exceptions.InvalidParametersException;
 import org.apache.wookie.exceptions.ResourceDuplicationException;
 import org.apache.wookie.exceptions.ResourceNotFoundException;
 import org.apache.wookie.exceptions.UnauthorizedAccessException;
 import org.apache.wookie.helpers.Notifier;
+import org.apache.wookie.services.PreferencesService;
 
 /**
  * REST implementation for widgetInstance
@@ -80,16 +78,17 @@ public class PropertiesController extend
 	protected void show(String resourceId, HttpServletRequest request,
 			HttpServletResponse response) throws ResourceNotFoundException,
 			UnauthorizedAccessException, IOException {
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-		if (instance == null) throw new ResourceNotFoundException();
+		
+		AuthToken authToken = getAuthTokenFromRequest(request);		
+		if (authToken == null) throw new ResourceNotFoundException();
 		String name = request.getParameter("propertyname"); //$NON-NLS-1$
 		if (name == null || name.trim().equals("")) throw new ResourceNotFoundException();
 		String value = null;
 		// Note that preferences and shared data keys may be the same!
 		// We let the shared data values override.
-		IPreference pref = instance.getPreference(name);
-		if (pref != null) value = pref.getValue();
-		ISharedData data = new SharedContext(instance).getSharedData(name);
+		
+		value = PreferencesService.Factory.getInstance().getPreference(authToken.toString(), name);
+		ISharedData data = new SharedContext(authToken).getSharedData(name);
 		if (data != null) value = data.getDvalue();
 		if (value == null) throw new ResourceNotFoundException();
 		PrintWriter out = response.getWriter();
@@ -101,16 +100,18 @@ public class PropertiesController extend
 			throws ResourceNotFoundException,UnauthorizedAccessException,InvalidParametersException {
 		if (request.getParameter("value") != null) throw new InvalidParametersException();//$NON-NLS-1$
 		String name = request.getParameter("propertyname"); //$NON-NLS-1$
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-		if (instance == null) throw new InvalidParametersException();
+		
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new InvalidParametersException();
+		
 		if (name == null || name.trim().equals("")) throw new InvalidParametersException();
 		
 		boolean found = false;
 		if (isPublic(request)){ 
-			found = new SharedContext(instance).removeSharedData(name);
-			Notifier.notifyWidgets(request.getSession(), instance, Notifier.STATE_UPDATED);
+			found = new SharedContext(authToken).removeSharedData(name);
+			Notifier.notifyWidgets(request.getSession(), authToken, Notifier.STATE_UPDATED);
 		} else {
-			found = updatePreference(instance, name, null);
+			found = updatePreference(authToken, name, null);
 		}
 		if (!found) throw new ResourceNotFoundException();
 		return true;
@@ -141,15 +142,17 @@ public class PropertiesController extend
 	throws InvalidParametersException,UnauthorizedAccessException {
 		String name = request.getParameter("propertyname"); //$NON-NLS-1$
 		String value = request.getParameter("propertyvalue"); //$NON-NLS-1$
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-		if (instance == null) throw new InvalidParametersException();
+		
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new InvalidParametersException();
+		
 		if (name == null || name.trim().equals("")) throw new InvalidParametersException();
 		
 		if (isPublic(request)){ 
-		  new SharedContext(instance).updateSharedData(name, value, false);
-			Notifier.notifyWidgets(request.getSession(), instance, Notifier.STATE_UPDATED);
+		    new SharedContext(authToken).updateSharedData(name, value, false);
+			Notifier.notifyWidgets(request.getSession(), authToken, Notifier.STATE_UPDATED);
 		} else {
-			updatePreference(instance, name, value);
+			updatePreference(authToken, name, value);
 		}
 	}
 
@@ -159,29 +162,11 @@ public class PropertiesController extend
 	 * @param name
 	 * @param value
 	 */
-	public static boolean updatePreference(IWidgetInstance widgetInstance, String name, String value){
-        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
+	public static boolean updatePreference(AuthToken authToken, String name, String value){
         boolean found=false;
-        IPreference preference = widgetInstance.getPreference(name);
-        if (preference != null)
-        {
-            if(value==null || value.equalsIgnoreCase("null")){  
-                widgetInstance.getPreferences().remove(preference);
-            }
-            else{    
-                preference.setValue(value);
-            }
-            found=true;
-        }
-        if(!found){  
-        	if (value != null){
-                preference = persistenceManager.newInstance(IPreference.class);
-        		preference.setName(name);
-        		preference.setValue(value);
-        		widgetInstance.getPreferences().add(preference);
-        	}
-        }  
-        persistenceManager.save(widgetInstance);
+        String preference = PreferencesService.Factory.getInstance().getPreference(authToken.toString(), name);        
+        if (preference != null) found=true;
+   	    PreferencesService.Factory.getInstance().setPreference(authToken.toString(), name, value);
         return found;
 	}
 

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java?rev=1566374&r1=1566373&r2=1566374&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/controller/WidgetInstancesController.java Sun Feb  9 19:38:50 2014
@@ -30,8 +30,8 @@ import javax.servlet.http.HttpSession;
 import org.apache.commons.configuration.Configuration;
 import org.apache.log4j.Logger;
 import org.apache.wookie.Messages;
+import org.apache.wookie.auth.AuthToken;
 import org.apache.wookie.beans.ISharedData;
-import org.apache.wookie.beans.IWidget;
 import org.apache.wookie.beans.IWidgetInstance;
 import org.apache.wookie.beans.SharedContext;
 import org.apache.wookie.beans.util.IPersistenceManager;
@@ -46,6 +46,7 @@ import org.apache.wookie.helpers.WidgetI
 import org.apache.wookie.helpers.WidgetInstanceHelper;
 import org.apache.wookie.helpers.WidgetRuntimeHelper;
 import org.apache.wookie.server.LocaleHandler;
+import org.apache.wookie.services.SharedContextService;
 import org.apache.wookie.w3c.IContent;
 import org.apache.wookie.w3c.util.LocalizationUtils;
 
@@ -196,14 +197,12 @@ public class WidgetInstancesController e
 	 * @param request
 	 * @throws InvalidParametersException
 	 */
-	public static void doStopWidget(HttpServletRequest request) throws InvalidParametersException{				
-	  IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);	
-	  if(instance!=null){
-	    lockWidgetInstance(instance);
-	    Notifier.notifyWidgets(request.getSession(), instance, Notifier.STATE_UPDATED);
-	  }else{
-	    throw new InvalidParametersException();
-	  }
+	public static void doStopWidget(HttpServletRequest request) throws InvalidParametersException{
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new InvalidParametersException();
+		// TODO
+	    // lockWidgetInstance(instance);
+	    Notifier.notifyWidgets(request.getSession(), authToken, Notifier.STATE_UPDATED);
 	}
 
 	/**
@@ -212,13 +211,11 @@ public class WidgetInstancesController e
 	 * @throws InvalidParametersException
 	 */
 	public static void doResumeWidget(HttpServletRequest request) throws InvalidParametersException{					
-	  IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);
-	  if(instance!=null){
-	    unlockWidgetInstance(instance);
-	    Notifier.notifyWidgets(request.getSession(), instance, Notifier.STATE_UPDATED);
-	  }else{
-	    throw new InvalidParametersException();
-	  }
+		AuthToken authToken = getAuthTokenFromRequest(request);
+		if (authToken == null) throw new InvalidParametersException();
+		// TODO
+	    // unlockWidgetInstance(instance);
+	    Notifier.notifyWidgets(request.getSession(), authToken, Notifier.STATE_UPDATED);
 	}
 	
 	public static boolean deleteWidgetInstance(String resourceId, HttpServletRequest request) throws InvalidParametersException, ResourceNotFoundException {
@@ -255,7 +252,6 @@ public class WidgetInstancesController e
 		String apiKey = request.getParameter("api_key"); //$NON-NLS-1$
 		String serviceType = request.getParameter("servicetype"); //$NON-NLS-1$
 		String widgetId = request.getParameter("widgetid"); //$NON-NLS-1$
-		sharedDataKey = SharedDataHelper.getInternalSharedDataKey(apiKey, widgetId, sharedDataKey);
 		HttpSession session = request.getSession(true);						
 		Messages localizedMessages = LocaleHandler.localizeMessages(request);
 					
@@ -309,28 +305,18 @@ public class WidgetInstancesController e
 	 * @throws InvalidParametersException
 	 */
 	public static void cloneSharedData(HttpServletRequest request) throws InvalidParametersException{
-		IWidgetInstance instance = WidgetInstancesController.findWidgetInstance(request);	
-		if (instance == null){
-      throw new InvalidParametersException();		
-		}
+		AuthToken authToken = getAuthTokenFromRequest(request);	
+		if (authToken == null) throw new InvalidParametersException();		
+
 		String sharedDataKey = request.getParameter("shareddatakey");	 //$NON-NLS-1$;	
 		String cloneSharedDataKey = request.getParameter("cloneshareddatakey");
 		if (sharedDataKey == null || sharedDataKey.trim().equals("") || cloneSharedDataKey == null || cloneSharedDataKey.trim().equals("")){//$NON-NLS-1$ //$NON-NLS-2$
-      throw new InvalidParametersException();
+			throw new InvalidParametersException();
 		}
-		String cloneKey = SharedDataHelper.getInternalSharedDataKey(instance, cloneSharedDataKey);
-        IWidget widget = instance.getWidget();
-        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-		for (ISharedData sharedData : new SharedContext(instance).getSharedData())
-		{
-		    ISharedData clone = persistenceManager.newInstance(ISharedData.class);
-            clone.setDkey(sharedData.getDkey());
-            clone.setDvalue(sharedData.getDvalue());
-            clone.setSharedDataKey(cloneKey);
-            persistenceManager.save(clone);
+		for (ISharedData sharedData : new SharedContext(authToken).getSharedData())
+		{	
+			SharedContextService.Factory.getInstance().updateSharedData(authToken.getApiKey(), authToken.getWidgetId(), cloneSharedDataKey, sharedData.getDkey(), sharedData.getDvalue(), false);
 		}
-		boolean ok = persistenceManager.save(widget);
-		if (!ok) throw new InvalidParametersException();
 	}
 	
 	public synchronized static void lockWidgetInstance(IWidgetInstance instance){

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/feature/wave/WaveAPIImpl.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/feature/wave/WaveAPIImpl.java?rev=1566374&r1=1566373&r2=1566374&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/feature/wave/WaveAPIImpl.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/feature/wave/WaveAPIImpl.java Sun Feb  9 19:38:50 2014
@@ -20,17 +20,18 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.wookie.Messages;
+import org.apache.wookie.auth.AuthToken;
+import org.apache.wookie.auth.AuthTokenUtils;
+import org.apache.wookie.auth.InvalidAuthTokenException;
 import org.apache.wookie.beans.IParticipant;
 import org.apache.wookie.beans.ISharedData;
-import org.apache.wookie.beans.IWidgetInstance;
 import org.apache.wookie.beans.SharedContext;
-import org.apache.wookie.beans.util.IPersistenceManager;
-import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.feature.IFeature;
 import org.apache.wookie.helpers.Notifier;
 import org.apache.wookie.helpers.ParticipantHelper;
 import org.apache.wookie.helpers.WidgetRuntimeHelper;
 import org.apache.wookie.server.LocaleHandler;
+import org.apache.wookie.services.SharedContextService;
 import org.directwebremoting.WebContextFactory;
 
 /**
@@ -91,16 +92,16 @@ public class WaveAPIImpl implements IFea
 			state.put("message", localizedMessages.getString("WidgetAPIImpl.0"));	 //$NON-NLS-1$
 			return state;
 		}
-		// check if instance is valid
-		IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-		IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
-		if (widgetInstance == null){
+		// check if token is valid
+		try {
+			AuthToken authToken = AuthTokenUtils.decryptAuthToken(id_key);
+			for (ISharedData data: SharedContextService.Factory.getInstance().getSharedData(authToken.getApiKey(), authToken.getWidgetId(), authToken.getContextId())){
+				state.put(data.getDkey(), data.getDvalue());
+			}
+			
+		} catch (InvalidAuthTokenException e) {
 			state.put("message", localizedMessages.getString("WidgetAPIImpl.0"));	 //$NON-NLS-1$
-			return state;			
-		}
-		//
-		for(ISharedData data : new SharedContext(widgetInstance).getSharedData()){
-			state.put(data.getDkey(), data.getDvalue());
+			return state;
 		}
 		return state;
 	}
@@ -152,24 +153,29 @@ public class WaveAPIImpl implements IFea
 	public String submitDelta(String id_key, Map<String,String>map){
 		HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
 		Messages localizedMessages = LocaleHandler.localizeMessages(request);
-        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-        IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
-		if(widgetInstance == null) return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
-		if(widgetInstance.isLocked()) return localizedMessages.getString("WidgetAPIImpl.2"); //$NON-NLS-1$
-		//
-		for (String key: map.keySet())
-		  new SharedContext(widgetInstance).updateSharedData(key, map.get(key), false);
-		Notifier.notifySiblings(widgetInstance);
-		return "okay"; //$NON-NLS-1$
-	}
-	
-	private SharedContext getSharedContext(String id_key){
-        IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-        IWidgetInstance widgetInstance = persistenceManager.findWidgetInstanceByIdKey(id_key);
-		if (widgetInstance != null){
-			return new SharedContext(widgetInstance);
+		
+		try {
+			AuthToken authToken = AuthTokenUtils.decryptAuthToken(id_key);
+			
+			// TODO
+			// if(widgetInstance.isLocked()) return localizedMessages.getString("WidgetAPIImpl.2"); //$NON-NLS-1$
+			for (String key: map.keySet())
+				  new SharedContext(authToken).updateSharedData(key, map.get(key), false);
+				Notifier.notifySiblings(authToken);
+				return "okay"; //$NON-NLS-1$
+		} catch (InvalidAuthTokenException e) {
+			return localizedMessages.getString("WidgetAPIImpl.0"); //$NON-NLS-1$
+		}
+
+	}
+	
+	private SharedContext getSharedContext(String id_key){		
+		try {
+			AuthToken authToken = AuthTokenUtils.decryptAuthToken(id_key);
+			return new SharedContext(authToken);
+		} catch (InvalidAuthTokenException e) {
+			return null;
 		}
-		return null;
 	}
 
 }

Modified: wookie/trunk/wookie-server/src/main/java/org/apache/wookie/server/LocalizedResourceFilter.java
URL: http://svn.apache.org/viewvc/wookie/trunk/wookie-server/src/main/java/org/apache/wookie/server/LocalizedResourceFilter.java?rev=1566374&r1=1566373&r2=1566374&view=diff
==============================================================================
--- wookie/trunk/wookie-server/src/main/java/org/apache/wookie/server/LocalizedResourceFilter.java (original)
+++ wookie/trunk/wookie-server/src/main/java/org/apache/wookie/server/LocalizedResourceFilter.java Sun Feb  9 19:38:50 2014
@@ -30,10 +30,10 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.wookie.auth.AuthToken;
+import org.apache.wookie.auth.AuthTokenUtils;
+import org.apache.wookie.auth.InvalidAuthTokenException;
 import org.apache.wookie.beans.IWidget;
-import org.apache.wookie.beans.IWidgetInstance;
-import org.apache.wookie.beans.util.IPersistenceManager;
-import org.apache.wookie.beans.util.PersistenceManagerFactory;
 import org.apache.wookie.services.WidgetMetadataService;
 import org.apache.wookie.w3c.util.LocalizationUtils;
 import org.apache.wookie.w3c.util.WidgetPackageUtils;
@@ -244,14 +244,20 @@ public class LocalizedResourceFilter imp
     //
     String idkey = ((HttpServletRequest) request).getParameter("idkey");
     if (idkey != null){
-      IPersistenceManager persistenceManager = PersistenceManagerFactory.getPersistenceManager();
-      IWidgetInstance instance = persistenceManager.findWidgetInstanceByIdKey(idkey);
-      if (instance != null) {
-        filterConfig.getServletContext().setAttribute("widget-id", instance.getWidget().getIdentifier());
-        filterConfig.getServletContext().setAttribute("widget-instance-locale", instance.getLang());
-        filterConfig.getServletContext().setAttribute("widget-default-locale", instance.getWidget().getDefaultLocale());
-        return instance.getWidget();
-      }
+    	AuthToken authToken;
+		try {
+			authToken = AuthTokenUtils.decryptAuthToken(idkey);
+	    	IWidget widget = WidgetMetadataService.Factory.getInstance().getWidget(authToken.getWidgetId());
+	        filterConfig.getServletContext().setAttribute("widget-id", widget.getIdentifier());
+	        filterConfig.getServletContext().setAttribute("widget-instance-locale", authToken.getLang());
+	        filterConfig.getServletContext().setAttribute("widget-default-locale", widget.getDefaultLocale());
+	        return widget;
+		} catch (InvalidAuthTokenException e) {
+			//
+			// A fake token was present in the request
+			//
+			return null;
+		}
     }
 
     //