Author: carlucci
Date: Wed Jul 18 16:36:19 2012
New Revision: 1363010

URL: http://svn.apache.org/viewvc?rev=1363010&view=rev
Log:
RAVE-624: Shindig common container is hard coded to debug script.  Patch 
supplied by Aaron Gooch

Added:
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeEventListener.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeSaveEvent.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEvent.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventListener.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventManager.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
Removed:
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
Modified:
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceService.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/ScriptManager.java
    
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultScriptManager.java
    
rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
    
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceServiceTest.java
    
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/ScriptManagerTest.java
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
    
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/config/OpenSocialEnvironment.java
    
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
    
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
    
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java

Added: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeEventListener.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeEventListener.java?rev=1363010&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeEventListener.java
 (added)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeEventListener.java
 Wed Jul 18 16:36:19 2012
@@ -0,0 +1,24 @@
+/*
+ * 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.
+ */
+package org.apache.rave.portal.events;
+
+public interface PortalPreferenceJavascriptDebugModeEventListener extends 
RaveEventListener {
+
+
+}

Added: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeSaveEvent.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeSaveEvent.java?rev=1363010&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeSaveEvent.java
 (added)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/PortalPreferenceJavascriptDebugModeSaveEvent.java
 Wed Jul 18 16:36:19 2012
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.rave.portal.events;
+
+import java.util.EventObject;
+
+public class PortalPreferenceJavascriptDebugModeSaveEvent extends EventObject 
implements RaveEvent {
+
+    public PortalPreferenceJavascriptDebugModeSaveEvent(Object source) {
+        super(source);
+    }
+    
+    
+}

Added: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEvent.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEvent.java?rev=1363010&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEvent.java
 (added)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEvent.java
 Wed Jul 18 16:36:19 2012
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+package org.apache.rave.portal.events;
+
+public interface RaveEvent {
+}

Added: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventListener.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventListener.java?rev=1363010&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventListener.java
 (added)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventListener.java
 Wed Jul 18 16:36:19 2012
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+
+package org.apache.rave.portal.events;
+
+public interface RaveEventListener {
+
+    void handleEvent(RaveEvent event);
+}

Added: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventManager.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventManager.java?rev=1363010&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventManager.java
 (added)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/events/RaveEventManager.java
 Wed Jul 18 16:36:19 2012
@@ -0,0 +1,65 @@
+/*
+ * 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.
+ */
+package org.apache.rave.portal.events;
+
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+@Component
+public class RaveEventManager  {
+
+    private final Map<Class<? extends RaveEvent>, Set<RaveEventListener>> 
eventListenerMap;
+
+    public RaveEventManager() {
+        this.eventListenerMap = new Hashtable<Class<? extends RaveEvent>, 
Set<RaveEventListener>> ();
+    }
+
+    public void addListener(Class<? extends RaveEvent> event, 
RaveEventListener listener) {
+        synchronized (eventListenerMap){
+            if (eventListenerMap.containsKey(event)){
+                Set<RaveEventListener> eventListeners = 
eventListenerMap.get(event);
+                if(eventListeners == null){
+                    eventListeners = new HashSet<RaveEventListener>();
+                }
+                eventListeners.add(listener);
+            } else {
+                Set<RaveEventListener> eventListeners = new 
HashSet<RaveEventListener>();
+                eventListeners.add(listener);
+                eventListenerMap.put(event, eventListeners);
+            }
+        }
+    }
+
+    public void removeListener(Class<? extends RaveEvent> event, 
RaveEventListener listener) {
+        synchronized (eventListenerMap){
+            if(eventListenerMap.containsKey(event))
+                eventListenerMap.get(event).remove(listener);
+        }
+    }
+
+    public synchronized void fireEvent(RaveEvent event){
+        Set<RaveEventListener> listeners = 
eventListenerMap.get(event.getClass());
+        if (listeners != null && !listeners.isEmpty()){
+            for (RaveEventListener listener : 
eventListenerMap.get(event.getClass())) {
+                listener.handleEvent(event);
+            }
+        }
+    }
+}

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceService.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceService.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceService.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceService.java
 Wed Jul 18 16:36:19 2012
@@ -19,10 +19,13 @@
 
 package org.apache.rave.portal.service.impl;
 
