[jboss-cvs] JBossBlog SVN: r217 - in trunk: resources/META-INF and 17 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 25 04:47:41 EST 2008


Author: adamw
Date: 2008-02-25 04:47:41 -0500 (Mon, 25 Feb 2008)
New Revision: 217

Added:
   trunk/src/action/org/jboss/blog/session/configuration/
   trunk/src/action/org/jboss/blog/session/configuration/ConfigurationManager.java
   trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsCountBean.java
   trunk/src/model/org/jboss/blog/model/configuration/
   trunk/src/model/org/jboss/blog/model/configuration/Configuration.java
Removed:
   trunk/src/action/org/jboss/blog/session/Authenticator.java
   trunk/view/login.xhtml
   trunk/view/manage/add.xhtml
Modified:
   trunk/resources/META-INF/persistence-design.xml
   trunk/resources/META-INF/persistence-dev.xml
   trunk/resources/META-INF/persistence-prod.xml
   trunk/resources/WEB-INF/pages.xml
   trunk/resources/messages_en.properties
   trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
   trunk/src/action/org/jboss/blog/session/group/GroupsServiceImpl.java
   trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
   trunk/src/action/org/jboss/blog/session/security/SecurityManager.java
   trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
   trunk/src/action/org/jboss/blog/session/update/UpdateManager.java
   trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java
   trunk/src/services/org/jboss/blog/service/FeedsService.java
   trunk/src/services/org/jboss/blog/service/GroupsService.java
   trunk/view/home.xhtml
   trunk/view/manage/feed_mod.xhtml
   trunk/view/manage/group/group_list.xhtml
   trunk/view/manage/index.xhtml
   trunk/view/manage/proposition/proposition_list.xhtml
   trunk/view/manage/update_manager.xhtml
Log:


Modified: trunk/resources/META-INF/persistence-design.xml
===================================================================
--- trunk/resources/META-INF/persistence-design.xml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/resources/META-INF/persistence-design.xml	2008-02-25 09:47:41 UTC (rev 217)
@@ -17,6 +17,7 @@
         <class>org.jboss.blog.model.Enclosure</class>
         <class>org.jboss.blog.model.Image</class>
         <class>org.jboss.blog.model.Template</class>
+        <class>org.jboss.blog.model.configuration.Configuration</class>
         <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
             <property name="hibernate.hbm2ddl.auto" value="update"/>
@@ -34,10 +35,10 @@
             <property name="hibernate.cache.provider_configuration_file_resource_path" value="blog-ehcache.xml" />
             
             <!-- TODO Search -->
-            <!-- use a file system based index -->
+            <!-- use a file system based index
             <property name="hibernate.search.default.directory_provider"
-                      value="org.hibernate.search.store.FSDirectoryProvider"/>
-            <!-- directory where the indexes will be stored -->
+                      value="org.hibernate.search.store.FSDirectoryProvider"/> -->
+            <!-- directory where the indexes will be stored
             <property name="hibernate.search.default.indexBase"
                       value="/Users/adamwarski/jboss/blog-index"/>
 
@@ -46,7 +47,7 @@
             <property name="hibernate.ejb.event.post-update"
                       value="org.hibernate.search.event.FullTextIndexEventListener"/>
             <property name="hibernate.ejb.event.post-delete"
-                      value="org.hibernate.search.event.FullTextIndexEventListener"/>
+                      value="org.hibernate.search.event.FullTextIndexEventListener"/>-->
         </properties>
     </persistence-unit>
 

Modified: trunk/resources/META-INF/persistence-dev.xml
===================================================================
--- trunk/resources/META-INF/persistence-dev.xml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/resources/META-INF/persistence-dev.xml	2008-02-25 09:47:41 UTC (rev 217)
@@ -17,6 +17,7 @@
         <class>org.jboss.blog.model.Enclosure</class>
         <class>org.jboss.blog.model.Image</class>
         <class>org.jboss.blog.model.Template</class>
+        <class>org.jboss.blog.model.configuration.Configuration</class>
         <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
             <property name="hibernate.hbm2ddl.auto" value="update"/>

Modified: trunk/resources/META-INF/persistence-prod.xml
===================================================================
--- trunk/resources/META-INF/persistence-prod.xml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/resources/META-INF/persistence-prod.xml	2008-02-25 09:47:41 UTC (rev 217)
@@ -17,6 +17,7 @@
         <class>org.jboss.blog.model.Enclosure</class>
         <class>org.jboss.blog.model.Image</class>
         <class>org.jboss.blog.model.Template</class>
