Author: shane.bryzak(a)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()
Show replies by date