[jboss-cvs] JBossBlog SVN: r132 - in trunk: resources/WEB-INF and 12 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 22 06:08:03 EST 2007


Author: adamw
Date: 2007-11-22 06:08:03 -0500 (Thu, 22 Nov 2007)
New Revision: 132

Added:
   trunk/src/action/org/jboss/blog/session/manage/
   trunk/src/action/org/jboss/blog/session/manage/NewRemoteFeedBean.java
   trunk/src/action/org/jboss/blog/session/parser/
   trunk/src/action/org/jboss/blog/session/parser/ParserException.java
   trunk/src/action/org/jboss/blog/session/parser/ParserService.java
   trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
   trunk/src/action/org/jboss/blog/tools/
   trunk/src/action/org/jboss/blog/tools/StringTools.java
   trunk/src/model/org/
   trunk/src/model/org/jboss/
   trunk/src/model/org/jboss/blog/
   trunk/src/model/org/jboss/blog/model/
   trunk/src/model/org/jboss/blog/model/AggregatedFeed.java
   trunk/src/model/org/jboss/blog/model/Blog.java
   trunk/src/model/org/jboss/blog/model/Feed.java
   trunk/src/model/org/jboss/blog/model/FeedType.java
   trunk/src/model/org/jboss/blog/model/Post.java
   trunk/src/model/org/jboss/blog/model/RemoteFeed.java
   trunk/view/manage/
   trunk/view/manage/add.xhtml
   trunk/view/manage/add_remote.xhtml
   trunk/view/manage/index.xhtml
Modified:
   trunk/blog.iml
   trunk/build.xml
   trunk/resources/WEB-INF/pages.xml
   trunk/view/home.xhtml
Log:


Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml	2007-11-21 19:00:59 UTC (rev 131)
+++ trunk/blog.iml	2007-11-22 11:08:03 UTC (rev 132)
@@ -4,9 +4,54 @@
     <exclude-output />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/src/action" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/model" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/dist" />
+      <excludeFolder url="file://$MODULE_DIR$/exploded-archives" />
     </content>
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="api-other" level="application" />
+    <orderEntry type="library" name="javaee" level="application" />
+    <orderEntry type="module-library">
+      <library name="Seam">
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-debug.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-ui.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-remoting.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-pdf.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-ioc.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-mail.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/jboss-seam-gen.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library name="hibernate">
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/lib/hibernate-entitymanager.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/hibernate-commons-annotations.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/hibernate-annotations.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/hibernate-search.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/hibernate.jar!/" />
+          <root url="jar://$MODULE_DIR$/lib/hibernate-validator.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library name="rome">
+        <CLASSES>
+          <root url="jar://$MODULE_DIR$/lib/rome-0.9.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
     <orderEntryProperties />
   </component>
 </module>

Modified: trunk/build.xml
===================================================================
--- trunk/build.xml	2007-11-21 19:00:59 UTC (rev 131)
+++ trunk/build.xml	2007-11-22 11:08:03 UTC (rev 132)
@@ -157,6 +157,8 @@
                                 <include name="lib/antlr-*.jar"/>
                                 <include name="lib/mvel*.jar"/>
                         		<include name="lib/richfaces-api*.jar" />
+                                <include name="lib/rome*.jar" />
+                                <include name="lib/jdom*.jar" />
                         </fileset>
                 </copy>
                 <copy todir="${ear.dir}/META-INF">

Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml	2007-11-21 19:00:59 UTC (rev 131)
+++ trunk/resources/WEB-INF/pages.xml	2007-11-22 11:08:03 UTC (rev 132)
@@ -14,6 +14,8 @@
         </navigation>
     </page>
 
+    <page view-id="/manage/add*" conversation-required="true" />
+
     <exception class="org.jboss.seam.framework.EntityNotFoundException">
         <redirect view-id="/error.xhtml">
             <message>Not found</message>