+import 
org.apache.rave.portal.events.PortalPreferenceJavascriptDebugModeSaveEvent;
+import org.apache.rave.portal.events.RaveEventManager;
 import org.apache.rave.portal.model.PortalPreference;
 import org.apache.rave.portal.model.impl.PortalPreferenceImpl;
 import org.apache.rave.portal.repository.PortalPreferenceRepository;
 import org.apache.rave.portal.service.PortalPreferenceService;
+import org.apache.rave.portal.web.util.PortalPreferenceKeys;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -39,10 +42,12 @@ import java.util.Map;
 public class DefaultPortalPreferenceService implements PortalPreferenceService 
{
 
     private final PortalPreferenceRepository repository;
+    private final RaveEventManager eventManager;
 
     @Autowired
-    public DefaultPortalPreferenceService(PortalPreferenceRepository 
repository) {
+    public DefaultPortalPreferenceService(PortalPreferenceRepository 
repository, RaveEventManager manager) {
         this.repository = repository;
+        this.eventManager = manager;
     }
 
     @Override
@@ -85,5 +90,8 @@ public class DefaultPortalPreferenceServ
     @Transactional
     public void savePreference(PortalPreference preference) {
         repository.save(preference);
+        if 
(preference.getKey().equals(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE))  {
+            eventManager.fireEvent(new 
PortalPreferenceJavascriptDebugModeSaveEvent(this));
+        }
     }
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/ScriptManager.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/ScriptManager.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/ScriptManager.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/ScriptManager.java
 Wed Jul 18 16:36:19 2012
@@ -39,17 +39,19 @@ public interface ScriptManager {
 
     /**
      * Registers a global script block for inclusion in every page
+     * @param key
      * @param script the string representation of the script block
      * @param location the location in the page to render the script
      */
-    void registerScriptBlock(String script, ScriptLocation location);
+    void registerScriptBlock(String key, String script, ScriptLocation 
location);
 
     /**
      * Registers a script block for inclusion in the page
+     * @param key
      * @param script the string representation of the script block
      * @param location the location in the page to render the script
      * @param scope indicates the scope under which this script should be 
registered
      * @param context the context under which to register the script
      */
-    void registerScriptBlock(String script, ScriptLocation location, 
RenderScope scope, RenderContext context);
+    void registerScriptBlock(String key, String script, ScriptLocation 
location, RenderScope scope, RenderContext context);
 }

Modified: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultScriptManager.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultScriptManager.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultScriptManager.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/renderer/impl/DefaultScriptManager.java
 Wed Jul 18 16:36:19 2012
@@ -37,74 +37,79 @@ import java.util.*;
 @Service
 public class DefaultScriptManager implements ScriptManager{
     private static final String KEY = "KEY";
-    private final Map<ScriptLocation, List<String>> scriptRenderers;
+    private final Map<ScriptLocation, Map<String, String>> scriptRenderers;
 
     public DefaultScriptManager() {
-        this.scriptRenderers = new HashMap<ScriptLocation, List<String>>();
+        this.scriptRenderers = new HashMap<ScriptLocation, Map<String, 
String>>();
     }
 
     @Override
     public List<String> getScriptBlocks(ScriptLocation location, RenderContext 
context) {
-        List<String> combined = new LinkedList<String>();
+        Map<String, String> combined = new LinkedHashMap<String, String>();
         getAndAdd(location, combined, scriptRenderers);
         getAndAdd(location, combined, getOrCreateScriptMap(context));
-        return combined;
+        List<String> scriptContent = new ArrayList<String>();
+        for(Map.Entry<String, String> entry: combined.entrySet()){
+            scriptContent.add(entry.getValue());
+        }
+        return scriptContent;
     }
 
     @Override
-    public void registerScriptBlock(String script, ScriptLocation location) {
-        addScriptToMap(script, location, scriptRenderers);
+    public void registerScriptBlock(String key, String script, ScriptLocation 
location) {
+        addScriptToMap(key, script, location, scriptRenderers);
     }
 
     @Override
-    public void registerScriptBlock(String script, ScriptLocation location, 
RenderScope scope, RenderContext context) {
+    public void registerScriptBlock(String key, String script, ScriptLocation 
location, RenderScope scope, RenderContext context) {
         switch(scope) {
             case GLOBAL:
-                registerScriptBlock(script, location);
+                registerScriptBlock(key, script, location);
                 break;
             case CURRENT_REQUEST:
-                addScriptToContext(script, location, context);
+                addScriptToContext(key, script, location, context);
                 break;
             default:
                 throw new NotSupportedException("The scope, " + scope + " , is 
not supported by the script manager");
         }
     }
 
-    private static void getAndAdd(ScriptLocation location, List<String> 
output, Map<ScriptLocation, List<String>> map) {
-        List<String> scripts = map.get(location);
+    private static void getAndAdd(ScriptLocation location, Map<String, String> 
output, Map<ScriptLocation, Map<String, String>> map) {
+        Map<String, String> scripts = map.get(location);
         if(scripts != null) {
-            output.addAll(scripts);
+            output.putAll(scripts);
         }
     }
 
-    private static void addScriptToContext(String script, ScriptLocation 
location, RenderContext context) {
-        Map<ScriptLocation, List<String>> scriptMap = 
getOrCreateScriptMap(context);
-        addScriptToMap(script, location, scriptMap);
+    private static void addScriptToContext(String key, String script, 
ScriptLocation location, RenderContext context) {
+        Map<ScriptLocation, Map<String,String>> scriptMap = 
getOrCreateScriptMap(context);
+        addScriptToMap(key, script, location, scriptMap);
     }
 
 
-    private static void addScriptToMap(String script, ScriptLocation location, 
Map<ScriptLocation, List<String>> scripts) {
+    private static void addScriptToMap(String key, String script, 
ScriptLocation location, Map<ScriptLocation, Map<String, String>> scripts) {
         if (!scripts.containsKey(location)) {
-            addListForLocation(location, scripts);
+            addMapForLocation(location, scripts);
         }
-        scripts.get(location).add(script);
+        scripts.get(location).put(key, script);
     }
 
     //Lock on the instance of hte map to ensure that only one put per location 
takes place
     @Synchronized(discriminator = "'SM_#map.toString()'", id = "#location")
-    private static void addListForLocation(ScriptLocation location, 
Map<ScriptLocation, List<String>> map) {
+    private static void addMapForLocation(ScriptLocation location, 
Map<ScriptLocation, Map<String, String>> map) {
         if (!map.containsKey(location)) {
-            map.put(location, new ArrayList<String>());
+            map.put(location, new HashMap<String, String>());
         }
     }
+    
     @SuppressWarnings("unchecked")
-    private static Map<ScriptLocation, List<String>> 
getOrCreateScriptMap(RenderContext context) {
+    private static Map<ScriptLocation, Map<String,String>> 
getOrCreateScriptMap(RenderContext context) {
         if(context == null) {
             throw new IllegalArgumentException("Cannot have a null render 
context");
         }
-        Map<ScriptLocation, List<String>> scriptMap = (Map<ScriptLocation, 
List<String>>)context.getProperties().get(KEY);
+        Map<ScriptLocation, Map<String,String>> scriptMap = 
(Map<ScriptLocation, Map<String, String>>)context.getProperties().get(KEY);
         if(scriptMap == null) {
-            scriptMap = new HashMap<ScriptLocation, List<String>>();
+            scriptMap = new HashMap<ScriptLocation, Map<String,String>>();
             context.getProperties().put(KEY, scriptMap);
         }
         return scriptMap;

Added: 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java?rev=1363010&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
 (added)
+++ 
rave/trunk/rave-components/rave-core/src/main/java/org/apache/rave/portal/web/util/PortalPreferenceKeys.java
 Wed Jul 18 16:36:19 2012
@@ -0,0 +1,30 @@
+/*
+ * 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.
+ */
+package org.apache.rave.portal.web.util;
+
+/**
+ * Utility class for {@link org.apache.rave.portal.model.PortalPreference} keys
+ */
+public final class PortalPreferenceKeys {
+    private PortalPreferenceKeys() { }
+
+    public static final String TITLE_SUFFIX = "titleSuffix";
+    public static final String PAGE_SIZE = "pageSize";
+    public static final String JAVASCRIPT_DEBUG_MODE = "javaScriptDebugMode";
+}

Modified: 
rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/main/resources/org/apache/rave/core-applicationContext.xml
 Wed Jul 18 16:36:19 2012
@@ -45,6 +45,7 @@
 
     <!-- rave-core component base-package scan -->
     <context:component-scan base-package="org.apache.rave.portal.model"/>
+    <context:component-scan base-package="org.apache.rave.portal.events"/>
     <context:component-scan base-package="org.apache.rave.portal.repository"/>
     <context:component-scan base-package="org.apache.rave.portal.service"/>
     <context:component-scan base-package="org.apache.rave.portal.security"/>
@@ -149,4 +150,4 @@
         </property>
     </bean>
     -->
-</beans>
\ No newline at end of file
+</beans>

Modified: 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceServiceTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceServiceTest.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceServiceTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/service/impl/DefaultPortalPreferenceServiceTest.java
 Wed Jul 18 16:36:19 2012
@@ -19,6 +19,7 @@
 
 package org.apache.rave.portal.service.impl;
 
+import org.apache.rave.portal.events.RaveEventManager;
 import org.apache.rave.portal.model.PortalPreference;
 import org.apache.rave.portal.model.impl.PortalPreferenceImpl;
 import org.apache.rave.portal.repository.PortalPreferenceRepository;
@@ -41,11 +42,13 @@ public class DefaultPortalPreferenceServ
 
     PortalPreferenceService service;
     PortalPreferenceRepository repository;
+    RaveEventManager manager;
 
     @Before
     public void setUp() throws Exception {
         repository = createMock(PortalPreferenceRepository.class);
-        service = new DefaultPortalPreferenceService(repository);
+        manager = createMock(RaveEventManager.class);
+        service = new DefaultPortalPreferenceService(repository, manager);
     }
 
     @Test
@@ -109,6 +112,7 @@ public class DefaultPortalPreferenceServ
 
         expect(repository.getByKey(key)).andReturn(null).once();
         expect(repository.save(fooBar)).andReturn(fooBarSaved).once();
+
         replay(repository);
         service.savePreference(key, value);
         verify(repository);

Modified: 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/ScriptManagerTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/ScriptManagerTest.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/ScriptManagerTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-core/src/test/java/org/apache/rave/portal/web/renderer/ScriptManagerTest.java
 Wed Jul 18 16:36:19 2012
@@ -36,6 +36,8 @@ public class ScriptManagerTest {
     
     public static final String SCRIPT_1 = "FOO";
     public static final String SCRIPT_2 = "BAR";
+    public static final String SCRIPT_1_KEY = "f";
+    public static final String SCRIPT_2_KEY = "b";
     
     private ScriptManager manager;
     private RenderContext context;
@@ -51,7 +53,7 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_simple() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(1)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -59,7 +61,7 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_simpleFullSignature() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE, 
RenderScope.GLOBAL, context);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE, RenderScope.GLOBAL, context);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(1)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -67,8 +69,8 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_list() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE);
-        manager.registerScriptBlock(SCRIPT_2, ScriptLocation.BEFORE_RAVE);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE);
+        manager.registerScriptBlock(SCRIPT_2_KEY, SCRIPT_2, 
ScriptLocation.BEFORE_RAVE);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(2)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -77,8 +79,8 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_multi() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE);
-        manager.registerScriptBlock(SCRIPT_2, ScriptLocation.AFTER_RAVE);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE);
+        manager.registerScriptBlock(SCRIPT_2_KEY, SCRIPT_2, 
ScriptLocation.AFTER_RAVE);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(1)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -89,7 +91,7 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_simpleInContext() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE, 
RenderScope.CURRENT_REQUEST, context);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE, RenderScope.CURRENT_REQUEST, context);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(1)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -97,8 +99,8 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_listInContext() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE, 
RenderScope.CURRENT_REQUEST, context);
-        manager.registerScriptBlock(SCRIPT_2, ScriptLocation.BEFORE_RAVE, 
RenderScope.CURRENT_REQUEST, context);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE, RenderScope.CURRENT_REQUEST, context);
+        manager.registerScriptBlock(SCRIPT_2_KEY, SCRIPT_2, 
ScriptLocation.BEFORE_RAVE, RenderScope.CURRENT_REQUEST, context);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(2)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -107,8 +109,8 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_multiInContext() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE, 
RenderScope.CURRENT_REQUEST, context);
-        manager.registerScriptBlock(SCRIPT_2, ScriptLocation.AFTER_RAVE, 
RenderScope.CURRENT_REQUEST, context);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE, RenderScope.CURRENT_REQUEST, context);
+        manager.registerScriptBlock(SCRIPT_2_KEY, SCRIPT_2, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(1)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));
@@ -119,8 +121,8 @@ public class ScriptManagerTest {
 
     @Test
     public void registerBlockAndRetrieve_combined() {
-        manager.registerScriptBlock(SCRIPT_1, ScriptLocation.BEFORE_RAVE, 
RenderScope.GLOBAL, context);
-        manager.registerScriptBlock(SCRIPT_2, ScriptLocation.BEFORE_RAVE, 
RenderScope.CURRENT_REQUEST, context);
+        manager.registerScriptBlock(SCRIPT_1_KEY, SCRIPT_1, 
ScriptLocation.BEFORE_RAVE, RenderScope.GLOBAL, context);
+        manager.registerScriptBlock(SCRIPT_2_KEY, SCRIPT_2, 
ScriptLocation.BEFORE_RAVE, RenderScope.CURRENT_REQUEST, context);
         List<String> scriptBlocks = 
manager.getScriptBlocks(ScriptLocation.BEFORE_RAVE, context);
         assertThat(scriptBlocks.size(), is(equalTo(2)));
         assertThat(scriptBlocks.get(0), is(equalTo(SCRIPT_1)));

Modified: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/RegionWidgetTag.java
 Wed Jul 18 16:36:19 2012
@@ -34,6 +34,8 @@ import javax.servlet.jsp.JspException;
 public class RegionWidgetTag extends 
AbstractContextAwareSingletonBeanDependentTag<RenderService> {
 
     private RegionWidget regionWidget;
+    
+    private static final String REGISTER_DISABLED_WIDGET_KEY = 
"disabledRegisterWidget";
 
     // Script block for disabled gadget
     private static final String DISABLED_SCRIPT_BLOCK =
@@ -72,7 +74,8 @@ public class RegionWidgetTag extends Abs
                         
StringEscapeUtils.escapeJavaScript(regionWidget.getWidget().getDisableRenderingMessage()),
                         regionWidget.isCollapsed(),
                         regionWidget.getWidget().getId());
-                scriptManager.registerScriptBlock(widgetScript, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, getContext());
+                String key = REGISTER_DISABLED_WIDGET_KEY + "-" + 
regionWidget.getWidget().getId();
+                scriptManager.registerScriptBlock(key, widgetScript, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, getContext());
             } else {
                 writeString(getBean().render(regionWidget, getContext()));
             }

Modified: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/RegionWidgetTagTest.java
 Wed Jul 18 16:36:19 2012
@@ -181,7 +181,7 @@ public class RegionWidgetTagTest {
         strings.add(WIDGET_TYPE);
 
         expect(service.getSupportedWidgetTypes()).andReturn(strings);
-        scriptManager.registerScriptBlock(anyObject(String.class), 
anyObject(ScriptLocation.AFTER_RAVE.getClass()), 
anyObject(RenderScope.CURRENT_REQUEST.getClass()), 
anyObject(RenderContext.class));
+        scriptManager.registerScriptBlock(anyObject(String.class), 
anyObject(String.class), anyObject(ScriptLocation.AFTER_RAVE.getClass()), 
anyObject(RenderScope.CURRENT_REQUEST.getClass()), 
anyObject(RenderContext.class));
         expectLastCall();
         replay(service, scriptManager);
 

Modified: 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/config/OpenSocialEnvironment.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/config/OpenSocialEnvironment.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/config/OpenSocialEnvironment.java
 (original)
+++ 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/config/OpenSocialEnvironment.java
 Wed Jul 18 16:36:19 2012
@@ -19,6 +19,14 @@
 
 package org.apache.rave.provider.opensocial.config;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import 
org.apache.rave.portal.events.PortalPreferenceJavascriptDebugModeEventListener;
+import 
org.apache.rave.portal.events.PortalPreferenceJavascriptDebugModeSaveEvent;
+import org.apache.rave.portal.events.RaveEvent;
+import org.apache.rave.portal.events.RaveEventManager;
+import org.apache.rave.portal.service.PortalPreferenceService;
+import org.apache.rave.portal.web.util.PortalPreferenceKeys;
 import org.apache.rave.portal.web.renderer.ScriptLocation;
 import org.apache.rave.portal.web.renderer.ScriptManager;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,10 +39,16 @@ import javax.annotation.PostConstruct;
  * Environment variables for OpenSocial calls from the portal (to Shindig)
  */
 @Component
-public class OpenSocialEnvironment {
+public class OpenSocialEnvironment implements 
PortalPreferenceJavascriptDebugModeEventListener{
 
-    private static final String SCRIPT_TEMPLATE = "<script 
src=\"%1$s://%2$s%3$s/js/container:pubsub-2:open-views.js?c=1&amp;container=default&amp;debug=1\"></script>";
+    private static final Log log = 
LogFactory.getLog(OpenSocialEnvironment.class);
+    
+    private static final String CONTAINER_JS_KEY = "containerJs";
+    private static final String SCRIPT_RENDER_DEBUG_ON = "1";
+    private final static String SCRIPT_TEMPLATE = "<script 
src=\"%1$s://%2$s%3$s/js/container:pubsub-2:open-views.js?c=1&amp;container=default&amp;debug=%4$s\"></script>";
 
+    private String currentDebugMode;
+    
     private ScriptManager scriptManager;
 
     /**
@@ -50,9 +64,22 @@ public class OpenSocialEnvironment {
      */
     private String engineGadgetPath;
 
+    @Autowired
+    RaveEventManager eventManager;
+
+    @Autowired
+    PortalPreferenceService portalPreferenceService;
+    
     @PostConstruct
     public void init() {
-        scriptManager.registerScriptBlock(String.format(SCRIPT_TEMPLATE, 
engineProtocol, engineRoot, engineGadgetPath), ScriptLocation.BEFORE_RAVE);
+        
eventManager.addListener(PortalPreferenceJavascriptDebugModeSaveEvent.class, 
this);
+        try{
+            
this.setCurrentDebugMode(portalPreferenceService.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE).getValue());
+        } catch (Exception e){
+            log.warn("Caught exception getting preference for JS debug mode. 
Setting JS to debug mode to 'debug on'.");
+            this.setCurrentDebugMode(SCRIPT_RENDER_DEBUG_ON);
+        }
+        registerScriptBlock();
     }
 
     public ScriptManager getScriptManager() {
@@ -90,4 +117,27 @@ public class OpenSocialEnvironment {
     public String getEngineGadgetPath() {
         return engineGadgetPath;
     }
+
+    public String getCurrentDebugMode() {
+        return currentDebugMode;
+    }
+
+    public void setCurrentDebugMode(String currentDebugMode) {
+        this.currentDebugMode = currentDebugMode;
+    }
+
+    @Override
+    public void handleEvent(RaveEvent event) {
+        if(event instanceof PortalPreferenceJavascriptDebugModeSaveEvent){
+            
this.setCurrentDebugMode(String.valueOf(portalPreferenceService.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE).getValue()));
+            log.debug("found event to change debug mode of JS new value =" + 
this.getCurrentDebugMode());
+            registerScriptBlock();
+        } else {
+            log.warn("Unhandled event received. " + event.getClass()); 
+        }
+    }
+
+    private void registerScriptBlock(){
+        scriptManager.registerScriptBlock(CONTAINER_JS_KEY, 
String.format(SCRIPT_TEMPLATE, engineProtocol, engineRoot, engineGadgetPath, 
this.getCurrentDebugMode()), ScriptLocation.BEFORE_RAVE);
+    }
 }

Modified: 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
 (original)
+++ 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/main/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRenderer.java
 Wed Jul 18 16:36:19 2012
@@ -46,6 +46,8 @@ import org.springframework.stereotype.Co
 public class OpenSocialWidgetRenderer implements RegionWidgetRenderer {
     private static Logger logger = 
LoggerFactory.getLogger(OpenSocialWidgetRenderer.class);
 
+    public static final String REGISTER_WIDGET_KEY = 
"openSocialRegisterWidget";
+
     private OpenSocialService openSocialService;
     private SecurityTokenService securityTokenService;
     private ScriptManager scriptManager;
@@ -95,7 +97,8 @@ public class OpenSocialWidgetRenderer im
         }
 
         String widgetScript = getWidgetScript(item);
-        scriptManager.registerScriptBlock(widgetScript, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
+        String key = REGISTER_WIDGET_KEY  + (item.getWidget().getId() == null 
? "" :  "-" + item.getWidget().getId());
+        scriptManager.registerScriptBlock(key, widgetScript, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
         logger.debug("Gadget Script Data: " + widgetScript);
 
         return String.format(MARKUP, item.getId());
@@ -126,4 +129,4 @@ public class OpenSocialWidgetRenderer im
                 item.isLocked(),
                 item.isHideChrome());
     }
-}
\ No newline at end of file
+}

Modified: 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
 (original)
+++ 
rave/trunk/rave-providers/rave-opensocial-provider/rave-opensocial-client/src/test/java/org/apache/rave/provider/opensocial/web/renderer/OpenSocialWidgetRendererTest.java
 Wed Jul 18 16:36:19 2012
@@ -111,7 +111,8 @@ public class OpenSocialWidgetRendererTes
         
expect(securityTokenService.getEncryptedSecurityToken(rw)).andReturn(VALID_SECURITY_TOKEN);
         replay(securityTokenService);
 
-        scriptManager.registerScriptBlock(markup, ScriptLocation.AFTER_RAVE, 
RenderScope.CURRENT_REQUEST, renderContext);
+        String key = 
OpenSocialWidgetRenderer.REGISTER_WIDGET_KEY+"-"+w.getId();
+        scriptManager.registerScriptBlock(key, markup, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, renderContext);
         expectLastCall();
         replay(scriptManager);
 
@@ -141,7 +142,7 @@ public class OpenSocialWidgetRendererTes
             " widgetId: null," +
             " locked: false, hideChrome: false});</script>";
 
-        scriptManager.registerScriptBlock(markup, ScriptLocation.AFTER_RAVE, 
RenderScope.CURRENT_REQUEST, null);
+        
scriptManager.registerScriptBlock(OpenSocialWidgetRenderer.REGISTER_WIDGET_KEY, 
markup, ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, null);
         expectLastCall();
         replay(scriptManager);
         String result = renderer.render(rw, null);
@@ -159,4 +160,4 @@ public class OpenSocialWidgetRendererTes
 
         renderer.render(rw, null);
     }
-}
\ No newline at end of file
+}

