Author: carlucci
Date: Wed Aug 22 14:25:49 2012
New Revision: 1376070

URL: http://svn.apache.org/viewvc?rev=1376070&view=rev
Log:
RAVE-768: OpenSocial Container Config has a hard-coded debug flag set to on

Added:
    
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTag.java
      - copied, changed from r1375609, 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/StaticContentTag.java
    
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java
Modified:
    rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
    rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag
    rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js
    
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_opensocial.js
    rave/trunk/rave-portal-resources/src/test/javascript/raveOpenSocialSpec.js

Copied: 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTag.java
 (from r1375609, 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/StaticContentTag.java)
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTag.java?p2=rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTag.java&p1=rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/StaticContentTag.java&r1=1375609&r2=1376070&rev=1376070&view=diff
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/StaticContentTag.java
 (original)
+++ 
rave/trunk/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTag.java
 Wed Aug 22 14:25:49 2012
@@ -18,38 +18,47 @@
  */
 package org.apache.rave.portal.web.tag;
 
-import org.apache.rave.service.StaticContentFetcherService;
+import org.apache.rave.portal.model.PortalPreference;
+import org.apache.rave.portal.service.PortalPreferenceService;
+import org.apache.rave.portal.web.util.PortalPreferenceKeys;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import javax.servlet.jsp.JspException;
 
 /**
- * JSP tag that renders a block of static content from the 
StaticContentFetcherService cache
+ * JSP tag that renders the value of the JavaScriptDebugMode portal preference
  */