Added: trunk/src/action/org/jboss/blog/session/manage/NewRemoteFeedBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/manage/NewRemoteFeedBean.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/manage/NewRemoteFeedBean.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,59 @@
+package org.jboss.blog.session.manage;
+
+import org.hibernate.validator.NotEmpty;
+import org.jboss.blog.session.parser.ParserException;
+import org.jboss.blog.session.parser.ParserService;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Scope(ScopeType.CONVERSATION)
+ at Name("newRemoteFeed")
+public class NewRemoteFeedBean {
+    @In
+    private ParserService parserService;
+
+    @NotEmpty
+    private String link;
+
+    private Boolean parseOk;
+    private Exception parseException;
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public Boolean isParseOk() {
+        return parseOk;
+    }
+
+    public void setParseOk(Boolean parseOk) {
+        this.parseOk = parseOk;
+    }
+
+    public Exception getParseException() {
+        return parseException;
+    }
+
+    public void setParseException(Exception parseException) {
+        this.parseException = parseException;
+    }
+
+    public void parseFeed() {
+        try {
+            parserService.parse(getLink());
+            setParseOk(true);
+        } catch (ParserException e) {
+            setParseException(parseException);
+            setParseOk(false);
+        }
+    }
+}

Added: trunk/src/action/org/jboss/blog/session/parser/ParserException.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserException.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserException.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,21 @@
+package org.jboss.blog.session.parser;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class ParserException extends Exception {
+    public ParserException() {
+    }
+
+    public ParserException(String message) {
+        super(message);
+    }
+
+    public ParserException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public ParserException(Throwable cause) {
+        super(cause);
+    }
+}

Added: trunk/src/action/org/jboss/blog/session/parser/ParserService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserService.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserService.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,15 @@
+package org.jboss.blog.session.parser;
+
+import org.jboss.blog.model.Blog;
+
+import javax.ejb.Local;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Local
+public interface ParserService {
+    Blog parse(String link) throws ParserException;
+
+    void remove();
+}

Added: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,84 @@
+package org.jboss.blog.session.parser;
+
+import com.sun.syndication.feed.synd.SyndCategory;
+import com.sun.syndication.feed.synd.SyndContent;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.io.FeedException;
+import com.sun.syndication.io.SyndFeedInput;
+import com.sun.syndication.io.XmlReader;
+import org.jboss.blog.model.Blog;
+import org.jboss.blog.model.Post;
+import org.jboss.blog.tools.StringTools;
+import org.jboss.seam.annotations.Name;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateless;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Stateless
+ at Name("parserService")
+public class ParserServiceImpl implements ParserService {
+    public Blog parse(String link) throws ParserException {
+        try {
+            SyndFeedInput input = new SyndFeedInput();
+            SyndFeed feed = input.build(new XmlReader(new URL(link)));
+
+            Blog blog = new Blog();
+            blog.setAuthor(feed.getAuthor());
+            blog.setDescription(feed.getDescription());
+            blog.setLink(feed.getLink());
+            blog.setTitle(feed.getTitle());
+            blog.setPosts(new ArrayList<Post>());
+
+            if (feed.getEntries() != null) {
+                for (Object entryObj : feed.getEntries()) {
+                    SyndEntry entry = (SyndEntry) entryObj;
+                    Post post = new Post();
+                    post.setBlog(blog);
+
+                    post.setAuthor(StringTools.isEmpty(entry.getAuthor()) ? blog.getAuthor() : entry.getAuthor());
+
+                    for (Object contentObj : entry.getContents()) {
+                        SyndContent content = (SyndContent) contentObj;
+                        if (!StringTools.isEmpty(content.getValue())) {
+                            post.setContent(content.getValue());
+                            break;
+                        }
+                    }
+
+                    post.setCategories(new ArrayList<String>());
+                    for (Object categoryObj : entry.getCategories()) {
+                        SyndCategory category = (SyndCategory) categoryObj;
+                        post.getCategories().add(category.getName());
+                    }
+
+                    post.setTitle(entry.getTitle());
+                    post.setPublished(entry.getPublishedDate());
+                    post.setModified(entry.getUpdatedDate());
+                    post.setLink(entry.getLink());
+                    post.setGuid(entry.getUri());
+
+                    blog.getPosts().add(post);
+                }
+            }
+
+            return blog;
+        } catch (FeedException e) {
+            throw new ParserException(e);
+        } catch (MalformedURLException e) {
+            throw new ParserException(e);
+        } catch (IOException e) {
+            throw new ParserException(e);
+        }
+    }
+
+    @Remove
+    public void remove() { }
+}

