Since there is not that much documentation out there concerning integrating
the latest and greatest afore-mentioned releases I will try to aggregate the
steps I took here for future reference.


Q: Why Tapestry 5.2-SNAPSHOT vs 5.1.05 release?
A: Most jobs I do require role based security(TSS) and login persistence
(Hibernate). Tapestry provides session management through tapestry-hibernate
but through reading various forums it seems that persisting properties with
hibernate through Tapestry can break Hibernate sessions, requiring 
http://wiki.apache.org/tapestry/FrequentlyAskedQuestions/SpringHibernate
datasqueezers  to maintain session parity. As a new Tapestry user (as well
as being new to Java) this seemed somewhat daunting. Tapestry 5.2 might just
have the answer to this issue using 
http://tapestry.apache.org/tapestry5.2-dev/tapestry-hibernate/userguide.html
@SessionState . Great! but this necessitates upgrading tapestry-security as
well. TSS 2.1.1-SNAPSHOT is not compatible with Tapestry 5.2. Upgrading TSS
requires Hibernate 3.5.2, so on and so forth :)

The following steps are based upon using this software:
Eclipse 3.5
   Maven2Eclipse
   Suberversive
bash terminal:
   mvn

1. build a 5.2.0-SNAPSHOT archtype: I did this to capture any pom changes
from my earlier 5.1 build. here is the command I used in the terminal mvn
archetype:generate -DarchetypeCatalog=http://tapestry.apache.org
2. get tapestry-security 3.0.0: currently this snapshot is not available
through maven but there is a reference to a svn repo that contained the
required code. Using subversive, checkout the project to your local machine
(http://www.localhost.nu/svn/public/tapestry-spring-security/trunk). I found
I needed to make a few changes to compile/install this package.
  a.  I added reference to commons-logging in the
tapestry-spring-security/pom.xml
        <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
                <type>jar</type>
                <scope>compile</scope>
        </dependency>
   b. I had to remove a reference to @Override in package package 
nu.localhost.tapestry5.springsecurity.services.internal; at row 118.

   Without these changes I got runtime errors in Jetty.
3. Install the tapestry-security package in maven: In Eclipse right click on
the tapestry-security project and click Run As->Maven install to build the
package to your local .m2 repo. 
4. Add the tapestry-security dependency to your tapestry 5.2 project. Here
is my reference in the POM 
                <dependency>
                        <groupId>nu.localhost.tapestry</groupId>
                        <artifactId>tapestry-spring-security</artifactId>
                        <version>3.0.0-SNAPSHOT</version>
                        <type>jar</type>
                        <scope>compile</scope>
                </dependency>
5. If you have an existing Tapestry 5.1 project based upon tapestry-security
2.+ using these config
http://www.localhost.nu/java/tapestry-spring-security/conf.html examples 
you will need to update your imports, Spring 3 re-factored a few packages
from 2 which is used in TSS 2.0/2.1 . Here are a few examples, I used
Eclipse to resolve the new locations:
-import org.springframework.security.providers.AuthenticationProvider;
-import org.springframework.security.providers.dao.SaltSource;
-import org.springframework.security.providers.encoding.PasswordEncoder;
-import org.springframework.security.providers.encoding.ShaPasswordEncoder;
+import org.springframework.security.authentication.AuthenticationProvider;
+import org.springframework.security.authentication.dao.SaltSource;
+import
org.springframework.security.authentication.encoding.PasswordEncoder;
+import
org.springframework.security.authentication.encoding.ShaPasswordEncoder;

6. Add Hibernate: Hibernate 3.5.2 is required (by Spring 3 I think) but is
not in the main mvn repository. I had to add the following repository to my
Tapestry 5.2 pom.xml:
                 <repository>
                        <id>jboss-public-repository-group</id>
                        <name>JBoss Public Repository Group</name>
                        
<url>http://repository.jboss.org/nexus/content/groups/public</url>
                </repository>
to to resolve this dependency:
                 <dependency>
                        <groupId>org.hibernate</groupId>
                        <artifactId>hibernate</artifactId>
                        <version>3.5.2-Final</version>
                        <type>pom</type>
                </dependency>
7. Cross your fingers and compile, it should work.

Note: you might need to make the change referenced 
http://www.mail-archive.com/users@tapestry.apache.org/msg44449.html here .

If I have missed anything please add a response to clarify, these steps will
most likely change as these packages move from snapshots to releases.

I wouldn't have been able to do with this without the helpful references
below. Thanks Jim!

References:
http://www.localhost.nu/java/tapestry-spring-security/conf.html
http://stackoverflow.com/questions/2999077/how-to-compile-hibernate-project-with-maven
http://www.mail-archive.com/users@tapestry.apache.org/msg44346.html
http://tapestry.apache.org/tapestry5.2-dev/tapestry-hibernate/userguide.html
http://wiki.apache.org/tapestry/FrequentlyAskedQuestions/SpringHibernate
-- 
View this message in context: 
http://old.nabble.com/Tapestry-5.2-%2B-TSS-3.0.0-%2B-Hibernate-3.5.2-QuickGuide-tp29008491p29008491.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to