[jboss-cvs] JBossBlog SVN: r16 - in trunk: . blog-core blog-core/src/etc blog-core/src/etc/META-INF blog-core/src/java/org/jboss/blog blog-core/src/java/org/jboss/blog/model blog-core/src/java/org/jboss/blog/model/impl blog-core/src/java/org/jboss/blog/service blog-core/src/java/org/jboss/blog/service/category blog-core/src/java/org/jboss/blog/service/configuration blog-core/src/java/org/jboss/blog/service/permissions/acl blog-core/src/java/org/jboss/blog/service/store blog-core/src/java/org/jboss/blog/service/store/hibernate blog-core/src/java/org/jboss/blog/test blog-core/src/java/org/jboss/blog/ui blog-core/src/web/WEB-INF blog-core/src/web/views

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Nov 2 09:53:54 EST 2006


Author: adamw
Date: 2006-11-02 09:53:30 -0500 (Thu, 02 Nov 2006)
New Revision: 16

Added:
   trunk/blog-core/src/etc/blog-ds.xml
   trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java
   trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogPost.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogCategoryDoesNotExistException.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogPostDoesNotExistException.java
   trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogPost.java
   trunk/blog-core/src/java/org/jboss/blog/model/impl/
   trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java
   trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogPostImpl.java
   trunk/blog-core/src/java/org/jboss/blog/service/category/
   trunk/blog-core/src/java/org/jboss/blog/service/category/BlogCategoryService.java
   trunk/blog-core/src/java/org/jboss/blog/service/category/CachingBlogCategoryService.java
   trunk/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogCategoryService.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/
   trunk/blog-core/src/java/org/jboss/blog/service/store/BlogManager.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/PostManager.java
   trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/
   trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java
   trunk/blog-core/src/java/org/jboss/blog/test/
   trunk/blog-core/src/java/org/jboss/blog/test/HibernateTest.java
   trunk/blog-core/src/web/views/viewpost.xhtml
Removed:
   trunk/blog-core/src/java/org/jboss/blog/model/BlogEntry.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
   trunk/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java
   trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java
   trunk/blog-core/src/java/org/jboss/blog/service/category/BlogModelService.java
   trunk/blog-core/src/java/org/jboss/blog/service/category/CachingBlogModelService.java
   trunk/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogModelService.java
   trunk/blog-core/src/java/org/jboss/blog/service/model/
   trunk/blog-core/src/web/views/viewentry.xhtml
Modified:
   trunk/blog-core/blog-core.iml
   trunk/blog-core/build.xml
   trunk/blog-core/src/etc/META-INF/jboss-service.xml
   trunk/blog-core/src/etc/Messages.properties
   trunk/blog-core/src/java/org/jboss/blog/BlogName.java
   trunk/blog-core/src/java/org/jboss/blog/service/BlogService.java
   trunk/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java
   trunk/blog-core/src/java/org/jboss/blog/service/configuration/AbstractPreferencesBlogConfigurationService.java
   trunk/blog-core/src/java/org/jboss/blog/service/configuration/BlogConfigurationService.java
   trunk/blog-core/src/java/org/jboss/blog/service/configuration/InitParamsBlogConfigurationService.java
   trunk/blog-core/src/java/org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.java
   trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java
   trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java
   trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java
   trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java
   trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java
   trunk/blog-core/src/java/org/jboss/blog/ui/CurrentView.java
   trunk/blog-core/src/web/WEB-INF/faces-config.xml
   trunk/blog-core/src/web/WEB-INF/portlet-instances.xml
   trunk/blog-core/src/web/WEB-INF/portlet.xml
   trunk/blog-core/src/web/WEB-INF/web.xml
   trunk/blog-core/src/web/views/viewblog.xhtml
   trunk/jbossblog.ipr
   trunk/jbossblog.iws
Log:
http://jira.jboss.com/jira/browse/JBBLOG-8

Modified: trunk/blog-core/blog-core.iml
===================================================================
--- trunk/blog-core/blog-core.iml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/blog-core.iml	2006-11-02 14:53:30 UTC (rev 16)
@@ -120,6 +120,7 @@
         <SOURCES />
       </library>
     </orderEntry>
+    <orderEntry type="library" name="hibernate" level="project" />
     <orderEntryProperties />
   </component>
   <component name="WebModuleBuildComponent">
@@ -193,6 +194,10 @@
       <attribute name="URI" value="&lt;N/A&gt;" />
       <url>jar://$APPLICATION_HOME_DIR$/lib/javaee.jar!/</url>
     </containerElement>
+    <containerElement type="library" name="hibernate" level="project">
+      <attribute name="method" value="1" />
+      <attribute name="URI" value="/WEB-INF/lib" />
+    </containerElement>
     <containerElement type="library" name="jsf" level="project">
       <attribute name="method" value="0" />
       <attribute name="URI" value="&lt;N/A&gt;" />

Modified: trunk/blog-core/build.xml
===================================================================
--- trunk/blog-core/build.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/build.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -35,6 +35,7 @@
     <fileset id="facelets.jars" dir="../lib/facelets"><include name="**/*.jar"/></fileset>
     <fileset id="myfaces.jars" dir="../lib/myfaces"><include name="**/*.jar"/></fileset>
     <fileset id="jstl.jars" dir="../lib/jstl"><include name="**/*.jar"/></fileset>
+    <fileset id="hibernate.jars" dir="../lib/hibernate"><include name="**/*.jar"/></fileset>
 
     <fileset id="log4j.jar" dir="../lib/xdoclet"><include name="log4j.jar"/></fileset>
 
@@ -48,6 +49,7 @@
         <fileset refid="facelets.jars" />
         <fileset refid="myfaces.jars" />
         <fileset refid="jstl.jars" />
+        <fileset refid="hibernate.jars" />
 
         <fileset refid="log4j.jar" />
     </path>
@@ -60,6 +62,9 @@
     <taskdef name="jmxdoclet"
              classname="xdoclet.modules.jmx.JMXDocletTask"
              classpathref="xdoclet.jars"/>
+    <taskdef name="hibernatedoclet"
+             classname="xdoclet.modules.hibernate.HibernateDocletTask"
+             classpathref="xdoclet.jars" />
 
     <!-- BUILD TARGETS -->
 
@@ -89,6 +94,11 @@
             <fileset dir="${src.java}"><include name="**/*.java"/></fileset>
             <jbossxmbean />
         </jmxdoclet>
+        <!-- Creating hibernate mapping files -->
+        <hibernatedoclet destdir="${build}">
+            <fileset dir="${src.java}"><include name="**/*.java"/></fileset>
+            <hibernate version="3.0"/>
+        </hibernatedoclet>
     </target>
 
     <target name="dist" depends="build">

Modified: trunk/blog-core/src/etc/META-INF/jboss-service.xml
===================================================================
--- trunk/blog-core/src/etc/META-INF/jboss-service.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/etc/META-INF/jboss-service.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -4,63 +4,60 @@
         "http://www.jboss.org/j2ee/dtd/jboss-service_4_0.dtd">
 <server>
     <!-- Main blog service -->
-    <mbean
-            code="org.jboss.blog.service.BlogServiceImpl"
-            name="blog:service=Main"
-            xmbean-dd="org/jboss/blog/service/BlogServiceImpl.xml">
+    <mbean code="org.jboss.blog.service.BlogServiceImpl"
+           name="blog:service=Main"
+           xmbean-dd="org/jboss/blog/service/BlogServiceImpl.xml">
         <depends
                 optional-attribute-name="NameService"
                 proxy-type="attribute">blog:service=Name</depends>
         <depends
-                optional-attribute-name="ModelService"
-                proxy-type="attribute">blog:service=Model</depends>
+                optional-attribute-name="CategoryService"
+                proxy-type="attribute">blog:service=Category</depends>
         <depends
                 optional-attribute-name="PermissionsService"
                 proxy-type="attribute">blog:service=Permissions</depends>
         <depends
                 optional-attribute-name="ConfigurationService"
                 proxy-type="attribute">blog:service=Configuration</depends>
+        <depends
+                optional-attribute-name="StoreService"
+                proxy-type="attribute">blog:service=Store</depends>
     </mbean>
 
     <!-- Name service -->
-    <mbean
-            code="org.jboss.blog.service.name.InitParamsBlogNameService"
-            name="blog:service=Name"
-            xmbean-dd="org/jboss/blog/service/name/PortletPreferencesBlogNameService.xml" >
+    <mbean code="org.jboss.blog.service.name.InitParamsBlogNameService"
+           name="blog:service=Name"
+           xmbean-dd="org/jboss/blog/service/name/PortletPreferencesBlogNameService.xml" >
         <attribute name="IdName">blogId</attribute>
         <attribute name="CategoryName">blogCategory</attribute>
     </mbean>
 
     <!-- Configuration service -->
-    <mbean
-            code="org.jboss.blog.service.configuration.InitParamsBlogConfigurationService"
-            name="blog:service=Configuration"
-            xmbean-dd="org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.xml" >
-        <attribute name="NumberOfEntriesPerPageName">numberOfEntriesPerPage</attribute>
-        <attribute name="ViewEntriesOnSeparatePageName">viewEntriesOnSeparatePage</attribute>
-        <attribute name="ViewAllEntriesName">viewAllEntries</attribute>
+    <mbean code="org.jboss.blog.service.configuration.InitParamsBlogConfigurationService"
+           name="blog:service=Configuration"
+           xmbean-dd="org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.xml" >
+        <attribute name="NumberOfPostsPerPageName">numberOfPostsPerPage</attribute>
+        <attribute name="ViewPostsOnSeparatePageName">viewPostsOnSeparatePage</attribute>
+        <attribute name="ViewAllPostsName">viewAllPosts</attribute>
     </mbean>
 
     <!-- Model service -->
-    <mbean
-            code="org.jboss.blog.service.model.CachingBlogModelService"
-            name="blog:service=Model"
-            xmbean-dd="org/jboss/blog/service/model/CachingBlogModelService.xml">
+    <mbean code="org.jboss.blog.service.category.CachingBlogCategoryService"
+           name="blog:service=Category"
+           xmbean-dd="org/jboss/blog/service/category/CachingBlogCategoryService.xml">
         <depends
-                optional-attribute-name="DelegateModelService"
-                proxy-type="attribute">blog:service=RomeParsingModel</depends>
+                optional-attribute-name="DelegateCategoryService"
+                proxy-type="attribute">blog:service=RomeParsingCategory</depends>
     </mbean>
-    <mbean
-            code="org.jboss.blog.service.model.RomeParsingBlogModelService"
-            name="blog:service=RomeParsingModel"
-            xmbean-dd="org/jboss/blog/service/model/RomeParsingBlogModelService.xml">
+    <mbean code="org.jboss.blog.service.category.RomeParsingBlogCategoryService"
+           name="blog:service=RomeParsingCategory"
+           xmbean-dd="org/jboss/blog/service/category/RomeParsingBlogCategoryService.xml">
     </mbean>
 
     <!-- Permissions service -->