Added: trunk/src/action/org/jboss/blog/tools/StringTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/tools/StringTools.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/tools/StringTools.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,22 @@
+package org.jboss.blog.tools;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class StringTools {
+    public static boolean isEmpty(String s) {
+        return s == null || "".equals(s);
+    }
+
+    public static String safeToString(Object o) {
+        return o == null ? null : o.toString();
+    }
+
+    public static String convertTitleToLink(String title) {
+        if (title == null) {
+            return null;
+        }
+
+        return title.toLowerCase().replaceAll("[^a-z0-9_]", "_");
+    }
+}

Added: trunk/src/model/org/jboss/blog/model/AggregatedFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/AggregatedFeed.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/AggregatedFeed.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,22 @@
+package org.jboss.blog.model;
+
+import javax.persistence.Entity;
+import javax.persistence.ManyToMany;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class AggregatedFeed extends Feed {
+    @ManyToMany
+    private List<Feed> feeds;
+
+    public List<Feed> getFeeds() {
+        return feeds;
+    }
+
+    public void setFeeds(List<Feed> feeds) {
+        this.feeds = feeds;
+    }
+}

Added: trunk/src/model/org/jboss/blog/model/Blog.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Blog.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/Blog.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,99 @@
+package org.jboss.blog.model;
+
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotEmpty;
+import org.hibernate.validator.Pattern;
+import org.jboss.blog.tools.StringTools;
+
+import javax.persistence.*;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class Blog {
+    @Id
+    @GeneratedValue
+    private Integer id;
+
+    @NotEmpty
+    @Length(max = 512)
+    private String title;
+
+    @NotEmpty
+    @Pattern(regex = "^[a-z0-9_]$")
+    @Column(unique = true)
+    private String titleAsLink;
+
+    @Length(max = 256)
+    private String author;
+
+    @Length(max = 512)
+    @NotEmpty
+    private String link;
+
+    @OneToMany(cascade = {CascadeType.REMOVE})
+    private List<Post> posts;
+
+    @Lob
+    private String description;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        setTitleAsLink(StringTools.convertTitleToLink(title));
+        this.title = title;
+    }
+
+    public String getTitleAsLink() {
+        return titleAsLink;
+    }
+
+    public void setTitleAsLink(String titleAsLink) {
+        this.titleAsLink = titleAsLink;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public List<Post> getPosts() {
+        return posts;
+    }
+
+    public void setPosts(List<Post> posts) {
+        this.posts = posts;
+    }
+}
+

Added: trunk/src/model/org/jboss/blog/model/Feed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Feed.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/Feed.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,72 @@
+package org.jboss.blog.model;
+
+import org.hibernate.annotations.CollectionOfElements;
+import org.hibernate.validator.NotNull;
+
+import javax.persistence.*;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+ at Inheritance(strategy = InheritanceType.SINGLE_TABLE)
+public abstract class Feed {
+    @Id
+    @GeneratedValue
+    @Column(updatable = false)
+    private Integer id;
+
+    @OneToOne(cascade = CascadeType.REMOVE)
+    @NotNull
+    private Blog blog;
+
+    @CollectionOfElements
+    private Map<FeedType, String> templates;
+
+    @Column
+    private int maxPosts;
+
+    @Column
+    private boolean useBlogAuthorInPosts;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Blog getBlog() {
+        return blog;
+    }
+
+    public void setBlog(Blog blog) {
+        this.blog = blog;
+    }
+
+    public Map<FeedType, String> getTemplates() {
+        return templates;
+    }
+
+    public void setTemplates(Map<FeedType, String> templates) {
+        this.templates = templates;
+    }
+
+    public int getMaxPosts() {
+        return maxPosts;
+    }
+
+    public void setMaxPosts(int maxPosts) {
+        this.maxPosts = maxPosts;
+    }
+
+    public boolean isUseBlogAuthorInPosts() {
+        return useBlogAuthorInPosts;
+    }
+
+    public void setUseBlogAuthorInPosts(boolean useBlogAuthorInPosts) {
+        this.useBlogAuthorInPosts = useBlogAuthorInPosts;
+    }
+}

