[jboss-cvs] JBossBlog SVN: r266 - in trunk: resources/WEB-INF and 12 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Mar 17 06:11:54 EDT 2008
Author: adamw
Date: 2008-03-17 06:11:54 -0400 (Mon, 17 Mar 2008)
New Revision: 266
Added:
trunk/view/emails/proposition_accepted.xhtml
trunk/view/emails/proposition_rejected.xhtml
Modified:
trunk/blog.iml
trunk/build.properties
trunk/resources/WEB-INF/components.xml
trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsListener.java
trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java
trunk/src/action/org/jboss/blog/session/security/external/AbstractExternalSecurityService.java
trunk/src/action/org/jboss/blog/session/security/external/DummyExternalSecurityService.java
trunk/src/action/org/jboss/blog/session/security/external/ExternalSecurityService.java
trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java
trunk/src/model/org/jboss/blog/model/Group.java
trunk/src/model/org/jboss/blog/model/RestrictedCategory.java
trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java
trunk/src/model/org/jboss/blog/model/RestrictedImage.java
trunk/src/model/org/jboss/blog/model/RestrictedPost.java
trunk/src/model/org/jboss/blog/model/Template.java
trunk/src/model/org/jboss/blog/model/configuration/Configuration.java
trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java
trunk/src/model/org/jboss/blog/model/log/PropositionsLog.java
trunk/src/portal/org/jboss/blog/session/security/external/PortalExternalSecurityService.java
trunk/src/portal/org/jboss/blog/session/security/external/PortalRole.java
trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityService.java
trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityServiceImpl.java
trunk/src/portal/org/jboss/blog/session/security/external/PortalUser.java
trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java
trunk/view/emails/new_proposition_email.xhtml
trunk/view/manage/group/group_mod.xhtml
Log:
Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/blog.iml 2008-03-17 10:11:54 UTC (rev 266)
@@ -4,6 +4,7 @@
<facet type="jpa" name="JPA">
<configuration>
<setting name="validation-enabled" value="true" />
+ <setting name="provider-name" value="" />
<datasource-mapping>
<factory-entry name="blog" value="Datasource" />
</datasource-mapping>
@@ -30,8 +31,258 @@
<setting name="BUILD_EXTERNAL_DEPENDENCIES" value="false" />
<setting name="EXCLUDE_EXPLODED_DIRECTORY" value="true" />
</building>
+ <packaging>
+ <containerElement type="facet" facetId="blog/ejb/EJB">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ </containerElement>
+ <containerElement type="facet" facetId="blog/web/Web">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ <attribute name="contextRoot" value="blogWeb" />
+ </containerElement>
+ </packaging>
</configuration>
</facet>
+ <facet type="ejb" name="EJB">
+ <configuration>
+ <descriptors>
+ <deploymentDescriptor name="ejb-jar.xml" url="file://$MODULE_DIR$/resources/META-INF/ejb-jar.xml" optional="false" version="3.0" />
+ </descriptors>
+ <ejbRoots>
+ <root url="file://$MODULE_DIR$/src/action" />
+ <root url="file://$MODULE_DIR$/src/model" />
+ <root url="file://$MODULE_DIR$/src/portal" />
+ <root url="file://$MODULE_DIR$/src/services" />
+ <root url="file://$MODULE_DIR$/src/shotoku" />
+ <root url="file://$MODULE_DIR$/src/test" />
+ <root url="file://$MODULE_DIR$/src/tools" />
+ </ejbRoots>
+ <building>
+ <setting name="EXPLODED_URL" value="file://" />
+ <setting name="EXPLODED_ENABLED" value="false" />
+ <setting name="JAR_URL" value="file://" />
+ <setting name="JAR_ENABLED" value="false" />
+ <setting name="BUILD_MODULE_ON_FRAME_DEACTIVATION" value="false" />
+ <setting name="BUILD_EXTERNAL_DEPENDENCIES" value="false" />
+ <setting name="EXCLUDE_EXPLODED_DIRECTORY" value="true" />
+ <setting name="RUN_EJB_VALIDATION" value="true" />
+ </building>
+ <packaging>
+ <containerElement type="library" name="Seam" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ </containerElement>
+ <containerElement type="library" name="api-other" level="application">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ </containerElement>
+ <containerElement type="library" name="hibernate" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ </containerElement>
+ <containerElement type="library" name="javaee" level="application">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ </containerElement>
+ <containerElement type="library" name="rome" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ </containerElement>
+ <containerElement type="library" name="search" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ </containerElement>
+ <containerElement type="library" name="testng" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ </containerElement>
+ <containerElement type="library" name="velocity" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/drools-core.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/htmlcleaner1_6.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ <url>jar://$APPLICATION_HOME_DIR$/lib/javaee.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/javassist.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/jericho-html-2.5.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/jsf-facelets.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/../jboss/lib/mysql.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/portal-common-lib.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/portal-identity-lib.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/portal-portlet-jsr168api-lib.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/shotoku-base.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/" />
+ <url>jar://$MODULE_DIR$/lib/urlrewritefilter.jar!/</url>
+ </containerElement>
+ </packaging>
+ </configuration>
+ </facet>
+ <facet type="web" name="Web">
+ <configuration>
+ <descriptors>
+ <deploymentDescriptor name="web.xml" url="file://$MODULE_DIR$/resources-portlet/WEB-INF/web.xml" optional="false" version="2.5" />
+ </descriptors>
+ <webroots>
+ <root url="file://$MODULE_DIR$/resources-portlet" relative="/" />
+ </webroots>
+ <building>
+ <setting name="EXPLODED_URL" value="file://" />
+ <setting name="EXPLODED_ENABLED" value="false" />
+ <setting name="JAR_URL" value="file://" />
+ <setting name="JAR_ENABLED" value="false" />
+ <setting name="BUILD_MODULE_ON_FRAME_DEACTIVATION" value="false" />
+ <setting name="BUILD_EXTERNAL_DEPENDENCIES" value="false" />
+ <setting name="EXCLUDE_EXPLODED_DIRECTORY" value="true" />
+ <setting name="RUN_JASPER_VALIDATION" value="true" />
+ <setting name="BUILD_ONLY_WEB_RESOURCES" value="false" />
+ </building>
+ <packaging>
+ <containerElement type="module" name="blog">
+ <attribute name="method" value="1" />
+ <attribute name="URI" value="/WEB-INF/classes" />
+ </containerElement>
+ <containerElement type="library" name="Seam" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ </containerElement>
+ <containerElement type="library" name="api-other" level="application">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ </containerElement>
+ <containerElement type="library" name="hibernate" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ </containerElement>
+ <containerElement type="library" name="javaee" level="application">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ </containerElement>
+ <containerElement type="library" name="rome" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ </containerElement>
+ <containerElement type="library" name="search" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ </containerElement>
+ <containerElement type="library" name="testng" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ </containerElement>
+ <containerElement type="library" name="velocity" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/drools-core.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/htmlcleaner1_6.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="<N/A>" />
+ <url>jar://$APPLICATION_HOME_DIR$/lib/javaee.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/javassist.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/jericho-html-2.5.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/jsf-facelets.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/../jboss/lib/mysql.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/portal-common-lib.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/portal-identity-lib.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/portal-portlet-jsr168api-lib.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/shotoku-base.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib" />
+ <url>jar://$MODULE_DIR$/lib/urlrewritefilter.jar!/</url>
+ </containerElement>
+ </packaging>
+ </configuration>
+ </facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
@@ -175,8 +426,6 @@
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="library" name="jbosscache" level="project" />
- <orderEntry type="library" name="jboss" level="project" />
<orderEntry type="module-library">
<library>
<CLASSES>
Modified: trunk/build.properties
===================================================================
--- trunk/build.properties 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/build.properties 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,6 +1,6 @@
#jboss.home = /Users/adamwarski/portal-extensions/feeds/binaries
-#jboss.home = /Users/adamwarski/jboss/jboss-4.2
-jboss.home = /Users/adamwarski/jboss/jboss-4.0.5
-#profile = dev
-profile = prod
+jboss.home = /Users/adamwarski/jboss/jboss-4.2
+#jboss.home = /Users/adamwarski/jboss/jboss-4.0.5
+profile = dev
+#profile = prod
#jboss.home = /Users/adamwarski/jboss/jboss-design
\ No newline at end of file
Modified: trunk/resources/WEB-INF/components.xml
===================================================================
--- trunk/resources/WEB-INF/components.xml 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/resources/WEB-INF/components.xml 2008-03-17 10:11:54 UTC (rev 266)
@@ -55,13 +55,6 @@
<action execute="#{redirect.returnToCapturedView}"/>
</event>
- <event type="org.jboss.blog.feed.accept">
- <action execute="#{feedMod.acceptFeed}"/>
- </event>
- <event type="org.jboss.blog.feed.proposed">
- <action execute="#{feedMod.proposedFeed}"/>
- </event>
-
<mail:mail-session host="localhost" port="25" />
<web:context-filter url-pattern="/feeds.seam" />
@@ -70,8 +63,4 @@
<property name="serverAddress">http://localhost:8080</property>
<property name="contextName">blogs</property>
</component>
-
- <component name="stringTools">
- <property name="summaryLength">500</property>
- </component>
</components>
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -10,10 +10,7 @@
import org.jboss.blog.session.update.UpdateHandlerAsync;
import org.jboss.seam.ScopeType;
import org.jboss.seam.core.Events;
-import org.jboss.seam.annotations.AutoCreate;
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.*;
import org.jboss.seam.annotations.security.Restrict;
import org.jboss.seam.faces.FacesMessages;
@@ -48,6 +45,9 @@
@In
private UpdateHandlerAsync updateHandlerAsync;
+ @In
+ private Events events;
+
public void initNewFeed(Feed feed) {
this.feed = feed;
feed.setMaxPostsInFeed(10);
@@ -70,6 +70,7 @@
return new XmlType[] { XmlType.ATOM };
}
+ @Observer("org.jboss.blog.feed.accept")
public void acceptFeed() {
feed.setAccepted(true);
@@ -77,9 +78,12 @@
updateHandlerAsync.update(feed);
+ events.raiseEvent("org.jboss.blog.feed.accepted", getFeed());
+
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.accepted", getFeed().getName());
}
+ @Observer("org.jboss.blog.feed.proposed")
public void proposedFeed() {
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.proposed", getFeed().getName());
}
@@ -102,7 +106,7 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.added", getFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.added", getFeed());
+ events.raiseEvent("org.jboss.blog.feed.added", getFeed());
}
@Restrict("#{identity.hasPermission('feed', 'edit', feedMod.feed, feedMod.feed.group)}")
@@ -111,17 +115,17 @@
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.updated", getFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.updated", getFeed());
+ events.raiseEvent("org.jboss.blog.feed.updated", getFeed());
}
@Restrict("#{identity.hasPermission('feed', 'delete', feedMod.feed, feedMod.feed.group)}")
public void delete() {
- Events.instance().raiseEvent("org.jboss.blog.feed.before_delete", getFeed());
+ events.raiseEvent("org.jboss.blog.feed.before_delete", getFeed());
entityManager.remove(getFeed());
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.deleted", getFeed().getName());
- Events.instance().raiseEvent("org.jboss.blog.feed.deleted", getFeed());
+ events.raiseEvent("org.jboss.blog.feed.deleted", getFeed());
}
}
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsListener.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsListener.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsListener.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -7,9 +7,14 @@
import org.jboss.seam.faces.Renderer;
import org.jboss.seam.log.Log;
import org.jboss.blog.model.log.PropositionsLog;
+import org.jboss.blog.model.security.*;
+import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.session.security.FeedsIdentity;
+import org.jboss.blog.session.security.external.ExternalSecurityService;
+import org.jboss.blog.session.configuration.ConfigurationManager;
import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
import java.util.Date;
/**
@@ -29,17 +34,65 @@
@In
private FeedsIdentity identity;
+ @In
+ private ExternalSecurityService externalSecurityService;
+
+ @In
+ private ConfigurationManager configurationManager;
+
@Logger
private Log log;
+ private String currentEmail;
+
+ public String getCurrentEmail() {
+ return currentEmail;
+ }
+
+ private void sendEmail(String email, String view) {
+ if (email != null) {
+ try {
+ currentEmail = email;
+ renderer.render(view);
+ } catch (Exception e) {
+ log.warn(e);
+ }
+ }
+ }
+
@Observer("org.jboss.blog.feed.proposed")
public void feedProposed() {
+ entityManager.persist(new PropositionsLog(feedMod.getFeed(), identity.getSecurityUser(), new Date()));
+
+ sendEmail(feedMod.getFeed().getGroup().getAdminEmail(), "/emails/new_proposition_email.xhtml");
+ sendEmail(configurationManager.getConfiguration().getAdminEmail(), "/emails/new_proposition_email.xhtml");
+ }
+
+ private String getEmailForProposedFeed(Feed feed) {
try {
- renderer.render("/emails/new_proposition_email.xhtml");
- } catch (Exception e) {
- log.warn(e);
+ SecurityUser securityUser = (SecurityUser) entityManager.createQuery(
+ "select pl.securityUser from PropositionsLog pl where pl.feed = ?1")
+ .setParameter(1, feed).getSingleResult();
+
+ if (securityUser != null) {
+ return externalSecurityService.getEmail(securityUser);
+ } else {
+ return null;
+ }
+ } catch (NoResultException e) {
+ return null;
}
+ }
- entityManager.persist(new PropositionsLog(feedMod.getFeed(), identity.getSecurityUser(), new Date()));
+ @Observer("org.jboss.blog.feed.accepted")
+ public void feedAccepted(Feed feed) {
+ sendEmail(getEmailForProposedFeed(feed), "/emails/proposition_accepted.xhtml");
}
+
+ @Observer("org.jboss.blog.feed.before_delete")
+ public void beforeFeedDeleted(Feed feed) {
+ if (!feed.isAccepted()) {
+ sendEmail(getEmailForProposedFeed(feed), "/emails/proposition_rejected.xhtml");
+ }
+ }
}
Modified: trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/security/SecurityModBean.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -12,11 +12,8 @@
import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.session.security.external.ExternalSecurityService;
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
import javax.faces.application.FacesMessage;
import java.util.List;
-import java.util.ArrayList;
import java.io.Serializable;
/**
@@ -27,9 +24,6 @@
@AutoCreate
public class SecurityModBean implements Serializable {
@In
- private EntityManager entityManager;
-
- @In
private ExternalSecurityService externalSecurityService;
@In
@@ -81,51 +75,28 @@
this.role = role;
}
- private SecurityMapping getMapping(FeedsSecurityRole role, Integer idForRole) {
- try {
- if (idForRole == null) {
- return (SecurityMapping) entityManager.createQuery(
- "select mapping from SecurityMapping mapping where mapping.role = ?1")
- .setParameter(1, role).getSingleResult();
- } else {
- return (SecurityMapping) entityManager.createQuery(
- "select mapping from SecurityMapping mapping where mapping.role = ?1 and mapping.idForRole = ?2")
- .setParameter(1, role).setParameter(2, idForRole).getSingleResult();
- }
- } catch (NoResultException e) {
- SecurityMapping mapping = new SecurityMapping();
- mapping.setRole(role);
- mapping.setIdForRole(idForRole);
- mapping.setUsers(new ArrayList<SecurityUser>());
- mapping.setGroups(new ArrayList<SecurityGroup>());
- entityManager.persist(mapping);
-
- return mapping;
- }
- }
-
public List<SecurityGroup> getAdministratorGroups() {
- return getMapping(FeedsSecurityRole.ADMIN, null).getGroups();
+ return externalSecurityService.getMapping(FeedsSecurityRole.ADMIN, null).getGroups();
}
public List<SecurityGroup> getGroupAdministratorGroups(Group group) {
- return getMapping(FeedsSecurityRole.GROUP_ADMIN, group.getId()).getGroups();
+ return externalSecurityService.getMapping(FeedsSecurityRole.GROUP_ADMIN, group.getId()).getGroups();
}
public List<SecurityGroup> getFeedAdministratorGroups(Feed feed) {
- return getMapping(FeedsSecurityRole.FEED_ADMIN, feed.getId()).getGroups();
+ return externalSecurityService.getMapping(FeedsSecurityRole.FEED_ADMIN, feed.getId()).getGroups();
}
public List<SecurityUser> getAdministratorUsers() {
- return getMapping(FeedsSecurityRole.ADMIN, null).getUsers();
+ return externalSecurityService.getMapping(FeedsSecurityRole.ADMIN, null).getUsers();
}
public List<SecurityUser> getGroupAdministratorUsers(Group group) {
- return getMapping(FeedsSecurityRole.GROUP_ADMIN, group.getId()).getUsers();
+ return externalSecurityService.getMapping(FeedsSecurityRole.GROUP_ADMIN, group.getId()).getUsers();
}
public List<SecurityUser> getFeedAdministratorUsers(Feed feed) {
- return getMapping(FeedsSecurityRole.FEED_ADMIN, feed.getId()).getUsers();
+ return externalSecurityService.getMapping(FeedsSecurityRole.FEED_ADMIN, feed.getId()).getUsers();
}
private SecurityMapping getMapping() {
@@ -137,7 +108,7 @@
default: idForRole = null;
}
- return getMapping(getRole(), idForRole);
+ return externalSecurityService.getMapping(getRole(), idForRole);
}
public void addSecurityGroupAsSuperUser() {
Modified: trunk/src/action/org/jboss/blog/session/security/external/AbstractExternalSecurityService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/external/AbstractExternalSecurityService.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/security/external/AbstractExternalSecurityService.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,12 +1,10 @@
package org.jboss.blog.session.security.external;
-import org.jboss.blog.model.security.SecurityUser;
-import org.jboss.blog.model.security.SecurityGroup;
-import org.jboss.blog.model.security.RestrictedSecurityGroup;
-import org.jboss.blog.model.security.RestrictedSecurityUser;
+import org.jboss.blog.model.security.*;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
+import java.util.ArrayList;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -51,4 +49,28 @@
return su;
}
}
+
+ public SecurityMapping getMapping(FeedsSecurityRole role, Integer idForRole) {
+ try {
+ if (idForRole == null) {
+ return (SecurityMapping) getEntityManager().createQuery(
+ "select mapping from SecurityMapping mapping where mapping.role = ?1")
+ .setParameter(1, role).getSingleResult();
+ } else {
+ return (SecurityMapping) getEntityManager().createQuery(
+ "select mapping from SecurityMapping mapping where mapping.role = ?1 and mapping.idForRole = ?2")
+ .setParameter(1, role).setParameter(2, idForRole).getSingleResult();
+ }
+ } catch (NoResultException e) {
+ SecurityMapping mapping = new SecurityMapping();
+ mapping.setRole(role);
+ mapping.setIdForRole(idForRole);
+ mapping.setUsers(new ArrayList<SecurityUser>());
+ mapping.setGroups(new ArrayList<SecurityGroup>());
+ getEntityManager().persist(mapping);
+ getEntityManager().flush();
+
+ return mapping;
+ }
+ }
}
\ No newline at end of file
Modified: trunk/src/action/org/jboss/blog/session/security/external/DummyExternalSecurityService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/external/DummyExternalSecurityService.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/security/external/DummyExternalSecurityService.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -60,6 +60,17 @@
return groups;
}
+ public List<? extends RestrictedSecurityUser> getUsersInGroup(RestrictedSecurityGroup securityGroup) {
+ List<SecurityUser> users = new ArrayList<SecurityUser>();
+ users.add(new SecurityUser(securityGroup.getExternalId(), securityGroup.getExternalId()));
+
+ return users;
+ }
+
+ public String getEmail(RestrictedSecurityUser securityUserUser) {
+ return "a at a.pl";
+ }
+
public String getDisplayName(RestrictedSecurityUser securityUser) {
return securityUser.getExternalId();
}
Modified: trunk/src/action/org/jboss/blog/session/security/external/ExternalSecurityService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/external/ExternalSecurityService.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/security/external/ExternalSecurityService.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,9 +1,6 @@
package org.jboss.blog.session.security.external;
-import org.jboss.blog.model.security.SecurityUser;
-import org.jboss.blog.model.security.SecurityGroup;
-import org.jboss.blog.model.security.RestrictedSecurityGroup;
-import org.jboss.blog.model.security.RestrictedSecurityUser;
+import org.jboss.blog.model.security.*;
import org.jboss.blog.session.security.InvalidLoginException;
import java.util.List;
@@ -24,9 +21,15 @@
List<SecurityGroup> getGroupsOfUser(SecurityUser securityUser);
+ List<? extends RestrictedSecurityUser> getUsersInGroup(RestrictedSecurityGroup securityGroup);
+
+ String getEmail(RestrictedSecurityUser securityUser);
+
String getDisplayName(RestrictedSecurityUser securityUser);
String getDisplayName(RestrictedSecurityGroup securityGroup);
RestrictedSecurityGroup getAdminGroup();
+
+ SecurityMapping getMapping(FeedsSecurityRole role, Integer idForRole);
}
Modified: trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -15,6 +15,10 @@
public class StringToolsBean {
private volatile int summaryLength;
+ public StringToolsBean() {
+ summaryLength = 500;
+ }
+
public int getSummaryLength() {
return summaryLength;
}
Modified: trunk/src/model/org/jboss/blog/model/Group.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Group.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/Group.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -3,10 +3,12 @@
import org.hibernate.validator.NotEmpty;
import org.hibernate.validator.Pattern;
import org.hibernate.validator.Length;
+import org.hibernate.validator.Email;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
+import java.io.Serializable;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -14,7 +16,7 @@
@Entity
@Table(name = "FeedGroup")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
-public class Group {
+public class Group implements Serializable {
@Id
@GeneratedValue
@Column(updatable = false)
@@ -33,6 +35,9 @@
@Lob
private String header;
+ @Email
+ private String adminEmail;
+
public Integer getId() {
return id;
}
@@ -65,6 +70,14 @@
this.header = header;
}
+ public String getAdminEmail() {
+ return adminEmail;
+ }
+
+ public void setAdminEmail(String adminEmail) {
+ this.adminEmail = adminEmail;
+ }
+
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Group)) return false;
Modified: trunk/src/model/org/jboss/blog/model/RestrictedCategory.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedCategory.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/RestrictedCategory.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,9 +1,11 @@
package org.jboss.blog.model;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public interface RestrictedCategory {
+public interface RestrictedCategory extends Serializable {
Integer getId();
String getName();
Modified: trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/RestrictedEnclosure.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,9 +1,11 @@
package org.jboss.blog.model;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public interface RestrictedEnclosure {
+public interface RestrictedEnclosure extends Serializable {
Integer getId();
String getUrl();
Modified: trunk/src/model/org/jboss/blog/model/RestrictedImage.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedImage.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/RestrictedImage.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,9 +1,11 @@
package org.jboss.blog.model;
+import java.io.Serializable;
+
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public interface RestrictedImage {
+public interface RestrictedImage extends Serializable {
Integer getId();
String getUrl();
Modified: trunk/src/model/org/jboss/blog/model/RestrictedPost.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RestrictedPost.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/RestrictedPost.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -4,11 +4,12 @@
import java.util.List;
import java.util.Date;
+import java.io.Serializable;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public interface RestrictedPost extends Comparable<RestrictedPost> {
+public interface RestrictedPost extends Comparable<RestrictedPost>, Serializable {
Integer getId();
String getTitle();
Modified: trunk/src/model/org/jboss/blog/model/Template.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Template.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/Template.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -7,13 +7,14 @@
import javax.persistence.*;
import java.util.Date;
+import java.io.Serializable;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
-public class Template {
+public class Template implements Serializable {
@Id
@GeneratedValue
@Column(updatable = false)
Modified: trunk/src/model/org/jboss/blog/model/configuration/Configuration.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/configuration/Configuration.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/configuration/Configuration.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -4,12 +4,13 @@
import org.hibernate.validator.Email;
import javax.persistence.*;
+import java.io.Serializable;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Entity
-public class Configuration {
+public class Configuration implements Serializable {
@Id
@GeneratedValue
@Column(updatable = false)
Modified: trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/feed/RestrictedFeed.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,8 +1,11 @@
package org.jboss.blog.model.feed;
+
+import java.io.Serializable;
+
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public interface RestrictedFeed {
+public interface RestrictedFeed extends Serializable {
Integer getId();
String getName();
Modified: trunk/src/model/org/jboss/blog/model/log/PropositionsLog.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/log/PropositionsLog.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/model/org/jboss/blog/model/log/PropositionsLog.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -11,6 +11,7 @@
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
@Entity
+ at Table(uniqueConstraints = @UniqueConstraint(columnNames = "feed_id"))
public class PropositionsLog {
@Id
@GeneratedValue
Modified: trunk/src/portal/org/jboss/blog/session/security/external/PortalExternalSecurityService.java
===================================================================
--- trunk/src/portal/org/jboss/blog/session/security/external/PortalExternalSecurityService.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/portal/org/jboss/blog/session/security/external/PortalExternalSecurityService.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -112,7 +112,6 @@
public List<? extends RestrictedSecurityUser> getAllUsers() {
try {
-
//noinspection unchecked
return convertUsers(portalSecurityService.getAllUsers(), false);
} catch (PortalSecurityException e) {
@@ -131,6 +130,24 @@
}
}
+ public List<? extends RestrictedSecurityUser> getUsersInGroup(RestrictedSecurityGroup securityGroup) {
+ try {
+ return convertUsers(portalSecurityService.getUsersInRole(securityGroup.getExternalId()), false);
+ } catch (PortalSecurityException e) {
+ log.error(e);
+ return new ArrayList<RestrictedSecurityUser>();
+ }
+ }
+
+ public String getEmail(RestrictedSecurityUser securityUser) {
+ try {
+ return getRealUser(securityUser).getEmail();
+ } catch (PortalSecurityException e) {
+ log.error(e);
+ return null;
+ }
+ }
+
public String getDisplayName(RestrictedSecurityUser securityUser) {
try {
return getRealUser(securityUser).getDisplayName();
Modified: trunk/src/portal/org/jboss/blog/session/security/external/PortalRole.java
===================================================================
--- trunk/src/portal/org/jboss/blog/session/security/external/PortalRole.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/portal/org/jboss/blog/session/security/external/PortalRole.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -16,15 +16,7 @@
return id;
}
- public void setId(String id) {
- this.id = id;
- }
-
public String getDisplayName() {
return displayName;
}
-
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
- }
}
Modified: trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityService.java
===================================================================
--- trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityService.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityService.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -10,19 +10,21 @@
*/
@Local
public interface PortalSecurityService {
- public PortalUser authenticate(String username, String password) throws PortalSecurityException, InvalidLoginException;
+ PortalUser authenticate(String username, String password) throws PortalSecurityException, InvalidLoginException;
- public List<PortalRole> getAllRoles() throws PortalSecurityException;
+ List<PortalRole> getAllRoles() throws PortalSecurityException;
- public List<PortalUser> getAllUsers() throws PortalSecurityException;
+ List<PortalUser> getAllUsers() throws PortalSecurityException;
- public List<PortalRole> getRolesOfUser(String id) throws PortalSecurityException;
+ List<PortalRole> getRolesOfUser(String id) throws PortalSecurityException;
- public PortalRole getAdminRole() throws PortalSecurityException;
+ List<PortalUser> getUsersInRole(String id) throws PortalSecurityException;
- public PortalRole getRoleById(String id) throws PortalSecurityException;
+ PortalRole getAdminRole() throws PortalSecurityException;
- public PortalUser getUserById(String id) throws PortalSecurityException;
+ PortalRole getRoleById(String id) throws PortalSecurityException;
- public void remove();
+ PortalUser getUserById(String id) throws PortalSecurityException;
+
+ void remove();
}
Modified: trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityServiceImpl.java
===================================================================
--- trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityServiceImpl.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/portal/org/jboss/blog/session/security/external/PortalSecurityServiceImpl.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -6,6 +6,7 @@
import org.jboss.portal.identity.Role;
import org.jboss.portal.common.util.Tools;
import org.jboss.blog.session.security.InvalidLoginException;
+import org.jboss.blog.tools.StringTools;
import javax.ejb.Stateless;
import javax.ejb.Remove;
@@ -53,6 +54,23 @@
}
}
+ private UserProfileModule getProfileModule() throws PortalSecurityException {
+ try {
+ return (UserProfileModule) new InitialContext().lookup("java:portal/UserProfileModule");
+ } catch (NamingException e) {
+ log.error(e);
+ throw new PortalSecurityException(e);
+ }
+ }
+
+ private String getUserEmail(User user) throws PortalSecurityException {
+ try {
+ return StringTools.safeToString(getProfileModule().getProperty(user, User.INFO_USER_EMAIL_REAL));
+ } catch (IdentityException e) {
+ throw new PortalSecurityException(e);
+ }
+ }
+
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public PortalUser authenticate(String username, String password)
throws InvalidLoginException, PortalSecurityException {
@@ -75,7 +93,7 @@
}
}
- return new PortalUser(user.getId().toString(), user.getUserName());
+ return new PortalUser(user.getId().toString(), user.getUserName(), getUserEmail(user));
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
@@ -102,7 +120,7 @@
// TODO - users count
for (Object userObj : getUserModule().findUsers(0, 100000)) {
User user = (User) userObj;
- users.add(new PortalUser(user.getId().toString(), user.getUserName()));
+ users.add(new PortalUser(user.getId().toString(), user.getUserName(), getUserEmail(user)));
}
return users;
@@ -128,6 +146,22 @@
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
+ public List<PortalUser> getUsersInRole(String id) throws PortalSecurityException {
+ try {
+ List<PortalUser> users = new ArrayList<PortalUser>();
+
+ for (Object roleObj : getMembershipModule().getUsers(getRoleModule().findRoleById(id))) {
+ User user = (User) roleObj;
+ users.add(new PortalUser(user.getId().toString(), user.getUserName(), getUserEmail(user)));
+ }
+
+ return users;
+ } catch (IdentityException e) {
+ throw new PortalSecurityException(e);
+ }
+ }
+
+ @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public PortalRole getAdminRole() throws PortalSecurityException {
try {
Role adminRole = getRoleModule().findRoleByName("Admin");
@@ -156,7 +190,7 @@
public PortalUser getUserById(String id) throws PortalSecurityException {
try {
User user = getUserModule().findUserById(id);
- return new PortalUser(user.getId().toString(), user.getUserName());
+ return new PortalUser(user.getId().toString(), user.getUserName(), getUserEmail(user));
} catch (IdentityException e) {
throw new PortalSecurityException(e);
}
Modified: trunk/src/portal/org/jboss/blog/session/security/external/PortalUser.java
===================================================================
--- trunk/src/portal/org/jboss/blog/session/security/external/PortalUser.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/portal/org/jboss/blog/session/security/external/PortalUser.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -6,25 +6,23 @@
public class PortalUser {
private String id;
private String displayName;
+ private String email;
- public PortalUser(String id, String displayName) {
+ public PortalUser(String id, String displayName, String email) {
this.id = id;
this.displayName = displayName;
+ this.email = email;
}
public String getId() {
return id;
}
- public void setId(String id) {
- this.id = id;
- }
-
public String getDisplayName() {
return displayName;
}
- public void setDisplayName(String displayName) {
- this.displayName = displayName;
+ public String getEmail() {
+ return email;
}
}
Modified: trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java 2008-03-17 10:11:54 UTC (rev 266)
@@ -1,14 +1,15 @@
package org.jboss.blog.session.merge.test;
import static org.easymock.EasyMock.*;
+import org.easymock.EasyMock;
import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.model.Post;
import org.jboss.blog.model.Enclosure;
import org.jboss.blog.model.Image;
+import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.service.FeedsService;
import org.jboss.blog.service.PostNotFoundException;
import org.jboss.blog.session.merge.MergeServiceBean;
-import org.jboss.blog.session.merge.TitleAsIdService;
import org.jboss.blog.tools.TestTools;
import org.jboss.seam.log.Log;
import org.testng.annotations.BeforeClass;
@@ -100,7 +101,8 @@
post_2007_11_01_t1_c1_l1);
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn((List) posts);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 3))
+ .andReturn(posts);
expect(mockFeedsService.getPost(post_2007_11_02_t3_c3_l3.getTitle())).andReturn(post_2007_11_02_t3_c3_l3);
expect(mockFeedsService.getPost(post_2007_11_01_t1_c1_l1.getTitle())).andReturn(post_2007_11_01_t1_c1_l1);
mockEntityManager.flush();
@@ -122,7 +124,7 @@
post_2007_11_01_t1_c1_l1);
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn((List) mergeTo);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn(mergeTo);
mockEntityManager.persist(post_2007_11_02_t3_c3_l3);
mockEntityManager.flush();
mockEntityManager.persist(post_2007_11_01_t1_c1_l1);
@@ -146,7 +148,7 @@
List<Post> mergeFrom = new ArrayList<Post>();
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 1)).andReturn((List) mergeTo);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 1)).andReturn(mergeTo);
mockEntityManager.flush();
// Test
@@ -167,7 +169,7 @@
post_2007_11_02_t1_c1_l4);
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn((List) mergeTo);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn(mergeTo);
mockEntityManager.persist(post_2007_11_04_t6_c6_l7);
mockEntityManager.flush();
mockEntityManager.persist(post_2007_11_02_t1_c1_l4);
@@ -193,7 +195,7 @@
post_2007_11_03_t5_c5_l6, post_2007_11_01_t2_c2_l2);
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 4)).andReturn((List) mergeTo);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 4)).andReturn(mergeTo);
expect(mockFeedsService.getPost(post_2007_11_04_t6_c6_l7.getTitle())).andReturn(post_2007_11_04_t6_c6_l7);
@@ -203,7 +205,7 @@
expect(mockFeedsService.getPost(post_2007_11_01_t1_c1_l1.getTitle())).andReturn(post_2007_11_01_t1_c1_l1);
mockEntityManager.flush();
- expect(mockFeedsService.getPosts(feed, 4, 8)).andReturn(new ArrayList());
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 4, 8)).andReturn(new ArrayList<Post>());
mockEntityManager.flush();
@@ -231,7 +233,7 @@
post_2007_11_03_t4_c4_l5, post_2007_11_02_t3_c3_l3);
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 6)).andReturn((List) mergeTo);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 6)).andReturn(mergeTo);
expect(mockFeedsService.getPost(post_2007_11_05_t6_c6_l8.getTitle())).andReturn(post_2007_11_05_t6_c6_l8);
expect(mockFeedsService.getPost(post_2007_11_04_t6_c6_l7.getTitle())).andReturn(post_2007_11_04_t6_c6_l7);
expect(mockFeedsService.getPost(post_2007_11_03_t5_c5_l6.getTitle())).andReturn(post_2007_11_03_t5_c5_l6);
@@ -260,9 +262,9 @@
List<Post> mergeFrom = Arrays.asList(post_2007_11_02_t1_c1_l4);
// Behaviour of mocks
- expect(mockFeedsService.getPosts(feed, 0, 2)).andReturn((List) mergeTo1);
- expect(mockFeedsService.getPosts(feed, 2, 4)).andReturn((List) mergeTo2);
- expect(mockFeedsService.getPosts(feed, 4, 6)).andReturn((List) mergeTo3);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 0, 2)).andReturn(mergeTo1);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 2, 4)).andReturn(mergeTo2);
+ EasyMock.<List<? extends RestrictedPost>>expect(mockFeedsService.getPosts(feed, 4, 6)).andReturn(mergeTo3);
mockEntityManager.persist(post_2007_11_02_t1_c1_l4);
mockEntityManager.flush();
mockEntityManager.flush();
Modified: trunk/view/emails/new_proposition_email.xhtml
===================================================================
--- trunk/view/emails/new_proposition_email.xhtml 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/view/emails/new_proposition_email.xhtml 2008-03-17 10:11:54 UTC (rev 266)
@@ -5,7 +5,7 @@
charset="UTF-8">
<m:from name="JBoss.ORG Feeds robot" address="feeds-robot at jboss.org" />
- <m:to>#{configurationManager.configuration.adminEmail}</m:to>
+ <m:to>#{propositionsListener.currentEmail}</m:to>
<m:subject>A new feed has been proposed</m:subject>
<m:body type="plain">
@@ -14,7 +14,7 @@
Title: #{feedMod.feed.title}<br />
Link: #{feedMod.feed.remoteLink}<br />
<br />
- Visit http://labs.jboss.com/blogs/manage/proposition/proposition_list.seam to accept/reject the feed.<br />
+ Visit #{linkService.serverAddress}/#{linkService.contextName}/manage/proposition/proposition_list.seam to accept/reject the feed.<br />
<br />
-- <br />
JBoss.ORG Feeds robot
Copied: trunk/view/emails/proposition_accepted.xhtml (from rev 250, trunk/view/emails/new_proposition_email.xhtml)
===================================================================
--- trunk/view/emails/proposition_accepted.xhtml (rev 0)
+++ trunk/view/emails/proposition_accepted.xhtml 2008-03-17 10:11:54 UTC (rev 266)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html"
+ charset="UTF-8">
+
+ <m:from name="JBoss.ORG Feeds robot" address="feeds-robot at jboss.org" />
+ <m:to>#{propositionsListener.currentEmail}</m:to>
+ <m:subject>Your feed has been accepted!</m:subject>
+
+ <m:body type="plain">
+ Welcome!<br />
+ <br />
+ Congratulations! Your feed: '#{feedMod.feed.title}' has been accepted and will now be aggregated on
+ JBoss.ORG Feeds.<br />
+ <br />
+ To view the feed, enter:<br />
+ #{linkService.generateFeedPageLink(feedMod.feed)}<br />
+ <br />
+ And don't forget to visit http://labs.jboss.com often!<br />
+ <br />
+ -- <br />
+ JBoss.ORG Feeds robot
+ </m:body>
+</m:message>
\ No newline at end of file
Copied: trunk/view/emails/proposition_rejected.xhtml (from rev 250, trunk/view/emails/new_proposition_email.xhtml)
===================================================================
--- trunk/view/emails/proposition_rejected.xhtml (rev 0)
+++ trunk/view/emails/proposition_rejected.xhtml 2008-03-17 10:11:54 UTC (rev 266)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<m:message xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:m="http://jboss.com/products/seam/mail"
+ xmlns:h="http://java.sun.com/jsf/html"
+ charset="UTF-8">
+
+ <m:from name="JBoss.ORG Feeds robot" address="feeds-robot at jboss.org" />
+ <m:to>#{propositionsListener.currentEmail}</m:to>
+ <m:subject>Your feed has been rejected</m:subject>
+
+ <m:body type="plain">
+ Unfortunately, your feed '#{feedMod.feed.title}' has been rejected.<br />
+ <br />
+ Is it a blog on a JBoss-related subject?<br />
+ Did you submit a feed containing only JBoss-related posts?<br />
+ <br />
+ If so, and you still think that your feed should be aggregated, please contact the project to which's group you
+ submitted your blog.
+ <br />
+ -- <br />
+ JBoss.ORG Feeds robot
+ </m:body>
+</m:message>
\ No newline at end of file
Modified: trunk/view/manage/group/group_mod.xhtml
===================================================================
--- trunk/view/manage/group/group_mod.xhtml 2008-03-14 10:22:37 UTC (rev 265)
+++ trunk/view/manage/group/group_mod.xhtml 2008-03-17 10:11:54 UTC (rev 266)
@@ -11,6 +11,10 @@
<div class="TwoColumnBlogSubnav">
<h4>Tips</h4>
<ul>
+ <li>
+ Notifications of new proposed feeds in this group will be sent to the e-mail
+ specified below (field "Administrator e-mail").
+ </li>
<li class="last">
<p>Header is an optional piece of HTML that will be displayed on the top of the page when
viewing feeds/posts from that group.</p>
@@ -46,6 +50,18 @@
</a:outputPanel>
</h:panelGroup>
+ <h:outputLabel for="adminEmail">Administrator e-mail:</h:outputLabel>
+ <h:panelGroup>
+ <h:inputText id="adminEmail" value="#{groupMod.group.adminEmail}" size="32">
+ <a:support event="onblur" reRender="adminEmailMessage" ajaxSingle="true" bypassUpdates="true"/>
+ <s:validate />
+ </h:inputText>
+
+ <a:outputPanel id="adminEmailMessage">
+ <h:message for="adminEmail" styleClass="error" />
+ </a:outputPanel>
+ </h:panelGroup>
+
<h:outputLabel for="header">Header:</h:outputLabel>
<h:panelGroup>
<h:inputTextarea id="header" value="#{groupMod.group.header}" rows="25" cols="60">
More information about the jboss-cvs-commits
mailing list