-    <mbean
-            code="org.jboss.blog.service.permissions.acl.AclBlogPermissionsService"
-            name="blog:service=Permissions"
-            xmbean-dd="org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.xml">
+    <mbean code="org.jboss.blog.service.permissions.acl.AclBlogPermissionsService"
+           name="blog:service=Permissions"
+           xmbean-dd="org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.xml">
     </mbean>
     <!-- JAAE service -->
     <mbean code="org.jboss.security.acl.AclKernelFactory"
@@ -69,4 +66,18 @@
         <attribute name="aclKernel">org.jboss.security.acl.JBossAclKernel</attribute>
     </mbean>
 
+    <!-- Store service -->
+    <mbean code="org.jboss.blog.service.store.hibernate.HibernateBlogStoreService"
+           name="blog:service=Store"
+           xmbean-dd="org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.xml" >
+    </mbean>
+    <!-- Hibernate setup -->
+    <mbean code="org.jboss.hibernate.jmx.Hibernate"
+           name="blog:service=Hibernate">
+        <attribute name="DatasourceName">java:/BlogDS</attribute>
+        <attribute name="Dialect">org.hibernate.dialect.HSQLDialect</attribute>
+        <attribute name="SessionFactoryName">java:/hibernate/BlogSessionFactory</attribute>
+        <attribute name="Hbm2ddlAuto">update</attribute>
+        <attribute name="CacheProviderClass">org.hibernate.cache.NoCacheProvider</attribute>
+    </mbean>
 </server>
\ No newline at end of file

Modified: trunk/blog-core/src/etc/Messages.properties
===================================================================
--- trunk/blog-core/src/etc/Messages.properties	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/etc/Messages.properties	2006-11-02 14:53:30 UTC (rev 16)
@@ -1 +0,0 @@
-hello_world = Hello World!
\ No newline at end of file

Added: trunk/blog-core/src/etc/blog-ds.xml
===================================================================
--- trunk/blog-core/src/etc/blog-ds.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/etc/blog-ds.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+  <local-tx-datasource>
+    <jndi-name>BlogDS</jndi-name>
+    <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}portal${/}hypersonic${/}database</connection-url>
+    <driver-class>org.hsqldb.jdbcDriver</driver-class>
+    <user-name>sa</user-name>
+    <password><![CDATA[]]></password>
+  </local-tx-datasource>
+</datasources>