Added: trunk/src/model/org/jboss/blog/model/FeedType.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/FeedType.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/FeedType.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,9 @@
+package org.jboss.blog.model;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public enum FeedType {
+    ATOM,
+    RSS2
+}

Added: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/Post.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,151 @@
+package org.jboss.blog.model;
+
+import org.hibernate.annotations.CollectionOfElements;
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotEmpty;
+import org.hibernate.validator.NotNull;
+import org.hibernate.validator.Pattern;
+import org.jboss.blog.tools.StringTools;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class Post {
+    @Id
+    @GeneratedValue
+    @Column(updatable = false)
+    private Integer id;
+
+    @NotEmpty
+    @Length(max = 512)
+    private String title;
+
+    @NotEmpty
+    @Pattern(regex = "^[a-z0-9_]$")
+    @Column(unique = true)
+    private String titleAsLink;
+
+    @Lob
+    private String content;
+
+    @Length(max = 512)
+    @NotEmpty
+    private String link;
+
+    @Length(max = 512)
+    @NotEmpty
+    private String guid;
+
+    @Length(max = 256)
+    @NotEmpty
+    private String author;
+
+    @CollectionOfElements
+    private List<String> categories;
+
+    @Temporal(value = TemporalType.TIMESTAMP)
+    @NotNull
+    private Date published;
+
+    @Temporal(value = TemporalType.TIMESTAMP)
+    @NotNull
+    private Date modified;
+
+    @ManyToOne
+    @NotNull
+    private Blog blog;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        setTitleAsLink(StringTools.convertTitleToLink(title));
+        this.title = title;
+    }
+
+    public String getTitleAsLink() {
+        return titleAsLink;
+    }
+
+    public void setTitleAsLink(String titleAsLink) {
+        this.titleAsLink = titleAsLink;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public void setGuid(String guid) {
+        this.guid = guid;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    public List<String> getCategories() {
+        return categories;
+    }
+
+    public void setCategories(List<String> categories) {
+        this.categories = categories;
+    }
+
+    public Date getPublished() {
+        return published;
+    }
+
+    public void setPublished(Date published) {
+        this.published = published;
+    }
+
+    public Date getModified() {
+        return modified;
+    }
+
+    public void setModified(Date modified) {
+        this.modified = modified;
+    }
+
+    public Blog getBlog() {
+        return blog;
+    }
+
+    public void setBlog(Blog blog) {
+        this.blog = blog;
+    }
+}

Added: trunk/src/model/org/jboss/blog/model/RemoteFeed.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/RemoteFeed.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/RemoteFeed.java	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,24 @@
+package org.jboss.blog.model;
+
+import org.hibernate.validator.Length;
+import org.hibernate.validator.NotEmpty;
+
+import javax.persistence.Entity;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Entity
+public class RemoteFeed extends Feed {
+    @NotEmpty
+    @Length(max = 512)
+    private String link;
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+}

Modified: trunk/view/home.xhtml
===================================================================
--- trunk/view/home.xhtml	2007-11-21 19:00:59 UTC (rev 131)
+++ trunk/view/home.xhtml	2007-11-22 11:08:03 UTC (rev 132)
@@ -1,4 +1,4 @@
-<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
+<!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"
@@ -11,24 +11,8 @@
 <ui:define name="body">
 
     <h:messages globalOnly="true" styleClass="message"/>
-    
-    <rich:panel>
-    <f:facet name="header">Welcome!</f:facet>
-    <p>This empty shell application includes:</p>
-    <ul>
-        <li>Ant build script</li>
-        <li>Deployment to JBoss AS (EAR or WAR)</li>
-        <li>Development and production profiles</li>
-        <li>Integration testing using TestNG and Embedded JBoss</li>
-        <li>JavaBean or EJB 3.0 Seam components</li>
-        <li>JPA entity classes</li>
-        <li>A configurable DataSource and JPA EntityManager</li>
-        <li>Templated Facelets views</li>
-        <li>RichFaces panels and tables</li>
-        <li>Default CSS stylesheet</li>
-        <li>Internationalization support</li>
-    </ul>
-    </rich:panel>
-    
-</ui:define> 
+
+    <s:link value="Manage feeds" view="/manage/index.xhtml" propagation="none" />
+
+</ui:define>
 </ui:composition>

Added: trunk/view/manage/add.xhtml
===================================================================
--- trunk/view/manage/add.xhtml	                        (rev 0)
+++ trunk/view/manage/add.xhtml	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,20 @@
+<!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:messages globalOnly="true" styleClass="message"/>
+
+    <h1>Add a new feed</h1>
+
+    <s:link value="Add a new remote feed" view="/manage/add_remote.xhtml" />
+    <s:link value="Add a new aggregated feed" />
+</ui:define>
+</ui:composition>

Added: trunk/view/manage/add_remote.xhtml
===================================================================
--- trunk/view/manage/add_remote.xhtml	                        (rev 0)
+++ trunk/view/manage/add_remote.xhtml	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,47 @@
+<!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"
+                xmlns:a="http://richfaces.org/a4j"
+                template="../layout/template.xhtml">
+
+    <ui:define name="body">
+
+        <h:messages globalOnly="true" styleClass="message"/>
+
+        <h1>Add a new remote feed</h1>
+
+        <h:form>
+            <h:outputLabel>Remote feed address:</h:outputLabel> <br />
+            <h:inputText id="link" value="#{newRemoteFeed.link}" required="true">
+                <a:support event="onblur" reRender="linkMessage" ajaxSingle="true" bypassUpdates="true"/>
+                <s:validate />
+            </h:inputText>
+            <a:outputPanel id="linkMessage">
+                <h:message for="link" styleClass="error" />
+            </a:outputPanel>
+            <br />
+
+            <a:commandButton action="#{newRemoteFeed.parseFeed}" value="Read the feed" id="readFeed"
+                             reRender="parseStatus" /> <br />
+
+            Status: <a:status stopText="n/a" startText="Wait ..." for="readFeed" /> <br />
+            <h:panelGroup id="parseStatus">
+                <h:panelGroup rendered="#{newRemoteFeed.parseOk == true}">
+                    Parsing the feed was successfull! You can proceed.
+                </h:panelGroup>
+                <h:panelGroup rendered="#{newRemoteFeed.parseOk == false}">
+                    Parsing the feed failed, because of the following exception:
+                    #{newRemoteFeed.parseException.message}
+                </h:panelGroup>
+                <br />
+            </h:panelGroup>
+
+            <h:commandButton disabled="#{newRemoteFeed.parseOk != true}" value="Next" />
+        </h:form>
+    </ui:define>
+</ui:composition>

Added: trunk/view/manage/index.xhtml
===================================================================
--- trunk/view/manage/index.xhtml	                        (rev 0)
+++ trunk/view/manage/index.xhtml	2007-11-22 11:08:03 UTC (rev 132)
@@ -0,0 +1,20 @@
+<!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:messages globalOnly="true" styleClass="message"/>
+
+    <h1>Manage feeds</h1>
+
+    <s:link value="Add new feed" view="/manage/add.xhtml" propagation="start" />
+
+</ui:define>
+</ui:composition>




More information about the jboss-cvs-commits mailing list