Modified: 
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java?rev=1363010&r1=1363009&r2=1363010&view=diff
==============================================================================
--- 
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
 (original)
+++ 
rave/trunk/rave-providers/rave-w3c-provider/src/main/java/org/apache/rave/provider/w3c/web/renderer/W3cWidgetRenderer.java
 Wed Jul 18 16:36:19 2012
@@ -48,6 +48,8 @@ import static org.apache.rave.provider.w
 @Component
 public class W3cWidgetRenderer implements RegionWidgetRenderer {
     private static Logger logger = 
LoggerFactory.getLogger(W3cWidgetRenderer.class);
+    
+    private static final String REGISTER_WIDGET_KEY = "wookieRegisterWidget";
 
     private final WidgetProviderService widgetService;
     private final UserService userService;
@@ -85,7 +87,7 @@ public class W3cWidgetRenderer implement
     /**
      * Renders a {@link org.apache.rave.portal.model.RegionWidget} as HTML 
markup
      *
-     * @param item RegionWidget to render
+     * @param item RegionWidgetImpl to render
      * @param context
      * @return valid HTML markup
      */
@@ -97,7 +99,8 @@ public class W3cWidgetRenderer implement
         }
 
         String widgetScript = getWidgetScript(item);
-        scriptManager.registerScriptBlock(widgetScript, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
+        String key = REGISTER_WIDGET_KEY + "-" + widget.getId();
+        scriptManager.registerScriptBlock(key, widgetScript, 
ScriptLocation.AFTER_RAVE, RenderScope.CURRENT_REQUEST, context);
         logger.debug("Gadget Script Data: " + widgetScript);
 
         return String.format(MARKUP, item.getId());


Reply via email to