You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by mf...@apache.org on 2012/08/27 17:10:30 UTC
svn commit: r1377707 - in /rave/branches/model-split:
rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/
rave-components/rave-web/src/main/resources/META-INF/
rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/ ra...
Author: mfranklin
Date: Mon Aug 27 15:10:30 2012
New Revision: 1377707
URL: http://svn.apache.org/viewvc?rev=1377707&view=rev
Log:
Added tag to support querying people by Id at render time (RAVE-729)
Added:
rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java
rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/PersonTagTest.java
- copied, changed from r1377675, rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java
Modified:
rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld
rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/categories.jsp
rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp
Added: rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java?rev=1377707&view=auto
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java (added)
+++ rave/branches/model-split/rave-components/rave-web/src/main/java/org/apache/rave/portal/web/tag/PersonTag.java Mon Aug 27 15:10:30 2012
@@ -0,0 +1,89 @@
+package org.apache.rave.portal.web.tag;
+
+import org.apache.rave.portal.model.Person;
+import org.apache.rave.portal.repository.PersonRepository;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.PageContext;
+
+/**
+ * Adds the requested person to the requested scope for access via JSPs
+ */
+public class PersonTag extends AbstractContextAwareSingletonBeanDependentTag<PersonRepository> {
+
+ private String var;
+
+ private String id;
+ private int scope;
+ private boolean scopeSpecified;
+
+ public PersonTag() {
+ super(PersonRepository.class);
+ this.init();
+ }
+
+ @Override
+ public int doStartTag() throws JspException {
+ return super.doStartTag();
+ }
+
+ @Override
+ public int doEndTag() throws JspException {
+ this.updateContext(this.getBean().get(id));
+ this.init();
+ return EVAL_PAGE;
+ }
+
+ public String getVar() {
+ return var;
+ }
+
+ public void setVar(String var) {
+ this.var = var;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public int getScope() {
+ return scope;
+ }
+
+ public void setScope(int scope) {
+ this.scope = scope;
+ scopeSpecified = true;
+ }
+
+ private void init() {
+ this.var = null;
+ this.id = null;
+ this.scope = PageContext.PAGE_SCOPE;
+ }
+
+ private void updateContext(Person result) throws JspException {
+ if (var != null) {
+ /*
+ * Store the result, letting an IllegalArgumentException
+ * propagate back if the scope is invalid (e.g., if an attempt
+ * is made to store something in the session without any
+ * HttpSession existing).
+ */
+ if (result != null) {
+ pageContext.setAttribute(var, result, scope);
+ } else {
+ if (scopeSpecified) {
+ pageContext.removeAttribute(var, scope);
+ } else {
+ pageContext.removeAttribute(var);
+ }
+ }
+ } else {
+ writeString(result.getUsername());
+ }
+ }
+}
Modified: rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld?rev=1377707&r1=1377706&r2=1377707&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld (original)
+++ rave/branches/model-split/rave-components/rave-web/src/main/resources/META-INF/rave.tld Mon Aug 27 15:10:30 2012
@@ -26,6 +26,30 @@
<uri>http://www.apache.org/rave/tags</uri>
<tag>
+ <description>Allows access to a org.apache.rave.model.Person object via the configured variable</description>
+ <name>person</name>
+ <tag-class>org.apache.rave.portal.web.tag.PersonTag</tag-class>
+ <body-content>JSP</body-content>
+ <attribute>
+ <description>The ID of the person to load</description>
+ <name>id</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ <attribute>
+ <description>The variable to assign the resulting person to</description>
+ <name>var</name>
+ <required>true</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ <attribute>
+ <description>The scope under which the assignment is valid</description>
+ <name>scope</name>
+ <required>false</required>
+ <rtexprvalue>true</rtexprvalue>
+ </attribute>
+ </tag>
+ <tag>
<description>Renders a given RegionWidget in the page</description>
<name>render-widget</name>
<tag-class>org.apache.rave.portal.web.tag.RegionWidgetTag</tag-class>
Copied: rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/PersonTagTest.java (from r1377675, rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java)
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/PersonTagTest.java?p2=rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/PersonTagTest.java&p1=rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java&r1=1377675&r2=1377707&rev=1377707&view=diff
==============================================================================
--- rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/JavaScriptDebugModeTagTest.java (original)
+++ rave/branches/model-split/rave-components/rave-web/src/test/java/org/apache/rave/portal/web/tag/PersonTagTest.java Mon Aug 27 15:10:30 2012
@@ -18,10 +18,9 @@
*/
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.apache.rave.portal.model.Person;
+import org.apache.rave.portal.model.impl.PersonImpl;
+import org.apache.rave.portal.repository.PersonRepository;
import org.junit.Before;
import org.junit.Test;
import org.springframework.web.context.WebApplicationContext;
@@ -30,117 +29,135 @@ import javax.servlet.ServletContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.tagext.Tag;
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;
+public class PersonTagTest {
+ public static final String VALID_ID = "1234";
+ public static final String VAR = "VAR";
+ private PersonRepository repository;
private WebApplicationContext wContext;
private PageContext pageContext;
private ServletContext servletContext;
private JspWriter writer;
-
- final String DEBUG_ON = "1";
- final String DEBUG_OFF = "0";
+ private PersonTag tag;
@Before
public void setup() throws JspException {
- service = createMock(PortalPreferenceService.class);
+ repository = createMock(PersonRepository.class);
wContext = createNiceMock(WebApplicationContext.class);
pageContext = createNiceMock(PageContext.class);
servletContext = createNiceMock(ServletContext.class);
writer = createNiceMock(JspWriter.class);
- tag = new JavaScriptDebugModeTag();
+ tag = new PersonTag();
tag.setPageContext(pageContext);
}
@Test
- public void doStartTag_debugOn() throws IOException, JspException {
- PortalPreference portalPreference = new PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, DEBUG_ON);
+ public void doStartTag_allSet() throws IOException, JspException {
+ Person p = new PersonImpl();
- expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+ expect(repository.get(VALID_ID)).andReturn(p);
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);
+ expect(wContext.getBean(PersonRepository.class)).andReturn(repository).anyTimes();
+ pageContext.setAttribute(VAR, p, PageContext.REQUEST_SCOPE);
+ expectLastCall();
+ replay(repository, pageContext, servletContext, wContext, writer);
+
- int result = tag.doStartTag();
+ tag.setId(VALID_ID);
+ tag.setScope(PageContext.REQUEST_SCOPE);
+ tag.setVar(VAR);
+ int result = tag.doEndTag();
- assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
- verify(service, pageContext, servletContext, wContext, writer);
+ assertThat(result, is(Tag.EVAL_PAGE));
+ verify(repository, pageContext, servletContext, wContext, writer);
}
@Test
- public void doStartTag_debugOff() throws IOException, JspException {
- PortalPreference portalPreference = new PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, DEBUG_OFF);
+ public void doStartTag_varSet() throws IOException, JspException {
+ Person p = new PersonImpl();
- expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+ expect(repository.get(VALID_ID)).andReturn(p);
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);
+ expect(wContext.getBean(PersonRepository.class)).andReturn(repository).anyTimes();
+ pageContext.setAttribute(VAR, p, PageContext.PAGE_SCOPE);
+ expectLastCall();
+ replay(repository, 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);
+ tag.setId(VALID_ID);
+ tag.setVar(VAR);
+ int result = tag.doEndTag();
+
+ assertThat(result, is(Tag.EVAL_PAGE));
+ verify(repository, pageContext, servletContext, wContext, writer);
}
@Test
- public void doStartTag_exception() throws IOException, JspException {
- PortalPreference portalPreference = new PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, DEBUG_OFF);
+ public void doStartTag_novar() throws IOException, JspException {
+ Person p = new PersonImpl();
+ p.setUsername("FOO");
- expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andThrow(new RuntimeException("error"));
+ expect(repository.get(VALID_ID)).andReturn(p);
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);
+ expect(wContext.getBean(PersonRepository.class)).andReturn(repository).anyTimes();
+ expect(pageContext.getOut()).andReturn(writer).anyTimes();
+ writer.print(p.getUsername());
+ expectLastCall();
+ replay(repository, pageContext, servletContext, wContext, writer);
- int result = tag.doStartTag();
+ tag.setId(VALID_ID);
+ int result = tag.doEndTag();
- assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
- verify(service, pageContext, servletContext, wContext, writer);
+ assertThat(result, is(Tag.EVAL_PAGE));
+ verify(repository, pageContext, servletContext, wContext, writer);
}
@Test
- public void doStartTag_nullPreference() throws IOException, JspException {
- PortalPreference portalPreference = null;
+ public void doStartTag_noResult() throws IOException, JspException {
+ Person p = new PersonImpl();
- expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+ expect(repository.get(null)).andReturn(null);
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);
+ expect(wContext.getBean(PersonRepository.class)).andReturn(repository).anyTimes();
+ pageContext.removeAttribute(VAR);
+ expectLastCall();
+ replay(repository, pageContext, servletContext, wContext, writer);
- int result = tag.doStartTag();
+ tag.setVar(VAR);
+ int result = tag.doEndTag();
- assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
- verify(service, pageContext, servletContext, wContext, writer);
+ assertThat(result, is(Tag.EVAL_PAGE));
+ verify(repository, pageContext, servletContext, wContext, writer);
}
@Test
- public void doStartTag_emptyPreference() throws IOException, JspException {
- PortalPreference portalPreference = new PortalPreferenceImpl(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE, "");
+ public void doStartTag_noResult_ScopeSet() throws IOException, JspException {
+ Person p = new PersonImpl();
- expect(service.getPreference(PortalPreferenceKeys.JAVASCRIPT_DEBUG_MODE)).andReturn(portalPreference);
+ expect(repository.get(null)).andReturn(null);
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();
+ expect(wContext.getBean(PersonRepository.class)).andReturn(repository).anyTimes();
+ pageContext.removeAttribute(VAR, PageContext.REQUEST_SCOPE);
+ expectLastCall();
+ replay(repository, pageContext, servletContext, wContext, writer);
+
+ tag.setVar(VAR);
+ tag.setScope(PageContext.REQUEST_SCOPE);
+ int result = tag.doEndTag();
- assertThat(result, is(javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE));
- verify(service, pageContext, servletContext, wContext, writer);
+ assertThat(result, is(Tag.EVAL_PAGE));
+ verify(repository, pageContext, servletContext, wContext, writer);
}
}
Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/categories.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/categories.jsp?rev=1377707&r1=1377706&r2=1377707&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/categories.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/admin/categories.jsp Mon Aug 27 15:10:30 2012
@@ -53,21 +53,21 @@
<tbody>
<c:forEach items="${categories}" var="category">
<spring:url value="/app/admin/category/edit?id=${category.id}" var="detaillink"/>
-
+ <portal:person id="${category.createdUserId}" var="createdUser" />
+ <portal:person id="${category.lastModifiedUserId}" var="modifiedUser" />
+
<tr data-detaillink="${detaillink}">
<td>
<a href="${detaillink}"><c:out value="${category.text}"/></a>
</td>
<td>
- <!--TODO: GET USER NAME-->
- <c:out value="${category.createdUserId}"/>
+ <c:out value="${createdUser.username}"/>
</td>
<td>
<c:out value="${category.createdDate}"/>
</td>
<td>
- <!--TODO: GET USER NAME-->
- <c:out value="${category.lastModifiedUserId}"/>
+ <c:out value="${modifiedUser.username}"/>
</td>
<td>
<c:out value="${category.lastModifiedDate}"/>
Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp?rev=1377707&r1=1377706&r2=1377707&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/page.jsp Mon Aug 27 15:10:30 2012
@@ -70,9 +70,9 @@
<c:otherwise>false</c:otherwise>
</c:choose>
</c:set>
+ <portal:person id="${userPage.ownerId}" var="userPageOwner" />
<fmt:message key="sharing.page.tab.icon.tip.from" var="iconShareToolTipFrom">
- <%--TODO:FIX BEFORE RAVE-729 is COMPLETE --%>
- <fmt:param value="${userPage.ownerId}"/>
+ <fmt:param value="${userPageOwner.username}"/>
</fmt:message>
<fmt:message key="sharing.page.tab.icon.tip.to" var="iconShareToolTipTo"/>
<c:choose>
@@ -287,9 +287,9 @@
</div>
<div class="modal-body">
<div id="confirmSharePageDialogLegend">
+ <portal:person id="${page.ownerId}" var="owner" />
<fmt:message key="sharing.dialog.confirm.message">
- <%--TODO: This MUST change before RAVE-729 is complete --%>
- <fmt:param value="${page.ownerId}"/>
+ <fmt:param value="${owner.username}"/>
</fmt:message>
</div>
</div>
@@ -312,7 +312,7 @@
});
</script>
<c:forEach var="members" items="${page.members}">
- <%--TODO: This MUST change before RAVE-729 is complete --%>
- <script>rave.layout.searchHandler.addExistingMember("${members.userId}",${members.editor});</script>
+ <portal:person id="${members.userId}" var="member" />
+ <script>rave.layout.searchHandler.addExistingMember("${member.username}",${members.editor});</script>
</c:forEach>
</portal:register-init-script>
Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp?rev=1377707&r1=1377706&r2=1377707&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/personProfile.jsp Mon Aug 27 15:10:30 2012
@@ -165,8 +165,8 @@
</div>
</div>
<div class="span3">
- <%--TODO: This MUST change before RAVE-729 is complete --%>
- <button type="button" id="addRemoveFriend" value="${page.ownerId}" class="btn btn-primary profile-info-visible">Add/Remove Friends</button>
+ <portal:person id="${page.ownerId}" var="${owner}" />
+ <button type="button" id="addRemoveFriend" value="${owner.username}" class="btn btn-primary profile-info-visible">Add/Remove Friends</button>
</div>
<div class="span3">
<div>
Modified: rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp
URL: http://svn.apache.org/viewvc/rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp?rev=1377707&r1=1377706&r2=1377707&view=diff
==============================================================================
--- rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp (original)
+++ rave/branches/model-split/rave-portal-resources/src/main/webapp/WEB-INF/jsp/views/widget.jsp Mon Aug 27 15:10:30 2012
@@ -193,14 +193,14 @@
<c:if test="${not empty widget.comments}">
<ul class="comments">
<c:forEach var="comment" items="${widget.comments}">
+ <portal:person id="${comment.userId}" var="commenter" />
<li class="comment">
<fmt:formatDate value="${comment.createdDate}" type="both" var="commentDate"/>
<p class="comment-heading">
<span class="commenter">
- <%-- TODO:Find way to get person before completion of RAVE-729--%>
<c:choose>
- <c:when test="${not empty comment.userId}">
- <c:out value="${comment.userId}"/>
+ <c:when test="${not empty commenter.username}">
+ <c:out value="${commenter.username}"/>
</c:when>
<c:otherwise><c:out value="${comment.userId}"/></c:otherwise>
</c:choose>