[seam-commits] Seam SVN: r13292 - in modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management: picketlink and 1 other directory.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Wed Jun 23 19:51:37 EDT 2010


Author: shane.bryzak at jboss.com
Date: 2010-06-23 19:51:37 -0400 (Wed, 23 Jun 2010)
New Revision: 13292

Added:
   modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreSessionImpl.java
Modified:
   modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
   modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/picketlink/IdentitySessionProducer.java
Log:
integrate picketlink identity store changes


Modified: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java	2010-06-23 13:56:27 UTC (rev 13291)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java	2010-06-23 23:51:37 UTC (rev 13292)
@@ -9,10 +9,6 @@
 import java.util.Map;
 import java.util.Set;
 
-import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.inject.Instance;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.inject.Inject;
 import javax.persistence.Entity;
 import javax.persistence.EntityManager;
 import javax.persistence.Id;
@@ -20,8 +16,6 @@
 
 import org.jboss.seam.security.annotations.management.IdentityProperty;
 import org.jboss.seam.security.annotations.management.PropertyType;
-import org.jboss.seam.security.events.PrePersistUserEvent;
-import org.jboss.seam.security.events.UserCreatedEvent;
 import org.jboss.weld.extensions.util.properties.Property;
 import org.jboss.weld.extensions.util.properties.query.AnnotatedPropertyCriteria;
 import org.jboss.weld.extensions.util.properties.query.NamedPropertyCriteria;
@@ -57,15 +51,14 @@
    
    private Logger log = LoggerFactory.getLogger(JpaIdentityStore.class);   
    
+   public static final String OPTION_IDENTITY_CLASS_NAME = "identityEntityClassName";
+   
    private static final String DEFAULT_USER_IDENTITY_TYPE = "USER";
    private static final String DEFAULT_ROLE_IDENTITY_TYPE = "ROLE";
    private static final String DEFAULT_GROUP_IDENTITY_TYPE = "GROUP";   
    
    private static final String DEFAULT_RELATIONSHIP_TYPE_MEMBERSHIP = "MEMBERSHIP";
    private static final String DEFAULT_RELATIONSHIP_TYPE_ROLE = "ROLE";
-   
-   private static final String DEFAULT_ATTRIBUTE_USER_ENABLED = "ENABLED";
-   private static final String DEFAULT_ATTRIBUTE_PASSWORD_SALT = "PASSWORD_SALT";
 
    // Property keys
    
@@ -96,6 +89,8 @@
    //@Inject CredentialProcessor credentialEncoder;
    
    private String id;
+   
+   private IdentityStoreConfigurationContext configurationContext;
       
    // Entity classes
    