+        <class>org.jboss.blog.model.configuration.Configuration</class>
         <properties>
             <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
             <property name="hibernate.hbm2ddl.auto" value="update"/>

Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/resources/WEB-INF/pages.xml	2008-02-25 09:47:41 UTC (rev 217)
@@ -42,8 +42,6 @@
 
     <!-- Manage feeds -->
 
-    <page view-id="/manage/add.xhtml" />
-
     <page view-id="/manage/feed_add.xhtml" conversation-required="true">
         <navigation from-action="#{feedMod.saveNew}">
             <end-conversation />
@@ -254,6 +252,10 @@
         </navigation>
     </page>
 
+    <!-- Manage -->
+
+    <page view-id="/manage/update_manager.xhtml" />
+
     <!-- Exceptions -->
 
     <exception class="org.jboss.seam.framework.EntityNotFoundException">

Modified: trunk/resources/messages_en.properties
===================================================================
--- trunk/resources/messages_en.properties	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/resources/messages_en.properties	2008-02-25 09:47:41 UTC (rev 217)
@@ -123,4 +123,6 @@
 blog.post.deleted=Post '{0}' deleted.
 
 blog.search.exception=Malformed search query: {0}.
-blog.search.emptyquery=Your query is empty.
\ No newline at end of file
+blog.search.emptyquery=Your query is empty.
+
+blog.configuration.saved=Configuration saved.
\ No newline at end of file

Deleted: trunk/src/action/org/jboss/blog/session/Authenticator.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/Authenticator.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/Authenticator.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -1,26 +0,0 @@
-package org.jboss.blog.session;
-
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Logger;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.log.Log;
-import org.jboss.seam.security.Identity;
-
-
- at Name("authenticator")
-public class Authenticator
-{
-    @Logger Log log;
-    
-    @In Identity identity;
-   
-    public boolean authenticate()
-    {
-        log.info("authenticating #0", identity.getUsername());
-        //write your authentication logic here,
-        //return true if the authentication was
-        //successful, false otherwise
-        identity.addRole("admin");
-        return true;
-    }
-}

Added: trunk/src/action/org/jboss/blog/session/configuration/ConfigurationManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/configuration/ConfigurationManager.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/configuration/ConfigurationManager.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -0,0 +1,46 @@
+package org.jboss.blog.session.configuration;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.ScopeType;
+import org.jboss.blog.model.configuration.Configuration;
+
+import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
+import javax.persistence.NonUniqueResultException;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("configurationManager")
+ at Scope(ScopeType.APPLICATION)
+ at AutoCreate
+public class ConfigurationManager {
+    @In
+    private EntityManager entityManager;
+
+    private Configuration initNewConfiguration() {
+        Configuration conf = new Configuration();
+        conf.setConnectionTimeout(5000);
+        conf.setReadTimeout(3000);
+        conf.setUpdateInterval(900);
+
+        return conf;
+    }
+
+    public synchronized Configuration getConfiguration() {
+        try {
+            return (Configuration) entityManager.createQuery("select conf from Configuration conf").getSingleResult();
+        } catch (NoResultException e) {
+            Configuration conf = initNewConfiguration();
+            entityManager.persist(conf);
+            entityManager.flush();
+
+            return conf;
+        } catch (NonUniqueResultException e) {
+            throw new RuntimeException("There should be at most 1 configuration entity!", e);
+        }
+    }
+}

Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -4,7 +4,6 @@
 import org.jboss.blog.model.feed.RestrictedFeed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.model.Group;
 import org.jboss.blog.service.FeedNotFoundException;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.PostNotFoundException;
@@ -39,12 +38,6 @@
     @Logger
     private Log log;
 
