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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Dec 3 09:26:16 EST 2007


Author: adamw
Date: 2007-12-03 09:26:16 -0500 (Mon, 03 Dec 2007)
New Revision: 148

Added:
   trunk/resources/templates/
   trunk/resources/templates/rss2_standard.vm
   trunk/src/action/org/jboss/blog/session/template/tools/
   trunk/src/action/org/jboss/blog/session/template/tools/AtomTemplateTools.java
   trunk/src/action/org/jboss/blog/session/template/tools/Rss2TemplateTools.java
   trunk/src/action/org/jboss/blog/session/template/tools/TemplateTools.java
Modified:
   trunk/resources/WEB-INF/components.xml
   trunk/resources/WEB-INF/web.xml
   trunk/src/action/org/jboss/blog/session/template/VelocityTemplateService.java
   trunk/src/model/org/jboss/blog/model/TemplateType.java
   trunk/view/manage/template/template_mod.xhtml
   trunk/view/view/feed.xhtml
Log:


Modified: trunk/resources/WEB-INF/components.xml
===================================================================
--- trunk/resources/WEB-INF/components.xml	2007-12-03 13:29:10 UTC (rev 147)
+++ trunk/resources/WEB-INF/components.xml	2007-12-03 14:26:16 UTC (rev 148)
@@ -50,7 +50,7 @@
 
     <async:quartz-dispatcher />
 
-    <web:context-filter url-pattern="/feeds/*"/>
+    <web:context-filter url-pattern="/feeds.seam"/>
 
     <!-- For use with jBPM pageflow or process management -->
     <!--

Modified: trunk/resources/WEB-INF/web.xml
===================================================================
--- trunk/resources/WEB-INF/web.xml	2007-12-03 13:29:10 UTC (rev 147)
+++ trunk/resources/WEB-INF/web.xml	2007-12-03 14:26:16 UTC (rev 148)
@@ -114,6 +114,6 @@
 
     <servlet-mapping>
         <servlet-name>Feeds Servlet</servlet-name>