@@ -152,6 +147,10 @@
    public void bootstrap(IdentityStoreConfigurationContext configurationContext)
       throws IdentityException
    {
+      this.configurationContext = configurationContext;
+      
+      //configurationContext.getStoreConfigurationMetaData().getOptionSingleValue(optionName)
+      
       if (identityClass == null)
       {
          throw new IdentityException(
@@ -165,6 +164,7 @@
       configureCredentials();
       configureRelationships();
       configureAttributes();   
+      configureRoleTypeNames();
    }   
    
    protected void configureIdentityId() throws IdentityException
@@ -1253,7 +1253,14 @@
    public IdentityStoreSession createIdentityStoreSession()
          throws IdentityException
    {
-      // TODO Auto-generated method stub
-      return null;
+      return createIdentityStoreSession(null);
    }
+
+   public IdentityStoreSession createIdentityStoreSession(
+         Map<String, Object> sessionOptions) throws IdentityException
+   {
+      EntityManager em = (EntityManager) sessionOptions.get("ENTITY_MANAGER");
+      
+      return new JpaIdentityStoreSessionImpl(em);
+   }
 }

Added: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreSessionImpl.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreSessionImpl.java	                        (rev 0)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStoreSessionImpl.java	2010-06-23 23:51:37 UTC (rev 13292)
@@ -0,0 +1,73 @@
+package org.jboss.seam.security.management;
+
+import javax.persistence.EntityManager;
+
+import org.picketlink.idm.common.exception.IdentityException;
+import org.picketlink.idm.spi.store.IdentityStoreSession;
+
+/**
+ * JPA-specific implementation of IdentityStoreSession, based on an EntityManager. 
+ * 
+ * @author Shane Bryzak
+ *
+ */
+public class JpaIdentityStoreSessionImpl implements IdentityStoreSession
+{
+   private EntityManager em;
+   
+   public JpaIdentityStoreSessionImpl(EntityManager em)
+   {
+      this.em = em;
+   }
+   
+   public void clear() throws IdentityException
+   {
+      em.clear();      
+   }
+
+   public void close() throws IdentityException
+   {
+      em.close();
+   }
+
+   public void commitTransaction()
+   {
+      em.getTransaction().commit();
+   }
+
+   public Object getSessionContext() throws IdentityException
+   {
+      return em;
+   }
+
+   public boolean isOpen()
+   {
+      return em.isOpen();
+   }
+
+   public boolean isTransactionActive()
+   {
+      return em.getTransaction().isActive();
+   }
+
+   public boolean isTransactionSupported()
+   {
+      return true;
+   }
+
+   public void rollbackTransaction()
+   {
+      em.getTransaction().rollback();
+   }
+
+   public void save() throws IdentityException
+   {
+      em.flush();
+   }
+
+   public void startTransaction()
+   {
+      em.getTransaction().begin();
+   }
+
+}

Modified: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/picketlink/IdentitySessionProducer.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/picketlink/IdentitySessionProducer.java	2010-06-23 13:56:27 UTC (rev 13291)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/picketlink/IdentitySessionProducer.java	2010-06-23 23:51:37 UTC (rev 13292)
@@ -1,15 +1,21 @@
 package org.jboss.seam.security.management.picketlink;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import javax.enterprise.context.ApplicationScoped;
 import javax.enterprise.context.RequestScoped;
+import javax.enterprise.inject.Instance;
 import javax.enterprise.inject.Produces;
 import javax.inject.Inject;
+import javax.persistence.EntityManager;
 
+import org.jboss.seam.security.management.JpaIdentityStore;
 import org.picketlink.idm.api.IdentitySession;
 import org.picketlink.idm.api.IdentitySessionFactory;
+import org.picketlink.idm.api.event.EventListener;
 import org.picketlink.idm.common.exception.IdentityConfigurationException;
 import org.picketlink.idm.common.exception.IdentityException;
 import org.picketlink.idm.impl.configuration.IdentityConfigurationImpl;
@@ -26,7 +32,7 @@
  * @author Shane Bryzak
  */
 @ApplicationScoped
-public class IdentitySessionProducer
+public class IdentitySessionProducer implements EventListener
 {
    private IdentitySessionFactory factory;
    
@@ -35,7 +41,7 @@
    @Inject IdentityConfigurationMetaData config;
    
    @Inject
-   public void init() throws IdentityConfigurationException
+   public void init() throws IdentityConfigurationException, IdentityException
    {
       IdentityConfigurationMetaDataImpl metadata = new IdentityConfigurationMetaDataImpl();
 
@@ -43,13 +49,16 @@
       List<IdentityStoreConfigurationMetaData> stores = new ArrayList<IdentityStoreConfigurationMetaData>();      
       IdentityStoreConfigurationMetaDataImpl store = new IdentityStoreConfigurationMetaDataImpl();
       store.setId("jpa");
-      store.setClassName("org.jboss.seam.security.management.JpaIdentityStore");
+      store.setClassName("org.jboss.seam.security.management.JpaIdentityStore");      
+      Map<String,List<String>> options = new HashMap<String,List<String>>();
+      options.put(JpaIdentityStore.OPTION_IDENTITY_CLASS_NAME, 
+            createOptionList("org.jboss.seam.security.examples.idmconsole.model.IdentityObject"));
+      store.setOptions(options);
       stores.add(store);            
       metadata.setIdentityStores(stores);
       
       // Create the default realm
       RealmConfigurationMetaDataImpl realm = new RealmConfigurationMetaDataImpl();
-      realm.setIdentityRepositoryIdRef("jpa");
       realm.setId("default");      
       List<RealmConfigurationMetaData> realms = new ArrayList<RealmConfigurationMetaData>();      
       realms.add(realm);
@@ -57,14 +66,28 @@
             
       IdentityConfigurationImpl config = new IdentityConfigurationImpl();
       config.configure(metadata);
+      config.register(this, "identitySessionProducer");
       
       factory = config.buildIdentitySessionFactory();      
    }
    
+   private List<String> createOptionList(String... values)
+   {
+      List<String> vals = new ArrayList<String>();
+      for (String v : values) vals.add(v);
+      return vals;
+   }
+   
+   @Inject Instance<EntityManager> entityManagerInstance;
+      
    @Produces @RequestScoped IdentitySession createIdentitySession()
       throws IdentityException
    {
-      return factory.createIdentitySession(getDefaultRealm());
+      Map<String,Object> sessionOptions = new HashMap<String,Object>();
+      sessionOptions.put("ENTITY_MANAGER", entityManagerInstance.get());      
+      IdentitySession session = factory.createIdentitySession(getDefaultRealm(), sessionOptions);
+      session.registerListener(this);
+      return session;
    }
    
    public String getDefaultRealm()



More information about the seam-commits mailing list