Modified: trunk/blog-core/src/java/org/jboss/blog/BlogName.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/BlogName.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/BlogName.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -7,7 +7,7 @@
 /**
  * Class representing a name of a blog. This name consists of a blog id
  * and a category. Having it defined, it can be determined what blog should
- * be displayed.
+ * be displayed/ edited/ etc.
  * @author Adam Warski (adamw at aster.pl)
  */
 public class BlogName implements Serializable {

Added: trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,163 @@
+package org.jboss.blog.model;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Iterator;
+
+/**
+ * A class representing a blog, that is, a collection of blog posts, together
+ * with basic blog information.
+ * @author Adam Warski (adamw at aster.pl)
+ * @hibernate.class table="BLOG_CATEGORIES"
+ */
+public class AbstractBlogCategory {
+    private Integer id;
+    private AbstractBlogCategory parentCategory;
+    private String author;
+    private String title;
+    private String description;
+    private String link;
+    private String categoryName;
+    private String fullCategoryName;
+    private Date created;
+    private List posts;
+
+    public AbstractBlogCategory() {
+
+    }
+
+    public AbstractBlogCategory(String author, String title, String description,
+                     String link, Date created, List entries,
+                     String fullCategoryName) {
+        this.author = author;
+        this.title = title;
+        this.description = description;
+        this.link = link;
+        this.created = created;
+        this.posts = entries;
+        this.fullCategoryName = fullCategoryName;
+    }
+
+    public int getEntryIndex(String guid)
+            throws BlogPostDoesNotExistException {
+        int i = 0;
+        for (Iterator iter = getPosts().iterator(); iter.hasNext();) {
+            if (((BlogPost) iter.next()).getGuid().equals(guid)) {
+                return i;
+            }
+
+            i++;
+        }
+
+        throw new BlogPostDoesNotExistException(guid);
+    }
+
+    public BlogPost getEntry(String guid)
+            throws BlogPostDoesNotExistException {
+        return (BlogPost) getPosts().get(getEntryIndex(guid));
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public AbstractBlogCategory getParentCategory() {
+        return parentCategory;
+    }
+
+    public void setParentCategory(AbstractBlogCategory parentCategory) {
+        this.parentCategory = parentCategory;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getFullCategoryName() {
+        return fullCategoryName;
+    }
+
+    public void setFullCategoryName(String fullCategoryName) {
+        this.fullCategoryName = fullCategoryName;
+    }
+
+    /**
+     * ???
+     */
+    public Date getCreated() {
+        return created;
+    }
+
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public List getPosts() {
+        return posts;
+    }
+
+    public void setPosts(List posts) {
+        this.posts = posts;
+    }
+}

Added: trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogPost.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogPost.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/AbstractBlogPost.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,49 @@
+package org.jboss.blog.model;
+
+import org.jboss.blog.tools.BlogTools;
+
+import java.util.Locale;
+import java.text.DateFormat;
+
+/**
+ * A base class, handling title-as-id and date methods. Not thread safe.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public abstract class AbstractBlogPost implements BlogPost {
+    private boolean titleAsIdInitialized;
+    private boolean dateInitialized;
+    private boolean timeInitialized;
+
+    private String createdDate;
+    private String createdTime;
+    private String titleAsId;
+
+    public String getTitleAsId() {
+        if (!titleAsIdInitialized) {
+            titleAsId = BlogTools.convertToId(getTitle());
+            titleAsIdInitialized = true;
+        }
+
+        return titleAsId;
+    }
+
+    public String getCreatedDate() {
+        if (!dateInitialized) {
+            createdDate = DateFormat.getDateInstance(DateFormat.FULL,
+                Locale.getDefault()).format(getCreated());
+            dateInitialized = true;
+        }
+
+        return createdDate;
+    }
+
+    public String getCreatedTime() {
+        if (!timeInitialized) {
+            createdTime = DateFormat.getTimeInstance(DateFormat.SHORT,
+                Locale.getDefault()).format(getCreated());
+            timeInitialized = true;
+        }
+
+        return createdTime;
+    }
+}

Copied: trunk/blog-core/src/java/org/jboss/blog/model/BlogCategoryDoesNotExistException.java (from rev 4, trunk/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java)
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogCategoryDoesNotExistException.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,22 @@
+package org.jboss.blog.model;
+
+/**
+ * An exception thrown when a blog model is requested, which does not exist.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class BlogCategoryDoesNotExistException extends Exception {
+    public BlogCategoryDoesNotExistException() {
+    }
+
+    public BlogCategoryDoesNotExistException(String message) {
+        super(message);
+    }
+
+    public BlogCategoryDoesNotExistException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public BlogCategoryDoesNotExistException(Throwable cause) {
+        super(cause);
+    }
+}

Deleted: trunk/blog-core/src/java/org/jboss/blog/model/BlogEntry.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogEntry.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogEntry.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,82 +0,0 @@
-package org.jboss.blog.model;
-
-import org.jboss.blog.tools.BlogTools;
-
-import java.util.Date;
-import java.util.Locale;
-import java.text.DateFormat;
-
-/**
- * A class representing a single blog entry.
- * @author Adam Warski (adamw at aster.pl)
- */
-public class BlogEntry {
-    private String author;
-    private String title;
-    private String description;
-    private Date created;
-    private String link;
-    private String guid;
-    private String titleAsId;
-
-    /**
-     * This should be an URL to a feed with comments to this item. If no
-     * comments are available, this should be null.
-     */
-    private String commentLink;
-
-    public BlogEntry(String author, String title, String description,
-                     Date created, String link, String guid,
-                     String commentLink) {
-        this.author = author;
-        this.title = title;
-        this.description = description;
-        this.created = created;
-        this.link = link;
-        this.guid = guid;
-        this.commentLink = commentLink;
-        this.titleAsId = BlogTools.convertToId(title);
-    }
-
-    public String getAuthor() {
-        return author;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public Date getCreated() {
-        return created;
-    }
-
-    public String getTitleAsId() {
-        return titleAsId;
-    }
-
-    public String getCreatedDate() {
-        return DateFormat.getDateInstance(DateFormat.FULL,
-                Locale.getDefault()).format(created);
-    }
-
-    public String getCreatedTime() {
-        return DateFormat.getTimeInstance(DateFormat.SHORT,
-                Locale.getDefault()).format(created);
-    }
-
-    public String getLink() {
-        return link;
-    }
-
-    public String getGuid() {
-        return guid;
-    }
-
-    public String getCommentLink() {
-        return commentLink;
-    }
-}

Deleted: trunk/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,22 +0,0 @@
-package org.jboss.blog.model;
-
-/**
- * An exception thrown when a blog entry is demanded which does not exist.
- * @author Adam Warski (adamw at aster.pl)
- */
-public class BlogEntryDoesNotExistException extends Exception {
-    public BlogEntryDoesNotExistException() {
-    }
-
-    public BlogEntryDoesNotExistException(String message) {
-        super(message);
-    }
-
-    public BlogEntryDoesNotExistException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public BlogEntryDoesNotExistException(Throwable cause) {
-        super(cause);
-    }
-}

Deleted: trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,72 +0,0 @@
-package org.jboss.blog.model;
-
-import java.util.Date;
-import java.util.List;
-import java.util.Iterator;
-
-/**
- * A class representing a blog, that is, a collection of blog entries, together
- * with blog-wide information.
- * @author Adam Warski (adamw at aster.pl)
- */
-public class BlogModel {
-    private String author;
-    private String title;
-    private String description;
-    private Date created;
-    private String link;
-    private List entries;
-
-    public BlogModel(String author, String title, String description,
-                       Date created, String link, List entries) {
-        this.author = author;
-        this.title = title;
-        this.description = description;
-        this.created = created;
-        this.link = link;
-        this.entries = entries;
-    }
-
-    public String getAuthor() {
-        return author;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public Date getCreated() {
-        return created;
-    }
-
-    public String getLink() {
-        return link;
-    }
-
-    public List getEntries() {
-        return entries;
-    }
-
-    public int getEntryIndex(String guid)
-            throws BlogEntryDoesNotExistException {
-        int i = 0;
-        for (Iterator iter = getEntries().iterator(); iter.hasNext();) {
-            if (((BlogEntry) iter.next()).getGuid().equals(guid)) {
-                return i;
-            }
-
-            i++;
-        }
-
-        throw new BlogEntryDoesNotExistException(guid);
-    }
-
-    public BlogEntry getEntry(String guid)
-            throws BlogEntryDoesNotExistException {
-        return (BlogEntry) getEntries().get(getEntryIndex(guid));
-    }
-}

Added: trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogModel.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,26 @@
+package org.jboss.blog.model;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Iterator;
+
+/**
+ * An interface representing a blog category, that is, a collection of blog
+ * posts, together with basic blog information.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public interface BlogModel {
+    public String getAuthor();
+    public String getTitle();
+    public String getDescription();
+    public String getLink();
+    public Date getCreated();
+    public List getPosts();
+
+    /**
+     *
+     * @return List of {@link java.lang.String} - name of categories to
+     * which this  belongs.
+     */
+    public List getCategories();
+}

Deleted: trunk/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,22 +0,0 @@
-package org.jboss.blog.model;
-
-/**
- * An exception thrown when a blog model is requested, which does not exist.
- * @author Adam Warski (adamw at aster.pl)
- */
-public class BlogModelDoesNotExistException extends Exception {
-    public BlogModelDoesNotExistException() {
-    }
-
-    public BlogModelDoesNotExistException(String message) {
-        super(message);
-    }
-
-    public BlogModelDoesNotExistException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public BlogModelDoesNotExistException(Throwable cause) {
-        super(cause);
-    }
-}

Copied: trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java (from rev 12, trunk/blog-core/src/java/org/jboss/blog/model/BlogEntry.java)
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogEntry.java	2006-10-12 18:34:52 UTC (rev 12)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogPost.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,38 @@
+package org.jboss.blog.model;
+
+import org.jboss.blog.tools.BlogTools;
+
+import java.util.Date;
+import java.util.Locale;
+import java.util.List;
+import java.text.DateFormat;
+
+/**
+ * An interface representing a single blog post.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public interface BlogPost {
+    public String getAuthor();
+    public String getTitle();
+    public String getTitleAsId();
+    public String getDescription();
+    public Date getCreated();
+    public String getCreatedDate();
+    public String getCreatedTime();
+    public String getLink();
+    public String getGuid();
+
+    /**
+     *  
+     * @return An URL to a feed with comments to this item. If no
+     * comments are available, this should be null.
+     */
+    public String getCommentLink();
+
+    /**
+     *
+     * @return List of {@link java.lang.String} - name of categories to
+     * which this post belongs.
+     */
+    public List getCategories();
+}

Copied: trunk/blog-core/src/java/org/jboss/blog/model/BlogPostDoesNotExistException.java (from rev 4, trunk/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java)
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/model/BlogPostDoesNotExistException.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,22 @@
+package org.jboss.blog.model;
+
+/**
+ * An exception thrown when a blog entry is demanded which does not exist.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class BlogPostDoesNotExistException extends Exception {
+    public BlogPostDoesNotExistException() {
+    }
+
+    public BlogPostDoesNotExistException(String message) {
+        super(message);
+    }
+
+    public BlogPostDoesNotExistException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    public BlogPostDoesNotExistException(Throwable cause) {
+        super(cause);
+    }
+}

Deleted: trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,12 +0,0 @@
-package org.jboss.blog.model;
-
-import java.util.Date;
-
-/**
- * @author Adam Warski (adamw at aster.pl)
- */
-public class DoesNotExistBlogEntry extends BlogEntry {
-    public DoesNotExistBlogEntry(String author, String title) {
-        super(author, title, "", new Date(), null, null, null);
-    }
-}

Copied: trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogPost.java (from rev 13, trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java)
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java	2006-10-17 21:01:50 UTC (rev 13)
+++ trunk/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogPost.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,12 @@
+package org.jboss.blog.model;
+
+import java.util.Date;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class DoesNotExistBlogPost extends BlogPost {
+    public DoesNotExistBlogPost(String author, String title) {
+        super(author, title, "", new Date(), null, null, null);
+    }
+}

Added: trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,166 @@
+package org.jboss.blog.model.impl;
+
+import org.jboss.blog.model.BlogPostDoesNotExistException;
+import org.jboss.blog.model.BlogPost;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Iterator;
+
+/**
+ * A class representing a blog, that is, a collection of blog posts, together
+ * with basic blog information.
+ * @author Adam Warski (adamw at aster.pl)
+ * @hibernate.class table="BLOG_CATEGORIES"
+ */
+public class BlogCategoryImpl {
+    private Integer id;
+    private BlogCategoryImpl parentCategory;
+    private String author;
+    private String title;
+    private String description;
+    private String link;
+    private String categoryName;
+    private String fullCategoryName;
+    private Date created;
+    private List posts;
+
+    public BlogCategoryImpl() {
+
+    }
+
+    public BlogCategoryImpl(String author, String title, String description,
+                     String link, Date created, List entries,
+                     String fullCategoryName) {
+        this.author = author;
+        this.title = title;
+        this.description = description;
+        this.link = link;
+        this.created = created;
+        this.posts = entries;
+        this.fullCategoryName = fullCategoryName;
+    }
+
+    public int getEntryIndex(String guid)
+            throws BlogPostDoesNotExistException {
+        int i = 0;
+        for (Iterator iter = getPosts().iterator(); iter.hasNext();) {
+            if (((BlogPost) iter.next()).getGuid().equals(guid)) {
+                return i;
+            }
+
+            i++;
+        }
+
+        throw new BlogPostDoesNotExistException(guid);
+    }
+
+    public BlogPost getEntry(String guid)
+            throws BlogPostDoesNotExistException {
+        return (BlogPost) getPosts().get(getEntryIndex(guid));
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public BlogCategoryImpl getParentCategory() {
+        return parentCategory;
+    }
+
+    public void setParentCategory(BlogCategoryImpl parentCategory) {
+        this.parentCategory = parentCategory;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getAuthor() {
+        return author;
+    }
+
+    public void setAuthor(String author) {
+        this.author = author;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getFullCategoryName() {
+        return fullCategoryName;
+    }
+
+    public void setFullCategoryName(String fullCategoryName) {
+        this.fullCategoryName = fullCategoryName;
+    }
+
+    /**
+     * ???
+     */
+    public Date getCreated() {
+        return created;
+    }
+
+    public void setCreated(Date created) {
+        this.created = created;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public List getPosts() {
+        return posts;
+    }
+
+    public void setPosts(List posts) {
+        this.posts = posts;
+    }
+}

Added: trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogPostImpl.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogPostImpl.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/model/impl/BlogPostImpl.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,66 @@
+package org.jboss.blog.model.impl;
+
+import org.jboss.blog.model.AbstractBlogPost;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * A simple java-bean implementation of the post interface.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class BlogPostImpl extends AbstractBlogPost {
+    private String author;
+    private String title;
+    private String description;
+    private Date created;
+    private String link;
+    private String guid;
+    private List categories;
+    private String commentLink;
+
+    public BlogPostImpl(String author, String title, String description,
+                        Date created, String link, String guid,
+                        List categories, String commentLink) {
+        this.author = author;
+        this.title = title;
+        this.description = description;
+        this.created = created;
+        this.link = link;
+        this.guid = guid;
+        this.categories = categories;
+        this.commentLink = commentLink;
+    }
+
+    public String getAuthor() {
+        return author;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public Date getCreated() {
+        return created;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public String getGuid() {
+        return guid;
+    }
+
+    public List getCategories() {
+        return categories;
+    }
+
+    public String getCommentLink() {
+        return commentLink;
+    }
+}

Modified: trunk/blog-core/src/java/org/jboss/blog/service/BlogService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/BlogService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/BlogService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -2,8 +2,9 @@
 
 import org.jboss.blog.service.permissions.BlogPermissionsService;
 import org.jboss.blog.service.name.BlogNameService;
-import org.jboss.blog.service.model.BlogModelService;
+import org.jboss.blog.service.category.BlogCategoryService;
 import org.jboss.blog.service.configuration.BlogConfigurationService;
+import org.jboss.blog.service.store.BlogStoreService;
 
 /**
  * A central point tieing all other blog services and providing a way to access
@@ -17,9 +18,12 @@
     public BlogNameService getNameService();
     public void setNameService(BlogNameService nameService);
     
-    public BlogModelService getModelService();
-    public void setModelService(BlogModelService modelService);
+    public BlogCategoryService getModelService();
+    public void setModelService(BlogCategoryService categoryService);
 
     public BlogConfigurationService getConfigurationService();
     public void setConfigurationService(BlogConfigurationService configurationService);
+
+    public BlogStoreService getStoreService();
+    public void setStoreService(BlogStoreService storeService);
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,9 +1,10 @@
 package org.jboss.blog.service;
 
 import org.jboss.blog.service.name.BlogNameService;
-import org.jboss.blog.service.model.BlogModelService;
+import org.jboss.blog.service.category.BlogCategoryService;
 import org.jboss.blog.service.permissions.BlogPermissionsService;
 import org.jboss.blog.service.configuration.BlogConfigurationService;
+import org.jboss.blog.service.store.BlogStoreService;
 import org.jboss.system.ServiceMBeanSupport;
 
 /**
@@ -18,9 +19,10 @@
     }
 
     private BlogNameService nameService;
-    private BlogModelService modelService;
+    private BlogCategoryService categoryService;
     private BlogPermissionsService permissionsService;
     private BlogConfigurationService configurationService;
+    private BlogStoreService storeService;
 
     /**
      * @jmx.managed-attribute
@@ -53,15 +55,15 @@
     /**
      * @jmx.managed-attribute
      */
-    public BlogModelService getModelService() {
-        return modelService;
+    public BlogCategoryService getModelService() {
+        return categoryService;
     }
 
     /**
      * @jmx.managed-attribute
      */
-    public void setModelService(BlogModelService modelService) {
-        this.modelService = modelService;
+    public void setModelService(BlogCategoryService categoryService) {
+        this.categoryService = categoryService;
     }
 
     /**
@@ -77,4 +79,18 @@
     public void setConfigurationService(BlogConfigurationService configurationService) {
         this.configurationService = configurationService;
     }
+    
+    /**
+     * @jmx.managed-attribute
+     */
+    public BlogStoreService getStoreService() {
+        return storeService;
+    }
+
+    /**
+     * @jmx.managed-attribute
+     */
+    public void setStoreService(BlogStoreService storeService) {
+        this.storeService = storeService;
+    }
 }

Copied: trunk/blog-core/src/java/org/jboss/blog/service/category (from rev 4, trunk/blog-core/src/java/org/jboss/blog/service/model)

Added: trunk/blog-core/src/java/org/jboss/blog/service/category/BlogCategoryService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/BlogCategoryService.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/service/category/BlogCategoryService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,22 @@
+package org.jboss.blog.service.category;
+
+import org.jboss.blog.BlogName;
+import org.jboss.blog.model.BlogModel;
+import org.jboss.blog.model.BlogCategoryDoesNotExistException;
+
+/**
+ * A service which enables to obtain a blog category (parsed blog information and
+ * entries), having a blog name.
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public interface BlogCategoryService {
+    /**
+     * Basing on the given blog name, reads (parses/ creates/ etc) a blog
+     * category.
+     * @param name Name of the blog for which the model should be read.
+     * @return A category of a blog with the given name.
+     * @throws org.jboss.blog.model.BlogCategoryDoesNotExistException If a blog
+     * with the given name couldn't be found.
+     */
+    public BlogModel getBlogCategory(BlogName name) throws BlogCategoryDoesNotExistException;
+}

Deleted: trunk/blog-core/src/java/org/jboss/blog/service/category/BlogModelService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/BlogModelService.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/service/category/BlogModelService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,22 +0,0 @@
-package org.jboss.blog.service.model;
-
-import org.jboss.blog.BlogName;
-import org.jboss.blog.model.BlogModel;
-import org.jboss.blog.model.BlogModelDoesNotExistException;
-
-/**
- * A service which enables to obtain a blog model (parsed blog information and
- * entries), having a blog name.
- * @author Adam Warski (adamw at aster.pl)
- */
-public interface BlogModelService {
-    /**
-     * Basing on the given blog name, reads (parses/ creates/ etc) a blog
-     * model.
-     * @param name Name of the blog for which the model should be read.
-     * @return A model of a blog with the given name.
-     * @throws org.jboss.blog.model.BlogModelDoesNotExistException If a blog
-     * with the given name couldn't be found.
-     */
-    public BlogModel getBlogModel(BlogName name) throws BlogModelDoesNotExistException;
-}

Added: trunk/blog-core/src/java/org/jboss/blog/service/category/CachingBlogCategoryService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/CachingBlogCategoryService.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/service/category/CachingBlogCategoryService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,44 @@
+package org.jboss.blog.service.category;
+
+import org.jboss.blog.model.BlogModel;
+import org.jboss.blog.model.BlogCategoryDoesNotExistException;
+import org.jboss.blog.BlogName;
+import org.jboss.blog.service.AbstractBlogService;
+
+/**
+ * A blog category service which caches categories returned by another blog
+ * model category service to avoid, for example, unnecessary feed parsing.
+ * @author Adam Warski (adamw at aster.pl)
+ *
+ * @jmx.mbean
+ * @jboss.xmbean
+ */
+public class CachingBlogCategoryService extends AbstractBlogService implements BlogCategoryService {
+    public CachingBlogCategoryService() {
+
+    }
+
+    /**
+     * @jmx.managed-operation
+     * @jmx.managed-parameter type="org.jboss.blog.BlogName"
+     */
+    public BlogModel getBlogCategory(BlogName name) throws BlogCategoryDoesNotExistException {
+        return delegateCategoryService.getBlogCategory(name);
+    }
+
+    private BlogCategoryService delegateCategoryService;
+
+    /**
+     * @jmx.managed-attribute
+     */
+    public BlogCategoryService getDelegateCategoryService() {
+        return delegateCategoryService;
+    }
+
+    /**
+     * @jmx.managed-attribute
+     */
+    public void setDelegateCategoryService(BlogCategoryService delegateCategoryService) {
+        this.delegateCategoryService = delegateCategoryService;
+    }
+}

Deleted: trunk/blog-core/src/java/org/jboss/blog/service/category/CachingBlogModelService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/CachingBlogModelService.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/service/category/CachingBlogModelService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,31 +0,0 @@
-package org.jboss.blog.service.model;
-
-import org.jboss.blog.model.BlogModel;
-import org.jboss.blog.model.BlogModelDoesNotExistException;
-import org.jboss.blog.BlogName;
-import org.jboss.system.ServiceMBeanSupport;
-
-/**
- * A blog model service which caches models returned by another blog model
- * service to avoid, for example, unnecessary feed parsing.
- * @author Adam Warski (adamw at aster.pl)
- */
-public class CachingBlogModelService extends ServiceMBeanSupport implements BlogModelService {
-    public CachingBlogModelService() {
-
-    }
-
-    public BlogModel getBlogModel(BlogName name) throws BlogModelDoesNotExistException {
-        return delegateModelService.getBlogModel(name);
-    }
-
-    private BlogModelService delegateModelService;
-
-    public BlogModelService getDelegateModelService() {
-        return delegateModelService;
-    }
-
-    public void setDelegateModelService(BlogModelService delegateModelService) {
-        this.delegateModelService = delegateModelService;
-    }
-}

Added: trunk/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogCategoryService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogCategoryService.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogCategoryService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,83 @@
+package org.jboss.blog.service.category;
+
+import org.jboss.blog.model.BlogModel;
+import org.jboss.blog.model.BlogCategoryDoesNotExistException;
+import org.jboss.blog.model.BlogPost;
+import org.jboss.blog.BlogName;
+import org.jboss.blog.service.AbstractBlogService;
+import org.jboss.blog.rome.CommentRssModule;
+import org.jboss.blog.tools.BlogTools;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.net.URL;
+import java.io.IOException;
+
+import com.sun.syndication.io.SyndFeedInput;
+import com.sun.syndication.io.XmlReader;
+import com.sun.syndication.io.FeedException;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndEntry;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ *
+ * @jmx.mbean
+ * @jboss.xmbean
+ */
+public class RomeParsingBlogCategoryService extends AbstractBlogService implements BlogCategoryService {
+    public RomeParsingBlogCategoryService() {
+
+    }
+
+    /**
+     * @jmx.managed-operation
+     * @jmx.managed-parameter type="org.jboss.blog.BlogName"
+     */
+    public BlogModel getBlogCategory(BlogName name) throws BlogCategoryDoesNotExistException {
+        if (name.getId() == null) {
+            throw new BlogCategoryDoesNotExistException("No blog selected (null blog id)");
+        }
+
+        // Parsing the feed, which's address is the id of the selected blog.
+        SyndFeedInput input = new SyndFeedInput();
+        SyndFeed inFeed;
+        try {
+            inFeed = input.build(new XmlReader(new URL(name.getId()).openStream()));
+        } catch (IOException e) {
+            throw new BlogCategoryDoesNotExistException(e);
+        } catch (FeedException e) {
+            throw new BlogCategoryDoesNotExistException(e);
+        }
+        
+        List entries = new ArrayList();
+
+        String defaultAuthor = inFeed.getAuthor();
+        for (Iterator iter = inFeed.getEntries().iterator(); iter.hasNext();) {
+            SyndEntry entry = (SyndEntry) iter.next();
+
+            CommentRssModule commRssModule = (CommentRssModule)
+                    entry.getModule("http://wellformedweb.org/CommentAPI/");
+            String commentsRss = null;
+            if (commRssModule != null) {
+                commentsRss = commRssModule.getCommentRss();
+                if (commentsRss != null) {
+                    commentsRss = commentsRss.trim();
+                }
+            }
+
+            String author = entry.getAuthor();
+            entries.add(new BlogPost(
+                    BlogTools.isEmpty(author) ? defaultAuthor : author,
+                    entry.getTitle(), entry.getDescription().getValue(),
+                    entry.getPublishedDate(), entry.getLink(),
+                    entry.getUri(), commentsRss));
+        }
+
+        return new BlogModel(inFeed.getAuthor(), inFeed.getTitle(),
+                inFeed.getDescription(), inFeed.getLink(),
+                inFeed.getPublishedDate(), entries,
+                inFeed.getCategories().size() != 1 ? "" : inFeed.getCategories().get(0).toString());
+    }
+}

Deleted: trunk/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogModelService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java	2006-10-04 22:41:34 UTC (rev 4)
+++ trunk/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogModelService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,75 +0,0 @@
-package org.jboss.blog.service.model;
-
-import org.jboss.blog.model.BlogModel;
-import org.jboss.blog.model.BlogModelDoesNotExistException;
-import org.jboss.blog.model.BlogEntry;
-import org.jboss.blog.BlogName;
-import org.jboss.blog.rome.CommentRssModule;
-import org.jboss.blog.tools.BlogTools;
-import org.jboss.system.ServiceMBeanSupport;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.net.URL;
-import java.io.IOException;
-
-import com.sun.syndication.io.SyndFeedInput;
-import com.sun.syndication.io.XmlReader;
-import com.sun.syndication.io.FeedException;
-import com.sun.syndication.feed.synd.SyndFeed;
-import com.sun.syndication.feed.synd.SyndEntry;
-
-/**
- * @author Adam Warski (adamw at aster.pl)
- */
-public class RomeParsingBlogModelService extends ServiceMBeanSupport implements BlogModelService {
-    public RomeParsingBlogModelService() {
-
-    }
-
-    public BlogModel getBlogModel(BlogName name) throws BlogModelDoesNotExistException {
-        if (name.getId() == null) {
-            throw new BlogModelDoesNotExistException("No blog selected (null blog id)");
-        }
-
-        // Parsing the feed, which's address is the id of the selected blog.
-        SyndFeedInput input = new SyndFeedInput();
-        SyndFeed inFeed;
-        try {
-            inFeed = input.build(new XmlReader(new URL(name.getId()).openStream()));
-        } catch (IOException e) {
-            throw new BlogModelDoesNotExistException(e);
-        } catch (FeedException e) {
-            throw new BlogModelDoesNotExistException(e);
-        }
-        
-        List entries = new ArrayList();
-
-        String defaultAuthor = inFeed.getAuthor();
-        for (Iterator iter = inFeed.getEntries().iterator(); iter.hasNext();) {
-            SyndEntry entry = (SyndEntry) iter.next();
-
-            CommentRssModule commRssModule = (CommentRssModule)
-                    entry.getModule("http://wellformedweb.org/CommentAPI/");
-            String commentsRss = null;
-            if (commRssModule != null) {
-                commentsRss = commRssModule.getCommentRss();
-                if (commentsRss != null) {
-                    commentsRss = commentsRss.trim();
-                }
-            }
-
-            String author = entry.getAuthor();
-            entries.add(new BlogEntry(
-                    BlogTools.isEmpty(author) ? defaultAuthor : author,
-                    entry.getTitle(), entry.getDescription().getValue(),
-                    entry.getPublishedDate(), entry.getLink(),
-                    entry.getUri(), commentsRss));
-        }
-
-        return new BlogModel(inFeed.getAuthor(), inFeed.getTitle(),
-                inFeed.getDescription(), inFeed.getPublishedDate(),
-                inFeed.getLink(), entries);
-    }
-}

Modified: trunk/blog-core/src/java/org/jboss/blog/service/configuration/AbstractPreferencesBlogConfigurationService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/configuration/AbstractPreferencesBlogConfigurationService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/configuration/AbstractPreferencesBlogConfigurationService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -7,53 +7,53 @@
  */
 public abstract class AbstractPreferencesBlogConfigurationService extends AbstractBlogService
         implements BlogConfigurationService {
-    private String numberOfEntriesPerPageName;
-    private String viewEntriesOnSeparatePageName;
-    private String viewAllEntriesName;
+    private String numberOfPostsPerPageName;
+    private String viewPostsOnSeparatePageName;
+    private String viewAllPostsName;
 
     /**
      * @jmx.managed-attribute
-     * @return Name of the property under which the number of entries per page
+     * @return Name of the property under which the number of posts per page
      * to display can be found.
      */
-    public String getNumberOfEntriesPerPageName() {
-        return numberOfEntriesPerPageName;
+    public String getNumberOfPostsPerPageName() {
+        return numberOfPostsPerPageName;
     }
 
     /**
-     * @param numberOfEntriesPerPageName Name of the property under which the
-     * number of entries per apge to display can be found.
+     * @param numberOfPostsPerPageName Name of the property under which the
+     * number of posts per page to display can be found.
      * @jmx.managed-attribute
      */
-    public void setNumberOfEntriesPerPageName(String numberOfEntriesPerPageName) {
-        this.numberOfEntriesPerPageName = numberOfEntriesPerPageName;
+    public void setNumberOfPostsPerPageName(String numberOfPostsPerPageName) {
+        this.numberOfPostsPerPageName = numberOfPostsPerPageName;
     }
 
     /**
      * @jmx.managed-attribute
      */
-    public String getViewEntriesOnSeparatePageName() {
-        return viewEntriesOnSeparatePageName;
+    public String getViewPostsOnSeparatePageName() {
+        return viewPostsOnSeparatePageName;
     }
 
     /**
      * @jmx.managed-attribute
      */
-    public void setViewEntriesOnSeparatePageName(String viewEntriesOnSeparatePageName) {
-        this.viewEntriesOnSeparatePageName = viewEntriesOnSeparatePageName;
+    public void setViewPostsOnSeparatePageName(String viewPostsOnSeparatePageName) {
+        this.viewPostsOnSeparatePageName = viewPostsOnSeparatePageName;
     }
 
     /**
      * @jmx.managed-attribute
      */
-    public String getViewAllEntriesName() {
-        return viewAllEntriesName;
+    public String getViewAllPostsName() {
+        return viewAllPostsName;
     }
 
     /**
      * @jmx.managed-attribute
      */
-    public void setViewAllEntriesName(String viewAllEntriesName) {
-        this.viewAllEntriesName = viewAllEntriesName;
+    public void setViewAllPostsName(String viewAllPostsName) {
+        this.viewAllPostsName = viewAllPostsName;
     }
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/configuration/BlogConfigurationService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/configuration/BlogConfigurationService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/configuration/BlogConfigurationService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -4,34 +4,34 @@
  * A service which enables to read blog configuration. This can be, for
  * example, reading portlet or servlet preferences, basing on a request
  * object.
- * @author Adam Warski (adamw at aster.pl)
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  */
 public interface BlogConfigurationService {
     /**
      *
      * @param request Request from which to read the configuration.
-     * @return Number of entries to be shown on the main blog view page. Shuld
+     * @return Number of posts to be shown on the main blog view page. Shuld
      * never return null.
      */
-    public Integer getNumberOfEntriesPerPage(Object request);
+    public Integer getNumberOfPostsPerPage(Object request);
 
     /**
      *
      * @param request Request from which to read the configuration.
-     * @return True iff entries body should be viewable on a separate page,
-     * that is, after clicking on an entry title, should a special entry-view
+     * @return True iff posts body should be viewable on a separate page,
+     * that is, after clicking on an entry title, should a special post-view
      * page be opened, or should the entry be expanded. Should never return
      * null.
      */
-    public Boolean getViewEntriesOnSeparatePage(Object request);
+    public Boolean getViewPostsOnSeparatePage(Object request);
 
     /**
      *
      * @param request Request from which to read the configuration.
-     * @return True iff all entries should be expanded by default.
-     * Still, entries can be viewed on a separate pages, if the
+     * @return True iff all posts should be expanded by default.
+     * Still, posts can be viewed on a separate pages, if the
      * configuration states so. This can be useful for blogs with
      * comments.
      */
-    public Boolean getViewAllEntries(Object request);
+    public Boolean getViewAllPosts(Object request);
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/configuration/InitParamsBlogConfigurationService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/configuration/InitParamsBlogConfigurationService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/configuration/InitParamsBlogConfigurationService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -15,11 +15,11 @@
      * @jmx.managed-operation
      * @jmx.managed-parameter type="java.lang.Object"
      */
-    public Integer getNumberOfEntriesPerPage(Object request) {
+    public Integer getNumberOfPostsPerPage(Object request) {
         BlogTools.assertNotNull(request, REQUEST_NULL_EX_MSG);
         try {
             return Integer.valueOf(BlogTools.getInitParam(
-                    getNumberOfEntriesPerPageName()));
+                    getNumberOfPostsPerPageName()));
         } catch (NumberFormatException e) {
             return new Integer(0);
         }
@@ -29,19 +29,19 @@
      * @jmx.managed-operation
      * @jmx.managed-parameter type="java.lang.Object"
      */
-    public Boolean getViewEntriesOnSeparatePage(Object request) {
+    public Boolean getViewPostsOnSeparatePage(Object request) {
         BlogTools.assertNotNull(request, REQUEST_NULL_EX_MSG);
         return Boolean.valueOf(BlogTools.getInitParam(
-                getViewEntriesOnSeparatePageName()));
+                getViewPostsOnSeparatePageName()));
     }
 
     /**
      * @jmx.managed-operation
      * @jmx.managed-parameter type="java.lang.Object"
      */
-    public Boolean getViewAllEntries(Object request) {
+    public Boolean getViewAllPosts(Object request) {
         BlogTools.assertNotNull(request, REQUEST_NULL_EX_MSG);
         return Boolean.valueOf(BlogTools.getInitParam(
-                getViewAllEntriesName()));
+                getViewAllPostsName()));
     }
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -15,12 +15,12 @@
      * @jmx.managed-operation
      * @jmx.managed-parameter type="java.lang.Object"
      */
-    public Integer getNumberOfEntriesPerPage(Object request) {
+    public Integer getNumberOfPostsPerPage(Object request) {
         BlogTools.assertNotNull(request, REQUEST_NULL_EX_MSG);
         try {
             return Integer.valueOf(BlogTools.getPortletPreference(
                     BlogTools.castToPortletRequest(this, request),
-                    getNumberOfEntriesPerPageName()));
+                    getNumberOfPostsPerPageName()));
         } catch (NumberFormatException e) {
             return new Integer(0);
         }
@@ -30,21 +30,21 @@
      * @jmx.managed-operation
      * @jmx.managed-parameter type="java.lang.Object"
      */
-    public Boolean getViewEntriesOnSeparatePage(Object request) {
+    public Boolean getViewPostsOnSeparatePage(Object request) {
         BlogTools.assertNotNull(request, REQUEST_NULL_EX_MSG);
         return Boolean.valueOf(BlogTools.getPortletPreference(
                 BlogTools.castToPortletRequest(this, request),
-                getViewEntriesOnSeparatePageName()));
+                getViewPostsOnSeparatePageName()));
     }
 
     /**
      * @jmx.managed-operation
      * @jmx.managed-parameter type="java.lang.Object"
      */
-    public Boolean getViewAllEntries(Object request) {
+    public Boolean getViewAllPosts(Object request) {
         BlogTools.assertNotNull(request, REQUEST_NULL_EX_MSG);
         return Boolean.valueOf(BlogTools.getPortletPreference(
                 BlogTools.castToPortletRequest(this, request),
-                getViewAllEntriesName()));
+                getViewAllPostsName()));
     }
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -29,6 +29,7 @@
 
 /**
  * @author Sohil Shah - sohil.shah at jboss.com - Mar 29, 2006
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  */
 public class ACLTagHandler extends TagHandler 
 {

Modified: trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -10,7 +10,7 @@
 
 /**
  * @author <a href="mailto:sohil.shah at jboss.com">Sohil Shah</a>
- * @author Adam Warski
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  *
  * @jmx.mbean
  * @jboss.xmbean

Modified: trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -22,6 +22,7 @@
 
 /**
  * @author <a href="mailto:sohil.shah at jboss.com">Sohil Shah</a>
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  */
 public class AuthorizationListener extends ActionListenerImpl
 {

Modified: trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -21,6 +21,7 @@
 /**
  * 
  * @author Sohil Shah - sohil.shah at jboss.com
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
  *
  */
 public class JBossPortalUtil 

Added: trunk/blog-core/src/java/org/jboss/blog/service/store/BlogManager.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/BlogManager.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/BlogManager.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,31 @@
+package org.jboss.blog.service.store;
+
+import org.jboss.blog.model.BlogInformation;
+import org.jboss.blog.BlogName;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public interface BlogManager {
+    /**
+     * Loads blog information for a specific blog.
+     * @param blogName Name of the blog for which to read the information.
+     * @return Information about the specified blog.
+     */
+    public BlogInformation getBlogInformation(BlogName blogName);
+
+    /**
+     * Sets blog information for a specific blog.
+     * @param blogName Name of the blog for which to set the information.
+     * @param info New blog information to persist.
+     */
+    public void setBlogInformation(BlogName blogName, BlogInformation info);
+
+    public void addCategory(BlogName blogName);
+
+    public void deleteCategory(BlogName blogName);
+
+    public void addPost();
+
+    public void deletePost();
+}

Added: trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,35 @@
+package org.jboss.blog.service.store;
+
+import org.jboss.blog.BlogName;
+
+import java.util.List;
+
+/**
+ * A service which enables to manage blogs, categories and posts.
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public interface BlogStoreService {
+    /**
+     * Reads a list of all blogs.
+     * @return A list of {@link org.jboss.blog.BlogName} objects, with a null
+     * category name.
+     */
+    public List getAllBlogs();
+
+    /**
+     * Reads a list of all categories.
+     * @param blogName Name of the blog for which to read the categoriezs. The
+     * category part of the name will be ignored.
+     * @return A list of {@link org.jboss.blog.BlogName} objects, with the id
+     * part equal to the one passed in the parameter.
+     */
+    public List getAllCategories(BlogName blogName);
+
+    /**
+     * Gets a blog manager for the specified blog (that is, blog id and
+     * category combination).
+     * @param blogName Name of blog for which to get the manager.
+     * @return A manager for the specified blog.
+     */
+    public BlogManager getBlogManager(BlogName blogName);
+}

Added: trunk/blog-core/src/java/org/jboss/blog/service/store/PostManager.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/PostManager.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/PostManager.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,7 @@
+package org.jboss.blog.service.store;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public interface PostManager {
+}

Added: trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,12 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.service.store.BlogStoreService;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ * 
+ * @jmx.mbean
+ * @jboss.xmbean
+ */
+public class HibernateBlogStoreService implements BlogStoreService {
+}

Added: trunk/blog-core/src/java/org/jboss/blog/test/HibernateTest.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/test/HibernateTest.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/test/HibernateTest.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,32 @@
+package org.jboss.blog.test;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ * @hibernate.class  table="HIBERNATE_TEST"
+ */
+public class HibernateTest {
+    private Long id;
+    private String data;
+
+    /**
+     * @hibernate.id  generator-class="native"
+     */
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    /**
+     * @hibernate.property
+     */
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
+}

Modified: trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -3,12 +3,12 @@
 /**
  * A view state of one specific blog:
  * - number of a post that should be shown as the first one
- * - currently selected entry
+ * - currently selected post
  * @author Adam Warski (adamw at aster.pl)
  */
 public class BlogViewState {
     private Integer from;
-    private String selectedEntryId;
+    private String selectedPostTitleAsId;
 
     public BlogViewState() {
         from = new Integer(0);
@@ -22,11 +22,11 @@
         this.from = from;
     }
 
-    public String getSelectedEntryId() {
-        return selectedEntryId;
+    public String getSelectedPostTitleAsId() {
+        return selectedPostTitleAsId;
     }
 
-    public void setSelectedEntryId(String selectedEntryId) {
-        this.selectedEntryId = selectedEntryId;
+    public void setSelectedPostTitleAsId(String selectedPostTitleAsId) {
+        this.selectedPostTitleAsId = selectedPostTitleAsId;
     }
 }

Modified: trunk/blog-core/src/java/org/jboss/blog/ui/CurrentView.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/ui/CurrentView.java	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/java/org/jboss/blog/ui/CurrentView.java	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,15 +1,20 @@
 package org.jboss.blog.ui;
 
 import org.jboss.blog.model.BlogModel;
-import org.jboss.blog.model.BlogModelDoesNotExistException;
-import org.jboss.blog.model.BlogEntry;
-import org.jboss.blog.model.DoesNotExistBlogEntry;
+import org.jboss.blog.model.BlogCategoryDoesNotExistException;
+import org.jboss.blog.model.BlogPost;
+import org.jboss.blog.model.DoesNotExistBlogPost;
 import org.jboss.blog.BlogName;
+import org.jboss.blog.test.HibernateTest;
 import org.jboss.blog.tools.BlogTools;
+import org.hibernate.SessionFactory;
+import org.hibernate.Session;
 
 import javax.faces.context.FacesContext;
 import javax.faces.component.UIData;
+import javax.naming.InitialContext;
 import java.util.List;
+import java.util.Iterator;
 
 /**
  * A request-scoped bean allowing to access current view setup - what and how
@@ -19,18 +24,18 @@
 public class CurrentView {
     public CurrentView() {
 
-    }
+    }   
 
     // Faces-managed properties
-    private UIData entriesData;
+    private UIData postsData;
     private GlobalViewState viewState;
 
-    public UIData getEntriesData() {
-        return entriesData;
+    public UIData getPostsData() {
+        return postsData;
     }
 
-    public void setEntriesData(UIData entriesData) {
-        this.entriesData = entriesData;
+    public void setPostsData(UIData postsData) {
+        this.postsData = postsData;
     }
 
     public GlobalViewState getViewState() {
@@ -45,10 +50,10 @@
     private BlogName blogName;
     private BlogModel blogModel;
     private BlogViewState blogViewState;
-    private Integer numberOfEntriesPerPage;
-    private Boolean viewEntriesOnSeparatePage;
-    private Boolean viewAllEntries;
-    private Boolean entriesExpandable;
+    private Integer numberOfPostsPerPage;
+    private Boolean viewPostsOnSeparatePage;
+    private Boolean viewAllPosts;
+    private Boolean postsExpandable;
 
     private Object getRequest() {
         return FacesContext.getCurrentInstance().getExternalContext().getRequest();
@@ -65,9 +70,9 @@
     public BlogModel getBlogModel() {
         if (blogModel == null) {
             try {
-                blogModel = BlogTools.getBlogService().getModelService().getBlogModel(
+                blogModel = BlogTools.getBlogService().getModelService().getBlogCategory(
                         getBlogName());
-            } catch (BlogModelDoesNotExistException e) {
+            } catch (BlogCategoryDoesNotExistException e) {
                 throw new RuntimeException(e);
             }
         }
@@ -75,31 +80,31 @@
         return blogModel;
     }
 
-    public Integer getNumberOfEntriesPerPage() {
-        if (numberOfEntriesPerPage == null) {
-            numberOfEntriesPerPage = BlogTools.getBlogService().getConfigurationService().
-                    getNumberOfEntriesPerPage(getRequest());
+    public Integer getNumberOfPostsPerPage() {
+        if (numberOfPostsPerPage == null) {
+            numberOfPostsPerPage = BlogTools.getBlogService().getConfigurationService().
+                    getNumberOfPostsPerPage(getRequest());
         }
 
-        return numberOfEntriesPerPage;
+        return numberOfPostsPerPage;
     }
 
-    public Boolean getViewEntriesOnSeparatePage() {
-        if (viewEntriesOnSeparatePage == null) {
-            viewEntriesOnSeparatePage = BlogTools.getBlogService().getConfigurationService().
-                    getViewEntriesOnSeparatePage(getRequest());
+    public Boolean getViewPostsOnSeparatePage() {
+        if (viewPostsOnSeparatePage == null) {
+            viewPostsOnSeparatePage = BlogTools.getBlogService().getConfigurationService().
+                    getViewPostsOnSeparatePage(getRequest());
         }
 
-        return viewEntriesOnSeparatePage;
+        return viewPostsOnSeparatePage;
     }
 
-    public Boolean getViewAllEntries() {
-        if (viewAllEntries == null) {
-            viewAllEntries = BlogTools.getBlogService().getConfigurationService().
-                    getViewAllEntries(getRequest());
+    public Boolean getViewAllPosts() {
+        if (viewAllPosts == null) {
+            viewAllPosts = BlogTools.getBlogService().getConfigurationService().
+                    getViewAllPosts(getRequest());
         }
 
-        return viewAllEntries;
+        return viewAllPosts;
     }
 
     public BlogViewState getBlogViewState() {
@@ -110,13 +115,13 @@
         return blogViewState;
     }
 
-    public Boolean getEntriesExpandable() {
-        if (entriesExpandable == null) {
-            entriesExpandable = Boolean.valueOf(!getViewAllEntries().booleanValue() ||
-                    getViewEntriesOnSeparatePage().booleanValue());
+    public Boolean getPostsExpandable() {
+        if (postsExpandable == null) {
+            postsExpandable = Boolean.valueOf(!getViewAllPosts().booleanValue() ||
+                    getViewPostsOnSeparatePage().booleanValue());
         }
 
-        return entriesExpandable;
+        return postsExpandable;
     }
 
     //
@@ -126,11 +131,11 @@
     }
 
     public boolean getHasNext() {
-        return getTo().intValue() < getBlogModel().getEntries().size()-1;
+        return getTo().intValue() < getBlogModel().getPosts().size()-1;
     }
 
     public Integer getTo() {
-        return new Integer(getFrom().intValue() + getNumberOfEntriesPerPage().intValue());
+        return new Integer(getFrom().intValue() + getNumberOfPostsPerPage().intValue());
     }
 
     public Integer getFrom() {
@@ -144,24 +149,24 @@
     }
 
     public List getEntries() {
-        return getBlogModel().getEntries().subList(getFrom().intValue(), getTo().intValue());
+        return getBlogModel().getPosts().subList(getFrom().intValue(), getTo().intValue());
     }
 
     public String getSelectedEntryId() {
-        return getBlogViewState().getSelectedEntryId();
+        return getBlogViewState().getSelectedPostTitleAsId();
     }
 
     private void setSelectedEntryId(String selectedEntryId) {
-        getBlogViewState().setSelectedEntryId(selectedEntryId);
+        getBlogViewState().setSelectedPostTitleAsId(selectedEntryId);
     }
 
-    private BlogEntry getDoesNotExistBlogEntry() {
-        return new DoesNotExistBlogEntry("JBoss Blog", "This entry doesn't exist");
+    private BlogPost getDoesNotExistBlogEntry() {
+        return new DoesNotExistBlogPost("JBoss Blog", "This entry doesn't exist");
     }
 
-    private BlogEntry searchForBlogEntry(List entries, String id, int from, int to) {
+    private BlogPost searchForBlogEntry(List entries, String id, int from, int to) {
         for (int i=from; i<=to; i++) {
-            BlogEntry current = (BlogEntry) entries.get(i);
+            BlogPost current = (BlogPost) entries.get(i);
             if (id.equals(current.getTitleAsId())) {
                 return current;
             }
@@ -170,15 +175,15 @@
         return null;
     }
 
-    public BlogEntry getSelectedEntry() {
+    public BlogPost getSelectedEntry() {
         String id = getSelectedEntryId();
-        List entries = getBlogModel().getEntries();
+        List entries = getBlogModel().getPosts();
 
         if (id == null) {
             return getDoesNotExistBlogEntry();
         }
 
-        BlogEntry ret;
+        BlogPost ret;
 
         // First looking in the specified range.
         ret = searchForBlogEntry(entries, id, Math.max(getFrom().intValue(), 0),
@@ -200,13 +205,13 @@
     // Actions
 
     public String next() {
-        setFrom(new Integer(getFrom().intValue() + getNumberOfEntriesPerPage().intValue()));
+        setFrom(new Integer(getFrom().intValue() + getNumberOfPostsPerPage().intValue()));
 
         return null;
     }
 
     public String previous() {
-        setFrom(new Integer(Math.max(getFrom().intValue() - getNumberOfEntriesPerPage().intValue(), 0)));
+        setFrom(new Integer(Math.max(getFrom().intValue() - getNumberOfPostsPerPage().intValue(), 0)));
 
         return null;
     }
@@ -217,15 +222,70 @@
         return "back";
     }
 
-    public String viewEntry() {
-        BlogEntry selected = (BlogEntry) entriesData.getRowData();
+    public String viewPost() {
+        BlogPost selected = (BlogPost) postsData.getRowData();
 
         setSelectedEntryId(selected.getTitleAsId());
 
-        if (getViewEntriesOnSeparatePage().booleanValue()) {
-            return "viewentry";
+        if (getViewPostsOnSeparatePage().booleanValue()) {
+            return "viewpost";
         } else {
             return null;
         }
     }
+
+    //
+
+    public String testAdd() {
+        try {
+            InitialContext ctx = new InitialContext();
+            SessionFactory sf =
+                    (SessionFactory) ctx.lookup("java:/hibernate/BlogSessionFactory");
+
+            Session s = sf.openSession();
+            try {
+                HibernateTest t = new HibernateTest();
+                t.setData("AAA" + System.currentTimeMillis());
+                s.save(t);
+            } finally {
+                s.close();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        System.out.println("Added.");
+
+        return null;
+    }
+
+    public String testList() {
+        try {
+            InitialContext ctx = new InitialContext();
+            SessionFactory sf =
+                    (SessionFactory) ctx.lookup("java:/hibernate/BlogSessionFactory");
+
+            Session s = sf.openSession();
+            try {
+                List l = s.createQuery("from HibernateTest").list();
+
+                for (Iterator iter = l.iterator(); iter.hasNext();) {
+                    HibernateTest ht = (HibernateTest) iter.next();
+                    if (ht != null) {
+                        System.out.println(ht.getId() + " - " + ht.getData());
+                    } else {
+                        System.out.println("null");
+                    }
+                }
+                System.out.println("---");
+            } finally {
+                s.close();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+
+        return null;
+    }
 }

Modified: trunk/blog-core/src/web/WEB-INF/faces-config.xml
===================================================================
--- trunk/blog-core/src/web/WEB-INF/faces-config.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/WEB-INF/faces-config.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -33,13 +33,13 @@
     <navigation-rule>
         <from-view-id>/views/index.xhtml</from-view-id>
         <navigation-case>
-            <from-outcome>viewentry</from-outcome>
-            <to-view-id>/views/viewentry.xhtml</to-view-id>
+            <from-outcome>viewpost</from-outcome>
+            <to-view-id>/views/viewpost.xhtml</to-view-id>
         </navigation-case>
     </navigation-rule>
 
     <navigation-rule>
-        <from-view-id>/views/viewentry.xhtml</from-view-id>
+        <from-view-id>/views/viewpost.xhtml</from-view-id>
         <navigation-case>
             <from-outcome>back</from-outcome>
             <to-view-id>/views/index.xhtml</to-view-id>

Modified: trunk/blog-core/src/web/WEB-INF/portlet-instances.xml
===================================================================
--- trunk/blog-core/src/web/WEB-INF/portlet-instances.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/WEB-INF/portlet-instances.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -15,11 +15,11 @@
                     <value></value>
                 </preference>
                 <preference>
-                    <name>numberOfEntriesPerPage</name>
+                    <name>numberOfPostsPerPage</name>
                     <value>5</value>
                 </preference>
                 <preference>
-                    <name>viewEntriesOnSeparatePage</name>
+                    <name>viewPostsOnSeparatePage</name>
                     <value>false</value>
                 </preference>
             </preferences>
@@ -40,11 +40,11 @@
                     <value></value>
                 </preference>
                 <preference>
-                    <name>numberOfEntriesPerPage</name>
+                    <name>numberOfPostsPerPage</name>
                     <value>3</value>
                 </preference>
                 <preference>
-                    <name>viewEntriesOnSeparatePage</name>
+                    <name>viewPostsOnSeparatePage</name>
                     <value>true</value>
                 </preference>
             </preferences>

Modified: trunk/blog-core/src/web/WEB-INF/portlet.xml
===================================================================
--- trunk/blog-core/src/web/WEB-INF/portlet.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/WEB-INF/portlet.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -28,11 +28,11 @@
                 <value></value>
             </preference>
             <preference>
-                <name>numberOfEntriesPerPage</name>
+                <name>numberOfPostsPerPage</name>
                 <value>5</value>
             </preference>
             <preference>
-                <name>viewEntriesOnSeparatePage</name>
+                <name>viewPostsOnSeparatePage</name>
                 <value>false</value>
             </preference>
         </portlet-preferences>

Modified: trunk/blog-core/src/web/WEB-INF/web.xml
===================================================================
--- trunk/blog-core/src/web/WEB-INF/web.xml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/WEB-INF/web.xml	2006-11-02 14:53:30 UTC (rev 16)
@@ -30,15 +30,15 @@
         <param-value></param-value>
     </context-param>
     <context-param>
-        <param-name>numberOfEntriesPerPage</param-name>
+        <param-name>numberOfPostsPerPage</param-name>
         <param-value>5</param-value>
     </context-param>
     <context-param>
-        <param-name>viewEntriesOnSeparatePage</param-name>
+        <param-name>viewPostsOnSeparatePage</param-name>
         <param-value>true</param-value>
     </context-param>
     <context-param>
-        <param-name>viewAllEntries</param-name>
+        <param-name>viewAllPosts</param-name>
         <param-value>false</param-value>
     </context-param>
 

Modified: trunk/blog-core/src/web/views/viewblog.xhtml
===================================================================
--- trunk/blog-core/src/web/views/viewblog.xhtml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/views/viewblog.xhtml	2006-11-02 14:53:30 UTC (rev 16)
@@ -7,26 +7,30 @@
 <ui:composition template="userblogview_t.xhtml">
     <ui:define name="main">
         <h2>Test</h2>
+        <h:form>
+        <p><h:commandLink value="Add" action="#{currentView.testAdd}" /></p>
+        <p><h:commandLink value="List" action="#{currentView.testList}" /></p>
+        </h:form>
 
         <h2>Entries</h2>
         <ul>
-        <h:dataTable value="#{currentView.entries}" var="entry" binding="#{currentView.entriesData}">
+        <h:dataTable value="#{currentView.posts}" var="post" binding="#{currentView.postsData}">
             <h:column>
             <li>
                 <h:form>
                     <b>
-                    <h:commandLink value="#{entry.title}"
-                                   action="#{currentView.viewEntry}"
-                                   rendered="#{currentView.entriesExpandable}" />
+                    <h:commandLink value="#{post.title}"
+                                   action="#{currentView.viewPost}"
+                                   rendered="#{currentView.postsExpandable}" />
 
-                    <h:outputText value="#{entry.title}"
-                                  rendered="#{!currentView.entriesExpandable}" />
+                    <h:outputText value="#{post.title}"
+                                  rendered="#{!currentView.postsExpandable}" />
                     </b><br />
                 </h:form>
 
                 <h:panelGroup rendered="#{currentView.viewAllEntries ||
-                        (currentView.selectedEntryId == entry.titleAsId)}">
-                    #{entry.description}
+                        (currentView.selectedPostTitleAsId == post.titleAsId)}">
+                    #{post.description}
                 </h:panelGroup>
 
                 <hr />

Deleted: trunk/blog-core/src/web/views/viewentry.xhtml
===================================================================
--- trunk/blog-core/src/web/views/viewentry.xhtml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/views/viewentry.xhtml	2006-11-02 14:53:30 UTC (rev 16)
@@ -1,20 +0,0 @@
-<div  xmlns="http://www.w3.org/1999/xhtml"
-      xmlns:ui="http://java.sun.com/jsf/facelets"
-      xmlns:c="http://java.sun.com/jstl/core"
-      xmlns:h="http://java.sun.com/jsf/html"
-      xmlns:f="http://java.sun.com/jsf/core"
-      xmlns:blog="http://www.jboss.org/portal/jbossblog">
-<ui:composition template="userblogview_t.xhtml">
-    <ui:define name="main">
-        <h2>Entry</h2>
-
-        <b>#{currentView.selectedEntry.title}</b><br />
-        #{currentView.selectedEntry.description}
-                
-        <h2>Navigation</h2>
-        <h:form>
-            <h:commandLink action="#{currentView.back}">Back</h:commandLink>
-        </h:form>
-    </ui:define>
-</ui:composition>
-</div>
\ No newline at end of file

Copied: trunk/blog-core/src/web/views/viewpost.xhtml (from rev 15, trunk/blog-core/src/web/views/viewentry.xhtml)
===================================================================
--- trunk/blog-core/src/web/views/viewentry.xhtml	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/blog-core/src/web/views/viewpost.xhtml	2006-11-02 14:53:30 UTC (rev 16)
@@ -0,0 +1,20 @@
+<div  xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:c="http://java.sun.com/jstl/core"
+      xmlns:h="http://java.sun.com/jsf/html"
+      xmlns:f="http://java.sun.com/jsf/core"
+      xmlns:blog="http://www.jboss.org/portal/jbossblog">
+<ui:composition template="userblogview_t.xhtml">
+    <ui:define name="main">
+        <h2>Post</h2>
+
+        <b>#{currentView.selectedPost.title}</b><br />
+        #{currentView.selectedPost.description}
+                
+        <h2>Navigation</h2>
+        <h:form>
+            <h:commandLink action="#{currentView.back}">Back</h:commandLink>
+        </h:form>
+    </ui:define>
+</ui:composition>
+</div>
\ No newline at end of file

Modified: trunk/jbossblog.ipr
===================================================================
--- trunk/jbossblog.ipr	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/jbossblog.ipr	2006-11-02 14:53:30 UTC (rev 16)
@@ -127,7 +127,7 @@
           </option>
           <option name="IGNORE_DEPRECATED" value="false" />
           <option name="IGNORE_JAVADOC_PERIOD" value="true" />
-          <option name="myAdditionalJavadocTags" value="jmx.managed-parameter,jmx.managed-operation,jmx.managed-attribute" />
+          <option name="myAdditionalJavadocTags" value="jmx.managed-parameter,jmx.managed-operation,jmx.managed-attribute,hibernate.id,hibernate.property" />
         </inspection_tool>
       </profile>
     </profiles>
@@ -332,6 +332,8 @@
         <root url="jar://$PROJECT_DIR$/lib/xdoclet/commons-collections-2.0.jar!/" />
         <root url="jar://$PROJECT_DIR$/lib/xdoclet/xdoclet-jboss-module-1.2.3.jar!/" />
         <root url="jar://$PROJECT_DIR$/lib/xdoclet/commons-logging.jar!/" />
+        <root url="jar://$PROJECT_DIR$/lib/xdoclet/xdoclet-xdoclet-module-1.2.3.jar!/" />
+        <root url="jar://$PROJECT_DIR$/lib/xdoclet/xdoclet-hibernate-module-1.2.3.jar!/" />
       </CLASSES>
       <JAVADOC />
       <SOURCES />
@@ -355,6 +357,13 @@
       <JAVADOC />
       <SOURCES />
     </library>
+    <library name="hibernate">
+      <CLASSES>
+        <root url="jar://$PROJECT_DIR$/lib/hibernate/hibernate3.jar!/" />
+      </CLASSES>
+      <JAVADOC />
+      <SOURCES />
+    </library>
   </component>
   <component name="uidesigner-configuration">
     <option name="INSTRUMENT_CLASSES" value="true" />

Modified: trunk/jbossblog.iws
===================================================================
--- trunk/jbossblog.iws	2006-10-24 22:07:48 UTC (rev 15)
+++ trunk/jbossblog.iws	2006-11-02 14:53:30 UTC (rev 16)
@@ -17,31 +17,64 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/BlogTools.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/BlogTools.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/BlogViewState.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/META-INF/jboss-service.xml" afterPath="$PROJECT_DIR$/blog-core/src/etc/META-INF/jboss-service.xml" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/viewentry.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/viewentry.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/InitParamsBlogConfigurationService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/InitParamsBlogConfigurationService.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/faces-config.xml" afterPath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/faces-config.xml" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/web/views/userblogview_t.xhtml" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFUIContext.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml" afterPath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/userview_t.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/userview_t.xhtml" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/blog.taglib.xml" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/BasicBlogPermissionsService.java" afterPath="" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/BlogPermissionsService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/BlogPermissionsService.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFSecurityContext.java" />
-      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/SetWithoutBottom.java" afterPath="" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/SecurityContext.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFActionContext.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/index.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/index.xhtml" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogPost.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/web/views/viewpost.xhtml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogEntryDoesNotExistException.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/BlogModelService.java" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/build.xml" afterPath="$PROJECT_DIR$/blog-core/build.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/web.xml" afterPath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/web.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/views/viewblog.xhtml" afterPath="$PROJECT_DIR$/blog-core/src/web/views/viewblog.xhtml" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl" />
-      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java" />
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml" afterPath="$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/AbstractPreferencesBlogConfigurationService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/AbstractPreferencesBlogConfigurationService.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogPost.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPostDoesNotExistException.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/PostManager.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl/BlogPostImpl.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model/RomeParsingBlogModelService.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModelDoesNotExistException.java" afterPath="" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/blog-core.iml" afterPath="$PROJECT_DIR$/blog-core/blog-core.iml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/portlet-instances.xml" afterPath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/portlet-instances.xml" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/BlogConfigurationService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/BlogConfigurationService.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/web/views/viewentry.xhtml" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model/CachingBlogModelService.java" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/BlogCategoryService.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/etc/Messages.properties" afterPath="$PROJECT_DIR$/blog-core/src/etc/Messages.properties" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogManager.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/CurrentView.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/CurrentView.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/test" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/portlet.xml" afterPath="$PROJECT_DIR$/blog-core/src/web/WEB-INF/portlet.xml" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/CachingBlogCategoryService.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/BlogService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/BlogService.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration/PortletPreferencesBlogConfigurationService.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/CachingBlogModelService.java" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/etc/blog-ds.xml" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model/BlogModelService.java" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/test/HibernateTest.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogEntry.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/model" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogCategoryService.java" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogModelService.java" afterPath="" />
+      <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/DoesNotExistBlogEntry.java" afterPath="" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPost.java" />
+      <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogCategoryDoesNotExistException.java" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/BlogName.java" afterPath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/BlogName.java" />
     </list>
   </component>
   <component name="ChangeListSynchronizer" />
@@ -166,54 +199,42 @@
   </component>
   <component name="FileEditorManager">
     <leaf>
-      <file leaf-file-name="acl-permissions.xml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml">
+      <file leaf-file-name="BlogModel.java" pinned="false" current="true" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="46" column="8" selection-start="1816" selection-end="1816" vertical-scroll-proportion="0.6741573">
+            <state line="18" column="3" selection-start="490" selection-end="490" vertical-scroll-proportion="0.2843602">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="acl-mapping.xml" pinned="false" current="true" current-in-tab="true">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml">
+      <file leaf-file-name="BlogPost.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPost.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="91" column="26" selection-start="3922" selection-end="3922" vertical-scroll-proportion="0.4414125">
+            <state line="31" column="4" selection-start="773" selection-end="928" vertical-scroll-proportion="0.4620853">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="viewblog.xhtml" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/viewblog.xhtml">
-          <provider editor-type-id="HtmlPreview">
-            <state />
-          </provider>
+      <file leaf-file-name="AbstractBlogCategory.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="39" column="20" selection-start="1457" selection-end="1457" vertical-scroll-proportion="0.9798995">
+            <state line="12" column="13" selection-start="320" selection-end="320" vertical-scroll-proportion="0.1421801">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="CurrentView.java" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/CurrentView.java">
+      <file leaf-file-name="BlogCategoryImpl.java" pinned="false" current="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java">
           <provider selected="true" editor-type-id="text-editor">
-            <state line="229" column="5" selection-start="6398" selection-end="6398" vertical-scroll-proportion="0.80738366">
+            <state line="15" column="13" selection-start="423" selection-end="423" vertical-scroll-proportion="0.1421801">
               <folding />
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="AuthorizationListener.java" pinned="false" current="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java">
-          <provider selected="true" editor-type-id="text-editor">
-            <state line="33" column="8" selection-start="1120" selection-end="1120" vertical-scroll-proportion="0.24077046">
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
     </leaf>
   </component>
   <component name="FindManager">
@@ -552,6 +573,40 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/test" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
           <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
@@ -590,6 +645,86 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
           <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
@@ -670,7 +805,7 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
-          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/name" />
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/configuration" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
       </PATH>
@@ -704,6 +839,44 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
           <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/portlet" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
@@ -760,6 +933,44 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
         <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
           <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/etc" />
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
@@ -790,6 +1001,62 @@
           <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
         </PATH_ELEMENT>
       </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build/org" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
+      <PATH>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="jbossblog.ipr" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build/org" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build/org/jboss" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+        <PATH_ELEMENT>
+          <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/build/org/jboss/blog" />
+          <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+        </PATH_ELEMENT>
+      </PATH>
     </subPane>
   </component>
   <component name="ProjectReloadState">
@@ -803,7 +1070,7 @@
       <showLibraryContents />
       <hideEmptyPackages />
       <abbreviatePackageNames />
-      <showStructure ProjectPane="false" Scope="false" PackagesPane="false" Favorites="false" />
+      <showStructure Favorites="false" Scope="false" PackagesPane="false" ProjectPane="false" />
       <autoscrollToSource />
       <autoscrollFromSource />
       <sortByType />
@@ -824,10 +1091,13 @@
   </component>
   <component name="RecentsManager">
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="org.jboss.blog.model.impl" />
+      <recent name="org.jboss.blog.model" />
       <recent name="org.jboss.blog.service.name" />
       <recent name="org.jboss.blog.service.configuration" />
     </key>
     <key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
+      <recent name="org.jboss.blog.model.impl" />
       <recent name="org.jboss.blog.service.permissions" />
     </key>
   </component>
@@ -852,17 +1122,15 @@
         <option name="Make" value="true" />
       </method>
     </configuration>
-    <configuration default="true" type="Applet" factoryName="Applet">
-      <module name="" />
+    <configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
       <option name="MAIN_CLASS_NAME" />
-      <option name="HTML_FILE_NAME" />
-      <option name="HTML_USED" value="false" />
-      <option name="WIDTH" value="400" />
-      <option name="HEIGHT" value="300" />
-      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
       <option name="VM_PARAMETERS" />
+      <option name="PROGRAM_PARAMETERS" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
+      <option name="ENABLE_SWING_INSPECTOR" value="false" />
+      <module name="" />
     </configuration>
     <configuration default="true" type="Remote" factoryName="Remote">
       <option name="USE_SOCKET_TRANSPORT" value="true" />
@@ -871,15 +1139,17 @@
       <option name="HOST" value="localhost" />
       <option name="PORT" value="5005" />
     </configuration>
-    <configuration default="true" type="Application" factoryName="Application" enabled="false" merge="false">
+    <configuration default="true" type="Applet" factoryName="Applet">
+      <module name="" />
       <option name="MAIN_CLASS_NAME" />
+      <option name="HTML_FILE_NAME" />
+      <option name="HTML_USED" value="false" />
+      <option name="WIDTH" value="400" />
+      <option name="HEIGHT" value="300" />
+      <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
       <option name="VM_PARAMETERS" />
-      <option name="PROGRAM_PARAMETERS" />
-      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
       <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
       <option name="ALTERNATIVE_JRE_PATH" />
-      <option name="ENABLE_SWING_INSPECTOR" value="false" />
-      <module name="" />
     </configuration>
   </component>
   <component name="ScopeViewComponent">
@@ -956,21 +1226,21 @@
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="25" width="1680" height="1000" extended-state="0" />
-    <editor active="true" />
+    <editor active="false" />
     <layout>
       <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="2" />
       <window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="13" />
       <window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="3" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3298969" order="7" />
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.25848243" order="0" />
+      <window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.26156694" order="0" />
       <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32914287" order="1" />
       <window_info id="Structure" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24984577" order="7" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.22742857" order="9" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22742857" order="9" />
       <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39977092" order="6" />
       <window_info id="Module Dependencies" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="4" />
       <window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="10" />
       <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="5" />
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.26465145" order="1" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.2541641" order="1" />
       <window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3298969" order="11" />
       <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" order="2" />
       <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24984577" order="2" />
@@ -1067,136 +1337,127 @@
   </component>
   <component name="com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectRootMasterDetailsConfigurable" proportions="0.16666667" version="1">
     <option name="myPlainMode" value="false" />
-    <option name="myLastEditedConfigurable" value="blog-core" />
+    <option name="myLastEditedConfigurable" value="xdoclet" />
   </component>
   <component name="com.intellij.profile.ui.ErrorOptionsConfigurable" proportions="0.16666667,0.5642857" version="1">
     <option name="myLastEditedConfigurable" value="Project Default" />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/WEB-INF/web.xml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/jboss-service.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="7" column="76" selection-start="296" selection-end="296" vertical-scroll-proportion="0.17355372">
+        <state line="48" column="57" selection-start="2313" selection-end="2313" vertical-scroll-proportion="0.59309494">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/index.xhtml">
-      <provider editor-type-id="HtmlPreview">
-        <state />
-      </provider>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/CachingBlogCategoryService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="5" column="56" selection-start="285" selection-end="285" vertical-scroll-proportion="0.13020833">
+        <state line="9" column="18" selection-start="329" selection-end="329" vertical-scroll-proportion="0.10895884">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/userview_t.xhtml">
-      <provider editor-type-id="HtmlPreview">
-        <state />
-      </provider>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/BlogCategoryService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="8" column="61" selection-start="425" selection-end="425" vertical-scroll-proportion="0.2020202">
+        <state line="16" column="25" selection-start="578" selection-end="578" vertical-scroll-proportion="0.2542373">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/viewentry.xhtml">
-      <provider editor-type-id="HtmlPreview">
-        <state />
-      </provider>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/web/WEB-INF/faces-config.xml">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="5" column="56" selection-start="285" selection-end="285" vertical-scroll-proportion="0.12626262">
+        <state line="35" column="34" selection-start="1375" selection-end="1375" vertical-scroll-proportion="0.65625">
           <folding />
         </state>
       </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/userblogview_t.xhtml">
-      <provider editor-type-id="HtmlPreview">
+      <provider editor-type-id="com.intellij.jsf.yfilesGraph.editor.FacesNavigationFileEditorProvider">
         <state />
       </provider>
-      <provider selected="true" editor-type-id="text-editor">
-        <state line="5" column="56" selection-start="285" selection-end="285" vertical-scroll-proportion="0.12626262">
-          <folding />
-        </state>
+      <provider editor-type-id="com.intellij.jsf.ui.FacesConfigEditorProvider">
+        <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/build.xml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/category/RomeParsingBlogCategoryService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="9" column="39" selection-start="409" selection-end="409" vertical-scroll-proportion="0.2231405">
+        <state line="80" column="50" selection-start="2981" selection-end="2981" vertical-scroll-proportion="0.9455206">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogStoreService.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="53" column="23" selection-start="1422" selection-end="1422" vertical-scroll-proportion="0.3322314">
+        <state line="33" column="57" selection-start="1107" selection-end="1107" vertical-scroll-proportion="0.5864929">
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/BlogManager.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="19" column="24" selection-start="408" selection-end="408" vertical-scroll-proportion="0.47107437">
+        <state line="14" column="34" selection-start="444" selection-end="444" vertical-scroll-proportion="0.24881516">
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFActionContext.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/BlogServiceImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="21" column="55" selection-start="605" selection-end="605" vertical-scroll-proportion="0.25">
+        <state line="17" column="0" selection-start="576" selection-end="576" vertical-scroll-proportion="0.017772513">
           <folding>
             <element signature="imports" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/test/HibernateTest.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="34" column="5" selection-start="1184" selection-end="1184" vertical-scroll-proportion="0.28099173">
-          <folding>
-            <element signature="imports" expanded="true" />
-          </folding>
+        <state line="21" column="4" selection-start="398" selection-end="436" vertical-scroll-proportion="0.37322274">
+          <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/ui/CurrentView.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogCategory.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="229" column="5" selection-start="6398" selection-end="6398" vertical-scroll-proportion="0.80738366">
+        <state line="12" column="13" selection-start="320" selection-end="320" vertical-scroll-proportion="0.1421801">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl/BlogCategoryImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="33" column="8" selection-start="1120" selection-end="1120" vertical-scroll-proportion="0.24077046">
+        <state line="15" column="13" selection-start="423" selection-end="423" vertical-scroll-proportion="0.1421801">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/web/views/viewblog.xhtml">
-      <provider editor-type-id="HtmlPreview">
-        <state />
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/AbstractBlogPost.java">
+      <provider selected="true" editor-type-id="text-editor">
+        <state line="8" column="71" selection-start="201" selection-end="201" vertical-scroll-proportion="0.14527845">
+          <folding>
+            <element signature="imports" expanded="true" />
+          </folding>
+        </state>
       </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/impl/BlogPostImpl.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="39" column="20" selection-start="1457" selection-end="1457" vertical-scroll-proportion="0.9798995">
+        <state line="20" column="0" selection-start="513" selection-end="513" vertical-scroll-proportion="0.3021327">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-permissions.xml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogPost.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="46" column="8" selection-start="1816" selection-end="1816" vertical-scroll-proportion="0.6741573">
+        <state line="31" column="4" selection-start="773" selection-end="928" vertical-scroll-proportion="0.4620853">
           <folding />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/blog-core/src/etc/META-INF/acl-mapping.xml">
+    <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/model/BlogModel.java">
       <provider selected="true" editor-type-id="text-editor">
-        <state line="91" column="26" selection-start="3922" selection-end="3922" vertical-scroll-proportion="0.4414125">
+        <state line="18" column="3" selection-start="490" selection-end="490" vertical-scroll-proportion="0.2843602">
           <folding />
         </state>
       </provider>




More information about the jboss-cvs-commits mailing list