-        <url-pattern>/feeds/*</url-pattern>
+        <url-pattern>/feeds.seam</url-pattern>
     </servlet-mapping>
 </web-app>

Added: trunk/resources/templates/rss2_standard.vm
===================================================================
--- trunk/resources/templates/rss2_standard.vm	                        (rev 0)
+++ trunk/resources/templates/rss2_standard.vm	2007-12-03 14:26:16 UTC (rev 148)
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<rss version="2.0">
+        <channel>
+                <title>$escape.all($feed.title)</title>
+                <link>$feed.link</link>
+                <description>$escape.all($description)</description>
+                <language>en</language>
+                <docs>http://blogs.law.harvard.edu/tech/rss</docs>
+                <generator>JBoss Feeds</generator>
+                <managingEditor>$feed.author</managingEditor>
+                <webMaster>$feed.author</webMaster>
+                <pubDate>$rssDateFormat.format($nodesYoungest)</pubDate>
+
+                #foreach($post in $posts)
+                #set($nodeLink="$baseServerAddress/$linkBase/$node.getName()")
+                <item>
+                        <title>$escape.all($post.title)</title>
+                        <link>$post.link</link>
+                        <description>$escape.all($posts.content)</description>
+                        <guid>$post.link</guid>
+                        <pubDate>$tools.formatDate($post.published)</pubDate>
+                </item>
+                #end
+
+        </channel>
+</rss>
\ No newline at end of file

Modified: trunk/src/action/org/jboss/blog/session/template/VelocityTemplateService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/template/VelocityTemplateService.java	2007-12-03 13:29:10 UTC (rev 147)
+++ trunk/src/action/org/jboss/blog/session/template/VelocityTemplateService.java	2007-12-03 14:26:16 UTC (rev 148)
@@ -56,6 +56,11 @@
         }
 
         Feed feed = feedsService.getFeed(feedName);
+
+        if (feed.getTemplates().get(templateType) == null) {
+            throw new InvalidTemplateTypeException();
+        }
+
         List<Post> posts = feedsService.getPosts(feed, 0, feed.getMaxPostsInFeed());
 
         response.setContentType(templateType.contentType());
@@ -63,8 +68,9 @@
         VelocityContext context = new VelocityContext();
         context.put("posts", posts);
         context.put("feed", feed);
+        context.put("tools", templateType.tools().newInstance());
 
-        Template template = engine.getTemplate("standard_rss2");
+        Template template = engine.getTemplate(feed.getTemplates().get(templateType).getName());
         template.merge(context, response.getWriter());
     }
 

Added: trunk/src/action/org/jboss/blog/session/template/tools/AtomTemplateTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/template/tools/AtomTemplateTools.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/template/tools/AtomTemplateTools.java	2007-12-03 14:26:16 UTC (rev 148)
@@ -0,0 +1,16 @@
+package org.jboss.blog.session.template.tools;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class AtomTemplateTools extends TemplateTools {
+    public String formatDate(Date date) {
+		String noZoneDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(date);
+		String zone = new SimpleDateFormat("Z").format(date);
+
+		return noZoneDate + zone.substring(0, 3) + ":" + zone.substring(3, 5);
+    }
+}

Added: trunk/src/action/org/jboss/blog/session/template/tools/Rss2TemplateTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/template/tools/Rss2TemplateTools.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/template/tools/Rss2TemplateTools.java	2007-12-03 14:26:16 UTC (rev 148)
@@ -0,0 +1,13 @@
+package org.jboss.blog.session.template.tools;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class Rss2TemplateTools extends TemplateTools {
+    public String formatDate(Date date) {
+        return new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").format(date);
+    }
+}

Added: trunk/src/action/org/jboss/blog/session/template/tools/TemplateTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/template/tools/TemplateTools.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/template/tools/TemplateTools.java	2007-12-03 14:26:16 UTC (rev 148)
@@ -0,0 +1,13 @@
+package org.jboss.blog.session.template.tools;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class TemplateTools {
+    public String formatDate(Date date) {
+        return new SimpleDateFormat("MM/dd/yy").format(date);
+    }
+}

Modified: trunk/src/model/org/jboss/blog/model/TemplateType.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/TemplateType.java	2007-12-03 13:29:10 UTC (rev 147)
+++ trunk/src/model/org/jboss/blog/model/TemplateType.java	2007-12-03 14:26:16 UTC (rev 148)
@@ -1,19 +1,29 @@
 package org.jboss.blog.model;
 
+import org.jboss.blog.session.template.tools.TemplateTools;
+import org.jboss.blog.session.template.tools.Rss2TemplateTools;
+import org.jboss.blog.session.template.tools.AtomTemplateTools;
+
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
  */
 public enum TemplateType {
-    ATOM("application/atom+xml"),
-    RSS2("application/xhtml+xml");
+    ATOM("application/atom+xml", AtomTemplateTools.class),
+    RSS2("application/xhtml+xml", Rss2TemplateTools.class);
 
     private final String contentType;
+    private final Class<? extends TemplateTools> tools;
 
     public String contentType() {
         return contentType;
     }
 
-    TemplateType(String contentType) {
+    public Class<?> tools() {
+        return tools;
+    }
+
+    TemplateType(String contentType, Class<? extends TemplateTools> tools) {
         this.contentType = contentType;
+        this.tools = tools;
     }
 }

Modified: trunk/view/manage/template/template_mod.xhtml
===================================================================
--- trunk/view/manage/template/template_mod.xhtml	2007-12-03 13:29:10 UTC (rev 147)
+++ trunk/view/manage/template/template_mod.xhtml	2007-12-03 14:26:16 UTC (rev 148)
@@ -40,7 +40,7 @@
 
             <h:outputLabel for="text"><span class="required">*</span> Text:</h:outputLabel>
             <h:panelGroup>
-                <h:inputTextarea id="text" value="#{templateMod.template.text}" rows="8" cols="64" required="true">
+                <h:inputTextarea id="text" value="#{templateMod.template.text}" rows="32" cols="128" required="true">
                     <a:support event="onblur" reRender="textMessage" ajaxSingle="true" bypassUpdates="true"/>
                     <s:validate />
                 </h:inputTextarea>

Modified: trunk/view/view/feed.xhtml
===================================================================
--- trunk/view/view/feed.xhtml	2007-12-03 13:29:10 UTC (rev 147)
+++ trunk/view/view/feed.xhtml	2007-12-03 14:26:16 UTC (rev 148)
@@ -12,6 +12,19 @@
         <h1>View feed: #{feedView.feed.title}</h1>
 
         <p>
+            Feeds: <br />
+            <s:link view="/feeds.xhtml" value="Atom" propagation="none">
+                <f:param name="type" value="atom" />
+                <f:param name="name" value="#{feedView.feed.name}" />
+            </s:link> <br />
+
+            <s:link view="/feeds.xhtml" value="Rss2" propagation="none">
+                <f:param name="type" value="rss2" />
+                <f:param name="name" value="#{feedView.feed.name}" />
+            </s:link>
+        </p>
+
+        <p>
             <s:link view="/view/feed.xhtml" value="&#171; Next" rendered="#{feedView.showNext}"
                     propagation="none">
                 <f:param name="from" value="#{feedView.nextFrom}" />




More information about the jboss-cvs-commits mailing list