-    @SuppressWarnings("unchecked")
-    public List<Group> getAllGroups() {
-        return entityManager.createQuery("select group from Group group order by group.name")
-                .setHint("org.hibernate.cacheable", Boolean.TRUE).getResultList();
-    }
-
     public Post getPost(String titleAsId) throws PostNotFoundException {
         log.debug("Reading post '#0' from the DB.", titleAsId);
         try {

Modified: trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -108,7 +108,7 @@
     @Create
     public void populateLists() {
         // Populating available groups
-        availableGroups = feedsService.getAllGroups();
+        availableGroups = groupsService.getAllGroups();
         availableFeeds = new ArrayList<Feed>();
 
         for (Group availableGroup : availableGroups) {

Added: trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsCountBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsCountBean.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/PropositionsCountBean.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -0,0 +1,28 @@
+package org.jboss.blog.session.feed.mod;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.ScopeType;
+import org.jboss.blog.service.GroupsService;
+import org.jboss.blog.model.Group;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("propositionsCount")
+ at Scope(ScopeType.STATELESS)
+public class PropositionsCountBean {
+    @In
+    private GroupsService groupsService;
+
+    public int getPendingPropositions() {
+        int total = 0;
+
+        for (Group group : groupsService.getAllGroups()) {
+            total += groupsService.unacceptedFeeds(group).size();
+        }
+
+        return total;
+    }
+}
\ No newline at end of file

Modified: trunk/src/action/org/jboss/blog/session/group/GroupsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/group/GroupsServiceImpl.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/group/GroupsServiceImpl.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -22,6 +22,12 @@
     @In
     private EntityManager entityManager;
 
+    @SuppressWarnings("unchecked")
+    public List<Group> getAllGroups() {
+        return entityManager.createQuery("select group from Group group order by group.name")
+                .setHint("org.hibernate.cacheable", Boolean.TRUE).getResultList();
+    }
+
     public List<Feed> acceptedFeeds(Group group) {
         //noinspection unchecked
         return entityManager

Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -9,7 +9,9 @@
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.Enclosure;
 import org.jboss.blog.model.Image;
+import org.jboss.blog.model.configuration.Configuration;
 import org.jboss.blog.session.category.CategoryServiceBean;
+import org.jboss.blog.session.configuration.ConfigurationManager;
 import org.jboss.blog.tools.StringTools;
 import org.jboss.seam.annotations.AutoCreate;
 import org.jboss.seam.annotations.In;
@@ -36,6 +38,9 @@
     @In
     private CategoryServiceBean categoryService;
 
+    @In
+    private ConfigurationManager configurationManager;
+
     private Image getImageFromForeignMarkup(Post post, List<Element> foreignMarkup) {
         for (Element element : foreignMarkup) {
             if ("image".equals(element.getName())) {
@@ -58,9 +63,11 @@
         try {
             SyndFeedInput input = new SyndFeedInput();
 
+            Configuration conf = configurationManager.getConfiguration();
+
             URLConnection conn = new URL(link).openConnection();
-            conn.setReadTimeout(3000);
-            conn.setConnectTimeout(5000);
+            conn.setReadTimeout(conf.getReadTimeout());
+            conn.setConnectTimeout(conf.getConnectionTimeout());
             conn.connect();
 
             SyndFeed syndFeed = input.build(new XmlReader(conn.getInputStream()));

Modified: trunk/src/action/org/jboss/blog/session/security/SecurityManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/security/SecurityManager.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/security/SecurityManager.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -8,7 +8,7 @@
 import org.jboss.blog.model.Group;
 import org.jboss.blog.model.security.SecurityRoles;
 import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.service.GroupsService;
 
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -20,7 +20,7 @@
     private Identity identity;
 
     @In
-    private FeedsService feedsService;
+    private GroupsService groupsService;
 
     public boolean hasAdminRole() {
         return identity.hasRole(SecurityRoles.ADMIN.toString());
@@ -35,7 +35,7 @@
             return true;
         }
 
-        for (Group group : feedsService.getAllGroups()) {
+        for (Group group : groupsService.getAllGroups()) {
             if (identity.hasRole(SecurityRoles.GROUP_ADMIN + "/" + group.getName())) {
                 return true;
             }

Modified: trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -3,7 +3,6 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.feed.RestrictedFeed;
 import org.jboss.blog.model.Group;
-import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.GroupsService;
 import org.jboss.blog.session.feed.type.FeedTypes;
 import org.jboss.seam.annotations.AutoCreate;
@@ -22,9 +21,6 @@
 @AutoCreate
 public class UpdateHandler {
     @In
-    private FeedsService feedsService;
-
-    @In
     private GroupsService groupsService;
 
     @In
@@ -34,7 +30,7 @@
     private UpdateManager updateManager;
 
     public void update() {
-        for (Group group : feedsService.getAllGroups()) {
+        for (Group group : groupsService.getAllGroups()) {
             for (Feed feed : groupsService.acceptedFeeds(group)) {
                 update(feed);
             }

Modified: trunk/src/action/org/jboss/blog/session/update/UpdateManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateManager.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateManager.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -1,9 +1,12 @@
 package org.jboss.blog.session.update;
 
 import org.jboss.seam.ScopeType;
+import org.jboss.seam.faces.FacesMessages;
 import org.jboss.seam.annotations.*;
 import org.jboss.seam.annotations.Observer;
+import org.jboss.blog.session.configuration.ConfigurationManager;
 
+import javax.faces.application.FacesMessage;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
@@ -19,22 +22,25 @@
 @Name("updateManager")
 @Scope(ScopeType.APPLICATION)
 public class UpdateManager {
+    @In
+    private ConfigurationManager configurationManager;
+
+    @In
+    private FacesMessages facesMessages;
+
     private long lastUpdateStart;
     private long lastUpdateEnd;
 
     private AtomicBoolean updateInProgress;
 
-    private int updatesInterval;
-
     private List<Exception> globalExceptions;
     private Map<String, List<UpdateException>> feedUpdateExceptions;
 
     private ScheduledExecutorService executor;
 
     @Observer("org.jboss.blog.postBlogInit")
+    @Transactional
     public void register() {
-        updatesInterval = 900;
-
         globalExceptions = new ArrayList<Exception>();
         feedUpdateExceptions = new LinkedHashMap<String, List<UpdateException>>();
 
@@ -50,7 +56,7 @@
 
     private void createAndStartExcutor() {
         executor = Executors.newScheduledThreadPool(1);
-        executor.scheduleAtFixedRate(new UpdateThread(), 10, updatesInterval, TimeUnit.SECONDS);
+        executor.scheduleAtFixedRate(new UpdateThread(), 10, getUpdateInterval(), TimeUnit.SECONDS);
     }
 
     public void addFeedUpdateException(String feedName, UpdateException exception) {
@@ -107,14 +113,6 @@
         return DateFormat.getDateTimeInstance().format(getLastUpdateStart());
     }
 
-    public int getUpdatesInterval() {
-        return updatesInterval;
-    }
-
-    public void setUpdatesInterval(int updatesInterval) {
-        this.updatesInterval = updatesInterval;
-    }
-
     public AtomicBoolean getUpdateInProgress() {
         return updateInProgress;
     }
@@ -123,6 +121,30 @@
         return DateFormat.getDateTimeInstance().format(System.currentTimeMillis());
     }
 
+    public int getUpdateInterval() {
+        return configurationManager.getConfiguration().getUpdateInterval();
+    }
+
+    public void setUpdateInterval(int updateInterval) {
+        configurationManager.getConfiguration().setUpdateInterval(updateInterval);
+    }
+
+    public int getConnectionTimeout() {
+        return configurationManager.getConfiguration().getConnectionTimeout();
+    }
+
+    public void setConnectionTimeout(int connectionTimeout) {
+        configurationManager.getConfiguration().setConnectionTimeout(connectionTimeout);
+    }
+
+    public int getReadTimeout() {
+        return configurationManager.getConfiguration().getReadTimeout();
+    }
+
+    public void setReadTimeout(int readTimeout) {
+        configurationManager.getConfiguration().setReadTimeout(readTimeout);
+    }
+
     public String getExceptionStackTrace(Exception e) {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         PrintWriter pw = new PrintWriter(baos);
@@ -132,4 +154,9 @@
         pw.flush();
         return baos.toString();
     }
+
+    public void save() {
+        restartUpdateThread();
+        facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.configuration.saved");
+    }
 }

Modified: trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -80,7 +80,7 @@
      * @Deprecated
      */
     public void fixHtml() {
-        for (Group group : feedsService.getAllGroups()) {
+        for (Group group : groupsService.getAllGroups()) {
             for (Feed feed : groupsService.acceptedFeeds(group)) {
                 for (Post post : feed.getPosts()) {
                     post.setContent(StringTools.fixHtml(post.getContent()));

Added: trunk/src/model/org/jboss/blog/model/configuration/Configuration.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/configuration/Configuration.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/configuration/Configuration.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -0,0 +1,83 @@
+package org.jboss.blog.model.configuration;
+
+import org.hibernate.validator.NotNull;
+
+import javax.persistence.*;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class Configuration {
+    @Id
+    @GeneratedValue
+    @Column(updatable = false)
+    private Integer id;
+
+    @Column
+    @NotNull
+    private int readTimeout;
+
+    @Column
+    @NotNull
+    private int connectionTimeout;
+
+    @Column
+    @NotNull
+    private int updateInterval;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public int getReadTimeout() {
+        return readTimeout;
+    }
+
+    public void setReadTimeout(int readTimeout) {
+        this.readTimeout = readTimeout;
+    }
+
+    public int getConnectionTimeout() {
+        return connectionTimeout;
+    }
+
+    public void setConnectionTimeout(int connectionTimeout) {
+        this.connectionTimeout = connectionTimeout;
+    }
+
+    public int getUpdateInterval() {
+        return updateInterval;
+    }
+
+    public void setUpdateInterval(int updateInterval) {
+        this.updateInterval = updateInterval;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof Configuration)) return false;
+
+        Configuration that = (Configuration) o;
+
+        if (connectionTimeout != that.connectionTimeout) return false;
+        if (readTimeout != that.readTimeout) return false;
+        if (updateInterval != that.updateInterval) return false;
+        if (id != null ? !id.equals(that.id) : that.id != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        int result;
+        result = (id != null ? id.hashCode() : 0);
+        result = 31 * result + readTimeout;
+        result = 31 * result + connectionTimeout;
+        result = 31 * result + updateInterval;
+        return result;
+    }
+}

Modified: trunk/src/services/org/jboss/blog/service/FeedsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/services/org/jboss/blog/service/FeedsService.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -14,8 +14,6 @@
  */
 @Local
 public interface FeedsService {
-    List<Group> getAllGroups();
-
     Post getPost(String titleAsId) throws PostNotFoundException;
 
     Feed getFeed(String feedName) throws FeedNotFoundException;

Modified: trunk/src/services/org/jboss/blog/service/GroupsService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/GroupsService.java	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/src/services/org/jboss/blog/service/GroupsService.java	2008-02-25 09:47:41 UTC (rev 217)
@@ -11,6 +11,8 @@
  */
 @Local
 public interface GroupsService {
+    List<Group> getAllGroups();
+
     List<Feed> acceptedFeeds(Group group);
 
     List<Feed> unacceptedFeeds(Group group);

Modified: trunk/view/home.xhtml
===================================================================
--- trunk/view/home.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/home.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -30,7 +30,7 @@
         </p>
 
         <table cellspacing="5" class="deftable" width="75%">
-            <ui:repeat var="group" value="#{feedsService.allGroups}">
+            <ui:repeat var="group" value="#{groupsService.allGroups}">
                 <s:fragment rendered="#{groupsService.acceptedFeeds(group).size() > 0}">
                     <tr>
                         <td class="term" width="15%">#{group.displayName}</td>

Deleted: trunk/view/login.xhtml
===================================================================
--- trunk/view/login.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/login.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -1,41 +0,0 @@
-<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<ui:composition xmlns="http://www.w3.org/1999/xhtml"
-                xmlns:s="http://jboss.com/products/seam/taglib"
-                xmlns:ui="http://java.sun.com/jsf/facelets"
-                xmlns:f="http://java.sun.com/jsf/core"
-                xmlns:h="http://java.sun.com/jsf/html"
-                xmlns:rich="http://richfaces.org/rich"
-                template="layout/template.xhtml">
-    <ui:define name="body">
-        <h:form id="login">
-
-            <rich:panel>
-                <f:facet name="header">Login</f:facet>
-
-                <p>Please login using any username and password</p>
-
-                <div class="dialog">
-                    <h:panelGrid columns="2" rowClasses="prop" columnClasses="name,value">
-                        <h:outputLabel for="username">Username</h:outputLabel>
-                        <h:inputText id="username"
-                                     value="#{identity.username}"/>
-                        <h:outputLabel for="password">Password</h:outputLabel>
-                        <h:inputSecret id="password"
-                                       value="#{identity.password}"/>
-                        <h:outputLabel for="rememberMe">Remember me</h:outputLabel>
-                        <h:selectBooleanCheckbox id="rememberMe"
-                                                 value="#{identity.rememberMe}"/>
-                    </h:panelGrid>
-                </div>
-
-            </rich:panel>
-
-            <div class="actionButtons">
-                <h:commandButton value="Login" action="#{identity.login}"/>
-            </div>
-
-        </h:form>
-
-    </ui:define>
-</ui:composition>

Deleted: trunk/view/manage/add.xhtml
===================================================================
--- trunk/view/manage/add.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/manage/add.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -1,29 +0,0 @@
-<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<ui:composition xmlns="http://www.w3.org/1999/xhtml"
-                xmlns:s="http://jboss.com/products/seam/taglib"
-                xmlns:ui="http://java.sun.com/jsf/facelets"
-                xmlns:f="http://java.sun.com/jsf/core"
-                xmlns:h="http://java.sun.com/jsf/html"
-                xmlns:rich="http://richfaces.org/rich"
-                template="../layout/template.xhtml">
-    <ui:define name="header">
-        Add a new feed
-    </ui:define>
-
-    <ui:define name="body">
-        <div class="adminlist">
-            <dl>
-                <ui:repeat var="feedType" value="#{feedTypes.allTypes}">
-                    <dd>
-                        <s:link value="Add a new #{feedType.name()} feed" view="#{feedType.addPage()}" />
-                    </dd>
-                </ui:repeat>
-            </dl>
-        </div>
-
-        <ul>
-
-        </ul>
-    </ui:define>
-</ui:composition>

Modified: trunk/view/manage/feed_mod.xhtml
===================================================================
--- trunk/view/manage/feed_mod.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/manage/feed_mod.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -83,7 +83,7 @@
     <h:selectOneMenu id="group" required="true" value="#{feedMod.feed.group}">
         <a:support event="onblur" reRender="groupMessage" ajaxSingle="true" bypassUpdates="true"/>
         <s:convertEntity />
-        <s:selectItems var="group" value="#{feedsService.allGroups}"
+        <s:selectItems var="group" value="#{groupsService.allGroups}"
                        label="#{group.displayName}" />
     </h:selectOneMenu>
 

Modified: trunk/view/manage/group/group_list.xhtml
===================================================================
--- trunk/view/manage/group/group_list.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/manage/group/group_list.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -29,7 +29,7 @@
                 <td class="tableheader" />
             </tr>
 
-            <a:repeat var="group" value="#{feedsService.allGroups}" rowKeyVar="rowNumber">
+            <a:repeat var="group" value="#{groupsService.allGroups}" rowKeyVar="rowNumber">
                 <tr class="#{(rowNumber%2 == 0) ? 'evenRow' : 'oddRow'}">
                     <td class="rowlinefirst" style="font-weight:bold;">#{group.displayName}</td>
                     <td class="rowline">#{group.name}</td>

Modified: trunk/view/manage/index.xhtml
===================================================================
--- trunk/view/manage/index.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/manage/index.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -16,8 +16,17 @@
             <dl>
                 <dt>New feed operations:</dt>
                 <hr />
-                <dd><s:link value="Add new feed" view="/manage/add.xhtml" /></dd>
-                <dd><s:link value="Accept feed propositions" view="/manage/proposition/proposition_list.xhtml" /></dd>
+                <s:fragment rendered="#{propositionsCount.pendingPropositions > 0}">
+                    <dd>
+                        <s:link value="Pending feed propositions (#{propositionsCount.pendingPropositions})"
+                                view="/manage/proposition/proposition_list.xhtml" />
+                    </dd>
+                </s:fragment>
+                <ui:repeat var="feedType" value="#{feedTypes.allTypes}">
+                    <dd>
+                        <s:link value="Add a new #{feedType.name()} feed" view="#{feedType.addPage()}" />
+                    </dd>
+                </ui:repeat>
                 <dt>Other operations:</dt>
                 <hr />
                 <dd><s:link value="Manage feed groups" view="/manage/group/group_list.xhtml" /></dd>
@@ -42,7 +51,7 @@
                 <td class="tableheader">Delete the feed</td>
             </tr>
 
-            <ui:repeat var="group" value="#{feedsService.allGroups}">
+            <ui:repeat var="group" value="#{groupsService.allGroups}">
                 <s:fragment rendered="#{groupsService.acceptedFeeds(group).size() > 0}">
                     <tr>
                         <td colspan="7" class="categoryRow">#{group.displayName}</td>

Modified: trunk/view/manage/proposition/proposition_list.xhtml
===================================================================
--- trunk/view/manage/proposition/proposition_list.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/manage/proposition/proposition_list.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -22,7 +22,7 @@
                 <td class="tableheader">Delete the feed</td>
             </tr>
 
-            <ui:repeat var="group" value="#{feedsService.allGroups}">
+            <ui:repeat var="group" value="#{groupsService.allGroups}">
                 <s:fragment>
                     <tr>
                         <td colspan="7" class="categoryRow">#{group.displayName}</td>

Modified: trunk/view/manage/update_manager.xhtml
===================================================================
--- trunk/view/manage/update_manager.xhtml	2008-02-13 08:06:13 UTC (rev 216)
+++ trunk/view/manage/update_manager.xhtml	2008-02-25 09:47:41 UTC (rev 217)
@@ -8,89 +8,119 @@
                 xmlns:rich="http://richfaces.org/rich"
                 xmlns:a="http://richfaces.org/a4j"
                 template="../layout/template.xhtml">
-    <ui:define name="header">
-        Update manager
-    </ui:define>
-    <ui:define name="body">
-        <h:form>
-            <a:poll interval="5000" reRender="mainTable" />
-            <a:outputPanel id="mainTable">
-                <table cellspacing="5" class="deftable" width="75%">
-                    <tr>
-                        <td class="term" width="15%">Last page refresh:</td>
-                        <td class="def">#{updateManager.now}</td>
-                    </tr>
-                    <tr>
-                        <td class="term" width="15%">Last update start:</td>
-                        <td class="def">#{updateManager.lastUpdateStartDate}</td>
-                    </tr>
-                    <tr>
-                        <td class="term" width="15%">Last update end:</td>
-                        <td class="def">#{updateManager.lastUpdateEndDate}</td>
-                    </tr>
-                    <tr>
-                        <td class="term" width="15%">Update in progress:</td>
-                        <td class="def">#{updateManager.updateInProgress.get()}</td>
-                    </tr>
-                    <tr>
-                        <td class="term" width="15%">Global exceptions:</td>
-                        <td class="def">
-                            <s:fragment rendered="#{updateManager.globalExceptions.size() == 0}">
-                                None
-                            </s:fragment>
-                            <s:fragment rendered="#{updateManager.globalExceptions.size() > 0}">
-                                <ui:repeat var="exception" value="#{updateManager.globalExceptions}">
-                                    #{exception.message} <br />
-                                </ui:repeat>
-                            </s:fragment>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="term" width="15%">Feed exceptions:</td>
-                        <td class="def">
-                            <s:fragment rendered="#{updateManager.feedUpdateExceptionNames.size() == 0}">
-                                None
-                            </s:fragment>
-                            <s:fragment rendered="#{updateManager.feedUpdateExceptionNames.size() > 0}">
-                                <ui:repeat var="feedName" value="#{updateManager.feedUpdateExceptionNames}">
-                                    <strong>#{feedName}</strong> <br />
-                                    <ui:repeat var="exception"
-                                               value="#{updateManager.getFeedUpdateExceptionsForFeed(feedName)}">
-                                        <rich:togglePanel id="stackTracePanel" initialState="nothing" switchType="client"
-                                                          stateOrder="nothing,stackTrace">
-                                            <f:facet name="nothing">
-                                                <s:fragment>
-                                                    #{exception.message}
-                                                </s:fragment>
-                                            </f:facet>
-                                            <f:facet name="stackTrace">
-                                                <s:fragment>
-                                                    #{exception.message} <br />
-                                                    #{updateManager.getExceptionStackTrace(exception)}
-                                                </s:fragment>
-                                            </f:facet>
-                                        </rich:togglePanel>
-                                        <rich:toggleControl for="stackTracePanel" value="Toggle stack trace"/>
-                                        <br />
-                                    </ui:repeat>
-                                    <br />
-                                </ui:repeat>
-                            </s:fragment>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="term" width="15%">Actions:</td>
-                        <td class="def">
-                            <h:commandLink action="#{updateManager.clearGlobalExceptions}"
-                                           value="Clear global exceptions" /><br />
-                            <h:commandLink action="#{updateManager.clearFeedsExceptions}"
-                                           value="Clear feeds exceptions"/><br />
-                            <h:commandLink action="#{updateManager.restartUpdateThread}"
-                                           value="Restart the update thread"/><br />
-                        </td>
-                    </tr>
-                </table>
-            </a:outputPanel>
-        </h:form>
-    </ui:define>
+<ui:define name="header">
+    Update manager
+</ui:define>
+<ui:define name="body">
+<h:form>
+    <a:poll interval="5000" reRender="mainTable" />
+    <a:outputPanel id="mainTable">
+        <table cellspacing="5" class="deftable" width="75%">
+            <tr>
+                <td class="term" width="15%">Last page refresh:</td>
+                <td class="def">#{updateManager.now}</td>
+            </tr>
+            <tr>
+                <td class="term" width="15%">Last update start:</td>
+                <td class="def">#{updateManager.lastUpdateStartDate}</td>
+            </tr>
+            <tr>
+                <td class="term" width="15%">Last update end:</td>
+                <td class="def">#{updateManager.lastUpdateEndDate}</td>
+            </tr>
+            <tr>
+                <td class="term" width="15%">Update in progress:</td>
+                <td class="def">#{updateManager.updateInProgress.get()}</td>
+            </tr>
+            <tr>
+                <td class="term" width="15%">Global exceptions:</td>
+                <td class="def">
+                    <s:fragment rendered="#{updateManager.globalExceptions.size() == 0}">
+                        None
+                    </s:fragment>
+                    <s:fragment rendered="#{updateManager.globalExceptions.size() > 0}">
+                        <ui:repeat var="exception" value="#{updateManager.globalExceptions}">
+                            #{exception.message} <br />
+                        </ui:repeat>
+                    </s:fragment>
+                </td>
+            </tr>
+            <tr>
+                <td class="term" width="15%">Feed exceptions:</td>
+                <td class="def">
+                    <s:fragment rendered="#{updateManager.feedUpdateExceptionNames.size() == 0}">
+                        None
+                    </s:fragment>
+                    <s:fragment rendered="#{updateManager.feedUpdateExceptionNames.size() > 0}">
+                        <ui:repeat var="feedName" value="#{updateManager.feedUpdateExceptionNames}">
+                            <strong>#{feedName}</strong> <br />
+                            <ui:repeat var="exception"
+                                       value="#{updateManager.getFeedUpdateExceptionsForFeed(feedName)}">
+                                <rich:togglePanel id="stackTracePanel" initialState="nothing" switchType="client"
+                                                  stateOrder="nothing,stackTrace">
+                                    <f:facet name="nothing">
+                                        <s:fragment>
+                                            #{exception.message}
+                                        </s:fragment>
+                                    </f:facet>
+                                    <f:facet name="stackTrace">
+                                        <s:fragment>
+                                            #{exception.message} <br />
+                                            #{updateManager.getExceptionStackTrace(exception)}
+                                        </s:fragment>
+                                    </f:facet>
+                                </rich:togglePanel>
+                                <rich:toggleControl for="stackTracePanel" value="Toggle stack trace"/>
+                                <br />
+                            </ui:repeat>
+                            <br />
+                        </ui:repeat>
+                    </s:fragment>
+                </td>
+            </tr>
+            <tr>
+                <td class="term" width="15%">Actions:</td>
+                <td class="def">
+                    <h:commandLink action="#{updateManager.clearGlobalExceptions}"
+                                   value="Clear global exceptions" /><br />
+                    <h:commandLink action="#{updateManager.clearFeedsExceptions}"
+                                   value="Clear feeds exceptions"/><br />
+                    <h:commandLink action="#{updateManager.restartUpdateThread}"
+                                   value="Restart the update thread"/><br />
+                </td>
+            </tr>
+        </table>
+        <div class="formbuttons" />
+    </a:outputPanel>
+</h:form>
+<h:form>
+    <table cellspacing="5" class="deftable" width="75%">
+        <tr>
+            <td class="term" width="15%">Updates interval (in seconds):</td>
+            <td class="def">
+                <h:inputText value="#{updateManager.updateInterval}"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="term" width="15%">Remote feed read timeout (in milliseconds):</td>
+            <td class="def">
+                <h:inputText value="#{updateManager.readTimeout}"/>
+            </td>
+        </tr>
+        <tr>
+            <td class="term" width="15%">Remote feed connection timeout (in milliseconds):</td>
+            <td class="def">
+                <h:inputText value="#{updateManager.connectionTimeout}"/>
+            </td>
+        </tr>
+    </table>
+    <div class="formbuttons">
+        <ul>
+            <li>
+                <h:commandButton value="Save changes" action="#{updateManager.save}" styleClass="submit" />
+            </li>
+        </ul>
+    </div>
+</h:form>
+</ui:define>
 </ui:composition>




More information about the jboss-cvs-commits mailing list