[jboss-cvs] JBossBlog SVN: r73 - in trunk: blog-common and 15 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Mar 14 20:14:59 EDT 2007
Author: adamw
Date: 2007-03-14 20:14:59 -0400 (Wed, 14 Mar 2007)
New Revision: 73
Added:
trunk/blog-common/src/java/org/jboss/blog/service/AbstractBlogService.java
trunk/blog-hibernate/
trunk/blog-hibernate/blog-hibernate.iml
trunk/blog-hibernate/build.xml
trunk/blog-hibernate/src/
trunk/blog-hibernate/src/java/
trunk/blog-hibernate/src/java/org/
trunk/blog-hibernate/src/java/org/jboss/
trunk/blog-hibernate/src/java/org/jboss/blog/
trunk/blog-hibernate/src/java/org/jboss/blog/service/
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.hbm.xml
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.java
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.java
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.hbm.xml
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.java
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java
trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateSessionFilter.java
Removed:
trunk/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java
trunk/blog-core/src/java/org/jboss/blog/service/store/hibernate/
trunk/blog-core/src/java/org/jboss/blog/test/
trunk/blog-core/src/java/org/jboss/security/
Modified:
trunk/blog-common/blog-common.iml
trunk/blog-core/blog-core.iml
trunk/blog-core/build.xml
trunk/build.xml
trunk/jbossblog.ipr
trunk/jbossblog.iws
Log:
Refactoring
Modified: trunk/blog-common/blog-common.iml
===================================================================
--- trunk/blog-common/blog-common.iml 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/blog-common/blog-common.iml 2007-03-15 00:14:59 UTC (rev 73)
@@ -26,6 +26,33 @@
<SOURCES />
</library>
</orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/../lib/jboss/jboss-j2ee.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/../lib/jboss/jboss-system.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/../lib/jboss/jboss-jmx.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
<orderEntryProperties />
</component>
</module>
Copied: trunk/blog-common/src/java/org/jboss/blog/service/AbstractBlogService.java (from rev 69, trunk/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java)
===================================================================
--- trunk/blog-common/src/java/org/jboss/blog/service/AbstractBlogService.java (rev 0)
+++ trunk/blog-common/src/java/org/jboss/blog/service/AbstractBlogService.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,10 @@
+package org.jboss.blog.service;
+
+import org.jboss.system.ServiceMBeanSupport;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public abstract class AbstractBlogService extends ServiceMBeanSupport {
+ protected static final String REQUEST_NULL_EX_MSG = "Request can't be null.";
+}
Modified: trunk/blog-core/blog-core.iml
===================================================================
--- trunk/blog-core/blog-core.iml 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/blog-core/blog-core.iml 2007-03-15 00:14:59 UTC (rev 73)
@@ -75,10 +75,11 @@
</library>
</orderEntry>
<orderEntry type="library" name="xdoclet" level="project" />
+ <orderEntry type="module" module-name="blog-common" />
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/jboss-portal/portal-identity-lib.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/jboss-jaae/jboss-acl.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
@@ -105,23 +106,21 @@
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/jboss-jaae/jboss-acl.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/jboss-portal/portal-faces-lib.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="library" name="hibernate" level="project" />
<orderEntry type="module-library">
<library>
<CLASSES>
- <root url="jar://$MODULE_DIR$/../lib/jboss-portal/portal-faces-lib.jar!/" />
+ <root url="jar://$MODULE_DIR$/../lib/jboss-portal/portal-identity-lib.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="module" module-name="blog-common" />
<orderEntryProperties />
</component>
<component name="WebModuleBuildComponent">
@@ -179,6 +178,11 @@
<url>jar://$MODULE_DIR$/../lib/jboss-portal/portal-identity-lib.jar!/</url>
</containerElement>
<containerElement type="library" level="module">
+ <attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib/jboss-j2ee.jar" />
+ <url>jar://$MODULE_DIR$/../lib/jboss/jboss-j2ee.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
<attribute name="method" value="1" />
<attribute name="URI" value="/WEB-INF/lib/jboss-jmx.jar" />
<url>jar://$MODULE_DIR$/../lib/jboss/jboss-jmx.jar!/</url>
@@ -200,13 +204,14 @@
</containerElement>
<containerElement type="library" level="module">
<attribute name="method" value="0" />
+ <attribute name="URI" value="/WEB-INF/lib/rome-0.9.jar" />
+ <url>jar://$MODULE_DIR$/../lib/rome/rome-0.9.jar!/</url>
+ </containerElement>
+ <containerElement type="library" level="module">
+ <attribute name="method" value="0" />
<attribute name="URI" value="<N/A>" />
<url>jar://$APPLICATION_HOME_DIR$/lib/javaee.jar!/</url>
</containerElement>
- <containerElement type="library" 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="<N/A>" />
Modified: trunk/blog-core/build.xml
===================================================================
--- trunk/blog-core/build.xml 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/blog-core/build.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -6,13 +6,12 @@
<fileset refid="rome.jars" />
<fileset refid="jboss.jars" />
<fileset refid="jboss.portal.jars" />
- <fileset refid="jboss.jaae.jars" />
<fileset refid="portlet.jars" />
<fileset refid="facelets.jars" />
<fileset refid="myfaces.jars" />
<fileset refid="jstl.jars" />
- <fileset refid="hibernate.jars" />
<fileset refid="servlet.jars" />
+ <fileset refid="jboss.jaae.jars" />
<fileset refid="log4j.jar" />
</path>
@@ -45,7 +44,7 @@
<!-- Compiling the source -->
<javac srcdir="${src.java}" destdir="${build}" target="1.4" source="1.4">
<classpath refid="base.jars" />
- <!-- Dependency on the blog-model classes -->
+ <!-- Dependency on the blog-common classes -->
<classpath path="../blog-common/${build}" />
</javac>
<!-- Copying any xmls -->
Deleted: trunk/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java
===================================================================
--- trunk/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -1,10 +0,0 @@
-package org.jboss.blog.service;
-
-import org.jboss.system.ServiceMBeanSupport;
-
-/**
- * @author Adam Warski (adamw at aster.pl)
- */
-public abstract class AbstractBlogService extends ServiceMBeanSupport {
- protected static final String REQUEST_NULL_EX_MSG = "Request can't be null.";
-}
Property changes on: trunk/blog-hibernate
___________________________________________________________________
Name: svn:ignore
+ build
targe
Added: trunk/blog-hibernate/blog-hibernate.iml
===================================================================
--- trunk/blog-hibernate/blog-hibernate.iml (rev 0)
+++ trunk/blog-hibernate/blog-hibernate.iml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="true" type="JAVA_MODULE">
+ <component name="ModuleRootManager" />
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" name="hibernate" level="project" />
+ <orderEntry type="module" module-name="blog-common" />
+ <orderEntryProperties />
+ </component>
+</module>
+
Added: trunk/blog-hibernate/build.xml
===================================================================
--- trunk/blog-hibernate/build.xml (rev 0)
+++ trunk/blog-hibernate/build.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,41 @@
+<?xml version='1.0' encoding='UTF-8'?>
+
+<project name="JBoss Blog Hibernate">
+ <!-- Classpath for building the application: includes all dependency jars -->
+ <path id="base.jars">
+ <fileset refid="hibernate.jars" />
+ <fileset refid="jboss.jars" />
+ <fileset refid="servlet.jars" />
+ <fileset refid="log4j.jar" />
+ <fileset refid="jboss.portal.jars" />
+ </path>
+
+ <!-- BUILD TARGETS -->
+
+ <target name="init">
+
+ </target>
+
+ <target name="build" depends="init,clean">
+ <mkdir dir="${build}" />
+ <!-- Compiling the source -->
+ <javac srcdir="${src.java}" destdir="${build}" target="1.4" source="1.4">
+ <classpath refid="base.jars" />
+ <!-- Dependency on the blog-common classes -->
+ <classpath path="../blog-common/${build}" />
+ <!-- Dependency on the blog-core classes -->
+ <classpath path="../blog-core/${build}" />
+ </javac>
+ </target>
+
+ <target name="dist" depends="build">
+ <mkdir dir="${dist.lib.dir}" />
+
+ <!-- Creating the jar with the classes -->
+ <jar destfile="${dist.lib.dir}/jboss-blog-hibernate.jar" basedir="${build}" />
+ </target>
+
+ <target name="clean">
+ <delete dir="${build}" />
+ </target>
+</project>
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.hbm.xml
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.hbm.xml (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.hbm.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.jboss.blog.service.store.hibernate">
+ <class name="HBlogComment"
+ table="BLOG_COMMENTS">
+ <id name="id" column="COMMENT_ID">
+ <generator class="native" />
+ </id>
+
+ <many-to-one name="post" column="POST_ID" not-null="true" class="HBlogPost" cascade="none" />
+
+ <many-to-one name="author" column="AUTHOR" not-null="true" class="HPortalBlogAuthor" cascade="none" />
+
+ <property name="created" column="CREATED" not-null="true" type="timestamp"
+ update="false" />
+
+ <property name="title" column="TITLE" not-null="true" />
+
+ <property name="link" column="LINK" />
+
+ <property name="description" column="DESCRIPTION" type="text" />
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,90 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.model.AbstractBlogComment;
+import org.jboss.blog.model.BlogAuthor;
+import org.jboss.blog.service.store.model.ModifiableBlogComment;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class HBlogComment extends AbstractBlogComment implements ModifiableBlogComment {
+ private Integer id;
+ private BlogAuthor author;
+ private String title;
+ private String description;
+ private Date created;
+ private String link;
+ private HBlogPost post;
+
+ public HBlogComment() {
+
+ }
+
+ public Serializable getCommentId() {
+ return getId();
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public BlogAuthor getAuthor() {
+ getStoreService().castAndAssertBlogAuthor(author).setStoreService(getStoreService());
+ return author;
+ }
+
+ public HBlogPost getPost() {
+ return post;
+ }
+
+ public void setPost(HBlogPost post) {
+ this.post = post;
+ }
+
+ public void setAuthor(BlogAuthor author) {
+ this.author = author;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public Date getCreated() {
+ return created;
+ }
+
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+
+ public HibernateBlogStoreService getStoreService() {
+ return getPost().getStoreService();
+ }
+}
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.jboss.blog.service.store.hibernate">
+ <class name="HBlogModel"
+ table="BLOG_MODELS">
+ <id name="id" column="BLOG_ID">
+ <generator class="native" />
+ </id>
+
+ <natural-id mutable="true">
+ <component name="blogName" class="org.jboss.blog.BlogName">
+ <property name="id" column="BLOG_NAME_ID" length="64" />
+ <property name="category" column="BLOG_NAME_CATEGORY" length="128" />
+ </component>
+ </natural-id>
+
+ <many-to-one name="author" column="AUTHOR" not-null="true" class="HPortalBlogAuthor" />
+
+ <property name="created" column="CREATED" not-null="true" type="timestamp"
+ update="false" />
+
+ <property name="title" column="TITLE" not-null="true" />
+
+ <property name="link" column="LINK" />
+
+ <property name="description" column="DESCRIPTION" type="text" />
+
+ <bag name="modelPosts" inverse="true">
+ <key column="BLOG_ID" not-null="true" />
+ <one-to-many class="HBlogModelPost" />
+ </bag>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,194 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.service.store.model.ModifiableBlogModel;
+import org.jboss.blog.service.store.model.ModifiableBlogPost;
+import org.jboss.blog.service.store.model.BlogModelAlreadyExistsException;
+import org.jboss.blog.model.AbstractBlogModel;
+import org.jboss.blog.model.BlogPost;
+import org.jboss.blog.model.BlogPostDoesNotExistException;
+import org.jboss.blog.model.BlogAuthor;
+import org.jboss.blog.BlogName;
+import org.jboss.blog.tools.BasicTools;
+
+import java.util.*;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class HBlogModel extends AbstractBlogModel implements ModifiableBlogModel {
+ private Integer id;
+ private BlogName blogName;
+ private BlogAuthor author;
+ private String title;
+ private String description;
+ private String link;
+ private Date created;
+
+ private List modelPosts;
+
+ private Set categories;
+ private List posts;
+
+ private HibernateBlogStoreService storeService;
+
+ public HBlogModel() {
+ categories = BasicTools.emptySet();
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public BlogName getBlogName() {
+ return blogName;
+ }
+
+ public void setBlogName(BlogName blogName) {
+ this.blogName = blogName;
+ if (blogName.getCategory() == null) {
+ categories = BasicTools.emptySet();
+ } else {
+ categories = Collections.singleton(blogName.getCategory());
+ }
+ }
+
+ public BlogAuthor getAuthor() {
+ getStoreService().castAndAssertBlogAuthor(author).setStoreService(getStoreService());
+ return author;
+ }
+
+ public void setAuthor(BlogAuthor author) {
+ this.author = author;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+
+ public Date getCreated() {
+ return created;
+ }
+
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ public String getCategory() {
+ return getBlogName().getCategory();
+ }
+
+ public void setCategory(String category)
+ throws IllegalArgumentException, BlogModelAlreadyExistsException {
+ if (BasicTools.isEmpty(category)) {
+ throw new IllegalArgumentException("Category cannot be null or empty.");
+ }
+
+ /* Trying to create a new model with a given category name, to check
+ * if it doesn't already exist. */
+ getStoreService().newBlogModel(new BlogName(getBlogName().getId(), category));
+
+ getBlogName().setCategory(category);
+ }
+
+ //
+
+ public List getModelPosts() {
+ return modelPosts;
+ }
+
+ public void setModelPosts(List posts) {
+ this.modelPosts = posts;
+ }
+
+ public HibernateBlogStoreService getStoreService() {
+ return storeService;
+ }
+
+ public void setStoreService(HibernateBlogStoreService storeService) {
+ this.storeService = storeService;
+ }
+
+ //
+
+ public Set getCategories() {
+ return categories;
+ }
+
+ public List getPosts() {
+ // Creating a list of posts from the a list of HBlogModelPost.
+ if (posts == null) {
+ posts = new ArrayList();
+ modelPosts = getModelPosts();
+ HibernateBlogStoreService storeService = getStoreService();
+
+ for (Iterator iter = modelPosts.iterator(); iter.hasNext();) {
+ HBlogPost post = ((HBlogModelPost) iter.next()).getPost();
+ post.setStoreService(storeService);
+ posts.add(post);
+ }
+
+ Collections.sort(posts);
+ }
+
+ return Collections.unmodifiableList(posts);
+ }
+
+ //
+
+ public List getPosts(int from, int to) {
+ return storeService.getPosts(this, from, to);
+ }
+
+ public ModifiableBlogPost getModifiableBlogPostByTitleAsId(String titleAsId)
+ throws BlogPostDoesNotExistException {
+ HBlogPost p = storeService.getPostByTitleAsId(this, titleAsId);
+ if (p == null) {
+ throw new BlogPostDoesNotExistException(titleAsId);
+ }
+
+ return p;
+ }
+
+ public BlogPost getPostByTitleAsId(String titleAsId)
+ throws BlogPostDoesNotExistException {
+ return getModifiableBlogPostByTitleAsId(titleAsId);
+ }
+
+ public void addPost(ModifiableBlogPost post) throws IllegalArgumentException {
+ HibernateBlogStoreService storeService = getStoreService();
+ HBlogPost hpost = storeService.castAndAssertBlogPost(post);
+
+ storeService.addPost(this, hpost);
+ }
+
+ public void removePost(ModifiableBlogPost post) throws IllegalArgumentException {
+ HibernateBlogStoreService storeService = getStoreService();
+ HBlogPost hpost = storeService.castAndAssertBlogPost(post);
+
+ storeService.removePost(this, hpost);
+ }
+}
\ No newline at end of file
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.jboss.blog.service.store.hibernate">
+ <class name="HBlogModelPost"
+ table="BLOG_MODELS_POSTS">
+ <id name="id" column="BLOG_MODEL_ID">
+ <generator class="native" />
+ </id>
+
+ <natural-id>
+ <many-to-one name="model" class="HBlogModel" column="BLOG_ID" cascade="none" />
+ <many-to-one name="post" class="HBlogPost" column="POST_ID" cascade="persist,merge,save-update" />
+ </natural-id>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,64 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.tools.BasicTools;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class HBlogModelPost {
+ private Integer id;
+ private HBlogModel model;
+ private HBlogPost post;
+
+ public HBlogModelPost() {
+
+ }
+
+ public HBlogModelPost(HBlogModel model, HBlogPost post) {
+ this.model = model;
+ this.post = post;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public HBlogModel getModel() {
+ return model;
+ }
+
+ public void setModel(HBlogModel model) {
+ this.model = model;
+ }
+
+ public HBlogPost getPost() {
+ return post;
+ }
+
+ public void setPost(HBlogPost post) {
+ this.post = post;
+ }
+
+ private int hashCode(Integer i) {
+ return i == null ? 0 : i.hashCode();
+ }
+
+ public int hashCode() {
+ return hashCode(model.getId()) + hashCode(post.getId());
+ }
+
+ public boolean equals(Object obj) {
+ if (!(obj instanceof HBlogModelPost)) {
+ return false;
+ }
+
+ HBlogModelPost hbmp = (HBlogModelPost) obj;
+
+ return BasicTools.objectsEqual(hbmp.getModel().getId(), getModel().getId()) &&
+ BasicTools.objectsEqual(hbmp.getPost().getId(), getPost().getId());
+ }
+}
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.jboss.blog.service.store.hibernate">
+ <class name="HBlogPost"
+ table="BLOG_POSTS">
+ <id name="id" column="POST_ID">
+ <generator class="native" />
+ </id>
+
+ <many-to-one name="author" column="AUTHOR" not-null="true" class="HPortalBlogAuthor" />
+
+ <property name="created" column="CREATED" not-null="true" type="timestamp"
+ update="false" />
+
+ <property name="title" column="TITLE" not-null="true" />
+
+ <property name="titleAsId" column="TITLE_AS_ID" not-null="true" index="titleAsIdIndex" />
+
+ <property name="guid" column="GUID" not-null="true" />
+
+ <property name="link" column="LINK" />
+
+ <property name="commentLink" column="COMMENT_LINK" />
+
+ <property name="description" column="DESCRIPTION" type="text" />
+
+ <bag name="modelPosts" inverse="true">
+ <key column="POST_ID" not-null="true" />
+ <one-to-many class="HBlogModelPost" />
+ </bag>
+
+ <bag name="comments" order-by="created desc" inverse="true" cascade="all">
+ <key column="POST_ID" not-null="true" />
+ <one-to-many class="HBlogComment" />
+ </bag>
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,171 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.service.store.model.ModifiableBlogPost;
+import org.jboss.blog.service.store.model.ModifiableBlogComment;
+import org.jboss.blog.model.AbstractBlogPost;
+import org.jboss.blog.model.BlogComment;
+import org.jboss.blog.model.BlogCommentDoesNotExistException;
+import org.jboss.blog.model.BlogAuthor;
+import org.jboss.blog.tools.BasicTools;
+
+import java.util.*;
+import java.io.Serializable;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class HBlogPost extends AbstractBlogPost implements ModifiableBlogPost {
+ private Integer id;
+ private BlogAuthor author;
+ private String title;
+ private String description;
+ private String link;
+ private String guid;
+ private String commentLink;
+ private String titleAsId;
+ private Date created;
+
+ private List comments;
+ private List modelPosts;
+ private Set categories;
+
+ private HibernateBlogStoreService storeService;
+
+ public HBlogPost() {
+
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public BlogAuthor getAuthor() {
+ getStoreService().castAndAssertBlogAuthor(author).setStoreService(getStoreService());
+ return author;
+ }
+
+ public void setAuthor(BlogAuthor author) {
+ this.author = author;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+
+ String newTitleAsId = BasicTools.convertToId(title);
+ if (!BasicTools.objectsEqual(titleAsId, newTitleAsId)) {
+ setTitleAsId(newTitleAsId);
+ }
+ }
+
+ public String getTitleAsId() {
+ return titleAsId;
+ }
+
+ public void setTitleAsId(String titleAsId) {
+ this.titleAsId = titleAsId;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getLink() {
+ return link;
+ }
+
+ public void setLink(String link) {
+ this.link = link;
+ }
+
+ public String getGuid() {
+ return guid;
+ }
+
+ public void setGuid(String guid) {
+ this.guid = guid;
+ }
+
+ public String getCommentLink() {
+ return commentLink;
+ }
+
+ public void setCommentLink(String commentLink) {
+ this.commentLink = commentLink;
+ }
+
+ public Date getCreated() {
+ return created;
+ }
+
+ public void setCreated(Date created) {
+ this.created = created;
+ }
+
+ public List getComments() {
+ return comments;
+ }
+
+ public void setComments(List comments) {
+ this.comments = comments;
+ }
+
+ public List getModelPosts() {
+ return modelPosts;
+ }
+
+ public void setModelPosts(List modelPosts) {
+ this.modelPosts = modelPosts;
+ }
+
+ public Set getCategories() {
+ if (categories == null) {
+ categories = new HashSet();
+ for (Iterator iter = getModelPosts().iterator(); iter.hasNext();) {
+ categories.add(((HBlogModelPost) iter.next()).getModel().getCategory());
+ }
+ }
+
+ return Collections.unmodifiableSet(categories);
+ }
+
+ public HibernateBlogStoreService getStoreService() {
+ return storeService;
+ }
+
+ public void setStoreService(HibernateBlogStoreService storeService) {
+ this.storeService = storeService;
+ }
+
+ public void addComment(ModifiableBlogComment comment) throws IllegalArgumentException {
+ HibernateBlogStoreService storeService = getStoreService();
+ HBlogComment hcomment = storeService.castAndAssertBlogComment(comment);
+
+ storeService.addComment(this, hcomment);
+ }
+
+ public ModifiableBlogComment getModifiableBlogComment(BlogComment comment)
+ throws BlogCommentDoesNotExistException {
+ if (!(comment instanceof HBlogComment)) {
+ throw new BlogCommentDoesNotExistException(comment.getTitle());
+ }
+
+ return (ModifiableBlogComment) comment;
+ }
+
+ public ModifiableBlogComment getModifiableBlogComment(Serializable id)
+ throws BlogCommentDoesNotExistException {
+ return getStoreService().getComment(id);
+ }
+}
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.hbm.xml
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.hbm.xml (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.hbm.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="org.jboss.blog.service.store.hibernate">
+ <class name="HPortalBlogAuthor"
+ table="BLOG_PORTAL_AUTHORS">
+ <id name="id" column="AUTHOR_ID">
+ <generator class="native" />
+ </id>
+
+ <property name="jbp_id" column="JBP_ID" not-null="true" />
+ </class>
+</hibernate-mapping>
\ No newline at end of file
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,84 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.model.AbstractBlogAuthor;
+import org.jboss.blog.model.BlogAuthor;
+import org.jboss.blog.service.permissions.model.PortalUserBlogAuthor;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class HPortalBlogAuthor extends AbstractBlogAuthor {
+ private Integer id;
+ private Long jbp_id;
+
+ private boolean initDone;
+ private PortalUserBlogAuthor author;
+ private HibernateBlogStoreService storeService;
+
+ private void initUser() {
+ BlogAuthor blogAuthor = getStoreService().getPermissionsService().retrieveBlogAuthor(jbp_id);
+
+ if (blogAuthor instanceof PortalUserBlogAuthor) {
+ author = (PortalUserBlogAuthor) blogAuthor;
+ } else {
+ author = null;
+ }
+
+ initDone = true;
+ }
+
+ public String getUserName() {
+ if (!initDone) { initUser(); }
+ if (author != null) {
+ return author.getUserName();
+ } else {
+ return "";
+ }
+ }
+
+ public String getGivenName() {
+ if (!initDone) { initUser(); }
+ if (author != null) {
+ return author.getGivenName();
+ } else {
+ return "";
+ }
+ }
+
+ public String getFamilyName() {
+ if (!initDone) { initUser(); }
+ if (author != null) {
+ return author.getFamilyName();
+ } else {
+ return "";
+ }
+ }
+
+ //
+
+ public Long getJbp_id() {
+ return jbp_id;
+ }
+
+ public void setJbp_id(Long jbp_id) {
+ this.jbp_id = jbp_id;
+ }
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ //
+
+ public HibernateBlogStoreService getStoreService() {
+ return storeService;
+ }
+
+ public void setStoreService(HibernateBlogStoreService storeService) {
+ this.storeService = storeService;
+ }
+}
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,446 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.jboss.blog.service.store.BlogStoreService;
+import org.jboss.blog.service.store.model.ModifiableBlogModel;
+import org.jboss.blog.service.store.model.ModifiableBlogPost;
+import org.jboss.blog.service.store.model.BlogModelAlreadyExistsException;
+import org.jboss.blog.service.store.model.ModifiableBlogComment;
+import org.jboss.blog.service.AbstractBlogService;
+import org.jboss.blog.service.permissions.model.PortalUserBlogAuthor;
+import org.jboss.blog.service.permissions.BlogPermissionsService;
+import org.jboss.blog.BlogName;
+import org.jboss.blog.model.BlogModelDoesNotExistException;
+import org.jboss.blog.model.BlogCommentDoesNotExistException;
+import org.jboss.blog.model.BlogAuthor;
+import org.jboss.blog.tools.BasicTools;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.io.Serializable;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ *
+ * @jmx.mbean
+ * @jmx.managed-operation
+ * name="start"
+ * impact="ACTION"
+ * return-type="void"
+ * @jmx.managed-operation
+ * name="stop"
+ * impact="ACTION"
+ * return-type="void"
+ * @jboss.xmbean
+ */
+public class HibernateBlogStoreService extends AbstractBlogService implements BlogStoreService {
+ private SessionFactory sf;
+
+ protected void startService() throws Exception {
+ sf = new Configuration().configure("/conf/hibernate/hibernate.cfg.xml")
+ .buildSessionFactory();
+ }
+
+ protected void stopService() throws Exception {
+
+ }
+
+ private void assertBlogNameNotNull(BlogName blogName) {
+ BasicTools.assertNotNull(blogName, "Blog name cannot be null.");
+ }
+
+ HPortalBlogAuthor castAndAssertBlogAuthor(BlogAuthor author) {
+ BasicTools.assertNotNull(author, "Blog author cannot be null.");
+ if (!(author instanceof HPortalBlogAuthor)) {
+ throw new IllegalArgumentException("Author must be obtained from this store service.");
+ }
+
+ return (HPortalBlogAuthor) author;
+ }
+
+ HBlogModel castAndAssertBlogModel(ModifiableBlogModel model) {
+ BasicTools.assertNotNull(model, "Blog model cannot be null.");
+ if (!(model instanceof HBlogModel)) {
+ throw new IllegalArgumentException("Model must be obtained from this store service.");
+ }
+
+ return (HBlogModel) model;
+ }
+
+ HBlogPost castAndAssertBlogPost(ModifiableBlogPost post) {
+ BasicTools.assertNotNull(post, "Blog post cannot be null.");
+ if (!(post instanceof HBlogPost)) {
+ throw new IllegalArgumentException("Post must be obtained from this store service.");
+ }
+
+ return (HBlogPost) post;
+ }
+
+ HBlogComment castAndAssertBlogComment(ModifiableBlogComment comment) {
+ BasicTools.assertNotNull(comment, "Blog comment cannot be null.");
+ if (!(comment instanceof HBlogComment)) {
+ throw new IllegalArgumentException("Comment must be obtained from this store service.");
+ }
+
+ return (HBlogComment) comment;
+ }
+
+ /**
+ * @jmx.managed-operation
+ */
+ public List retrieveAllBlogs() {
+ List ids = sf.getCurrentSession().createQuery(
+ "select distinct model.blogName.id from HBlogModel as model")
+ .list();
+
+ List ret = new ArrayList();
+ for (Iterator iter = ids.iterator(); iter.hasNext();) {
+ ret.add(new BlogName((String) iter.next(), null));
+ }
+
+ return ret;
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.BlogName"
+ */
+ public List retrieveAllCategories(BlogName blogName) {
+ assertBlogNameNotNull(blogName);
+ return sf.getCurrentSession().createQuery(
+ "select model.blogName from HBlogModel as model " +
+ "where model.blogName.id = :id")
+ .setParameter("id", blogName.getId()).list();
+ }
+
+ private boolean blogExists(BlogName blogName) {
+ Long count = (Long) sf.getCurrentSession().createQuery(
+ "select count(*) from HBlogModel as model where " +
+ "model.blogName = :name")
+ .setParameter("name", blogName).setCacheable(true)
+ .uniqueResult();
+
+ return (count.longValue() > 0);
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.BlogName"
+ */
+ public boolean retrieveBlogModifiable(BlogName blogName) {
+ assertBlogNameNotNull(blogName);
+ return blogExists(blogName);
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.BlogName"
+ */
+ public ModifiableBlogModel retrieveBlogModel(BlogName blogName)
+ throws BlogModelDoesNotExistException {
+ assertBlogNameNotNull(blogName);
+
+ HBlogModel hbm = (HBlogModel) sf.getCurrentSession()
+ .createQuery("from HBlogModel as model where model.blogName = :name")
+ .setCacheable(true).setParameter("name", blogName).uniqueResult();
+
+ if (hbm == null) {
+ throw new BlogModelDoesNotExistException(blogName.toString());
+ }
+
+ hbm.setStoreService(this);
+
+ return hbm;
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.BlogName"
+ */
+ public ModifiableBlogModel newBlogModel(BlogName blogName) throws BlogModelAlreadyExistsException {
+ assertBlogNameNotNull(blogName);
+
+ HBlogModel hbm = (HBlogModel) sf.getCurrentSession()
+ .createQuery("from HBlogModel as model where model.blogName = :name")
+ .setParameter("name", blogName).uniqueResult();
+
+ if (hbm != null) {
+ // Blog model already exists.
+ throw new BlogModelAlreadyExistsException(blogName.toString());
+ }
+
+ hbm = new HBlogModel();
+ hbm.setBlogName(blogName);
+ hbm.setStoreService(this);
+
+ return hbm;
+ }
+
+ /**
+ * @jmx.managed-operation
+ */
+ public ModifiableBlogPost newBlogPost() {
+ HBlogPost post = new HBlogPost();
+ post.setModelPosts(new ArrayList());
+ post.setStoreService(this);
+
+ return post;
+ }
+
+ /**
+ * @jmx.managed-operation
+ */
+ public ModifiableBlogComment newBlogComment() {
+ return new HBlogComment();
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="java.lang.Object"
+ */
+ public BlogAuthor newBlogAuthor(Object request) {
+ BlogAuthor author = permissionsService.retrieveBlogAuthor(request);
+
+ if (!(author instanceof PortalUserBlogAuthor)) {
+ throw new IllegalArgumentException("Invalid author!");
+ }
+
+ Object jbp_id = ((PortalUserBlogAuthor) author).getUser().getId();
+ HPortalBlogAuthor hpba = (HPortalBlogAuthor) sf.getCurrentSession()
+ .createQuery("from HPortalBlogAuthor as author where author.jbp_id = :id")
+ .setParameter("id", jbp_id)
+ .uniqueResult();
+
+ if (hpba != null) {
+ // Blog author already exists.
+ return hpba;
+ }
+
+ // Creating new blog author.
+ hpba = new HPortalBlogAuthor();
+ hpba.setJbp_id((Long) jbp_id);
+ sf.getCurrentSession().save(hpba);
+
+ return hpba;
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogModel"
+ */
+ public void saveNewBlogModel(ModifiableBlogModel model) throws BlogModelAlreadyExistsException {
+ HBlogModel hmodel = castAndAssertBlogModel(model);
+ assertBlogNameNotNull(hmodel.getBlogName());
+
+ // TODO: checking if the blog already exist or not. Can it be done in a better way?
+ if (blogExists(hmodel.getBlogName())) {
+ throw new BlogModelAlreadyExistsException(hmodel.getBlogName().toString());
+ }
+
+ sf.getCurrentSession().save(model);
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogModel"
+ */
+ public void deleteBlogModel(ModifiableBlogModel model) {
+ HBlogModel hmodel = castAndAssertBlogModel(model);
+ if (hmodel.getId() == null) {
+ throw new IllegalArgumentException("Cannot delete a new model.");
+ }
+
+ // Deleting the model.
+ sf.getCurrentSession().delete(hmodel);
+
+ // Deleting all posts belonging only to this category.
+ // TODO This can be done more effectively with a query
+ for (Iterator iter = hmodel.getModelPosts().iterator(); iter.hasNext();) {
+ HBlogModelPost modelPost = (HBlogModelPost) iter.next();
+ HBlogPost post = modelPost.getPost();
+
+ // If the post belongs only to this model, delete it.
+ if ((post.getModelPosts().size() == 1) && (post.getId() != null)) {
+ sf.getCurrentSession().delete(modelPost);
+ sf.getCurrentSession().delete(post.getModelPosts().get(0));
+ sf.getCurrentSession().delete(post);
+ post.getModelPosts().clear();
+ }
+ }
+
+ hmodel.getModelPosts().clear();
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogPost"
+ */
+ public void deletePost(ModifiableBlogPost post) {
+ HBlogPost hpost = castAndAssertBlogPost(post);
+ if (hpost.getId() == null) {
+ throw new IllegalArgumentException("Cannot delete a new post.");
+ }
+
+ sf.getCurrentSession().createQuery("delete from HBlogModelPost as bmp " +
+ "where bmp.post = :post").setEntity("post", hpost).executeUpdate();
+ sf.getCurrentSession().delete(hpost);
+ }
+
+ /**
+ * @jmx.managed-operation
+ * @jmx.managed-parameter type="org.jboss.blog.service.store.model.ModifiableBlogComment"
+ */
+ public void deleteComment(ModifiableBlogComment comment) {
+ HBlogComment hcomment = castAndAssertBlogComment(comment);
+ if (hcomment.getId() == null) {
+ throw new IllegalArgumentException("Cannot delete a new comment.");
+ }
+
+ sf.getCurrentSession().delete(hcomment);
+ // TODO
+ sf.getCurrentSession().flush();
+ }
+
+ //
+
+ /**
+ * To the given blog model, adds the given post.
+ * @param model Model to which the post should be added.
+ * @param post Post to add.
+ */
+ void addPost(HBlogModel model, HBlogPost post) {
+ HBlogModel hmodel = castAndAssertBlogModel(model);
+ HBlogPost hpost = castAndAssertBlogPost(post);
+
+ // TODO Thread-unsafe checking
+ if ((hpost.getId() == null) ||
+ ((Long) sf.getCurrentSession().createQuery("select count(*) from " +
+ "HBlogModelPost as bmp where bmp.model = :model and bmp.post = :post")
+ .setEntity("model", hmodel).setEntity("post", hpost).uniqueResult()).longValue() == 0) {
+
+ HBlogModelPost hbmp = new HBlogModelPost(hmodel, hpost);
+ hmodel.getModelPosts().add(hbmp);
+ hpost.getModelPosts().add(hbmp);
+ sf.getCurrentSession().save(hbmp);
+ }
+ }
+
+ /**
+ * From the given blog model, removes the given post.
+ * @param model Model from which the post shold be removed.
+ * @param post Post to remove.
+ */
+ void removePost(HBlogModel model, HBlogPost post) {
+ HBlogModel hmodel = castAndAssertBlogModel(model);
+ HBlogPost hpost = castAndAssertBlogPost(post);
+
+ HBlogModelPost hbmp = (HBlogModelPost) sf.getCurrentSession().createQuery(
+ "from HBlogModelPost as bmp where bmp.model = :model " +
+ "and bmp.post = :post").setEntity("model", hmodel)
+ .setEntity("post", hpost).uniqueResult();
+
+ if (hbmp == null) {
+ // Nothing to delete.
+ return;
+ }
+
+ hmodel.getModelPosts().remove(hbmp);
+ hpost.getModelPosts().remove(hbmp);
+ sf.getCurrentSession().delete(hbmp);
+ }
+
+ /**
+ * To the given blog post, adds the given comment.
+ * @param post Post to which the comment should be added.
+ * @param comment Comment to add.
+ */
+ void addComment(HBlogPost post, HBlogComment comment) {
+ HBlogPost hpost = castAndAssertBlogPost(post);
+ HBlogComment hcomment = castAndAssertBlogComment(comment);
+
+ hcomment.setPost(hpost);
+
+ hpost.getComments().add(hcomment);
+ sf.getCurrentSession().saveOrUpdate(hcomment);
+ }
+
+ /**
+ * Gets posts for the given model which, when sorted, are between the given
+ * indexes in the list of all posts.
+ * @param model Model for which to get the posts.
+ * @param from Index from which to get the posts.
+ * @param to Index of post after the last post to get.
+ * @return A list of posts, which, when sorted, are between the given indexes
+ * in the list of all posts.
+ */
+ List getPosts(HBlogModel model, int from, int to) {
+ List posts = sf.getCurrentSession().createQuery(
+ "select bmp.post from HBlogModelPost bmp where bmp.model = :model " +
+ "order by bmp.post.created desc")
+ .setEntity("model", model).setFirstResult(from)
+ .setMaxResults(to-from).list();
+
+ for (Iterator iter = posts.iterator(); iter.hasNext();) {
+ ((HBlogPost) iter.next()).setStoreService(this);
+ }
+
+ return posts;
+ }
+
+ /**
+ * Gets a post with the specified title.
+ * @param model Model to which the post should belong.
+ * @param titleAsId Title converted to an id of the post.
+ * @return Post with the given title in the given model or null, if no such
+ * post exists.
+ */
+ HBlogPost getPostByTitleAsId(HBlogModel model, String titleAsId) {
+ HBlogPost ret = (HBlogPost) sf.getCurrentSession().createQuery(
+ "select bmp.post from HBlogModelPost bmp where bmp.model = :model " +
+ "and bmp.post.titleAsId = :titleAsId").setEntity("model", model)
+ .setParameter("titleAsId", titleAsId).uniqueResult();
+
+ ret.setStoreService(this);
+
+ return ret;
+ }
+
+ /**
+ * Gets a comment with the specified id.
+ * @param id Unique id of the comment to get.
+ * @return Comment with the given id.
+ * @throws BlogCommentDoesNotExistException If a comment with the given id does
+ * not exist.
+ */
+ HBlogComment getComment(Serializable id) throws BlogCommentDoesNotExistException {
+ HBlogComment ret = (HBlogComment) sf.getCurrentSession().get(HBlogComment.class, id);
+
+ if (ret == null) {
+ throw new BlogCommentDoesNotExistException(id.toString());
+ }
+
+ return ret;
+ }
+
+ //
+
+ private BlogPermissionsService permissionsService;
+
+ /**
+ * @jmx.managed-attribute
+ * @return Current permissions service.
+ */
+ public BlogPermissionsService getPermissionsService() {
+ return permissionsService;
+ }
+
+ /**
+ * @param permissionsService New permissions service to set.
+ * @jmx.managed-attribute
+ */
+ public void setPermissionsService(BlogPermissionsService permissionsService) {
+ this.permissionsService = permissionsService;
+ }
+}
Added: trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateSessionFilter.java
===================================================================
--- trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateSessionFilter.java (rev 0)
+++ trunk/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate/HibernateSessionFilter.java 2007-03-15 00:14:59 UTC (rev 73)
@@ -0,0 +1,57 @@
+package org.jboss.blog.service.store.hibernate;
+
+import org.apache.log4j.Logger;
+
+import javax.servlet.*;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.transaction.UserTransaction;
+import javax.transaction.SystemException;
+import java.io.IOException;
+
+/**
+ * A filter which surrounds all further processing with a hibernate session,
+ * so that later it can be easily obtained using
+ * {@link org.hibernate.SessionFactory#getCurrentSession()}. For use in
+ * servlet deployments.
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class HibernateSessionFilter implements Filter {
+ private final static Logger log = Logger.getLogger(HibernateSessionFilter.class);
+
+ public void init(FilterConfig filterConfig) throws ServletException {
+
+ }
+
+ public void doFilter(ServletRequest servletRequest,
+ ServletResponse servletResponse,
+ FilterChain filterChain) throws IOException, ServletException {
+ UserTransaction tx;
+ try {
+ InitialContext ctx = new InitialContext();
+ tx = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
+ } catch (NamingException e) {
+ throw new ServletException(e);
+ }
+
+ try {
+ tx.begin();
+
+ filterChain.doFilter(servletRequest, servletResponse);
+
+ tx.commit();
+ } catch (Throwable t) {
+ try {
+ tx.rollback();
+ } catch (SystemException e) {
+ log.error("Error rolling back transaction.", e);
+ }
+
+ log.error("Error executing logic", t);
+ }
+ }
+
+ public void destroy() {
+
+ }
+}
\ No newline at end of file
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/build.xml 2007-03-15 00:14:59 UTC (rev 73)
@@ -49,6 +49,7 @@
<target name="each-module">
<ant dir="blog-common" inheritrefs="true" target="${target.name}" />
<ant dir="blog-core" inheritrefs="true" target="${target.name}" />
+ <ant dir="blog-hibernate" inheritrefs="true" target="${target.name}" />
</target>
<!-- Main tasks -->
Modified: trunk/jbossblog.ipr
===================================================================
--- trunk/jbossblog.ipr 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/jbossblog.ipr 2007-03-15 00:14:59 UTC (rev 73)
@@ -295,6 +295,7 @@
<modules>
<module fileurl="file://$PROJECT_DIR$/blog-common/blog-common.iml" filepath="$PROJECT_DIR$/blog-common/blog-common.iml" />
<module fileurl="file://$PROJECT_DIR$/blog-core/blog-core.iml" filepath="$PROJECT_DIR$/blog-core/blog-core.iml" />
+ <module fileurl="file://$PROJECT_DIR$/blog-hibernate/blog-hibernate.iml" filepath="$PROJECT_DIR$/blog-hibernate/blog-hibernate.iml" />
<module fileurl="file://$PROJECT_DIR$/main.iml" filepath="$PROJECT_DIR$/main.iml" />
</modules>
</component>
Modified: trunk/jbossblog.iws
===================================================================
--- trunk/jbossblog.iws 2007-03-14 22:14:42 UTC (rev 72)
+++ trunk/jbossblog.iws 2007-03-15 00:14:59 UTC (rev 73)
@@ -17,10 +17,55 @@
</component>
<component name="ChangeListManager">
<list default="true" name="Default" comment="">
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFActionContext.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AuthorizationListener.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java/org" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java/org/jboss/blog" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java/org/jboss/blog/service" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.hbm.xml" afterPath="" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/build.xml" afterPath="$PROJECT_DIR$/build.xml" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/security/acl" afterPath="" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/build.xml" afterPath="$PROJECT_DIR$/blog-core/build.xml" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.hbm.xml" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.hbm.xml" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateSessionFilter.java" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/build.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-common/blog-common.iml" afterPath="$PROJECT_DIR$/blog-common/blog-common.iml" />
- <change type="MODIFICATION" beforePath="$PROJECT_DIR$/jbossblog.iws" afterPath="$PROJECT_DIR$/jbossblog.iws" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/blog-hibernate.iml" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HPortalBlogAuthor.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/security/acl/AclKernelFactory.xml" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-common/src/java/org/jboss/blog/service/AbstractBlogService.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/blog-core/blog-core.iml" afterPath="$PROJECT_DIR$/blog-core/blog-core.iml" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/portal" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.hbm.xml" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/test" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/portal/PortalBlogPermissionsService.java" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java/org/jboss/blog/service/store" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.hbm.xml" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/model" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java/org/jboss/blog/service/store/hibernate" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/jbossblog.ipr" afterPath="$PROJECT_DIR$/jbossblog.ipr" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/test/HibernateTest.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFUIContext.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/security" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogComment.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogPost.java" afterPath="" />
+ <change type="MODIFICATION" beforePath="$PROJECT_DIR$/jbossblog.iws" afterPath="$PROJECT_DIR$/jbossblog.iws" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/ACLTagHandler.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModel.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/model/PortalUserBlogAuthor.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HibernateBlogStoreService.java" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate" afterPath="" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFSecurityContext.java" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java" />
+ <change type="DELETED" beforePath="$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/store/hibernate/HBlogModelPost.java" afterPath="" />
+ <change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/blog-hibernate/src/java/org/jboss" />
</list>
</component>
<component name="ChangeListSynchronizer" />
@@ -146,14 +191,61 @@
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="build.xml" pinned="false" current="true" current-in-tab="true">
+ <entry file="file://$PROJECT_DIR$/blog-hibernate/build.xml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="25" column="44" selection-start="879" selection-end="879" vertical-scroll-proportion="0.45509708">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="build.xml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/build.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="54" column="40" selection-start="2854" selection-end="2854" vertical-scroll-proportion="0.30522564">
+ <state line="50" column="74" selection-start="2774" selection-end="2774" vertical-scroll-proportion="0.5813107">
<folding />
</state>
</provider>
</entry>
</file>
+ <file leaf-file-name="build.xml" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/blog-core/build.xml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="3" column="40" selection-start="113" selection-end="113" vertical-scroll-proportion="0.05461165">
+ <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="71" column="17" selection-start="2537" selection-end="2537" vertical-scroll-proportion="1.0012361">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="AclBlogPermissionsService.java" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="11" column="33" selection-start="502" selection-end="502" vertical-scroll-proportion="0.2039555">
+ <folding>
+ <element signature="imports" expanded="true" />
+ </folding>
+ </state>
+ </provider>
+ </entry>
+ </file>
+ <file leaf-file-name="JSFSecurityContext.java" pinned="false" current="false" current-in-tab="false">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFSecurityContext.java">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="9" column="54" selection-start="277" selection-end="277" vertical-scroll-proportion="0.12742719">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ </file>
</leaf>
</component>
<component name="FindManager">
@@ -527,7 +619,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId" value="blog-core" />
+ <option name="myItemId" value="blog-hibernate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
</PATH>
@@ -537,11 +629,11 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
- <option name="myItemId" value="blog-core" />
+ <option name="myItemId" value="blog-hibernate" />
<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="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-hibernate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -554,14 +646,6 @@
<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>
<PATH>
<PATH_ELEMENT>
@@ -576,22 +660,6 @@
<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" />
- <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>
<PATH>
<PATH_ELEMENT>
@@ -610,26 +678,6 @@
<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" />
- <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/ui" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -660,14 +708,6 @@
<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/tools" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -702,10 +742,6 @@
<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/test" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -783,7 +819,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/store" />
+ <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>
</PATH>
@@ -828,48 +864,10 @@
<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>
- </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="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/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" />
- <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" />
- <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/name" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -909,51 +907,13 @@
<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/model" />
+ <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>
- </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="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl" />
<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" />
- <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/configuration" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
@@ -961,40 +921,6 @@
<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" />
- <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>
- <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-common" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
@@ -1013,24 +939,6 @@
<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-common" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-common" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- <PATH_ELEMENT>
- <option name="myItemId" value="PsiDirectory:$PROJECT_DIR$/blog-common/src" />
- <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
- </PATH_ELEMENT>
- </PATH>
</subPane>
</component>
<component name="ProjectReloadState">
@@ -1078,11 +986,11 @@
<recent name="org.jboss.blog.service.configuration" />
</key>
<key name="MoveClassesOrPackagesDialog.RECENTS_KEY">
+ <recent name="org.jboss.blog.service.permissions.portal" />
+ <recent name="org.jboss.blog.service.permissions.model" />
+ <recent name="org.jboss.blog.service.permissions.acl" />
<recent name="org.jboss.blog.service" />
<recent name="org.jboss.blog.service.store" />
- <recent name="org.jboss.blog.service.permissions" />
- <recent name="org.jboss.blog.service.name" />
- <recent name="org.jboss.blog.service.model" />
</key>
</component>
<component name="RestoreUpdateTree" />
@@ -1325,77 +1233,105 @@
</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-common" />
+ <option name="myLastEditedConfigurable" value="blog-core" />
</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-common/src/java/org/jboss/blog/service/permissions/BlogPermissionsService.java">
+ <entry file="file://$PROJECT_DIR$/blog-common/build.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="9" column="17" selection-start="242" selection-end="242" vertical-scroll-proportion="0.16033255">
+ <state line="6" column="38" selection-start="259" selection-end="259" vertical-scroll-proportion="0.1092233">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/UITools.java">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/security/acl/AclKernelFactory.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="19" column="27" selection-start="632" selection-end="632" vertical-scroll-proportion="0.23159145">
+ <state line="24" column="45" selection-start="919" selection-end="919" vertical-scroll-proportion="0.44499382">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/FacesTools.java">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFUIContext.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="0" column="20" selection-start="20" selection-end="20" vertical-scroll-proportion="0.0">
+ <state line="7" column="13" selection-start="176" selection-end="176" vertical-scroll-proportion="0.12742719">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/tools/PortletTools.java">
+ <entry file="file://$PROJECT_DIR$/blog-common/src/java/org/jboss/blog/service/permissions/SecurityContext.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="7" column="13" selection-start="149" selection-end="149" vertical-scroll-proportion="0.12470309">
+ <state line="7" column="0" selection-start="152" selection-end="152" vertical-scroll-proportion="0.12742719">
<folding />
</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/permissions/acl/JSFSecurityContext.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="21" column="38" selection-start="750" selection-end="750" vertical-scroll-proportion="0.37410927">
+ <state line="9" column="54" selection-start="277" selection-end="277" vertical-scroll-proportion="0.12742719">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/blog-common/build.xml">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/AclBlogPermissionsService.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="27" column="61" selection-start="812" selection-end="812" vertical-scroll-proportion="0.48099762">
+ <state line="11" column="33" selection-start="502" selection-end="502" vertical-scroll-proportion="0.2039555">
+ <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">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="60" column="38" selection-start="1642" selection-end="1642" vertical-scroll-proportion="0.184178">
<folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/blog-common/src/java/org/jboss/blog/rome/CommentRssModule.java">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JSFActionContext.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="8" column="17" selection-start="185" selection-end="185" vertical-scroll-proportion="0.14251782">
- <folding>
- <element signature="imports" expanded="true" />
- </folding>
+ <state line="9" column="13" selection-start="210" selection-end="210" vertical-scroll-proportion="0.12742719">
+ <folding />
</state>
</provider>
</entry>
- <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/AbstractBlogService.java">
+ <entry file="file://$PROJECT_DIR$/blog-core/src/java/org/jboss/blog/service/permissions/acl/JBossPortalUtil.java">
<provider selected="true" editor-type-id="text-editor">
- <state line="7" column="22" selection-start="149" selection-end="149" vertical-scroll-proportion="0.12470309">
+ <state line="34" column="86" selection-start="990" selection-end="990" vertical-scroll-proportion="0.36407766">
<folding />
</state>
</provider>
</entry>
+ <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="71" column="17" selection-start="2537" selection-end="2537" vertical-scroll-proportion="1.0012361">
+ <folding />
+ </state>
+ </provider>
+ </entry>
+ <entry file="file://$PROJECT_DIR$/blog-core/build.xml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="3" column="40" selection-start="113" selection-end="113" vertical-scroll-proportion="0.05461165">
+ <folding />
+ </state>
+ </provider>
+ </entry>
<entry file="file://$PROJECT_DIR$/build.xml">
<provider selected="true" editor-type-id="text-editor">
- <state line="54" column="40" selection-start="2854" selection-end="2854" vertical-scroll-proportion="0.30522564">
+ <state line="50" column="74" selection-start="2774" selection-end="2774" vertical-scroll-proportion="0.5813107">
<folding />
</state>
</provider>
</entry>
+ <entry file="file://$PROJECT_DIR$/blog-hibernate/build.xml">
+ <provider selected="true" editor-type-id="text-editor">
+ <state line="25" column="44" selection-start="879" selection-end="879" vertical-scroll-proportion="0.45509708">
+ <folding />
+ </state>
+ </provider>
+ </entry>
</component>
</project>
More information about the jboss-cvs-commits
mailing list