You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/02/08 22:28:38 UTC

svn commit: r742172 [1/7] - in /portals/jetspeed-2/portal/branches/JPA_BRANCH: ./ components/jetspeed-page-manager/ components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/ components/jetspeed-profiler/ components/jetspeed-profiler/...

Author: rwatler
Date: Sun Feb  8 21:28:35 2009
New Revision: 742172

URL: http://svn.apache.org/viewvc?rev=742172&view=rev
Log:
JPA/OpenJPA Implementation of Security Component Persistence
------------------------------------------------------------
- add support for JPA/OpenJPA persistence using same approaches used with other component projects
- upgrade to Spring Framework 2.5.3 to correct bean cyclic reference bug with transactional proxy injection
- abstract various permissions and principal managers classes to aggregate adn reuse common persistence layer code between OJB and JPA impls
- construct portal roles for subject population in default and JBoss login modules using role manager to insulate it from OJB and JPA impls
- update security schema by adding conventional JPA_VERSION fields to tables
- fix minor bugs in other JPA component impls


Added:
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractGroupManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractPermissionManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractRoleManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractTransientJetspeedPrincipal.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractUserManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/SecurityAttributeValueImpl.java
      - copied, changed from r736476, portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/SecurityAttributeValue.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/GroupImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/GroupManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/PermissionManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/PersistentJetspeedPrincipal.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/RoleImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/RoleManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/SecurityAttributeValueCollection.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/SecurityAttributeValueImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/SecurityDomainImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/UserImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/jpa/UserManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/AbstractUserPasswordCredentialManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/AbstractUserPasswordCredentialPolicyManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/JetspeedPrincipalAssociation.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/JetspeedPrincipalPermission.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/JetspeedSecurityPersistenceManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/OpenJPAJetspeedSecurityPersistenceManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/PasswordCredentialImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/PersistentJetspeedPermissionImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/SecurityManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/SecurityManagerContext.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/UserPasswordCredentialManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/jpa/UserPasswordCredentialPolicyManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/resources/
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/resources/META-INF/
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/resources/META-INF/persistence.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPAGroupManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPALoginModule.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPAPermissionManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPARdbmsPolicy.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPARdbmsPolicyFolder.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPARoleManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestOpenJPAUserManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/resources/jndi.properties
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/resources/jpa-security.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/resources/log4j.properties
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/resources/openjpa-security.xml
Removed:
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/SecurityAttributeValue.java
Modified:
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/pom.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/OpenJPADatabasePageManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/pom.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/src/main/java/org/apache/jetspeed/profiler/rules/jpa/RuleCriterionList.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceEnabledSpringTestCase.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/pom.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/jpa/PortletPreferencesProviderImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/pom.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/JETSPEED-INF/ojb/security_repository.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/GroupManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/LoginModuleProxyImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/PermissionManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/PersistentJetspeedPrincipal.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/RoleManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/SecurityAttributesImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/TransientJetspeedPrincipal.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/UserManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/ext/JBossLoginModule.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/JetspeedPermissionAccessManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/BaseJetspeedPermission.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/FolderPermission.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/FragmentPermission.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedPermissionFactory.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/JetspeedSecurityPersistenceManager.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/PagePermission.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/PortletPermission.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/UserPasswordCredentialManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/UserPasswordCredentialPolicyManagerImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/spi/impl/UserSubjectPrincipalsResolverImpl.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/AbstractSecurityTestcase.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/test/java/org/apache/jetspeed/security/TestRdbmsPolicyFolder.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/jetspeed-api/src/main/java/org/apache/jetspeed/security/LoginModuleProxy.java
    portals/jetspeed-2/portal/branches/JPA_BRANCH/jetspeed-portal-resources/src/main/ddl-schema/security-schema.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/jetspeed-portal-resources/src/main/resources/assembly/security-atn.xml
    portals/jetspeed-2/portal/branches/JPA_BRANCH/jetspeed-portal-resources/src/main/resources/ddl/mssql/create-schema.sql
    portals/jetspeed-2/portal/branches/JPA_BRANCH/pom.xml

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/pom.xml?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/pom.xml (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/pom.xml Sun Feb  8 21:28:35 2009
@@ -197,7 +197,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.om.page.jpa</id>
@@ -217,7 +217,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.page.document.jpa</id>
@@ -237,7 +237,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.page.jpa</id>
@@ -257,7 +257,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/OpenJPADatabasePageManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/OpenJPADatabasePageManagerImpl.java?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/OpenJPADatabasePageManagerImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-page-manager/src/main/java/org/apache/jetspeed/page/jpa/OpenJPADatabasePageManagerImpl.java Sun Feb  8 21:28:35 2009
@@ -117,6 +117,10 @@
         {
             openJPAEventManager.removeListener(listener);
         }
+        // terminate access to OpenJPA components
+        openJPAEventManager = null;
+        openJPASystemDataCache = null;
+        listener = null;
     }    
 
     // Implementation

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/pom.xml?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/pom.xml (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/pom.xml Sun Feb  8 21:28:35 2009
@@ -163,7 +163,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.profiler.jpa</id>
@@ -183,7 +183,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/src/main/java/org/apache/jetspeed/profiler/rules/jpa/RuleCriterionList.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/src/main/java/org/apache/jetspeed/profiler/rules/jpa/RuleCriterionList.java?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/src/main/java/org/apache/jetspeed/profiler/rules/jpa/RuleCriterionList.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-profiler/src/main/java/org/apache/jetspeed/profiler/rules/jpa/RuleCriterionList.java Sun Feb  8 21:28:35 2009
@@ -32,6 +32,12 @@
     private AbstractProfilingRule profilingRule;
     private List<RuleCriterion> criterionList;
 
+    /**
+     * Construct list to maintain JPA inverse relationship.
+     *
+     * @param profilingRule owning profile rule.
+     * @param criterionList managed criterion list.
+     */
     RuleCriterionList(AbstractProfilingRule profilingRule, List<RuleCriterion> criterionList)
     {
         super();

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceEnabledSpringTestCase.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceEnabledSpringTestCase.java?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceEnabledSpringTestCase.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-rdbms/src/main/java/org/apache/jetspeed/components/util/DatasourceEnabledSpringTestCase.java Sun Feb  8 21:28:35 2009
@@ -67,7 +67,7 @@
         {
             super.tearDown();
         }
-        catch (Exception e)
+        finally
         {
             try
             {
@@ -76,8 +76,7 @@
             catch (Exception ignore)
             {                
             }
-            throw e;
-        }        
+        }
     }
 
     protected String[] getBootConfigurations()

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/pom.xml?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/pom.xml (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/pom.xml Sun Feb  8 21:28:35 2009
@@ -189,7 +189,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.components.portletentity.jpa</id>
@@ -209,7 +209,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.components.portletpreferences.jpa</id>
@@ -229,7 +229,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                     <execution>
                         <id>org.apache.jetspeed.components.portletregistry.jpa</id>
@@ -249,7 +249,7 @@
                                     <value>true</value>
                                 </property>
                             </toolProperties>
-                        </configuration>                  
+                        </configuration>
                     </execution>
                 </executions>
             </plugin>

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/jpa/PortletPreferencesProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/jpa/PortletPreferencesProviderImpl.java?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/jpa/PortletPreferencesProviderImpl.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/jpa/PortletPreferencesProviderImpl.java Sun Feb  8 21:28:35 2009
@@ -252,7 +252,7 @@
         String portletName = pd.getPortletName();
         // perform delete
         EntityManager entityManager = getEntityManager();
-        Query portletPreferencesDelete = entityManager.createNamedQuery("DELETE_PORTLET_APPLICATION_PREFERENCES");
+        Query portletPreferencesDelete = entityManager.createNamedQuery("DELETE_PORTLET_PREFERENCES");
         portletPreferencesDelete.setParameter("dtype", DISCRIMINATOR_PORTLET);
         portletPreferencesDelete.setParameter("applicationName", applicationName);
         portletPreferencesDelete.setParameter("portletName", portletName);

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/pom.xml?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/pom.xml (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/pom.xml Sun Feb  8 21:28:35 2009
@@ -167,6 +167,52 @@
                     </execution>
                 </executions>
             </plugin>
+ 	        <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>openjpa-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>org.apache.jetspeed.security.spi.jpa</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>enhance</goal>
+                        </goals>
+                        <configuration>
+                            <classes>${project.build.directory}/classes/org/apache/jetspeed/security/spi/jpa</classes>
+                            <toolProperties>                      	 
+                                <property>
+                                    <name>addDefaultConstructor</name>
+                                    <value>true</value>
+                                </property>
+                                <property>
+                                    <name>enforcePropertyRestrictions</name>
+                                    <value>true</value>
+                                </property>
+                            </toolProperties>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>org.apache.jetspeed.security.jpa</id>
+                        <phase>process-classes</phase>
+                        <goals>
+                            <goal>enhance</goal>
+                        </goals>
+                        <configuration>
+                            <classes>${project.build.directory}/classes/org/apache/jetspeed/security/jpa</classes>
+                            <toolProperties>                      	 
+                                <property>
+                                    <name>addDefaultConstructor</name>
+                                    <value>true</value>
+                                </property>
+                                <property>
+                                    <name>enforcePropertyRestrictions</name>
+                                    <value>true</value>
+                                </property>
+                            </toolProperties>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
         <testResources>
             <testResource>

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/JETSPEED-INF/ojb/security_repository.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/JETSPEED-INF/ojb/security_repository.xml?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/JETSPEED-INF/ojb/security_repository.xml (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/JETSPEED-INF/ojb/security_repository.xml Sun Feb  8 21:28:35 2009
@@ -296,7 +296,7 @@
           column="domain_id"/>
       <collection-descriptor
           name="attributes"
-          element-class-ref="org.apache.jetspeed.security.impl.SecurityAttributeValue"
+          element-class-ref="org.apache.jetspeed.security.impl.SecurityAttributeValueImpl"
           auto-retrieve="true"
           auto-update="true"
           auto-delete="none"
@@ -336,7 +336,7 @@
    - S E C U R I T Y   A T T R I B U T E S
    -->
   <class-descriptor
-      class="org.apache.jetspeed.security.impl.SecurityAttributeValue"
+      class="org.apache.jetspeed.security.impl.SecurityAttributeValueImpl"
       table="SECURITY_ATTRIBUTE"
   >
       <documentation>Represents a Security Principal Attribute definition.</documentation>

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractGroupManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractGroupManagerImpl.java?rev=742172&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractGroupManagerImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractGroupManagerImpl.java Sun Feb  8 21:28:35 2009
@@ -0,0 +1,278 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.security.impl;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.security.Group;
+import org.apache.jetspeed.security.GroupManager;
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.JetspeedPrincipalAssociationType;
+import org.apache.jetspeed.security.JetspeedPrincipalType;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.User;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.jetspeed.security.spi.JetspeedPrincipalAccessManager;
+import org.apache.jetspeed.security.spi.JetspeedPrincipalStorageManager;
+
+/**
+ * <p>
+ * Implements the service interface for managing Jetsped Security Groups.
+ * </p>
+ * <p>
+ * Group hierarchy elements are being returned as a {@link Group}collection.
+ * The backing implementation must appropriately map the group hierarchy to a
+ * preferences sub-tree.
+ * </p>
+ * <p>
+ * The convention {principal}.{subprincipal} has been chosen to name groups hierarchies. 
+ * </p>
+ * <p>Modified 2008-08-05 - DST - decoupled java preferences</p> 
+ * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @version $Id: GroupManagerImpl.java 702099 2008-10-06 11:13:38Z ate $
+ */
+public abstract class AbstractGroupManagerImpl extends BaseJetspeedPrincipalManager implements GroupManager
+{
+    private static final long serialVersionUID = 8602530495755862863L;
+
+    /** The logger. */
+    private static final Log log = LogFactory.getLog(AbstractGroupManagerImpl.class);
+
+    protected JetspeedPrincipalType userType;
+    protected JetspeedPrincipalType roleType;
+    protected UserManager userManager;
+    
+    protected AbstractGroupManagerImpl(JetspeedPrincipalType principalType, JetspeedPrincipalType userType, JetspeedPrincipalType roleType, 
+                                       JetspeedPrincipalAccessManager jpam, JetspeedPrincipalStorageManager jpsm)
+    {
+        super(principalType, jpam, jpsm);
+        this.userType = userType;
+        this.roleType = roleType;
+    }
+    
+    private void checkInitialized()
+    {    	
+    	if (userManager == null)
+    	{
+        	userManager = (UserManager)getPrincipalManagerProvider().getManager(userType);
+    	}
+    }      
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.GroupManager#newTransientGroup(java.lang.String)
+     */
+    public Group newTransientGroup(String name)
+    {
+        TransientGroup group = new TransientGroup(name);
+        return group;
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#addGroup(java.lang.String)
+     */
+    public Group addGroup(String groupName) throws SecurityException
+    {
+        return addGroup(groupName, true);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#addGroup(java.lang.String, boolean)
+     */
+    public Group addGroup(String groupName, boolean mapped) throws SecurityException
+    {
+        Group group = newGroup(groupName, mapped);
+        
+        super.addPrincipal(group, null);
+            
+        if (log.isDebugEnabled())
+            log.debug("Added group: " + groupName);
+        
+        return group;
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#removeGroup(java.lang.String)
+     */
+    public void removeGroup(String groupName) throws SecurityException
+    {
+       super.removePrincipal(groupName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#groupExists(java.lang.String)
+     */
+    public boolean groupExists(String groupName)
+    {
+        return super.principalExists(groupName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#getGroup(java.lang.String)
+     */
+    public Group getGroup(String groupName) throws SecurityException
+    {
+        Group group = (Group) super.getPrincipal(groupName);
+        
+        if (null == group) 
+        { 
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.GROUP, groupName));
+        }
+
+        return group;
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#getGroupsForUser(java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Group> getGroupsForUser(String username)
+            throws SecurityException
+    {
+        return (List<Group>) super.getAssociatedFrom(username, userType, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#getGroupsInRole(java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Group> getGroupsInRole(String roleName)
+            throws SecurityException
+    {
+        return (List<Group>) super.getAssociatedTo(roleName, roleType, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#addUserToGroup(java.lang.String,
+     *      java.lang.String)
+     */
+    public void addUserToGroup(String username, String groupName)
+            throws SecurityException
+    {
+       	checkInitialized();
+       	User user = userManager.getUser(username);
+        if (user == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.USER, username));
+        }
+        Group group = getGroup(groupName);
+        if (group == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.GROUP, groupName));
+        }
+        super.addAssociation(user, group, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#removeUserFromGroup(java.lang.String,
+     *      java.lang.String)
+     */
+    public void removeUserFromGroup(String username, String groupName)
+            throws SecurityException
+    {
+    	checkInitialized();
+        User user = userManager.getUser(username);
+        if (user == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.USER, username));
+        }
+        Group group = getGroup(groupName);
+        if (group == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.GROUP, groupName));
+        }
+        super.removeAssociation(user, group, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#isUserInGroup(java.lang.String,
+     *      java.lang.String)
+     */
+    public boolean isUserInGroup(String username, String groupName)
+            throws SecurityException
+    {
+        return getAssociatedNamesFrom(username, userType, JetspeedPrincipalAssociationType.IS_MEMBER_OF).contains(groupName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#getGroups(java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Group> getGroups(String nameFilter) throws SecurityException
+    {
+        return (List<Group>) super.getPrincipals(nameFilter);
+    }
+    
+    public List<String> getGroupNames(String nameFilter) throws SecurityException
+    {
+        return getPrincipalNames(nameFilter);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.GroupManager#updateGroup(org.apache.jetspeed.security.Group)
+     */
+    public void updateGroup(Group group) throws SecurityException
+    {
+        super.updatePrincipal(group);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.GroupManager#addGroupToGroup(org.apache.jetspeed.security.Group, org.apache.jetspeed.security.Group, java.lang.String)
+     */
+    public void addGroupToGroup(Group from, Group to, String associationName) throws SecurityException
+    {
+        this.addAssociation(from, to, associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.GroupManager#removeGroupFromGroup(org.apache.jetspeed.security.Group, org.apache.jetspeed.security.Group, java.lang.String)
+     */
+    public void removeGroupFromGroup(Group from, Group to, String associationName) throws SecurityException
+    {
+        removeAssociation(from, to, associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.GroupManager#getGroupsAssociatedFrom(org.apache.jetspeed.security.Group, java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Group> getGroupsAssociatedFrom(Group from, String associationName)
+    {
+        return (List<Group>)getAssociatedFrom(from.getName(), from.getType(), associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.GroupManager#getGroupsAssociatedTo(org.apache.jetspeed.security.Group, java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Group> getGroupsAssociatedTo(Group to, String associationName)
+    {
+        return (List<Group>)getAssociatedFrom(to.getName(), to.getType(), associationName);
+    }
+    
+    public JetspeedPrincipal newPrincipal(String name, boolean mapped)
+    {
+        return newGroup(name, mapped);
+    }
+
+    public JetspeedPrincipal newTransientPrincipal(String name)
+    {
+        return newTransientGroup(name);
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractPermissionManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractPermissionManagerImpl.java?rev=742172&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractPermissionManagerImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractPermissionManagerImpl.java Sun Feb  8 21:28:35 2009
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.security.impl;
+
+import java.security.Permissions;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.jetspeed.JetspeedActions;
+import org.apache.jetspeed.security.JetspeedPermission;
+import org.apache.jetspeed.security.PermissionManager;
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.spi.JetspeedPermissionAccessManager;
+import org.apache.jetspeed.security.spi.JetspeedPermissionStorageManager;
+import org.apache.jetspeed.security.spi.PersistentJetspeedPermission;
+import org.apache.jetspeed.security.spi.impl.BaseJetspeedPermission;
+import org.apache.jetspeed.security.spi.impl.JetspeedPermissionFactory;
+
+/**
+ * @version $Id: PermissionManagerImpl.java 700986 2008-10-02 02:00:17Z ate $
+ *
+ */
+public abstract class AbstractPermissionManagerImpl implements PermissionManager
+{
+    protected HashMap<String, JetspeedPermissionFactory> factoryMap = new HashMap<String, JetspeedPermissionFactory>();
+    protected JetspeedPermissionAccessManager jpam;
+    protected JetspeedPermissionStorageManager jpsm;
+
+    private static ThreadLocal<HashMap<Long,Permissions>> permissionsCache = new ThreadLocal<HashMap<Long,Permissions>>();
+    
+    protected AbstractPermissionManagerImpl(List<JetspeedPermissionFactory> factories, JetspeedPermissionAccessManager jpam, JetspeedPermissionStorageManager jpsm)
+    {
+        for (JetspeedPermissionFactory pf : factories)
+        {
+            factoryMap.put(pf.getType(), pf);
+        }
+        this.jpam = jpam;
+        this.jpsm = jpsm;
+    }
+    
+    protected HashMap<Long,Permissions> getPermissionsMap()
+    {
+        HashMap<Long,Permissions> map = permissionsCache.get();
+        if (map == null)
+        {
+            map = new HashMap<Long,Permissions>();
+            permissionsCache.set(map);
+        }
+        return map;
+    }
+    
+    protected PersistentJetspeedPermission getPersistentJetspeedPermission(JetspeedPermission permission)
+    {
+        if (permission instanceof PersistentJetspeedPermission)
+        {
+            return (PersistentJetspeedPermission)permission;
+        }
+        else
+        {
+            return ((BaseJetspeedPermission)permission).getPermission();
+        }
+    }
+    
+    public int parseActions(String actions)
+    {
+        return JetspeedActions.getContainerActionsMask(actions);
+    }
+    
+    @SuppressWarnings("unchecked") 
+    public List<JetspeedPermission> getPermissions()
+    {
+        return (List<JetspeedPermission>)jpam.getPermissions();
+    }
+
+    @SuppressWarnings("unchecked") 
+    public List<JetspeedPermission> getPermissions(String typeName)
+    {
+        return (List<JetspeedPermission>)jpam.getPermissions(typeName);
+    }
+
+    @SuppressWarnings("unchecked") 
+    public List<JetspeedPermission> getPermissions(String typeName, String nameFilter)
+    {
+        return (List<JetspeedPermission>)jpam.getPermissions(typeName, nameFilter);
+    }
+
+    public List<JetspeedPrincipal> getPrincipals(JetspeedPermission permission)
+    {
+        return jpam.getPrincipals(getPersistentJetspeedPermission(permission), null);
+    }
+
+    public List<JetspeedPrincipal> getPrincipals(JetspeedPermission permission, String principalType)
+    {
+        return jpam.getPrincipals(getPersistentJetspeedPermission(permission), principalType);
+    }
+
+    public boolean permissionExists(JetspeedPermission permission)
+    {
+        return jpam.permissionExists(permission);
+    }
+
+    public void addPermission(JetspeedPermission permission) throws SecurityException
+    {
+        jpsm.addPermission(getPersistentJetspeedPermission(permission));
+    }
+
+    public void updatePermission(JetspeedPermission permission) throws SecurityException
+    {
+        jpsm.updatePermission(getPersistentJetspeedPermission(permission));
+        permissionsCache.remove();
+    }
+
+    public void removePermission(JetspeedPermission permission) throws SecurityException
+    {
+        jpsm.removePermission(getPersistentJetspeedPermission(permission));
+        permissionsCache.remove();
+    }
+
+    public void grantPermission(JetspeedPermission permission, JetspeedPrincipal principal) throws SecurityException
+    {
+        jpsm.grantPermission(getPersistentJetspeedPermission(permission), principal);
+        permissionsCache.remove();
+    }
+
+    public void grantPermissionOnlyTo(JetspeedPermission permission, List<JetspeedPrincipal> principals) throws SecurityException
+    {
+        jpsm.grantPermissionOnlyTo(getPersistentJetspeedPermission(permission), null, principals);
+        permissionsCache.remove();
+    }
+
+    public void grantPermissionOnlyTo(JetspeedPermission permission, String principalType, List<JetspeedPrincipal> principals) throws SecurityException
+    {
+        jpsm.grantPermissionOnlyTo(getPersistentJetspeedPermission(permission), principalType, principals);
+        permissionsCache.remove();
+    }
+
+    public void revokePermission(JetspeedPermission permission, JetspeedPrincipal principal) throws SecurityException
+    {
+        jpsm.revokePermission(getPersistentJetspeedPermission(permission), principal);
+        permissionsCache.remove();
+    }
+
+    public void revokeAllPermissions(JetspeedPrincipal principal) throws SecurityException
+    {
+        jpsm.revokeAllPermissions(principal);
+        permissionsCache.remove();
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractRoleManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractRoleManagerImpl.java?rev=742172&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractRoleManagerImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractRoleManagerImpl.java Sun Feb  8 21:28:35 2009
@@ -0,0 +1,337 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.security.impl;
+
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.security.Group;
+import org.apache.jetspeed.security.GroupManager;
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.JetspeedPrincipalAssociationType;
+import org.apache.jetspeed.security.JetspeedPrincipalType;
+import org.apache.jetspeed.security.Role;
+import org.apache.jetspeed.security.RoleManager;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.User;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.jetspeed.security.spi.JetspeedPrincipalAccessManager;
+import org.apache.jetspeed.security.spi.JetspeedPrincipalStorageManager;
+
+/**
+ * <p>
+ * Implementation for managing roles.
+ * </p>
+ * <p>
+ * Role hierarchy elements are being returned as a {@link Role}collection. The
+ * backing implementation must appropriately map the role hierarchy to a
+ * preferences sub-tree.
+ * </p>
+ * <p>
+ * The convention {principal}.{subprincipal} has been chosen to name roles
+ * hierachies in order to support declarative security. Implementation follow
+ * the conventions enforced by the {@link Preferences}API.
+ * </p>
+ * 
+ * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
+ * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
+ * @version $Id: RoleManagerImpl.java 702099 2008-10-06 11:13:38Z ate $
+ */
+public abstract class AbstractRoleManagerImpl extends BaseJetspeedPrincipalManager implements RoleManager
+{
+    private static final long serialVersionUID = 3461703672327948090L;
+
+    /** The logger. */
+    private static final Log log = LogFactory.getLog(AbstractRoleManagerImpl.class);
+    
+    protected JetspeedPrincipalType userType;
+    protected JetspeedPrincipalType groupType;
+    protected UserManager userManager;
+    protected GroupManager groupManager;
+    
+    protected AbstractRoleManagerImpl(JetspeedPrincipalType principalType, JetspeedPrincipalType userType, JetspeedPrincipalType groupType,
+                                      JetspeedPrincipalAccessManager jpam, JetspeedPrincipalStorageManager jpsm)
+    {
+        super(principalType, jpam, jpsm);
+        this.userType = userType;
+        this.groupType = groupType;
+    }
+    
+    private void checkInitialized()
+    {    	
+    	if (userManager == null)
+    	{
+    		userManager = (UserManager)getPrincipalManagerProvider().getManager(userType);
+    	}
+    	if (groupManager == null)
+    	{
+    		groupManager = (GroupManager)getPrincipalManagerProvider().getManager(groupType);
+    	}
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.RoleManager#newTransientRole(java.lang.String)
+     */
+    public Role newTransientRole(String name)
+    {
+        TransientRole role = new TransientRole(name);
+        return role;
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#addRole(java.lang.String)
+     */
+    public Role addRole(String roleName) throws SecurityException
+    {
+        return addRole(roleName, true);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#addRole(java.lang.String, boolean)
+     */
+    public Role addRole(String roleName, boolean mapped) throws SecurityException
+    {
+        Role role = newRole(roleName, mapped);
+
+        super.addPrincipal(role, null);        
+        
+        if (log.isDebugEnabled())
+            log.debug("Added role: " + roleName);
+        
+        return role;
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#removeRole(java.lang.String)
+     */
+    public void removeRole(String roleName) throws SecurityException
+    {
+        super.removePrincipal(roleName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#roleExists(java.lang.String)
+     */
+    public boolean roleExists(String roleName)
+    {
+        return super.principalExists(roleName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#getRole(java.lang.String)
+     */
+    public Role getRole(String roleName) throws SecurityException
+    {
+        Role role = (Role) super.getPrincipal(roleName);
+        
+        if (null == role) 
+        { 
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.ROLE, roleName)); 
+        }
+
+        return role;
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#getRolesForUser(java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Role> getRolesForUser(String username) throws SecurityException
+    {        
+        return (List<Role>)super.getAssociatedFrom(username, userType, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#getRolesInGroup(java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Role> getRolesInGroup(String groupName) throws SecurityException
+    {
+        return (List<Role>)super.getAssociatedFrom(groupName, groupType, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#addRoleToUser(java.lang.String,
+     *      java.lang.String)
+     */
+    public void addRoleToUser(String username, String roleName) throws SecurityException
+    {
+        checkInitialized();
+    	User user = userManager.getUser(username);
+        if (user == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.USER, username));
+        }
+        Role role = getRole(roleName);
+        if (role == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.ROLE, roleName));
+        }
+        super.addAssociation(user, role, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#removeRoleFromUser(java.lang.String,
+     *      java.lang.String)
+     */
+    public void removeRoleFromUser(String username, String roleName) throws SecurityException
+    {
+    	checkInitialized();
+    	User user = userManager.getUser(username);
+        if (user == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.USER, username));
+        }
+        Role role = getRole(roleName);
+        if (role == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.ROLE, roleName));
+        }
+        super.removeAssociation(user, role, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#isUserInRole(java.lang.String,
+     *      java.lang.String)
+     */
+    public boolean isUserInRole(String username, String roleName) throws SecurityException
+    {
+        return getAssociatedNamesFrom(username, userType, JetspeedPrincipalAssociationType.IS_MEMBER_OF).contains(roleName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#addRoleToGroup(java.lang.String,
+     *      java.lang.String)
+     */
+    public void addRoleToGroup(String roleName, String groupName) throws SecurityException
+    {
+        checkInitialized();
+    	Group group = groupManager.getGroup(groupName);
+        if (group == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.GROUP, groupName));
+        }
+        Role role = getRole(roleName);
+        if (role == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.ROLE, roleName));
+        }
+        super.addAssociation(group, role, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#removeRoleFromGroup(java.lang.String,
+     *      java.lang.String)
+     */
+    public void removeRoleFromGroup(String roleName, String groupName) throws SecurityException
+    {
+    	checkInitialized();
+    	Group group = groupManager.getGroup(groupName);
+        if (group == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.GROUP, groupName));
+        }
+        Role role = getRole(roleName);
+        if (role == null)
+        {
+            throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.ROLE, roleName));
+        }
+        super.removeAssociation(group, role, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#isGroupInRole(java.lang.String,
+     *      java.lang.String)
+     */
+    public boolean isGroupInRole(String groupName, String roleName) throws SecurityException
+    {
+        return getAssociatedNamesFrom(groupName, groupType, JetspeedPrincipalAssociationType.IS_MEMBER_OF).contains(roleName);
+    }
+
+    /**
+     * @see org.apache.jetspeed.security.RoleManager#getRoles(java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Role> getRoles(String nameFilter) throws SecurityException
+    {
+        return (List<Role>)super.getPrincipals(nameFilter);
+    }
+
+    public List<String> getRoleNames(String nameFilter) throws SecurityException
+    {
+        return getPrincipalNames(nameFilter);
+    }
+
+    /** 
+     * @see org.apache.jetspeed.security.RoleManager#updateRole(org.apache.jetspeed.security.Role)
+     */
+    public void updateRole(Role role) throws SecurityException
+    {
+         super.updatePrincipal(role);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.RoleManager#addRoleToRole(org.apache.jetspeed.security.Role, org.apache.jetspeed.security.Role, java.lang.String)
+     */
+    public void addRoleToRole(Role from, Role to, String associationName) throws SecurityException
+    {
+        this.addAssociation(from, to, associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.RoleManager#removeRoleFromRole(org.apache.jetspeed.security.Role, org.apache.jetspeed.security.Role, java.lang.String)
+     */
+    public void removeRoleFromRole(Role from, Role to, String associationName) throws SecurityException
+    {
+        removeAssociation(from, to, associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.RoleManager#getRolesAssociatedFrom(org.apache.jetspeed.security.Role, java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Role> getRolesAssociatedFrom(Role from, String associationName)
+    {
+        return (List<Role>)getAssociatedFrom(from.getName(), from.getType(), associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.RoleManager#getRolesAssociatedTo(org.apache.jetspeed.security.Role, java.lang.String)
+     */
+    @SuppressWarnings("unchecked")
+    public List<Role> getRolesAssociatedTo(Role to, String associationName)
+    {
+        return (List<Role>)getAssociatedFrom(to.getName(), to.getType(), associationName);
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.JetspeedPrincipalManager#newPrincipal(java.lang.String, boolean)
+     */
+    public JetspeedPrincipal newPrincipal(String name, boolean mapped)
+    {
+        return newRole(name, mapped);
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.security.JetspeedPrincipalManager#newTransientPrincipal(java.lang.String)
+     */
+    public JetspeedPrincipal newTransientPrincipal(String name)
+    {
+        return newTransientRole(name);
+    }
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractTransientJetspeedPrincipal.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractTransientJetspeedPrincipal.java?rev=742172&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractTransientJetspeedPrincipal.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractTransientJetspeedPrincipal.java Sun Feb  8 21:28:35 2009
@@ -0,0 +1,167 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jetspeed.security.impl;
+
+import java.io.Serializable;
+import java.sql.Timestamp;
+import java.util.Map;
+
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.JetspeedPrincipalManagerProvider;
+import org.apache.jetspeed.security.JetspeedPrincipalType;
+import org.apache.jetspeed.security.SecurityAttributes;
+import org.apache.jetspeed.security.SecurityException;
+
+/**
+ * AbstractTransientJetspeedPrincipal
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public abstract class AbstractTransientJetspeedPrincipal implements JetspeedPrincipal, Serializable
+{
+    private static final long serialVersionUID = -3222995278900548238L;
+
+    protected static JetspeedPrincipalManagerProvider jpmp;
+
+    public static void setJetspeedPrincipalManagerProvider(JetspeedPrincipalManagerProvider jpmp)
+    {
+        TransientJetspeedPrincipal.jpmp = jpmp;
+    }
+    
+    protected transient JetspeedPrincipalType jpt;
+    protected transient SecurityAttributes sa;
+    
+    protected AbstractTransientJetspeedPrincipal()
+    {
+        setTypeName((jpmp != null) ? jpmp.getPrincipalTypeByClassName(getClass().getName()).getName() : null);
+    }
+    
+    protected AbstractTransientJetspeedPrincipal(String type)
+    {
+        setTypeName(type);
+    }
+    
+    public Long getId()
+    {
+        return null;
+    }
+
+    public abstract String getTypeName();
+
+    public abstract void setTypeName(String type);
+
+    public abstract String getName();
+
+    public synchronized JetspeedPrincipalType getType()
+    {
+        if (jpt == null)
+        {
+            jpt = jpmp.getPrincipalType(getTypeName());
+        }
+        return jpt;
+    }
+
+    public Timestamp getCreationDate()
+    {
+        return null;
+    }
+    
+    public Timestamp getModifiedDate()
+    {
+        return null;
+    }
+    
+    public boolean isTransient()
+    {
+        return true;
+    }
+    
+    public boolean isEnabled()
+    {
+        return true;
+    }
+
+    public void setEnabled(boolean enabled) throws SecurityException
+    {
+        throw new UnsupportedOperationException();
+    }
+    
+    public boolean isMapped()
+    {
+        return false;
+    }
+    
+    public void setMapped(boolean mapped)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isReadOnly()
+    {
+        return false;
+    }
+    
+    public void setReadOnly(boolean readOnly)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isRemovable()
+    {
+        return false;
+    }
+    
+    public void setRemovable(boolean removable)
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    public boolean isExtendable()
+    {
+        return true;
+    }
+    
+    public void setExtendable(boolean extendable)
+    {
+        throw new UnsupportedOperationException();
+    }
+    
+    public synchronized SecurityAttributes getSecurityAttributes()
+    {
+        if (sa == null)
+        {
+            sa = new SecurityAttributesImpl(this);
+        }
+        return sa;
+    }
+    
+    public Map<String, String> getInfoMap()
+    {
+        return getSecurityAttributes().getInfoMap();
+    }
+
+    public String toString()
+    {
+        return getType().getName()+": "+getName()+" (id: "+(getId())+", transient: "+isTransient()+", mapped: "+isMapped()+")";
+    }
+    
+    public abstract Long getDomainId();
+
+    public abstract void setDomainId(Long domainId);
+}

Added: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractUserManagerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractUserManagerImpl.java?rev=742172&view=auto
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractUserManagerImpl.java (added)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/AbstractUserManagerImpl.java Sun Feb  8 21:28:35 2009
@@ -0,0 +1,265 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.security.impl;
+
+import java.security.Principal;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.Subject;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.security.AuthenticatedUser;
+import org.apache.jetspeed.security.AuthenticatedUserImpl;
+import org.apache.jetspeed.security.GroupManager;
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.JetspeedPrincipalAssociationType;
+import org.apache.jetspeed.security.JetspeedPrincipalType;
+import org.apache.jetspeed.security.JetspeedSubjectFactory;
+import org.apache.jetspeed.security.PasswordCredential;
+import org.apache.jetspeed.security.PrincipalsSet;
+import org.apache.jetspeed.security.RoleManager;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.User;
+import org.apache.jetspeed.security.UserCredential;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.jetspeed.security.spi.JetspeedPrincipalAccessManager;
+import org.apache.jetspeed.security.spi.JetspeedPrincipalStorageManager;
+import org.apache.jetspeed.security.spi.UserPasswordCredentialManager;
+import org.apache.jetspeed.security.spi.UserSubjectPrincipalsProvider;
+import org.apache.jetspeed.security.spi.UserSubjectPrincipalsResolver;
+
+/**
+ * <p>
+ * Implementation for managing users and provides access to the {@link User}.
+ * </p>
+ * 
+ * @author <a href="mailto:dlestrat@apache.org">David Le Strat </a>
+ * @author <a href="mailto:vkumar@apache.org">Vivek Kumar </a>
+ * @version $Id: UserManagerImpl.java 721251 2008-11-27 17:55:08Z woonsan $
+ */
+public abstract class AbstractUserManagerImpl extends BaseJetspeedPrincipalManager implements UserManager, UserSubjectPrincipalsProvider
+{
+    private static final long serialVersionUID = -5582007187364289034L;
+
+    private static final Log log = LogFactory.getLog(AbstractUserManagerImpl.class);
+
+	protected String anonymousUser = "guest";
+	protected JetspeedPrincipalType roleType;
+	protected JetspeedPrincipalType groupType;
+
+	protected UserPasswordCredentialManager credentialManager;
+	protected RoleManager roleManager;
+	protected GroupManager groupManager;
+	protected Map<String, UserSubjectPrincipalsResolver> usprMap = new HashMap<String, UserSubjectPrincipalsResolver>();
+
+	protected AbstractUserManagerImpl(JetspeedPrincipalType principalType, JetspeedPrincipalType roleType, JetspeedPrincipalType groupType,
+                                      JetspeedPrincipalAccessManager jpam, JetspeedPrincipalStorageManager jpsm, UserPasswordCredentialManager credentialManager)
+	{
+		super(principalType, jpam, jpsm);
+		this.credentialManager = credentialManager;
+		this.roleType = roleType;
+		this.groupType = groupType;
+	}
+
+	private void checkInitialized()
+	{
+		if (groupManager == null)
+		{
+			groupManager = (GroupManager) getPrincipalManagerProvider().getManager(groupType);
+		}
+		if (roleManager == null)
+		{
+			roleManager = (RoleManager) getPrincipalManagerProvider().getManager(roleType);
+		}
+	}
+
+	public User addUser(String username) throws SecurityException
+	{
+		return addUser(username, true);
+	}
+
+	public User addUser(String username, boolean mapped) throws SecurityException
+	{
+		User user = newUser(username, mapped);
+		
+		super.addPrincipal(user, null);
+
+		if (log.isDebugEnabled())
+			log.debug("Added user: " + username);
+
+		return user;
+	}
+
+	public String getAnonymousUser()
+	{
+		return anonymousUser;
+	}
+
+	public PasswordCredential getPasswordCredential(User user) throws SecurityException
+	{
+		if (credentialManager != null)
+		{
+			return credentialManager.getPasswordCredential(user);
+		}
+		return null;
+	}
+
+	public Subject getSubject(User user) throws SecurityException
+	{
+		if (credentialManager != null)
+		{
+			PasswordCredential pwc = getPasswordCredential(user);
+			if (pwc != null)
+			{
+				UserCredential credential = new UserCredentialImpl(pwc);
+				HashSet<Object> privateCred = new HashSet<Object>();
+				privateCred.add(credential);
+				return getSubject(new AuthenticatedUserImpl(user, null, privateCred));
+			}
+		}
+		return getSubject(new AuthenticatedUserImpl(user, null, null));
+	}
+
+	public Subject getSubject(AuthenticatedUser user) throws SecurityException
+	{
+		Set<Principal> principals = new PrincipalsSet();
+		resolveSubjectPrincipals(user, principals);
+		return JetspeedSubjectFactory.createSubject(user.getUser(), getPublicCredentialsForSubject(user), getPrivateCredentialsForSubject(user), principals);
+	}
+
+	protected Set<Object> getPublicCredentialsForSubject(AuthenticatedUser user)
+	{
+		HashSet<Object> credentials = new HashSet<Object>();
+		if (user.getPublicCredentials() != null)
+		{
+			credentials.addAll(user.getPublicCredentials());
+		}
+		return credentials;
+	}
+
+	protected Set<Object> getPrivateCredentialsForSubject(AuthenticatedUser user)
+	{
+		HashSet<Object> credentials = new HashSet<Object>();
+		if (user.getPrivateCredentials() != null)
+		{
+			credentials.addAll(user.getPrivateCredentials());
+		}
+		return credentials;
+	}
+
+	protected void resolveSubjectPrincipals(AuthenticatedUser user, Set<Principal> principals) throws SecurityException
+	{
+		checkInitialized();
+		HashSet<Long> resolvedIds = new HashSet<Long>();
+		for (UserSubjectPrincipalsResolver resolver : usprMap.values())
+		{
+		    resolver.resolve(user.getUser(), resolvedIds, principals, usprMap);
+		}
+	}
+
+	public User getUser(String username) throws SecurityException
+	{
+	    User user = (User)getPrincipal(username);
+	    if (null == user)
+	    {
+	        throw new SecurityException(SecurityException.PRINCIPAL_DOES_NOT_EXIST.createScoped(JetspeedPrincipalType.USER, username));
+	    }
+	    return user;
+	}
+
+	public List<String> getUserNames(String nameFilter) throws SecurityException
+	{
+		return getPrincipalNames(nameFilter);
+	}
+
+    @SuppressWarnings("unchecked")
+	public List<User> getUsers(String nameFilter) throws SecurityException
+	{
+		return (List<User>) getPrincipals(nameFilter);
+	}
+
+    @SuppressWarnings("unchecked")
+	public List<User> getUsersInGroup(String groupFullPathName) throws SecurityException
+	{
+		return (List<User>) super.getAssociatedTo(groupFullPathName, groupType, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+	}
+
+    @SuppressWarnings("unchecked")
+	public List<User> getUsersInRole(String roleFullPathName) throws SecurityException
+	{
+		return (List<User>) super.getAssociatedTo(roleFullPathName, roleType, JetspeedPrincipalAssociationType.IS_MEMBER_OF);
+	}
+
+    @SuppressWarnings("unchecked")
+    public List<User> lookupUsers(String attributeName, String attributeValue) throws SecurityException
+	{
+		return (List<User>) super.getPrincipalsByAttribute(attributeName, attributeValue);
+	}
+
+	public User newTransientUser(String name)
+	{
+		TransientUser user = new TransientUser(name);
+		return user;
+	}
+
+	public void removeUser(String username) throws SecurityException
+	{
+		JetspeedPrincipal user;
+		
+		user = getUser(username);
+		super.removePrincipal(user);
+	}
+
+	public void storePasswordCredential(PasswordCredential credential) throws SecurityException
+	{
+		if (credentialManager == null)
+		{
+			throw new UnsupportedOperationException();
+		}
+		credentialManager.storePasswordCredential(credential);
+	}
+
+	public void updateUser(User user) throws SecurityException
+	{
+		super.updatePrincipal(user);
+	}
+
+	public boolean userExists(String username)
+	{
+		return super.principalExists(username);
+	}
+
+	public JetspeedPrincipal newPrincipal(String name, boolean mapped)
+	{
+		return newUser(name, mapped);
+	}
+
+	public JetspeedPrincipal newTransientPrincipal(String name)
+	{
+		return newTransientUser(name);
+	}
+
+    public void addSubjectPrincipalsResolver(UserSubjectPrincipalsResolver resolver)
+    {
+        this.usprMap.put(resolver.getPrincipalType().getName(), resolver);
+    }
+}

Modified: portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java?rev=742172&r1=742171&r2=742172&view=diff
==============================================================================
--- portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java (original)
+++ portals/jetspeed-2/portal/branches/JPA_BRANCH/components/jetspeed-security/src/main/java/org/apache/jetspeed/security/impl/DefaultLoginModule.java Sun Feb  8 21:28:35 2009
@@ -33,6 +33,7 @@
 import org.apache.jetspeed.security.AuthenticatedUser;
 import org.apache.jetspeed.security.LoginModuleProxy;
 import org.apache.jetspeed.security.Role;
+import org.apache.jetspeed.security.RoleManager;
 import org.apache.jetspeed.security.SubjectHelper;
 import org.apache.jetspeed.security.User;
 import org.apache.jetspeed.security.UserManager;
@@ -84,6 +85,9 @@
     /** <p>InternalUserPrincipal manager service.</p> */
     protected UserManager ums;
     
+    /** <p>InternalRolePrincipal manager service.</p> */
+    protected RoleManager rms;
+    
     /** The portal user role. */
     protected String portalUserRole;
 
@@ -103,6 +107,7 @@
         {
             this.authProvider = loginModuleProxy.getAuthenticationProvider();
             this.ums = loginModuleProxy.getUserManager();
+            this.rms = loginModuleProxy.getRoleManager();
             this.portalUserRole = loginModuleProxy.getPortalUserRole();
         }
         debug = false;
@@ -115,21 +120,23 @@
     /**
      * Create a new login module that uses the given user manager.
      * @param userManager the user manager to use
+     * @param roleManager the role manager to use
      * @param portalUserRole the portal user role to use
      */
-    protected DefaultLoginModule (AuthenticationProvider authProvider, UserManager userManager, String portalUserRole) 
+    protected DefaultLoginModule (AuthenticationProvider authProvider, UserManager userManager, RoleManager roleManager, String portalUserRole) 
     {
         this.authProvider = authProvider;
         this.ums = userManager;
+        this.rms = roleManager;
         this.portalUserRole = portalUserRole;
         debug = false;
         success = false;
         commitSuccess = false;
         username = null;
     }
-    protected DefaultLoginModule (AuthenticationProvider authProvider, UserManager userManager) 
+    protected DefaultLoginModule (AuthenticationProvider authProvider, UserManager userManager, RoleManager roleManager) 
     {
-        this(authProvider, userManager, LoginModuleProxy.DEFAULT_PORTAL_USER_ROLE_NAME);
+        this(authProvider, userManager, roleManager, LoginModuleProxy.DEFAULT_PORTAL_USER_ROLE_NAME);
     }
     
     /**
@@ -315,7 +322,7 @@
         {
             // add portal user role: used in web.xml authorization to
             // detect authenticated portal users
-            subject.getPrincipals().add(new RoleImpl(portalUserRole));        
+            subject.getPrincipals().add(rms.newRole(portalUserRole, false));
         }
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org