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() {