-public class StaticContentTag extends 
AbstractContextAwareSingletonBeanDependentTag<StaticContentFetcherService> {
-    private String contentKey;
-
-    public StaticContentTag() {
-        super(StaticContentFetcherService.class);
-    }
-
-    public String getContentKey() {
-        return contentKey;
-    }
+public class JavaScriptDebugModeTag extends 
AbstractContextAwareSingletonBeanDependentTag<PortalPreferenceService> {
+    private Logger log = LoggerFactory.getLogger(getClass());
+    private final String DEBUG_MODE_OFF = "0";
+    private final String DEBUG_MODE_ON = "1";
 
-    public void setContentKey(String contentKey) {
-        this.contentKey = contentKey;
+    public JavaScriptDebugModeTag() {
+        super(PortalPreferenceService.class);
     }
 
     @Override
     public int doStartTag() throws JspException {
-        if (contentKey != null) {
-            writeString(getBean().getContent(contentKey));
+        writeString(getJavaScriptDebugModeValue());
+        return EVAL_BODY_INCLUDE;
+    }
+
+    private String getJavaScriptDebugModeValue() {
+        // default to off
+        String debugMode = DEBUG_MODE_OFF;
+        try {
+            PortalPreference debugModePref = 
getBean().getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE);
+            if (debugModePref != null && 
DEBUG_MODE_ON.equals(debugModePref.getValue())) {
+                debugMode = DEBUG_MODE_ON;
+            }
         }
-        else {
-            throw new JspException("contentKey can't be null");
+        catch(Exception e) {
+            // if there are any errors we will revert to the default value
+            log.warn("unable to determine the value of portal preference '" + 
PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE + "'.  Defaulting to '" + 
DEBUG_MODE_OFF + "'", e);
+        }
+        finally {
+            return debugMode;
         }
-        //Certain JSP implementations use tag pools.  Setting the contentKey 
to null ensures that there is no chance a given tag
-        //will accidentally re-use a contentKey if the attribute in the JSP is 
empty
-        contentKey = null;
-        return EVAL_BODY_INCLUDE;
     }
 }
\ No newline at end of file

Modified: 
rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld?rev=1376070&r1=1376069&r2=1376070&view=diff
==============================================================================
--- rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld 
(original)
+++ rave/trunk/rave-components/rave-web/src/main/resources/META-INF/rave.tld 
Wed Aug 22 14:25:49 2012
@@ -89,4 +89,10 @@
             <type>org.apache.rave.portal.web.renderer.ScriptLocation</type>
         </attribute>
     </tag>
+    <tag>
+        <description>Renders the value of the JavaScriptDebugMode portal 
preference</description>
+        <name>render-js-debug-mode</name>
+        
<tag-class>org.apache.rave.portal.web.tag.JavaScriptDebugModeTag</tag-class>
+        <body-content>JSP</body-content>
+    </tag>
 </taglib>

Added: 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java?rev=1376070&view=auto
==============================================================================
--- 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java
 (added)
+++ 
rave/trunk/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java
 Wed Aug 22 14:25:49 2012
@@ -0,0 +1,146 @@
+/*
+ * 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.tag;
+
+import org.apache.rave.portal.model.PortalPreference;
+import org.apache.rave.portal.model.impl.PortalPreferenceImpl;
+import org.apache.rave.portal.service.PortalPreferenceService;
+import org.apache.rave.portal.web.util.PortalPreferenceKeys;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.web.context.WebApplicationContext;
+
+import javax.servlet.ServletContext;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.PageContext;
+import java.io.IOException;
+
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class JavaScriptDebugModeTagTest {
+    private PortalPreferenceService service;
+    private JavaScriptDebugModeTag tag;
+    private WebApplicationContext wContext;
+    private PageContext pageContext;
+    private ServletContext servletContext;
+    private JspWriter writer;
+
+    final String DEBUG_ON = "1";
+    final String DEBUG_OFF = "0";
+
+    @Before
+    public void setup() throws JspException {
+        service = createMock(PortalPreferenceService.class);
+        wContext = createNiceMock(WebApplicationContext.class);
+        pageContext = createNiceMock(PageContext.class);
+        servletContext = createNiceMock(ServletContext.class);
+        writer = createNiceMock(JspWriter.class);
+
+        tag = new JavaScriptDebugModeTag();
+        tag.setPageContext(pageContext);
+    }
+
+    @Test
+    public void doStartTag_debugOn() throws IOException, JspException {
+        PortalPreference portalPreference = new 
PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, DEBUG_ON);
+
+        
expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+        
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+        
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+        
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+        expect(pageContext.getOut()).andReturn(writer);
+        replay(service, pageContext, servletContext, wContext, writer);
+
+        int result = tag.doStartTag();
+
+        assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+        verify(service, pageContext, servletContext, wContext, writer);
+    }
+
+    @Test
+    public void doStartTag_debugOff() throws IOException, JspException {
+        PortalPreference portalPreference = new 
PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, DEBUG_OFF);
+
+        
expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+        
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+        
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+        
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+        expect(pageContext.getOut()).andReturn(writer);
+        replay(service, pageContext, servletContext, wContext, writer);
+
+        int result = tag.doStartTag();
+
+        assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+        verify(service, pageContext, servletContext, wContext, writer);
+    }
+
+    @Test
+    public void doStartTag_exception() throws IOException, JspException {
+        PortalPreference portalPreference = new 
PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, DEBUG_OFF);
+
+        
expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andThrow(new
 RuntimeException("error"));
+        
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+        
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+        
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+        expect(pageContext.getOut()).andReturn(writer);
+        replay(service, pageContext, servletContext, wContext, writer);
+
+        int result = tag.doStartTag();
+
+        assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+        verify(service, pageContext, servletContext, wContext, writer);
+    }
+
+    @Test
+    public void doStartTag_nullPreference() throws IOException, JspException {
+        PortalPreference portalPreference = null;
+
+        
expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+        
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+        
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+        
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+        expect(pageContext.getOut()).andReturn(writer);
+        replay(service, pageContext, servletContext, wContext, writer);
+
+        int result = tag.doStartTag();
+
+        assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+        verify(service, pageContext, servletContext, wContext, writer);
+    }
+
+    @Test
+    public void doStartTag_emptyPreference() throws IOException, JspException {
+        PortalPreference portalPreference = new 
PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, "");
+
+        
expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+        
expect(pageContext.getServletContext()).andReturn(servletContext).anyTimes();
+        
expect(servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)).andReturn(wContext).anyTimes();
+        
expect(wContext.getBean(PortalPreferenceService.class)).andReturn(service).anyTimes();
+        expect(pageContext.getOut()).andReturn(writer);
+        replay(service, pageContext, servletContext, wContext, writer);
+
+        int result = tag.doStartTag();
+
+        assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
+        verify(service, pageContext, servletContext, wContext, writer);
+    }
+}

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag?rev=1376070&r1=1376069&r2=1376070&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/WEB-INF/tags/rave_js.tag 
Wed Aug 22 14:25:49 2012
@@ -23,12 +23,11 @@
 <portal:render-script location="${'AFTER_LIB'}"/>
 <%-- local rave scripts --%>
 <portal:render-script location="${'BEFORE_RAVE'}"/>
+<%-- get the javaScriptDebugMode portal preference value --%>
+<c:set var="jsDebugMode"><portal:render-js-debug-mode /></c:set>
 <%-- check to see if the javaScriptDebugMode is on, if so render the 
individual JS files, otherwise render the minified single file --%>
 <c:choose>
-    <c:when test="${not empty portalSettings and not empty 
portalSettings['javaScriptDebugMode'] and 
portalSettings['javaScriptDebugMode'].value == '0'}">
-        <script src="<spring:url 
value="/static/script/rave_all.min.js"/>"></script>
-    </c:when>
-    <c:otherwise>
+    <c:when test="${jsDebugMode == '1'}">
         <script src="<spring:url value="/static/script/rave.js"/>"></script>
         <script src="<spring:url 
value="/static/script/rave_api.js"/>"></script>
         <script src="<spring:url 
value="/static/script/rave_opensocial.js"/>"></script>
@@ -38,17 +37,23 @@
         <script src="<spring:url 
value="/static/script/rave_person_profile.js"/>"></script>
         <script src="<spring:url 
value="/static/script/rave_store.js"/>"></script>
         <script src="<spring:url 
value="/static/script/rave_admin.js"/>"></script>
+    </c:when>
+    <c:otherwise>
+        <script src="<spring:url 
value="/static/script/rave_all.min.js"/>"></script>
     </c:otherwise>
 </c:choose>
 <script src="<spring:url 
value="/app/messagebundle/rave_client_messages.js"/>"></script>
 <portal:render-script location="${'AFTER_RAVE'}"/>
 <%-- common javascript to execute on all pages --%>
 <script>
+    <%-- set the web application context --%>
     rave.setContext("<spring:url value="/app/" />");
+    <%-- set the javascript debug mode so js code has access to it --%>
+    rave.setJavaScriptDebugMode(<c:out value="${jsDebugMode}"/>);
+    <%-- set the current page viewer --%>
     <sec:authorize access="isAuthenticated()">
         <sec:authentication property="principal.username" scope="request" 
var="username"/>
         <sec:authentication property="principal.id" scope="request" var="id"/>
-        rave.setPageViewer({username:"${username}",
-            id:"${id}"});
+        rave.setPageViewer({username:"${username}", id:"${id}"});
     </sec:authorize>
 </script>

Modified: rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js?rev=1376070&r1=1376069&r2=1376070&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js 
(original)
+++ rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave.js Wed 
Aug 22 14:25:49 2012
@@ -34,7 +34,8 @@ var rave = rave || (function () {
         username: "Unknown",
         id:-1
     };
-
+    // JS debug mode is off by default
+    var javaScriptDebugMode = 0;
     var onWidgetsInitializedHandlers = [];
     var onProvidersInitializedHandlers = [];
     var onUIInitializedHandlers = [];
@@ -1082,6 +1083,14 @@ var rave = rave || (function () {
         return context;
     }
 
+    function setJavaScriptDebugMode(debugMode) {
+        javaScriptDebugMode = debugMode;
+    }
+
+    function getJavaScriptDebugMode(){
+        return javaScriptDebugMode;
+    }
+
     function setPageViewer(viewer) {
         pageViewer = viewer;
     }
@@ -1288,6 +1297,20 @@ var rave = rave || (function () {
         getContext:getContext,
 
         /**
+         * Gets the value of the JavaScriptDebugMode flag
+         * 0 = off
+         * 1 = on
+         */
+        getJavaScriptDebugMode: getJavaScriptDebugMode,
+
+        /**
+         * Sets the value of the JavaScriptDebugMode flag
+         * 0 = off
+         * 1 = on
+         */
+        setJavaScriptDebugMode: setJavaScriptDebugMode,
+
+        /**
          * Sets the authenticated page viewer for the Rave web application
          *
          * @param viewer an object representing the authenticated user viewing 
the page {username:"bob", id:"1"}

Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_opensocial.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_opensocial.js?rev=1376070&r1=1376069&r2=1376070&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_opensocial.js
 (original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_opensocial.js
 Wed Aug 22 14:25:49 2012
@@ -52,7 +52,7 @@ rave.opensocial = rave.opensocial || (fu
         //Create the common container instance.
         var containerConfig = {};
         containerConfig[osapi.container.ServiceConfig.API_PATH] = "/rpc";
-        containerConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = "1";
+        containerConfig[osapi.container.ContainerConfig.RENDER_DEBUG] = 
rave.getJavaScriptDebugMode();
         container = new osapi.container.Container(containerConfig);
     }
 

Modified: 
rave/trunk/rave-portal-resources/src/test/javascript/raveOpenSocialSpec.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/test/javascript/raveOpenSocialSpec.js?rev=1376070&r1=1376069&r2=1376070&view=diff
==============================================================================
--- rave/trunk/rave-portal-resources/src/test/javascript/raveOpenSocialSpec.js 
(original)
+++ rave/trunk/rave-portal-resources/src/test/javascript/raveOpenSocialSpec.js 
Wed Aug 22 14:25:49 2012
@@ -94,7 +94,7 @@ describe("Rave OpenSocial", function() {
         it("initializes the OpenSocial container machinery", function() {
             rave.opensocial.init();
             expect(container.args()[0]).toEqual("/rpc");
-            expect(container.args()[1]).toEqual("1");
+            expect(container.args()[1]).toEqual(0);
         });
 
         it("Initializes the RPC Hooks Correctly", function() {


Reply via email to