[jboss-cvs] Picketlink SVN: r777 - in idm/branches/2.0.0: picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory and 22 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Feb 25 14:12:09 EST 2011


Author: anil.saldhana at jboss.com
Date: 2011-02-25 14:12:09 -0500 (Fri, 25 Feb 2011)
New Revision: 777

Added:
   idm/branches/2.0.0/picketlink-idm-memory/
   idm/branches/2.0.0/picketlink-idm-memory/pom.xml
   idm/branches/2.0.0/picketlink-idm-memory/src/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java
   idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java
   idm/branches/2.0.0/picketlink-idm-memory/src/main/resources/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/api/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/api/model/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java
   idm/branches/2.0.0/picketlink-idm-memory/src/test/resources/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/resources/configs/
   idm/branches/2.0.0/picketlink-idm-memory/src/test/resources/configs/memory-config.xml
Removed:
   idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java
   idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java
   idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java
   idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java
   idm/branches/2.0.0/picketlink-idm-core/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java
   idm/branches/2.0.0/picketlink-idm-core/src/test/resources/configs/memory-config.xml
Modified:
   idm/branches/2.0.0/pom.xml
Log:
move the memory based identity store to separate module

Deleted: idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -1,69 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2011, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors. 
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.picketlink.idm.impl.store.memory;
-
-import org.picketlink.idm.spi.model.IdentityObject;
-import org.picketlink.idm.spi.model.IdentityObjectRelationship;
-import org.picketlink.idm.spi.model.IdentityObjectRelationshipType;
-
-/**
- * A {@link IdentityObjectRelationship} for use in the
- * {@link MemoryIdentityStore}
- * @author Anil.Saldhana at redhat.com
- * @since Feb 14, 2011
- */
-public class MemoryIdentityObjectRelationship implements IdentityObjectRelationship
-{
-   private String name;
-   private IdentityObjectRelationshipType type;
-   private IdentityObject to;
-   private IdentityObject from;
-
-   public MemoryIdentityObjectRelationship( String name, IdentityObjectRelationshipType type,  
-         IdentityObject from, IdentityObject to )
-   {
-      this.name = name;
-      this.type = type;
-      this.to = to;
-      this.from = from;
-   }
-
-   public String getName()
-   { 
-      return name;
-   }
-
-   public IdentityObjectRelationshipType getType()
-   {
-      return type;
-   }
-
-   public IdentityObject getFromIdentityObject()
-   { 
-      return from;
-   }
-
-   public IdentityObject getToIdentityObject()
-   { 
-      return to;
-   } 
-}
\ No newline at end of file

Deleted: idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -1,529 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2011, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors. 
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.picketlink.idm.impl.store.memory;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-
-import org.picketlink.idm.common.exception.IdentityException;
-import org.picketlink.idm.impl.types.SimpleIdentityObject;
-import org.picketlink.idm.spi.configuration.IdentityStoreConfigurationContext;
-import org.picketlink.idm.spi.configuration.metadata.IdentityObjectAttributeMetaData;
-import org.picketlink.idm.spi.exception.OperationNotSupportedException;
-import org.picketlink.idm.spi.model.IdentityObject;
-import org.picketlink.idm.spi.model.IdentityObjectAttribute;
-import org.picketlink.idm.spi.model.IdentityObjectCredential;
-import org.picketlink.idm.spi.model.IdentityObjectCredentialType;
-import org.picketlink.idm.spi.model.IdentityObjectRelationship;
-import org.picketlink.idm.spi.model.IdentityObjectRelationshipType;
-import org.picketlink.idm.spi.model.IdentityObjectType;
-import org.picketlink.idm.spi.model.IdentityObjectType.TYPE;
-import org.picketlink.idm.spi.search.IdentityObjectSearchCriteria;
-import org.picketlink.idm.spi.store.FeaturesMetaData;
-import org.picketlink.idm.spi.store.IdentityObjectSearchCriteriaType;
-import org.picketlink.idm.spi.store.IdentityStore;
-import org.picketlink.idm.spi.store.IdentityStoreInvocationContext;
-import org.picketlink.idm.spi.store.IdentityStoreSession;
-
-/**
- * An implementation of {@link IdentityStore} that resides in memory
- * @author Anil.Saldhana at redhat.com
- * @since Feb 14, 2011
- */
-public class MemoryIdentityStore implements IdentityStore, Serializable
-{ 
-   private static final long serialVersionUID = 1L;
-   private String id;
-   
-   protected Map<String,IdentityObject> users = new HashMap<String,IdentityObject>();
-   
-   protected Map<String, IdentityObject> roles = new HashMap<String,IdentityObject>();
-   protected Map<String, IdentityObject> groups = new HashMap<String,IdentityObject>();
-   
-   protected Map<String, Set<IdentityObjectAttribute>> attributes = new HashMap<String, Set<IdentityObjectAttribute>>();
-   /**
-    * General hashmap that is keyed by relationship name.
-    */
-   protected Map<String, List<IdentityObjectRelationship>> relationships = new HashMap<String, List<IdentityObjectRelationship>>();
-   
-   protected Set<String> relationshipNames = new TreeSet<String>();
-   
-   public MemoryIdentityStore( String id )
-   {
-      this.id = id;
-   }
-
-   public Set<String> getSupportedAttributeNames(IdentityStoreInvocationContext invocationContext,
-         IdentityObjectType identityType) throws IdentityException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, IdentityObjectAttributeMetaData> getAttributesMetaData(
-         IdentityStoreInvocationContext invocationContext, IdentityObjectType identityType)
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, IdentityObjectAttribute> getAttributes(IdentityStoreInvocationContext invocationContext,
-         IdentityObject identity) throws IdentityException
-   {   
-      Map<String, IdentityObjectAttribute> map = new HashMap<String, IdentityObjectAttribute>();
-      
-      Set<IdentityObjectAttribute> attrs = attributes.get( identity.getName());
-      if( attrs != null )
-      {
-         for( IdentityObjectAttribute ioa: attrs )
-         {
-            map.put(ioa.getName(), ioa );
-         }
-      }
-      return map;
-   }
-
-   public IdentityObjectAttribute getAttribute(IdentityStoreInvocationContext invocationContext,
-         IdentityObject identity, String name) throws IdentityException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void updateAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
-         IdentityObjectAttribute[] attributes) throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void addAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
-         IdentityObjectAttribute[] attributes) throws IdentityException
-   { 
-      Set<IdentityObjectAttribute> set = this.attributes.get( identity.getName() );
-      if( set == null)
-      {
-         set = new HashSet<IdentityObjectAttribute>();
-         this.attributes.put( identity.getName(), set );
-      }
-      set.addAll( Arrays.asList( attributes ));
-   }
-
-   public void removeAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
-         String[] attributeNames) throws IdentityException
-   {
-      throw new RuntimeException( "NYI" );
-   }
-
-   public IdentityObject findIdentityObjectByUniqueAttribute(IdentityStoreInvocationContext invocationCtx,
-         IdentityObjectType identityObjectType, IdentityObjectAttribute attribute) throws IdentityException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public IdentityStoreSession createIdentityStoreSession() throws IdentityException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public IdentityStoreSession createIdentityStoreSession(Map<String, Object> sessionOptions) throws IdentityException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void bootstrap(IdentityStoreConfigurationContext configurationContext) throws IdentityException
-   {  
-   }
-
-   public String getId()
-   {
-      return id;
-   }
-
-   public FeaturesMetaData getSupportedFeatures()
-   { 
-      return new FeaturesMetaData()
-      {
-         public boolean isSearchCriteriaTypeSupported(IdentityObjectType identityObjectType,
-               IdentityObjectSearchCriteriaType storeSearchConstraint)
-         { 
-            return true;
-         }
-         
-         public boolean isRoleNameSearchCriteriaTypeSupported(IdentityObjectSearchCriteriaType constraint)
-         {  
-            return true;
-         }
-         
-         public boolean isRelationshipTypeSupported(IdentityObjectType fromType, IdentityObjectType toType,
-               IdentityObjectRelationshipType relationshipType) throws IdentityException
-         {   
-            return true;
-         }
-         
-         public boolean isRelationshipPropertiesSupported()
-         { 
-            return true;
-         }
-         
-         public boolean isRelationshipNameAddRemoveSupported()
-         { 
-            return true;
-         }
-         
-         public boolean isNamedRelationshipsSupported()
-         { 
-            return true;
-         }
-         
-         public boolean isIdentityObjectTypeSupported(IdentityObjectType identityObjectType)
-         { 
-            return true;
-         }
-         
-         public boolean isIdentityObjectAddRemoveSupported(IdentityObjectType objectType)
-         { 
-            return true;
-         }
-         
-         public boolean isCredentialSupported(IdentityObjectType identityObjectType,
-               IdentityObjectCredentialType credentialType)
-         {   
-            return true;
-         }
-         
-         public Set<String> getSupportedRelationshipTypes()
-         {   
-            return null;
-         }
-         
-         public Set<String> getSupportedIdentityObjectTypes()
-         { 
-            return null;
-         }
-      }; 
-   }
-
-   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
-         IdentityObjectType identityObjectType) throws IdentityException
-   { 
-      if( identityObjectType == null )
-         throw new IllegalArgumentException( "Identity Object Type is null" );
-      
-      IdentityObject io = null;
-      
-      String identityObjectTypeName =  identityObjectType.getName();
-      
-      TYPE type = identityObjectType.getType();
-      
-      if( type == TYPE.GROUP )
-      {
-         io = groups.get(identityObjectTypeName);
-         if( io == null )
-         {
-            io = new SimpleIdentityObject( name, identityObjectType );
-            groups.put(name, io);
-         }  
-      }
-      else if( type == TYPE.USER )
-      {
-         io = users.get(identityObjectTypeName);
-         if( io ==null)
-         {
-            io = new SimpleIdentityObject( name, identityObjectType );
-            users.put( name, io ); 
-         }
-      }
-      else
-      {
-         io = roles.get(identityObjectTypeName);
-         if( io == null )
-         {
-            io = new SimpleIdentityObject( name, identityObjectType );
-            roles.put(identityObjectTypeName, io);
-         }
-      }
-      /*if( identityObjectTypeName.equals( "ORGANIZATION" ) || identityObjectTypeName.equals( "DIVISION" )
-            || identityObjectTypeName.equals( "DEPARTMENT") ||  identityObjectTypeName.equals( "ORGANIZATION_UNIT")
-            || identityObjectTypeName.equals( "PROJECT" ) || identityObjectTypeName.equals( "PEOPLE" ))
-      {
-         io =  generalBucket.get(name);
-         
-         if( io == null )
-         {
-            io = new SimpleIdentityObject( name, identityObjectType );
-            generalBucket.put(name, io);
-         }  
-      } 
-      else if( identityObjectTypeName.equals( "USER" ))
-      {
-         io = users.get( name );
-         if( io == null )
-         {
-            io = new SimpleIdentityObject( name, identityObjectType );
-            users.put(name, io );
-         }
-      }
-      else 
-         throw new RuntimeException( "Unknown type : " + identityObjectTypeName );*/
-      return io;
-   }
-
-   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
-         IdentityObjectType identityObjectType, Map<String, String[]> attributes) throws IdentityException
-   {    
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void removeIdentityObject(IdentityStoreInvocationContext invocationCtx, IdentityObject identity)
-         throws IdentityException
-   {
-      throw new RuntimeException( "NYI" );
-   }
-
-   public int getIdentityObjectsCount(IdentityStoreInvocationContext invocationCtx, IdentityObjectType identityType)
-         throws IdentityException
-   {
-      throw new RuntimeException( "NYI" );
-   }
-
-   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String name,
-         IdentityObjectType identityObjectType) throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String id)
-         throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCtx,
-         IdentityObjectType identityType, IdentityObjectSearchCriteria criteria) throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent,
-         IdentityObjectSearchCriteria criteria) throws IdentityException
-   { 
-      Collection<IdentityObject> result = new HashSet<IdentityObject>();
-      
-      String relationshipName = relationshipType.getName();
-      List<IdentityObjectRelationship> rels = relationships.get(relationshipName);
-      if( rels != null )
-      {
-         for( IdentityObjectRelationship rel: rels )
-         {
-            String identityName = identity.getName();
-            IdentityObject from = rel.getFromIdentityObject();
-            IdentityObject to = rel.getToIdentityObject();
-            
-            if( from.getName().equals(identityName) || to.getName().equals(identityName) )
-            {
-               result.add( from ); 
-               result.add( to);
-            }
-         }
-      }
-      
-      /*TYPE type = identity.getIdentityType().getType();
-      if( type == TYPE.GROUP )
-      {
-         IdentityObject io = groups.get( identity.getName() );
-         System.out.println( io ); 
-         
-      }
-      throw new RuntimeException( "NYI" );*/
-      return result;
-   }
-
-   public IdentityObjectRelationship createRelationship(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType,
-         String relationshipName, boolean createNames) throws IdentityException
-   { 
-      String relationshipTypeName = relationshipType.getName(); 
-      
-      List<IdentityObjectRelationship> rels;
-      
-      IdentityObjectRelationship  ior = new MemoryIdentityObjectRelationship(relationshipName, 
-                                                      relationshipType, fromIdentity, toIdentity);
-      
-      if( ! relationships.containsKey(relationshipTypeName) )
-      {
-         rels = new ArrayList<IdentityObjectRelationship>();
-         rels.add(ior); 
-         relationships.put(relationshipTypeName, rels ); 
-      }
-      else
-      {
-         rels = relationships.get(relationshipTypeName);
-         rels.add(ior); 
-      }
-      return ior;
-   }
-
-   public void removeRelationship(IdentityStoreInvocationContext invocationCxt, IdentityObject fromIdentity,
-         IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType, String relationshipName)
-         throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void removeRelationships(IdentityStoreInvocationContext invocationCtx, IdentityObject identity1,
-         IdentityObject identity2, boolean named) throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType)
-         throws IdentityException
-   { 
-      Set<IdentityObjectRelationship> set = new HashSet<IdentityObjectRelationship>();
-      
-      String relationshipTypeName = relationshipType.getName();
-      List<IdentityObjectRelationship> rels = relationships.get(relationshipTypeName);
-      if( rels != null )
-      {
-         for( IdentityObjectRelationship ior : rels )
-         {
-            IdentityObject iroFrom = ior.getFromIdentityObject();
-            IdentityObject iroTo = ior.getToIdentityObject();
-            if( iroFrom.getName().equals( fromIdentity.getName() ) && iroTo.getName().equals( toIdentity.getName() ) )
-               set.add(ior);
-         } 
-      }
-      return set;
-   }
-
-   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent, boolean named,
-         String name) throws IdentityException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public String createRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
-         OperationNotSupportedException
-   {  
-      relationshipNames.add(name);
-      return name;
-   }
-
-   public String removeRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
-         OperationNotSupportedException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, String> getRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name)
-         throws IdentityException, OperationNotSupportedException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void setRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name,
-         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void removeRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name, Set<String> properties)
-         throws IdentityException, OperationNotSupportedException
-   {
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, String> getRelationshipProperties(IdentityStoreInvocationContext ctx,
-         IdentityObjectRelationship relationship) throws IdentityException, OperationNotSupportedException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void setRelationshipProperties(IdentityStoreInvocationContext ctx, IdentityObjectRelationship relationship,
-         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void removeRelationshipProperties(IdentityStoreInvocationContext ctx,
-         IdentityObjectRelationship relationship, Set<String> properties) throws IdentityException,
-         OperationNotSupportedException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObjectSearchCriteria criteria)
-         throws IdentityException, OperationNotSupportedException
-   {   
-      return Collections.unmodifiableSet( relationshipNames );
-   }
-
-   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObject identity,
-         IdentityObjectSearchCriteria criteria) throws IdentityException, OperationNotSupportedException
-   {    
-      Set<String> result = new TreeSet<String>();
-      
-      String identityName = identity.getName();
-      
-      if( identityName == null )
-         throw new IllegalStateException( "Identity Name null" );
-      
-      Set<String> keys =  relationships.keySet();
-      for( String key : keys )
-      {
-         List<IdentityObjectRelationship> iors = relationships.get(key);
-         for( IdentityObjectRelationship ior: iors )
-         {
-            if( ior.getName() == null )
-               continue;
-            
-            String fromID = ior.getFromIdentityObject().getName();
-            String toID = ior.getToIdentityObject().getName();
-             
-            if( fromID.equals( identityName) || toID.equals( identityName ))
-                result.add(ior.getName());   
-         }
-      }
-      return result;
-   }
-
-   public boolean validateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
-         IdentityObjectCredential credential) throws IdentityException
-   {   
-      return false;
-   }
-
-   public void updateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
-         IdentityObjectCredential credential) throws IdentityException
-   { 
-      throw new RuntimeException( "NYI" );
-   }
-}
\ No newline at end of file

Deleted: idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -1,378 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2011, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors. 
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.picketlink.idm.impl.store.memory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.picketlink.idm.common.exception.IdentityException;
-import org.picketlink.idm.core.factories.IdentityFactory;
-import org.picketlink.idm.spi.configuration.IdentityRepositoryConfigurationContext;
-import org.picketlink.idm.spi.configuration.IdentityStoreConfigurationContext;
-import org.picketlink.idm.spi.configuration.metadata.IdentityConfigurationMetaData;
-import org.picketlink.idm.spi.configuration.metadata.IdentityObjectAttributeMetaData;
-import org.picketlink.idm.spi.configuration.metadata.IdentityRepositoryConfigurationMetaData;
-import org.picketlink.idm.spi.configuration.metadata.IdentityStoreConfigurationMetaData;
-import org.picketlink.idm.spi.exception.OperationNotSupportedException;
-import org.picketlink.idm.spi.model.IdentityObject;
-import org.picketlink.idm.spi.model.IdentityObjectAttribute;
-import org.picketlink.idm.spi.model.IdentityObjectCredential;
-import org.picketlink.idm.spi.model.IdentityObjectRelationship;
-import org.picketlink.idm.spi.model.IdentityObjectRelationshipType;
-import org.picketlink.idm.spi.model.IdentityObjectType;
-import org.picketlink.idm.spi.repository.IdentityStoreRepository;
-import org.picketlink.idm.spi.search.IdentityObjectSearchCriteria;
-import org.picketlink.idm.spi.store.AttributeStore;
-import org.picketlink.idm.spi.store.FeaturesMetaData;
-import org.picketlink.idm.spi.store.IdentityObjectSearchCriteriaType;
-import org.picketlink.idm.spi.store.IdentityStore;
-import org.picketlink.idm.spi.store.IdentityStoreInvocationContext;
-import org.picketlink.idm.spi.store.IdentityStoreSession;
-
-/**
- * A {@link IdentityStoreRepository} that resides in memory
- * @author Anil.Saldhana at redhat.com
- * @since Feb 14, 2011
- */
-public class MemoryIdentityStoreRepository implements IdentityStoreRepository
-{ 
-   private static final long serialVersionUID = 1L;
-
-   protected String id = null;
-   
-   protected IdentityStore store;
-   
-   protected IdentityConfigurationMetaData md;
-   
-   protected IdentityRepositoryConfigurationMetaData repoMD = null;
-   
-   protected IdentityStoreConfigurationMetaData storeMD = null;
-   
-   private static Set<IdentityObjectSearchCriteriaType> supportedIdentityObjectSearchCriteria =
-      new HashSet<IdentityObjectSearchCriteriaType>();
-
-   private static Set<String> supportedCredentialTypes = new HashSet<String>();
-   
-   public static final String CREDENTIAL_TYPE_PASSWORD = "PASSWORD";
-
-   public static final String CREDENTIAL_TYPE_BINARY = "BINARY";
-   
-   static {
-      // List all supported criteria classes
-
-      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.ATTRIBUTE_FILTER);
-      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.NAME_FILTER);
-      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.PAGE);
-      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.SORT);
-
-      // credential types supported by this impl
-      supportedCredentialTypes.add(CREDENTIAL_TYPE_PASSWORD);
-      supportedCredentialTypes.add(CREDENTIAL_TYPE_BINARY);
-
-   }
-
-   
-   public MemoryIdentityStoreRepository( String id )
-   {
-      this.id = id;
-      store = new MemoryIdentityStore(id);
-   }
-    
-   public String getId()
-   {
-      return id;
-   }
-
-   public FeaturesMetaData getSupportedFeatures()
-   {   
-      return store.getSupportedFeatures();
-   }
-
-   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
-         IdentityObjectType identityObjectType) throws IdentityException
-   {    
-      return store.createIdentityObject(invocationCtx, name, identityObjectType);
-   }
-
-   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
-         IdentityObjectType identityObjectType, Map<String, String[]> attributes) throws IdentityException
-   {
-      return store.createIdentityObject(invocationCtx, name, identityObjectType, attributes ); 
-   }
-
-   public void removeIdentityObject(IdentityStoreInvocationContext invocationCtx, IdentityObject identity)
-         throws IdentityException
-   { 
-      store.removeIdentityObject(invocationCtx, identity);
-   }
-
-   public int getIdentityObjectsCount(IdentityStoreInvocationContext invocationCtx, IdentityObjectType identityType)
-         throws IdentityException
-   {   
-      return store.getIdentityObjectsCount(invocationCtx, identityType);
-   }
-
-   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String name,
-         IdentityObjectType identityObjectType) throws IdentityException
-   {  
-      return store.findIdentityObject(invocationContext, name, identityObjectType ); 
-   }
-
-   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String id)
-         throws IdentityException
-   {  
-      return store.findIdentityObject(invocationContext, id); 
-   }
-
-   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCtx,
-         IdentityObjectType identityType, IdentityObjectSearchCriteria criteria) throws IdentityException
-   {  
-      return store.findIdentityObject(invocationCtx, identityType, criteria);
-   }
-
-   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent,
-         IdentityObjectSearchCriteria criteria) throws IdentityException
-   {   
-      return store.findIdentityObject(invocationCxt, identity, relationshipType, parent, criteria);
-   }
-
-   public IdentityObjectRelationship createRelationship(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType,
-         String relationshipName, boolean createNames) throws IdentityException
-   {    
-      return store.createRelationship(invocationCxt, fromIdentity, toIdentity, relationshipType, relationshipName, createNames);
-   }
-
-   public void removeRelationship(IdentityStoreInvocationContext invocationCxt, IdentityObject fromIdentity,
-         IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType, String relationshipName)
-         throws IdentityException
-   { 
-      store.removeRelationship(invocationCxt, fromIdentity, toIdentity, relationshipType, relationshipName);
-   }
-
-   public void removeRelationships(IdentityStoreInvocationContext invocationCtx, IdentityObject identity1,
-         IdentityObject identity2, boolean named) throws IdentityException
-   { 
-      store.removeRelationships(invocationCtx, identity1, identity2, named);
-   }
-
-   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType)
-         throws IdentityException
-   {   
-      return store.resolveRelationships(invocationCxt, fromIdentity, toIdentity, relationshipType);
-   }
-
-   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
-         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent, boolean named,
-         String name) throws IdentityException
-   {    
-      return store.resolveRelationships(invocationCxt, identity, relationshipType, parent, named, name );
-   }
-
-   public String createRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
-         OperationNotSupportedException
-   {  
-      return store.createRelationshipName(ctx, name); 
-   }
-
-   public String removeRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
-         OperationNotSupportedException
-   {   
-      return store.removeRelationshipName(ctx, name);
-   }
-
-   public Map<String, String> getRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name)
-         throws IdentityException, OperationNotSupportedException
-   {  
-      return store.getRelationshipNameProperties(ctx, name); 
-   }
-
-   public void setRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name,
-         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
-   { 
-      store.setRelationshipNameProperties(ctx, name, properties);
-   }
-
-   public void removeRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name, Set<String> properties)
-         throws IdentityException, OperationNotSupportedException
-   { 
-      store.removeRelationshipNameProperties(ctx, name, properties);
-   }
-
-   public Map<String, String> getRelationshipProperties(IdentityStoreInvocationContext ctx,
-         IdentityObjectRelationship relationship) throws IdentityException, OperationNotSupportedException
-   {   
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void setRelationshipProperties(IdentityStoreInvocationContext ctx, IdentityObjectRelationship relationship,
-         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
-   {
-      
-
-   }
-
-   public void removeRelationshipProperties(IdentityStoreInvocationContext ctx,
-         IdentityObjectRelationship relationship, Set<String> properties) throws IdentityException,
-         OperationNotSupportedException
-   { 
-   }
-
-   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObjectSearchCriteria criteria)
-         throws IdentityException, OperationNotSupportedException
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObject identity,
-         IdentityObjectSearchCriteria criteria) throws IdentityException, OperationNotSupportedException
-   {    
-      return store.getRelationshipNames(ctx, identity, criteria);
-   }
-
-   public boolean validateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
-         IdentityObjectCredential credential) throws IdentityException
-   {   
-      return false;
-   }
-
-   public void updateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
-         IdentityObjectCredential credential) throws IdentityException
-   { 
-   }
-
-   public Set<String> getSupportedAttributeNames(IdentityStoreInvocationContext invocationContext,
-         IdentityObjectType identityType) throws IdentityException
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, IdentityObjectAttributeMetaData> getAttributesMetaData(
-         IdentityStoreInvocationContext invocationContext, IdentityObjectType identityType)
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, IdentityObjectAttribute> getAttributes(IdentityStoreInvocationContext invocationContext,
-         IdentityObject identity) throws IdentityException
-   {   
-      return store.getAttributes( invocationContext, identity);
-   }
-
-   public IdentityObjectAttribute getAttribute(IdentityStoreInvocationContext invocationContext,
-         IdentityObject identity, String name) throws IdentityException
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public void updateAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
-         IdentityObjectAttribute[] attributes) throws IdentityException
-   { 
-   }
-
-   public void addAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
-         IdentityObjectAttribute[] attributes) throws IdentityException
-   {   
-      store.addAttributes(  invocationCtx,   identity,  attributes);
-   }
-
-   public void removeAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
-         String[] attributeNames) throws IdentityException
-   { 
-      store.removeAttributes(invocationCtx, identity, attributeNames);
-   }
-
-   public IdentityObject findIdentityObjectByUniqueAttribute(IdentityStoreInvocationContext invocationCtx,
-         IdentityObjectType identityObjectType, IdentityObjectAttribute attribute) throws IdentityException
-   {  
-      return store.findIdentityObjectByUniqueAttribute(invocationCtx, identityObjectType, attribute); 
-   }
-
-   public IdentityStoreSession createIdentityStoreSession() throws IdentityException
-   {   
-      return store.createIdentityStoreSession(); 
-   }
-
-   public IdentityStoreSession createIdentityStoreSession(Map<String, Object> sessionOptions) throws IdentityException
-   { 
-      return new MemoryIdentityStoreSession();
-   }
-
-   public void bootstrap(IdentityRepositoryConfigurationContext configurationContext,
-         Map<String, IdentityStore> bootstrappedIdentityStores, Map<String, AttributeStore> bootstrappedAttributeStores)
-         throws IdentityException
-   { 
-      repoMD = configurationContext.getRepositoryConfigurationMetaData(); 
-      storeMD =  configurationContext.getConfigurationMetaData().getIdentityStores().get(0);
-   }
-   
-
-   public void bootstrap(IdentityStoreConfigurationContext configurationContext) throws IdentityException
-   { 
-      storeMD = configurationContext.getStoreConfigurationMetaData();
-   }
-
-   public Set<IdentityStore> getConfiguredIdentityStores()
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Set<AttributeStore> getConfiguredAttributeStores()
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, IdentityStore> getIdentityStoreMappings()
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public Map<String, AttributeStore> getAttributeStoreMappings()
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public IdentityStore getIdentityStore(IdentityObjectType identityObjectType) throws IdentityException
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-
-   public AttributeStore getAttributeStore(IdentityObjectType identityObjectType) throws IdentityException
-   {   
-      
-      throw new RuntimeException( "NYI" );
-   }
-}
\ No newline at end of file

Deleted: idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/picketlink-idm-core/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -1,88 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2011, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors. 
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.picketlink.idm.impl.store.memory;
-
-import org.picketlink.idm.api.IdentitySession;
-import org.picketlink.idm.common.exception.IdentityException;
-import org.picketlink.idm.spi.store.IdentityStoreSession;
-
-/**
- * A {@link IdentitySession} for memory
- * @author Anil.Saldhana at redhat.com
- * @since Feb 14, 2011
- */
-public class MemoryIdentityStoreSession implements IdentityStoreSession
-{
-
-   public Object getSessionContext() throws IdentityException
-   { 
-      return null;
-   }
-
-   public void close() throws IdentityException
-   {    
-   }
-
-   public void save() throws IdentityException
-   { 
-   }
-
-   public void clear() throws IdentityException
-   { 
-   }
-
-   public boolean isOpen()
-   {
-      
-      return false;
-   }
-
-   public boolean isTransactionSupported()
-   {
-      
-      return false;
-   }
-
-   public void startTransaction()
-   {
-      
-      
-   }
-
-   public void commitTransaction()
-   {
-      
-      
-   }
-
-   public void rollbackTransaction()
-   {
-      
-      
-   }
-
-   public boolean isTransactionActive()
-   {
-      
-      return false;
-   } 
-}
\ No newline at end of file

Deleted: idm/branches/2.0.0/picketlink-idm-core/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-core/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/picketlink-idm-core/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -1,454 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2011, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors. 
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.picketlink.test.idm.api.model;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Collection;
-import java.util.Map;
-
-import org.junit.Test;
-import org.picketlink.idm.api.Attribute;
-import org.picketlink.idm.api.AttributesManager;
-import org.picketlink.idm.api.Group;
-import org.picketlink.idm.api.IdentitySession;
-import org.picketlink.idm.api.IdentitySessionFactory;
-import org.picketlink.idm.api.PersistenceManager;
-import org.picketlink.idm.api.RelationshipManager;
-import org.picketlink.idm.api.RoleManager;
-import org.picketlink.idm.api.RoleType;
-import org.picketlink.idm.api.User;
-import org.picketlink.idm.api.cfg.IdentityConfiguration;
-import org.picketlink.idm.common.p3p.P3PConstants;
-import org.picketlink.idm.core.factories.IdentityFactory;
-import org.picketlink.idm.impl.api.SimpleAttribute;
-
-/**
- * Unit test a typical corporate model
- * @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
- * @author Anil.Saldhana at redhat.com
- * @since Feb 14, 2011
- */
-public class CorporateModelUnitTestCase
-{
-   private String sampleOrganizationRealmName = "realm://memory";
-
-   String configFileName = "configs/memory-config.xml";
-   
-   
-   @Test
-   public void testModel() throws Exception
-   {
-      IdentityConfiguration config = IdentityFactory.createConfiguration( configFileName );
-      assertNotNull( config );
-      IdentitySessionFactory sessionFactory = config.buildIdentitySessionFactory();
-      assertNotNull( sessionFactory );    
-      
-      // GroupType
-
-      String ORGANIZATION = "ORGANIZATION";
-      String ORGANIZATION_UNIT = "ORGANIZATION_UNIT";
-      String DIVISION = "DIVISION";
-      String DEPARTMENT = "DEPARTMENT";
-      String PROJECT = "PROJECT";
-      String PEOPLE = "PEOPLE";
- 
-
-      IdentitySession session = sessionFactory .createIdentitySession( sampleOrganizationRealmName );
- 
-
-      begin();
-
-      // Organization structure
-
-      PersistenceManager persistenceManager = session.getPersistenceManager();
-      Group rhOrg = persistenceManager.createGroup("RedHat", ORGANIZATION);
-
-      Group jbossDivision = persistenceManager.createGroup("JBoss", DIVISION);
-      Group rhelDivision = persistenceManager.createGroup("RHEL", DIVISION);
-
-      RelationshipManager relationshipManager = session.getRelationshipManager();
-      relationshipManager.associateGroups(rhOrg, jbossDivision);
-      relationshipManager.associateGroups(rhOrg, rhelDivision);
-
-      Group itDepartment = persistenceManager.createGroup("IT", DEPARTMENT);
-      Group hrDepartment = persistenceManager.createGroup("HR", DEPARTMENT);
-
-      relationshipManager.associateGroups(jbossDivision, itDepartment);
-      relationshipManager.associateGroups(jbossDivision, hrDepartment);
-
-      Group rndDepartment = persistenceManager.createGroup("RnD", DEPARTMENT); 
-
-      relationshipManager.associateGroups(itDepartment, rndDepartment);
-
-      Group projectsOU = persistenceManager.createGroup("Projects", ORGANIZATION_UNIT);
-      Group commonFrameworksOU = persistenceManager.createGroup("Common Frameworks", ORGANIZATION_UNIT);
-
-      relationshipManager.associateGroups(rndDepartment, projectsOU);
-
-      // Projects
-
-      Group portalProject = persistenceManager.createGroup("Portal", PROJECT);
-      Group soaProject = persistenceManager.createGroup("SOA", PROJECT);
-      Group jbpmProject = persistenceManager.createGroup("jBPM", PROJECT);
-      Group seamProject = persistenceManager.createGroup("Seam", PROJECT);
-      Group asProject = persistenceManager.createGroup("AS", PROJECT);
-      Group securityProject = persistenceManager.createGroup("Security", PROJECT);
-
-      relationshipManager.associateGroups(projectsOU, portalProject);
-      relationshipManager.associateGroups(projectsOU, soaProject);
-      relationshipManager.associateGroups(projectsOU, jbpmProject);
-      relationshipManager.associateGroups(projectsOU, asProject);
-      relationshipManager.associateGroups(projectsOU, seamProject);
-
-      // Check...
-      assertTrue(relationshipManager.isAssociated(projectsOU, portalProject));
-      assertTrue(relationshipManager.isAssociated(projectsOU, soaProject));
-      assertTrue(relationshipManager.isAssociated(projectsOU, jbpmProject));
-      assertTrue(relationshipManager.isAssociated(projectsOU, asProject));
-      assertTrue(relationshipManager.isAssociated(projectsOU, seamProject));
-
-      // Portal is part of common frameworks
-      relationshipManager.associateGroups(commonFrameworksOU, portalProject);
-
-      // People
-
-      Group employeesGroup = persistenceManager.createGroup("Employees", PEOPLE);
-
-      // Management
-
-      User theuteUser = persistenceManager.createUser("theute");
-      User mlittleUser = persistenceManager.createUser("mlittle");
-      User bgeorgesUser = persistenceManager.createUser("bgeorges");
-      User asaldhanaUser = persistenceManager.createUser("asaldhana");
-      User janderseUser = persistenceManager.createUser("janderse");
-
-       // Portal Team
-
-      User bdawidowUser = persistenceManager.createUser("bdawidow");
-      User claprunUser = persistenceManager.createUser("claprun");
-      User whalesUser = persistenceManager.createUser("whales");
-      User sshahUser = persistenceManager.createUser("sshah");
-      User mwringeUser = persistenceManager.createUser("mwringe");
-
-      // Store as employees
-
-      relationshipManager.associateUser(employeesGroup, theuteUser);
-      relationshipManager.associateUser(employeesGroup, mlittleUser);
-      relationshipManager.associateUser(employeesGroup, asaldhanaUser);
-      relationshipManager.associateUser(employeesGroup, bdawidowUser);
-      relationshipManager.associateUser(employeesGroup, claprunUser);
-      relationshipManager.associateUser(employeesGroup, whalesUser);
-      relationshipManager.associateUser(employeesGroup, sshahUser);
-      relationshipManager.associateUser(employeesGroup, mwringeUser);
-
-      // Portal team for management purposes
-
-      Group portalTeamGroup = persistenceManager.createGroup("Portal Team", PEOPLE);
-      relationshipManager.associateUser(portalTeamGroup, bdawidowUser);
-      relationshipManager.associateUser(portalTeamGroup, claprunUser);
-      relationshipManager.associateUser(portalTeamGroup, whalesUser);
-      relationshipManager.associateUser(portalTeamGroup, sshahUser);
-      relationshipManager.associateUser(portalTeamGroup, mwringeUser);
-
-      // Portal team is under common frameworks
-
-      relationshipManager.associateGroups(commonFrameworksOU, portalTeamGroup);
-
-      // Role Types
-
-      RoleManager roleManager = session.getRoleManager();
-      RoleType developerRT = roleManager.createRoleType("Developer");
-      RoleType managerRT = roleManager.createRoleType("Manager");
-      RoleType leadDeveloperRT = roleManager.createRoleType("Lead Developer");
-      RoleType productManagerRT = roleManager.createRoleType("Product Manager");
-
-      // Assign roles
-
-      // Common frameworks manager
-
-      roleManager.createRole(managerRT, bgeorgesUser, commonFrameworksOU);
-
-      // Portal developers
-
-      roleManager.createRole(developerRT, theuteUser, portalProject);
-      roleManager.createRole(developerRT, bdawidowUser, portalProject);
-      roleManager.createRole(developerRT, claprunUser, portalProject);
-      roleManager.createRole(developerRT, whalesUser, portalProject);
-      roleManager.createRole(developerRT, sshahUser, portalProject);
-      roleManager.createRole(developerRT, mwringeUser, portalProject);
-
-      // Portal management
-      roleManager.createRole(leadDeveloperRT, theuteUser, portalProject);
-      roleManager.createRole(managerRT, theuteUser, portalTeamGroup);
-      roleManager.createRole(productManagerRT, janderseUser, portalProject);
-
-      // SOA
-
-      roleManager.createRole(developerRT, mlittleUser, portalProject);
-      roleManager.createRole(productManagerRT, mlittleUser, portalProject);
-
-      // AS & Security
-
-      roleManager.createRole(developerRT, asaldhanaUser, asProject);
-      roleManager.createRole(developerRT, asaldhanaUser, securityProject);
-      roleManager.createRole(leadDeveloperRT, asaldhanaUser, securityProject);
-
-
-      // Check what RoleTypes has user theute
-      Collection<RoleType> roleTypes = roleManager.findUserRoleTypes(theuteUser);
-      assertEquals(3, roleTypes.size());
-      assertTrue(roleTypes.contains(developerRT));
-      assertTrue(roleTypes.contains(leadDeveloperRT));
-      assertTrue(roleTypes.contains(managerRT));
-      assertFalse(roleTypes.contains(productManagerRT));
-
-      assertTrue(roleManager.hasRole(theuteUser, portalProject, developerRT));
-      assertTrue(roleManager.hasRole(theuteUser, portalProject, leadDeveloperRT));
-      assertTrue(roleManager.hasRole(theuteUser, portalTeamGroup, managerRT));
-
-      // Check where anil is Lead Developer and where Developer
-
-      roleTypes = roleManager.findUserRoleTypes(asaldhanaUser);
-      assertEquals(2, roleTypes.size());
-      assertTrue(roleTypes.contains(developerRT));
-      assertTrue(roleTypes.contains(leadDeveloperRT));
-
-      roleTypes = roleManager.findRoleTypes(asaldhanaUser, securityProject);
-      assertEquals(2, roleTypes.size());
-      assertTrue(roleTypes.contains(leadDeveloperRT));
-
-      roleTypes = roleManager.findRoleTypes(asaldhanaUser, asProject);
-      assertEquals(1, roleTypes.size());
-      assertTrue(roleTypes.contains(developerRT));
-
-      // and simpler...
-      assertTrue(roleManager.hasRole(asaldhanaUser, asProject, developerRT));
-
-      // Assert relationships
-
-      Collection<User> identities = relationshipManager.findAssociatedUsers(portalTeamGroup, false);
-      assertEquals(5, identities.size());
-      assertTrue(identities.contains(claprunUser));
-      assertTrue(identities.contains(mwringeUser));
-      assertTrue(identities.contains(sshahUser));
-      assertTrue(identities.contains(whalesUser));
-      assertTrue(identities.contains(bdawidowUser));
-
-      Collection<Group> groups = relationshipManager.findAssociatedGroups(rndDepartment, PROJECT, true, false);
-      assertEquals(0, groups.size());
-
-      // Check to which group Anil belongs
-      groups = relationshipManager.findAssociatedGroups(asaldhanaUser, PEOPLE);
-      assertEquals(1, groups.size());
-      assertTrue(groups.contains(employeesGroup));
-
-      // Now check sshah
-      groups = relationshipManager.findAssociatedGroups(sshahUser, PEOPLE);
-      assertEquals(2, groups.size());
-      assertTrue(groups.contains(employeesGroup));
-      assertTrue(groups.contains(portalTeamGroup));
-
-
-
-      
-      // User attributes
-      Attribute[] userInfo = new Attribute[]
-         {
-            new SimpleAttribute(P3PConstants.INFO_USER_NAME_GIVEN, new String[]{"Boleslaw"}),
-            new SimpleAttribute(P3PConstants.INFO_USER_NAME_FAMILY, new String[]{"Dawidowicz"}),
-            //new SimpleAttribute("picture", new byte[][]{picture}),
-            new SimpleAttribute("email", new String[]{"bd at example.com"})
-         };
-
-      AttributesManager attributesManager = session.getAttributesManager();
-      attributesManager.addAttributes(bdawidowUser, userInfo);
-
-      Map<String, Attribute> attributes = attributesManager.getAttributes(bdawidowUser);
-      assertEquals(3, attributes.keySet().size());
-      assertEquals("Dawidowicz", (attributes.get(P3PConstants.INFO_USER_NAME_FAMILY)).getValue());
-      
-      /* // Check readOnly attribute change
-      userInfo = new Attribute[]
-         {
-            new SimpleAttribute("description", new String[]{"some description"})
-         };
-
-      attributesManager.addAttributes(bdawidowUser, userInfo);
-      attributesManager.updateAttributes(bdawidowUser, userInfo);
-
-      attributes = attributesManager.getAttributes(bdawidowUser);
-      assertEquals(3, attributes.keySet().size());
-      assertEquals(null, (attributes.get("description")));
-
-      // Generate random binary data for binary attribute
-      Random random = new Random();
-
-      // Check that binary attribute picture is mapped
-      AttributeDescription attributeDescription = attributesManager.getAttributeDescription(bdawidowUser, "picture");
-
-      if (attributeDescription != null && attributeDescription.getType().equals("binary"))
-      {
-
-         // 900 kilobytes
-         byte[] picture = new byte[921600];
-         random.nextBytes(picture);
-
-         userInfo = new Attribute[]
-         {
-            new SimpleAttribute("picture", new byte[][]{picture}),
-         };
-
-
-         attributesManager.addAttributes(bdawidowUser, userInfo);
-
-         attributes = attributesManager.getAttributes(bdawidowUser);
-         assertEquals(4, attributes.keySet().size());
-         assertEquals("Dawidowicz", (attributes.get(P3PConstants.INFO_USER_NAME_FAMILY)).getValue());
-         assertTrue(Arrays.equals((byte[])attributes.get("picture").getValue(), picture));
-
-         // Update
-
-         // 500 kilobytes
-         picture = new byte[50600];
-         random.nextBytes(picture);
-
-         userInfo = new Attribute[]
-         {
-            new SimpleAttribute("picture", new byte[][]{picture}),
-         };
-
-
-         attributesManager.updateAttributes(bdawidowUser, userInfo);
-
-         attributes = attributesManager.getAttributes(bdawidowUser);
-         assertEquals(4, attributes.keySet().size());
-         assertTrue(Arrays.equals((byte[])attributes.get("picture").getValue(), picture));
-      }
-
-
-      // Find user by email
-      assertNull(attributesManager.findUserByUniqueAttribute("email", "toto"));
-      User user = attributesManager.findUserByUniqueAttribute("email", "bd at example.com");
-      assertEquals(bdawidowUser, user);
-
-
-      // If email is configured as unique it should not be possible to set same value for different user
-      
-      attributeDescription = attributesManager.getAttributeDescription(bdawidowUser, "email");
-
-      if (attributeDescription != null && attributeDescription.isUnique())
-      {
-
-
-         // check if same unique email can be used for other user
-         try
-         {
-            userInfo = new Attribute[]
-               {
-                  new SimpleAttribute("email", new String[]{"bd at example.com"})
-               };
-
-            attributesManager.addAttributes(theuteUser, userInfo);
-            fail();
-         }
-         catch (IdentityException e)
-         {
-            // expected
-         }
-      }
-
-
-
-      // Credential
-      User anotherOne = bdawidowUser; //session.getPersistenceManager().createUser("blah1");
-
-      if (attributesManager.isCredentialTypeSupported(PasswordCredential.TYPE))
-      {
-
-         // There is a known issue that on some LDAP servers (MSAD at least) old password can
-         // still be used for some time together with the new one. Because of this testsuite cannot
-         // assert previously set password values
-
-         // #1
-         attributesManager.updatePassword(anotherOne, "Password2000");
-         assertTrue(attributesManager.validatePassword(anotherOne, "Password2000"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2001"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2002"));
-
-         // #1
-         attributesManager.updatePassword(anotherOne, "Password2002");
-         assertTrue(attributesManager.validatePassword(anotherOne, "Password2002"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2001"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "wirdPasswordValue"));
-//         assertFalse(session.getAttributesManager().validatePassword(anotherOne, "Password2000"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2003"));
-
-
-         // #1
-         attributesManager.updatePassword(anotherOne, "Password2003");
-         assertTrue(attributesManager.validatePassword(anotherOne, "Password2003"));
-//         assertFalse(session.getAttributesManager().validatePassword(anotherOne, "Password2000"));
-//         assertFalse(session.getAttributesManager().validatePassword(anotherOne, "Password2002"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2005"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2006"));
-         assertFalse(attributesManager.validatePassword(anotherOne, "Password2007"));
-
-
-         // #2
-         Credential password = new PasswordCredential("SuperPassword2345");
-         attributesManager.updateCredential(anotherOne, password);
-         assertTrue(attributesManager.validateCredentials(anotherOne, new Credential[]{password}));
-
-         // #3
-      }
-
-      if (attributesManager.isCredentialTypeSupported(BinaryCredential.TYPE))
-      {
-         // 500 kilobytes
-         byte[] cert = new byte[512000];
-         random.nextBytes(cert);
-         Credential binaryCredential = new BinaryCredential(cert);
-         attributesManager.updateCredential(anotherOne, binaryCredential);
-         assertTrue(attributesManager.validateCredentials(anotherOne, new Credential[]{binaryCredential}));
-      }
-
-      persistenceManager.createUser("!(06_13_07 Sche) !(0");
-
-      User u1 = persistenceManager.findUser("!(06_13_07 Sche) !(0");
-
-      assertNotNull(u1);*/
-
-
-      commit();
-   }
-   
-   
-   public void begin()
-   {}
-   
-   public void commit()
-   {}
-}
\ No newline at end of file

Deleted: idm/branches/2.0.0/picketlink-idm-core/src/test/resources/configs/memory-config.xml
===================================================================
--- idm/branches/2.0.0/picketlink-idm-core/src/test/resources/configs/memory-config.xml	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/picketlink-idm-core/src/test/resources/configs/memory-config.xml	2011-02-25 19:12:09 UTC (rev 777)
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jboss-identity xmlns="urn:picketlink:idm:config:v1_0_0_ga"
-                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                xsi:schemaLocation="urn:picketlink:idm:config:v1_0_0_ga identity-config.xsd">
-    <realms>
-        <realm>
-            <id>realm://memory</id>
-            <repository-id-ref>Memory based repo</repository-id-ref>
-            <identity-type-mappings>
-                <user-mapping>USER</user-mapping>
-            </identity-type-mappings>
-        </realm>
-    </realms>
-    <repositories>
-        <repository>
-            <id>Memory based repo</id>
-            <class>org.picketlink.idm.impl.store.memory.MemoryIdentityStoreRepository</class>
-            <external-config/>
-            <default-identity-store-id>MemoryStore</default-identity-store-id>
-            <default-attribute-store-id>MemoryStore</default-attribute-store-id>
-            <!--<identity-store-mappings>-->
-                <!--<identity-store-mapping>-->
-                    <!--<identity-store-id>HibernateTestStore</identity-store-id>-->
-                    <!--<identity-object-types/>-->
-                    <!--<options/>-->
-                <!--</identity-store-mapping>-->
-            <!--</identity-store-mappings>-->
-        </repository>
-    </repositories>
-    <stores>
-        <attribute-stores/>
-        <identity-stores>
-            <identity-store>
-                <id>MemoryStore</id>
-                <class>org.picketlink.idm.impl.store.memory.MemoryIdentityStore</class>
-                <external-config/>
-                <supported-relationship-types>
-                    <relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
-                    <relationship-type>JBOSS_IDENTITY_ROLE</relationship-type>
-                </supported-relationship-types>
-                <supported-identity-object-types>
-                    <identity-object-type>
-                        <name>USER</name>
-                        <relationships/>
-                        <credentials>
-                            <credential-type>PASSWORD</credential-type>
-                            <credential-type>BINARY</credential-type>
-                        </credentials>
-                        <attributes/>
-                        <options/>
-                    </identity-object-type>
-                    <identity-object-type>
-                        <name>GROUP</name>
-                        <relationships/>
-                        <credentials/>
-                        <attributes/>
-                        <options/>
-                    </identity-object-type>
-                    <identity-object-type>
-                        <name>ORGANIZATION</name>
-                        <relationships>
-                            <relationship>
-                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
-                                <identity-object-type-ref>USER</identity-object-type-ref>
-                            </relationship>
-                            <relationship>
-                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
-                                <identity-object-type-ref>ROLE</identity-object-type-ref>
-                            </relationship>
-                            <relationship>
-                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
-                                <identity-object-type-ref>GROUP</identity-object-type-ref>
-                            </relationship>
-                            <relationship>
-                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
-                                <identity-object-type-ref>ORGANIZATION</identity-object-type-ref>
-                            </relationship>
-                        </relationships>
-                        <credentials/>
-                        <attributes/>
-                        <options/>
-                    </identity-object-type>
-                    <identity-object-type>
-                        <name>ROLE</name>
-                        <relationships>
-                            <relationship>
-                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
-                                <identity-object-type-ref>USER</identity-object-type-ref>
-                            </relationship>
-                        </relationships>
-                        <credentials/>
-                        <attributes/>
-                        <options/>
-                    </identity-object-type>
-                </supported-identity-object-types>
-                <options>
-                    <!--<option>-->
-                        <!--<name>hibernateConfiguration</name>-->
-                        <!--<value>hibernate-jboss-identity.cfg.xml</value>-->
-                    <!--</option>-->
-                    <option>
-                        <name>hibernateSessionFactoryJNDIName</name>
-                        <value>java:/jbossidentity/HibernateStoreSessionFactory</value>
-                    </option>
-                    <option>
-                        <name>populateRelationshipTypes</name>
-                        <value>true</value>
-                    </option>
-                    <option>
-                        <name>populateIdentityObjectTypes</name>
-                        <value>true</value>
-                    </option>
-                    <option>
-                        <name>isRealmAware</name>
-                        <value>false</value>
-                    </option>
-                    <option>
-                        <name>allowNotDefinedAttributes</name>
-                        <value>true</value>
-                    </option>
-                </options>
-            </identity-store>
-        </identity-stores>
-    </stores>
-</jboss-identity>
\ No newline at end of file

Added: idm/branches/2.0.0/picketlink-idm-memory/pom.xml
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/pom.xml	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/pom.xml	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,73 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <parent>
+      <groupId>org.picketlink.idm</groupId>
+      <artifactId>picketlink-idm-parent</artifactId>
+      <version>2.0.0-SNAPSHOT</version>
+      <relativePath>../parent</relativePath>
+   </parent>
+   <modelVersion>4.0.0</modelVersion>
+   <artifactId>picketlink-idm-memory</artifactId>
+   <version>2.0.0-SNAPSHOT</version>
+   <packaging>jar</packaging>
+   <name>PicketLink IDM Hibernate</name>
+   <url>http://labs.jboss.org/portal/jbosssecurity/</url>
+   <description>PicketLink IDM Memory Based Identity Store Module</description>
+   <licenses>
+      <license>
+         <name>lgpl</name>
+         <url>http://repository.jboss.com/licenses/lgpl.txt</url>
+      </license>
+   </licenses>
+   <organization>
+      <name>JBoss Inc.</name>
+      <url>http://www.jboss.org</url>
+   </organization>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.picketlink.idm</groupId>
+         <artifactId>picketlink-idm-core</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+
+      <dependency>
+         <groupId>log4j</groupId>
+         <artifactId>log4j</artifactId>
+         <version>1.2.14</version>
+      </dependency>
+
+      <dependency>
+         <groupId>junit</groupId>
+         <artifactId>junit</artifactId>
+         <scope>test</scope>
+      </dependency>
+      
+   </dependencies>
+
+
+
+   <build>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <version>2.4.3</version>
+            <configuration>
+               <systemProperties>
+                  <property>
+                     <name>dataSourceName</name>
+                     <value>${dataSourceName}</value>
+                  </property>
+                  <property>
+                     <name>directoryName</name>
+                     <value>${directoryName}</value>
+                  </property>
+               </systemProperties>
+            </configuration>
+         </plugin>
+
+      </plugins>
+   </build>
+
+
+</project>

Added: idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityObjectRelationship.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,69 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.idm.impl.store.memory;
+
+import org.picketlink.idm.spi.model.IdentityObject;
+import org.picketlink.idm.spi.model.IdentityObjectRelationship;
+import org.picketlink.idm.spi.model.IdentityObjectRelationshipType;
+
+/**
+ * A {@link IdentityObjectRelationship} for use in the
+ * {@link MemoryIdentityStore}
+ * @author Anil.Saldhana at redhat.com
+ * @since Feb 14, 2011
+ */
+public class MemoryIdentityObjectRelationship implements IdentityObjectRelationship
+{
+   private String name;
+   private IdentityObjectRelationshipType type;
+   private IdentityObject to;
+   private IdentityObject from;
+
+   public MemoryIdentityObjectRelationship( String name, IdentityObjectRelationshipType type,  
+         IdentityObject from, IdentityObject to )
+   {
+      this.name = name;
+      this.type = type;
+      this.to = to;
+      this.from = from;
+   }
+
+   public String getName()
+   { 
+      return name;
+   }
+
+   public IdentityObjectRelationshipType getType()
+   {
+      return type;
+   }
+
+   public IdentityObject getFromIdentityObject()
+   { 
+      return from;
+   }
+
+   public IdentityObject getToIdentityObject()
+   { 
+      return to;
+   } 
+}
\ No newline at end of file

Added: idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStore.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,529 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.idm.impl.store.memory;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.picketlink.idm.common.exception.IdentityException;
+import org.picketlink.idm.impl.types.SimpleIdentityObject;
+import org.picketlink.idm.spi.configuration.IdentityStoreConfigurationContext;
+import org.picketlink.idm.spi.configuration.metadata.IdentityObjectAttributeMetaData;
+import org.picketlink.idm.spi.exception.OperationNotSupportedException;
+import org.picketlink.idm.spi.model.IdentityObject;
+import org.picketlink.idm.spi.model.IdentityObjectAttribute;
+import org.picketlink.idm.spi.model.IdentityObjectCredential;
+import org.picketlink.idm.spi.model.IdentityObjectCredentialType;
+import org.picketlink.idm.spi.model.IdentityObjectRelationship;
+import org.picketlink.idm.spi.model.IdentityObjectRelationshipType;
+import org.picketlink.idm.spi.model.IdentityObjectType;
+import org.picketlink.idm.spi.model.IdentityObjectType.TYPE;
+import org.picketlink.idm.spi.search.IdentityObjectSearchCriteria;
+import org.picketlink.idm.spi.store.FeaturesMetaData;
+import org.picketlink.idm.spi.store.IdentityObjectSearchCriteriaType;
+import org.picketlink.idm.spi.store.IdentityStore;
+import org.picketlink.idm.spi.store.IdentityStoreInvocationContext;
+import org.picketlink.idm.spi.store.IdentityStoreSession;
+
+/**
+ * An implementation of {@link IdentityStore} that resides in memory
+ * @author Anil.Saldhana at redhat.com
+ * @since Feb 14, 2011
+ */
+public class MemoryIdentityStore implements IdentityStore, Serializable
+{ 
+   private static final long serialVersionUID = 1L;
+   private String id;
+   
+   protected Map<String,IdentityObject> users = new HashMap<String,IdentityObject>();
+   
+   protected Map<String, IdentityObject> roles = new HashMap<String,IdentityObject>();
+   protected Map<String, IdentityObject> groups = new HashMap<String,IdentityObject>();
+   
+   protected Map<String, Set<IdentityObjectAttribute>> attributes = new HashMap<String, Set<IdentityObjectAttribute>>();
+   /**
+    * General hashmap that is keyed by relationship name.
+    */
+   protected Map<String, List<IdentityObjectRelationship>> relationships = new HashMap<String, List<IdentityObjectRelationship>>();
+   
+   protected Set<String> relationshipNames = new TreeSet<String>();
+   
+   public MemoryIdentityStore( String id )
+   {
+      this.id = id;
+   }
+
+   public Set<String> getSupportedAttributeNames(IdentityStoreInvocationContext invocationContext,
+         IdentityObjectType identityType) throws IdentityException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, IdentityObjectAttributeMetaData> getAttributesMetaData(
+         IdentityStoreInvocationContext invocationContext, IdentityObjectType identityType)
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, IdentityObjectAttribute> getAttributes(IdentityStoreInvocationContext invocationContext,
+         IdentityObject identity) throws IdentityException
+   {   
+      Map<String, IdentityObjectAttribute> map = new HashMap<String, IdentityObjectAttribute>();
+      
+      Set<IdentityObjectAttribute> attrs = attributes.get( identity.getName());
+      if( attrs != null )
+      {
+         for( IdentityObjectAttribute ioa: attrs )
+         {
+            map.put(ioa.getName(), ioa );
+         }
+      }
+      return map;
+   }
+
+   public IdentityObjectAttribute getAttribute(IdentityStoreInvocationContext invocationContext,
+         IdentityObject identity, String name) throws IdentityException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void updateAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
+         IdentityObjectAttribute[] attributes) throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void addAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
+         IdentityObjectAttribute[] attributes) throws IdentityException
+   { 
+      Set<IdentityObjectAttribute> set = this.attributes.get( identity.getName() );
+      if( set == null)
+      {
+         set = new HashSet<IdentityObjectAttribute>();
+         this.attributes.put( identity.getName(), set );
+      }
+      set.addAll( Arrays.asList( attributes ));
+   }
+
+   public void removeAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
+         String[] attributeNames) throws IdentityException
+   {
+      throw new RuntimeException( "NYI" );
+   }
+
+   public IdentityObject findIdentityObjectByUniqueAttribute(IdentityStoreInvocationContext invocationCtx,
+         IdentityObjectType identityObjectType, IdentityObjectAttribute attribute) throws IdentityException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public IdentityStoreSession createIdentityStoreSession() throws IdentityException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public IdentityStoreSession createIdentityStoreSession(Map<String, Object> sessionOptions) throws IdentityException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void bootstrap(IdentityStoreConfigurationContext configurationContext) throws IdentityException
+   {  
+   }
+
+   public String getId()
+   {
+      return id;
+   }
+
+   public FeaturesMetaData getSupportedFeatures()
+   { 
+      return new FeaturesMetaData()
+      {
+         public boolean isSearchCriteriaTypeSupported(IdentityObjectType identityObjectType,
+               IdentityObjectSearchCriteriaType storeSearchConstraint)
+         { 
+            return true;
+         }
+         
+         public boolean isRoleNameSearchCriteriaTypeSupported(IdentityObjectSearchCriteriaType constraint)
+         {  
+            return true;
+         }
+         
+         public boolean isRelationshipTypeSupported(IdentityObjectType fromType, IdentityObjectType toType,
+               IdentityObjectRelationshipType relationshipType) throws IdentityException
+         {   
+            return true;
+         }
+         
+         public boolean isRelationshipPropertiesSupported()
+         { 
+            return true;
+         }
+         
+         public boolean isRelationshipNameAddRemoveSupported()
+         { 
+            return true;
+         }
+         
+         public boolean isNamedRelationshipsSupported()
+         { 
+            return true;
+         }
+         
+         public boolean isIdentityObjectTypeSupported(IdentityObjectType identityObjectType)
+         { 
+            return true;
+         }
+         
+         public boolean isIdentityObjectAddRemoveSupported(IdentityObjectType objectType)
+         { 
+            return true;
+         }
+         
+         public boolean isCredentialSupported(IdentityObjectType identityObjectType,
+               IdentityObjectCredentialType credentialType)
+         {   
+            return true;
+         }
+         
+         public Set<String> getSupportedRelationshipTypes()
+         {   
+            return null;
+         }
+         
+         public Set<String> getSupportedIdentityObjectTypes()
+         { 
+            return null;
+         }
+      }; 
+   }
+
+   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
+         IdentityObjectType identityObjectType) throws IdentityException
+   { 
+      if( identityObjectType == null )
+         throw new IllegalArgumentException( "Identity Object Type is null" );
+      
+      IdentityObject io = null;
+      
+      String identityObjectTypeName =  identityObjectType.getName();
+      
+      TYPE type = identityObjectType.getType();
+      
+      if( type == TYPE.GROUP )
+      {
+         io = groups.get(identityObjectTypeName);
+         if( io == null )
+         {
+            io = new SimpleIdentityObject( name, identityObjectType );
+            groups.put(name, io);
+         }  
+      }
+      else if( type == TYPE.USER )
+      {
+         io = users.get(identityObjectTypeName);
+         if( io ==null)
+         {
+            io = new SimpleIdentityObject( name, identityObjectType );
+            users.put( name, io ); 
+         }
+      }
+      else
+      {
+         io = roles.get(identityObjectTypeName);
+         if( io == null )
+         {
+            io = new SimpleIdentityObject( name, identityObjectType );
+            roles.put(identityObjectTypeName, io);
+         }
+      }
+      /*if( identityObjectTypeName.equals( "ORGANIZATION" ) || identityObjectTypeName.equals( "DIVISION" )
+            || identityObjectTypeName.equals( "DEPARTMENT") ||  identityObjectTypeName.equals( "ORGANIZATION_UNIT")
+            || identityObjectTypeName.equals( "PROJECT" ) || identityObjectTypeName.equals( "PEOPLE" ))
+      {
+         io =  generalBucket.get(name);
+         
+         if( io == null )
+         {
+            io = new SimpleIdentityObject( name, identityObjectType );
+            generalBucket.put(name, io);
+         }  
+      } 
+      else if( identityObjectTypeName.equals( "USER" ))
+      {
+         io = users.get( name );
+         if( io == null )
+         {
+            io = new SimpleIdentityObject( name, identityObjectType );
+            users.put(name, io );
+         }
+      }
+      else 
+         throw new RuntimeException( "Unknown type : " + identityObjectTypeName );*/
+      return io;
+   }
+
+   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
+         IdentityObjectType identityObjectType, Map<String, String[]> attributes) throws IdentityException
+   {    
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void removeIdentityObject(IdentityStoreInvocationContext invocationCtx, IdentityObject identity)
+         throws IdentityException
+   {
+      throw new RuntimeException( "NYI" );
+   }
+
+   public int getIdentityObjectsCount(IdentityStoreInvocationContext invocationCtx, IdentityObjectType identityType)
+         throws IdentityException
+   {
+      throw new RuntimeException( "NYI" );
+   }
+
+   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String name,
+         IdentityObjectType identityObjectType) throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String id)
+         throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCtx,
+         IdentityObjectType identityType, IdentityObjectSearchCriteria criteria) throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent,
+         IdentityObjectSearchCriteria criteria) throws IdentityException
+   { 
+      Collection<IdentityObject> result = new HashSet<IdentityObject>();
+      
+      String relationshipName = relationshipType.getName();
+      List<IdentityObjectRelationship> rels = relationships.get(relationshipName);
+      if( rels != null )
+      {
+         for( IdentityObjectRelationship rel: rels )
+         {
+            String identityName = identity.getName();
+            IdentityObject from = rel.getFromIdentityObject();
+            IdentityObject to = rel.getToIdentityObject();
+            
+            if( from.getName().equals(identityName) || to.getName().equals(identityName) )
+            {
+               result.add( from ); 
+               result.add( to);
+            }
+         }
+      }
+      
+      /*TYPE type = identity.getIdentityType().getType();
+      if( type == TYPE.GROUP )
+      {
+         IdentityObject io = groups.get( identity.getName() );
+         System.out.println( io ); 
+         
+      }
+      throw new RuntimeException( "NYI" );*/
+      return result;
+   }
+
+   public IdentityObjectRelationship createRelationship(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType,
+         String relationshipName, boolean createNames) throws IdentityException
+   { 
+      String relationshipTypeName = relationshipType.getName(); 
+      
+      List<IdentityObjectRelationship> rels;
+      
+      IdentityObjectRelationship  ior = new MemoryIdentityObjectRelationship(relationshipName, 
+                                                      relationshipType, fromIdentity, toIdentity);
+      
+      if( ! relationships.containsKey(relationshipTypeName) )
+      {
+         rels = new ArrayList<IdentityObjectRelationship>();
+         rels.add(ior); 
+         relationships.put(relationshipTypeName, rels ); 
+      }
+      else
+      {
+         rels = relationships.get(relationshipTypeName);
+         rels.add(ior); 
+      }
+      return ior;
+   }
+
+   public void removeRelationship(IdentityStoreInvocationContext invocationCxt, IdentityObject fromIdentity,
+         IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType, String relationshipName)
+         throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void removeRelationships(IdentityStoreInvocationContext invocationCtx, IdentityObject identity1,
+         IdentityObject identity2, boolean named) throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType)
+         throws IdentityException
+   { 
+      Set<IdentityObjectRelationship> set = new HashSet<IdentityObjectRelationship>();
+      
+      String relationshipTypeName = relationshipType.getName();
+      List<IdentityObjectRelationship> rels = relationships.get(relationshipTypeName);
+      if( rels != null )
+      {
+         for( IdentityObjectRelationship ior : rels )
+         {
+            IdentityObject iroFrom = ior.getFromIdentityObject();
+            IdentityObject iroTo = ior.getToIdentityObject();
+            if( iroFrom.getName().equals( fromIdentity.getName() ) && iroTo.getName().equals( toIdentity.getName() ) )
+               set.add(ior);
+         } 
+      }
+      return set;
+   }
+
+   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent, boolean named,
+         String name) throws IdentityException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public String createRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
+         OperationNotSupportedException
+   {  
+      relationshipNames.add(name);
+      return name;
+   }
+
+   public String removeRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
+         OperationNotSupportedException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, String> getRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name)
+         throws IdentityException, OperationNotSupportedException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void setRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name,
+         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void removeRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name, Set<String> properties)
+         throws IdentityException, OperationNotSupportedException
+   {
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, String> getRelationshipProperties(IdentityStoreInvocationContext ctx,
+         IdentityObjectRelationship relationship) throws IdentityException, OperationNotSupportedException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void setRelationshipProperties(IdentityStoreInvocationContext ctx, IdentityObjectRelationship relationship,
+         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void removeRelationshipProperties(IdentityStoreInvocationContext ctx,
+         IdentityObjectRelationship relationship, Set<String> properties) throws IdentityException,
+         OperationNotSupportedException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObjectSearchCriteria criteria)
+         throws IdentityException, OperationNotSupportedException
+   {   
+      return Collections.unmodifiableSet( relationshipNames );
+   }
+
+   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObject identity,
+         IdentityObjectSearchCriteria criteria) throws IdentityException, OperationNotSupportedException
+   {    
+      Set<String> result = new TreeSet<String>();
+      
+      String identityName = identity.getName();
+      
+      if( identityName == null )
+         throw new IllegalStateException( "Identity Name null" );
+      
+      Set<String> keys =  relationships.keySet();
+      for( String key : keys )
+      {
+         List<IdentityObjectRelationship> iors = relationships.get(key);
+         for( IdentityObjectRelationship ior: iors )
+         {
+            if( ior.getName() == null )
+               continue;
+            
+            String fromID = ior.getFromIdentityObject().getName();
+            String toID = ior.getToIdentityObject().getName();
+             
+            if( fromID.equals( identityName) || toID.equals( identityName ))
+                result.add(ior.getName());   
+         }
+      }
+      return result;
+   }
+
+   public boolean validateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
+         IdentityObjectCredential credential) throws IdentityException
+   {   
+      return false;
+   }
+
+   public void updateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
+         IdentityObjectCredential credential) throws IdentityException
+   { 
+      throw new RuntimeException( "NYI" );
+   }
+}
\ No newline at end of file

Added: idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreRepository.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,378 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.idm.impl.store.memory;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.picketlink.idm.common.exception.IdentityException;
+import org.picketlink.idm.core.factories.IdentityFactory;
+import org.picketlink.idm.spi.configuration.IdentityRepositoryConfigurationContext;
+import org.picketlink.idm.spi.configuration.IdentityStoreConfigurationContext;
+import org.picketlink.idm.spi.configuration.metadata.IdentityConfigurationMetaData;
+import org.picketlink.idm.spi.configuration.metadata.IdentityObjectAttributeMetaData;
+import org.picketlink.idm.spi.configuration.metadata.IdentityRepositoryConfigurationMetaData;
+import org.picketlink.idm.spi.configuration.metadata.IdentityStoreConfigurationMetaData;
+import org.picketlink.idm.spi.exception.OperationNotSupportedException;
+import org.picketlink.idm.spi.model.IdentityObject;
+import org.picketlink.idm.spi.model.IdentityObjectAttribute;
+import org.picketlink.idm.spi.model.IdentityObjectCredential;
+import org.picketlink.idm.spi.model.IdentityObjectRelationship;
+import org.picketlink.idm.spi.model.IdentityObjectRelationshipType;
+import org.picketlink.idm.spi.model.IdentityObjectType;
+import org.picketlink.idm.spi.repository.IdentityStoreRepository;
+import org.picketlink.idm.spi.search.IdentityObjectSearchCriteria;
+import org.picketlink.idm.spi.store.AttributeStore;
+import org.picketlink.idm.spi.store.FeaturesMetaData;
+import org.picketlink.idm.spi.store.IdentityObjectSearchCriteriaType;
+import org.picketlink.idm.spi.store.IdentityStore;
+import org.picketlink.idm.spi.store.IdentityStoreInvocationContext;
+import org.picketlink.idm.spi.store.IdentityStoreSession;
+
+/**
+ * A {@link IdentityStoreRepository} that resides in memory
+ * @author Anil.Saldhana at redhat.com
+ * @since Feb 14, 2011
+ */
+public class MemoryIdentityStoreRepository implements IdentityStoreRepository
+{ 
+   private static final long serialVersionUID = 1L;
+
+   protected String id = null;
+   
+   protected IdentityStore store;
+   
+   protected IdentityConfigurationMetaData md;
+   
+   protected IdentityRepositoryConfigurationMetaData repoMD = null;
+   
+   protected IdentityStoreConfigurationMetaData storeMD = null;
+   
+   private static Set<IdentityObjectSearchCriteriaType> supportedIdentityObjectSearchCriteria =
+      new HashSet<IdentityObjectSearchCriteriaType>();
+
+   private static Set<String> supportedCredentialTypes = new HashSet<String>();
+   
+   public static final String CREDENTIAL_TYPE_PASSWORD = "PASSWORD";
+
+   public static final String CREDENTIAL_TYPE_BINARY = "BINARY";
+   
+   static {
+      // List all supported criteria classes
+
+      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.ATTRIBUTE_FILTER);
+      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.NAME_FILTER);
+      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.PAGE);
+      supportedIdentityObjectSearchCriteria.add(IdentityObjectSearchCriteriaType.SORT);
+
+      // credential types supported by this impl
+      supportedCredentialTypes.add(CREDENTIAL_TYPE_PASSWORD);
+      supportedCredentialTypes.add(CREDENTIAL_TYPE_BINARY);
+
+   }
+
+   
+   public MemoryIdentityStoreRepository( String id )
+   {
+      this.id = id;
+      store = new MemoryIdentityStore(id);
+   }
+    
+   public String getId()
+   {
+      return id;
+   }
+
+   public FeaturesMetaData getSupportedFeatures()
+   {   
+      return store.getSupportedFeatures();
+   }
+
+   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
+         IdentityObjectType identityObjectType) throws IdentityException
+   {    
+      return store.createIdentityObject(invocationCtx, name, identityObjectType);
+   }
+
+   public IdentityObject createIdentityObject(IdentityStoreInvocationContext invocationCtx, String name,
+         IdentityObjectType identityObjectType, Map<String, String[]> attributes) throws IdentityException
+   {
+      return store.createIdentityObject(invocationCtx, name, identityObjectType, attributes ); 
+   }
+
+   public void removeIdentityObject(IdentityStoreInvocationContext invocationCtx, IdentityObject identity)
+         throws IdentityException
+   { 
+      store.removeIdentityObject(invocationCtx, identity);
+   }
+
+   public int getIdentityObjectsCount(IdentityStoreInvocationContext invocationCtx, IdentityObjectType identityType)
+         throws IdentityException
+   {   
+      return store.getIdentityObjectsCount(invocationCtx, identityType);
+   }
+
+   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String name,
+         IdentityObjectType identityObjectType) throws IdentityException
+   {  
+      return store.findIdentityObject(invocationContext, name, identityObjectType ); 
+   }
+
+   public IdentityObject findIdentityObject(IdentityStoreInvocationContext invocationContext, String id)
+         throws IdentityException
+   {  
+      return store.findIdentityObject(invocationContext, id); 
+   }
+
+   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCtx,
+         IdentityObjectType identityType, IdentityObjectSearchCriteria criteria) throws IdentityException
+   {  
+      return store.findIdentityObject(invocationCtx, identityType, criteria);
+   }
+
+   public Collection<IdentityObject> findIdentityObject(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent,
+         IdentityObjectSearchCriteria criteria) throws IdentityException
+   {   
+      return store.findIdentityObject(invocationCxt, identity, relationshipType, parent, criteria);
+   }
+
+   public IdentityObjectRelationship createRelationship(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType,
+         String relationshipName, boolean createNames) throws IdentityException
+   {    
+      return store.createRelationship(invocationCxt, fromIdentity, toIdentity, relationshipType, relationshipName, createNames);
+   }
+
+   public void removeRelationship(IdentityStoreInvocationContext invocationCxt, IdentityObject fromIdentity,
+         IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType, String relationshipName)
+         throws IdentityException
+   { 
+      store.removeRelationship(invocationCxt, fromIdentity, toIdentity, relationshipType, relationshipName);
+   }
+
+   public void removeRelationships(IdentityStoreInvocationContext invocationCtx, IdentityObject identity1,
+         IdentityObject identity2, boolean named) throws IdentityException
+   { 
+      store.removeRelationships(invocationCtx, identity1, identity2, named);
+   }
+
+   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject fromIdentity, IdentityObject toIdentity, IdentityObjectRelationshipType relationshipType)
+         throws IdentityException
+   {   
+      return store.resolveRelationships(invocationCxt, fromIdentity, toIdentity, relationshipType);
+   }
+
+   public Set<IdentityObjectRelationship> resolveRelationships(IdentityStoreInvocationContext invocationCxt,
+         IdentityObject identity, IdentityObjectRelationshipType relationshipType, boolean parent, boolean named,
+         String name) throws IdentityException
+   {    
+      return store.resolveRelationships(invocationCxt, identity, relationshipType, parent, named, name );
+   }
+
+   public String createRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
+         OperationNotSupportedException
+   {  
+      return store.createRelationshipName(ctx, name); 
+   }
+
+   public String removeRelationshipName(IdentityStoreInvocationContext ctx, String name) throws IdentityException,
+         OperationNotSupportedException
+   {   
+      return store.removeRelationshipName(ctx, name);
+   }
+
+   public Map<String, String> getRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name)
+         throws IdentityException, OperationNotSupportedException
+   {  
+      return store.getRelationshipNameProperties(ctx, name); 
+   }
+
+   public void setRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name,
+         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
+   { 
+      store.setRelationshipNameProperties(ctx, name, properties);
+   }
+
+   public void removeRelationshipNameProperties(IdentityStoreInvocationContext ctx, String name, Set<String> properties)
+         throws IdentityException, OperationNotSupportedException
+   { 
+      store.removeRelationshipNameProperties(ctx, name, properties);
+   }
+
+   public Map<String, String> getRelationshipProperties(IdentityStoreInvocationContext ctx,
+         IdentityObjectRelationship relationship) throws IdentityException, OperationNotSupportedException
+   {   
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void setRelationshipProperties(IdentityStoreInvocationContext ctx, IdentityObjectRelationship relationship,
+         Map<String, String> properties) throws IdentityException, OperationNotSupportedException
+   {
+      
+
+   }
+
+   public void removeRelationshipProperties(IdentityStoreInvocationContext ctx,
+         IdentityObjectRelationship relationship, Set<String> properties) throws IdentityException,
+         OperationNotSupportedException
+   { 
+   }
+
+   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObjectSearchCriteria criteria)
+         throws IdentityException, OperationNotSupportedException
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Set<String> getRelationshipNames(IdentityStoreInvocationContext ctx, IdentityObject identity,
+         IdentityObjectSearchCriteria criteria) throws IdentityException, OperationNotSupportedException
+   {    
+      return store.getRelationshipNames(ctx, identity, criteria);
+   }
+
+   public boolean validateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
+         IdentityObjectCredential credential) throws IdentityException
+   {   
+      return false;
+   }
+
+   public void updateCredential(IdentityStoreInvocationContext ctx, IdentityObject identityObject,
+         IdentityObjectCredential credential) throws IdentityException
+   { 
+   }
+
+   public Set<String> getSupportedAttributeNames(IdentityStoreInvocationContext invocationContext,
+         IdentityObjectType identityType) throws IdentityException
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, IdentityObjectAttributeMetaData> getAttributesMetaData(
+         IdentityStoreInvocationContext invocationContext, IdentityObjectType identityType)
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, IdentityObjectAttribute> getAttributes(IdentityStoreInvocationContext invocationContext,
+         IdentityObject identity) throws IdentityException
+   {   
+      return store.getAttributes( invocationContext, identity);
+   }
+
+   public IdentityObjectAttribute getAttribute(IdentityStoreInvocationContext invocationContext,
+         IdentityObject identity, String name) throws IdentityException
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public void updateAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
+         IdentityObjectAttribute[] attributes) throws IdentityException
+   { 
+   }
+
+   public void addAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
+         IdentityObjectAttribute[] attributes) throws IdentityException
+   {   
+      store.addAttributes(  invocationCtx,   identity,  attributes);
+   }
+
+   public void removeAttributes(IdentityStoreInvocationContext invocationCtx, IdentityObject identity,
+         String[] attributeNames) throws IdentityException
+   { 
+      store.removeAttributes(invocationCtx, identity, attributeNames);
+   }
+
+   public IdentityObject findIdentityObjectByUniqueAttribute(IdentityStoreInvocationContext invocationCtx,
+         IdentityObjectType identityObjectType, IdentityObjectAttribute attribute) throws IdentityException
+   {  
+      return store.findIdentityObjectByUniqueAttribute(invocationCtx, identityObjectType, attribute); 
+   }
+
+   public IdentityStoreSession createIdentityStoreSession() throws IdentityException
+   {   
+      return store.createIdentityStoreSession(); 
+   }
+
+   public IdentityStoreSession createIdentityStoreSession(Map<String, Object> sessionOptions) throws IdentityException
+   { 
+      return new MemoryIdentityStoreSession();
+   }
+
+   public void bootstrap(IdentityRepositoryConfigurationContext configurationContext,
+         Map<String, IdentityStore> bootstrappedIdentityStores, Map<String, AttributeStore> bootstrappedAttributeStores)
+         throws IdentityException
+   { 
+      repoMD = configurationContext.getRepositoryConfigurationMetaData(); 
+      storeMD =  configurationContext.getConfigurationMetaData().getIdentityStores().get(0);
+   }
+   
+
+   public void bootstrap(IdentityStoreConfigurationContext configurationContext) throws IdentityException
+   { 
+      storeMD = configurationContext.getStoreConfigurationMetaData();
+   }
+
+   public Set<IdentityStore> getConfiguredIdentityStores()
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Set<AttributeStore> getConfiguredAttributeStores()
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, IdentityStore> getIdentityStoreMappings()
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public Map<String, AttributeStore> getAttributeStoreMappings()
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public IdentityStore getIdentityStore(IdentityObjectType identityObjectType) throws IdentityException
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+
+   public AttributeStore getAttributeStore(IdentityObjectType identityObjectType) throws IdentityException
+   {   
+      
+      throw new RuntimeException( "NYI" );
+   }
+}
\ No newline at end of file

Added: idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/src/main/java/org/picketlink/idm/impl/store/memory/MemoryIdentityStoreSession.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,88 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.idm.impl.store.memory;
+
+import org.picketlink.idm.api.IdentitySession;
+import org.picketlink.idm.common.exception.IdentityException;
+import org.picketlink.idm.spi.store.IdentityStoreSession;
+
+/**
+ * A {@link IdentitySession} for memory
+ * @author Anil.Saldhana at redhat.com
+ * @since Feb 14, 2011
+ */
+public class MemoryIdentityStoreSession implements IdentityStoreSession
+{
+
+   public Object getSessionContext() throws IdentityException
+   { 
+      return null;
+   }
+
+   public void close() throws IdentityException
+   {    
+   }
+
+   public void save() throws IdentityException
+   { 
+   }
+
+   public void clear() throws IdentityException
+   { 
+   }
+
+   public boolean isOpen()
+   {
+      
+      return false;
+   }
+
+   public boolean isTransactionSupported()
+   {
+      
+      return false;
+   }
+
+   public void startTransaction()
+   {
+      
+      
+   }
+
+   public void commitTransaction()
+   {
+      
+      
+   }
+
+   public void rollbackTransaction()
+   {
+      
+      
+   }
+
+   public boolean isTransactionActive()
+   {
+      
+      return false;
+   } 
+}
\ No newline at end of file

Added: idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/src/test/java/org/picketlink/test/idm/api/model/CorporateModelUnitTestCase.java	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,454 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors. 
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.picketlink.test.idm.api.model;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Map;
+
+import org.junit.Test;
+import org.picketlink.idm.api.Attribute;
+import org.picketlink.idm.api.AttributesManager;
+import org.picketlink.idm.api.Group;
+import org.picketlink.idm.api.IdentitySession;
+import org.picketlink.idm.api.IdentitySessionFactory;
+import org.picketlink.idm.api.PersistenceManager;
+import org.picketlink.idm.api.RelationshipManager;
+import org.picketlink.idm.api.RoleManager;
+import org.picketlink.idm.api.RoleType;
+import org.picketlink.idm.api.User;
+import org.picketlink.idm.api.cfg.IdentityConfiguration;
+import org.picketlink.idm.common.p3p.P3PConstants;
+import org.picketlink.idm.core.factories.IdentityFactory;
+import org.picketlink.idm.impl.api.SimpleAttribute;
+
+/**
+ * Unit test a typical corporate model
+ * @author <a href="mailto:boleslaw.dawidowicz at redhat.com">Boleslaw Dawidowicz</a>
+ * @author Anil.Saldhana at redhat.com
+ * @since Feb 14, 2011
+ */
+public class CorporateModelUnitTestCase
+{
+   private String sampleOrganizationRealmName = "realm://memory";
+
+   String configFileName = "configs/memory-config.xml";
+   
+   
+   @Test
+   public void testModel() throws Exception
+   {
+      IdentityConfiguration config = IdentityFactory.createConfiguration( configFileName );
+      assertNotNull( config );
+      IdentitySessionFactory sessionFactory = config.buildIdentitySessionFactory();
+      assertNotNull( sessionFactory );    
+      
+      // GroupType
+
+      String ORGANIZATION = "ORGANIZATION";
+      String ORGANIZATION_UNIT = "ORGANIZATION_UNIT";
+      String DIVISION = "DIVISION";
+      String DEPARTMENT = "DEPARTMENT";
+      String PROJECT = "PROJECT";
+      String PEOPLE = "PEOPLE";
+ 
+
+      IdentitySession session = sessionFactory .createIdentitySession( sampleOrganizationRealmName );
+ 
+
+      begin();
+
+      // Organization structure
+
+      PersistenceManager persistenceManager = session.getPersistenceManager();
+      Group rhOrg = persistenceManager.createGroup("RedHat", ORGANIZATION);
+
+      Group jbossDivision = persistenceManager.createGroup("JBoss", DIVISION);
+      Group rhelDivision = persistenceManager.createGroup("RHEL", DIVISION);
+
+      RelationshipManager relationshipManager = session.getRelationshipManager();
+      relationshipManager.associateGroups(rhOrg, jbossDivision);
+      relationshipManager.associateGroups(rhOrg, rhelDivision);
+
+      Group itDepartment = persistenceManager.createGroup("IT", DEPARTMENT);
+      Group hrDepartment = persistenceManager.createGroup("HR", DEPARTMENT);
+
+      relationshipManager.associateGroups(jbossDivision, itDepartment);
+      relationshipManager.associateGroups(jbossDivision, hrDepartment);
+
+      Group rndDepartment = persistenceManager.createGroup("RnD", DEPARTMENT); 
+
+      relationshipManager.associateGroups(itDepartment, rndDepartment);
+
+      Group projectsOU = persistenceManager.createGroup("Projects", ORGANIZATION_UNIT);
+      Group commonFrameworksOU = persistenceManager.createGroup("Common Frameworks", ORGANIZATION_UNIT);
+
+      relationshipManager.associateGroups(rndDepartment, projectsOU);
+
+      // Projects
+
+      Group portalProject = persistenceManager.createGroup("Portal", PROJECT);
+      Group soaProject = persistenceManager.createGroup("SOA", PROJECT);
+      Group jbpmProject = persistenceManager.createGroup("jBPM", PROJECT);
+      Group seamProject = persistenceManager.createGroup("Seam", PROJECT);
+      Group asProject = persistenceManager.createGroup("AS", PROJECT);
+      Group securityProject = persistenceManager.createGroup("Security", PROJECT);
+
+      relationshipManager.associateGroups(projectsOU, portalProject);
+      relationshipManager.associateGroups(projectsOU, soaProject);
+      relationshipManager.associateGroups(projectsOU, jbpmProject);
+      relationshipManager.associateGroups(projectsOU, asProject);
+      relationshipManager.associateGroups(projectsOU, seamProject);
+
+      // Check...
+      assertTrue(relationshipManager.isAssociated(projectsOU, portalProject));
+      assertTrue(relationshipManager.isAssociated(projectsOU, soaProject));
+      assertTrue(relationshipManager.isAssociated(projectsOU, jbpmProject));
+      assertTrue(relationshipManager.isAssociated(projectsOU, asProject));
+      assertTrue(relationshipManager.isAssociated(projectsOU, seamProject));
+
+      // Portal is part of common frameworks
+      relationshipManager.associateGroups(commonFrameworksOU, portalProject);
+
+      // People
+
+      Group employeesGroup = persistenceManager.createGroup("Employees", PEOPLE);
+
+      // Management
+
+      User theuteUser = persistenceManager.createUser("theute");
+      User mlittleUser = persistenceManager.createUser("mlittle");
+      User bgeorgesUser = persistenceManager.createUser("bgeorges");
+      User asaldhanaUser = persistenceManager.createUser("asaldhana");
+      User janderseUser = persistenceManager.createUser("janderse");
+
+       // Portal Team
+
+      User bdawidowUser = persistenceManager.createUser("bdawidow");
+      User claprunUser = persistenceManager.createUser("claprun");
+      User whalesUser = persistenceManager.createUser("whales");
+      User sshahUser = persistenceManager.createUser("sshah");
+      User mwringeUser = persistenceManager.createUser("mwringe");
+
+      // Store as employees
+
+      relationshipManager.associateUser(employeesGroup, theuteUser);
+      relationshipManager.associateUser(employeesGroup, mlittleUser);
+      relationshipManager.associateUser(employeesGroup, asaldhanaUser);
+      relationshipManager.associateUser(employeesGroup, bdawidowUser);
+      relationshipManager.associateUser(employeesGroup, claprunUser);
+      relationshipManager.associateUser(employeesGroup, whalesUser);
+      relationshipManager.associateUser(employeesGroup, sshahUser);
+      relationshipManager.associateUser(employeesGroup, mwringeUser);
+
+      // Portal team for management purposes
+
+      Group portalTeamGroup = persistenceManager.createGroup("Portal Team", PEOPLE);
+      relationshipManager.associateUser(portalTeamGroup, bdawidowUser);
+      relationshipManager.associateUser(portalTeamGroup, claprunUser);
+      relationshipManager.associateUser(portalTeamGroup, whalesUser);
+      relationshipManager.associateUser(portalTeamGroup, sshahUser);
+      relationshipManager.associateUser(portalTeamGroup, mwringeUser);
+
+      // Portal team is under common frameworks
+
+      relationshipManager.associateGroups(commonFrameworksOU, portalTeamGroup);
+
+      // Role Types
+
+      RoleManager roleManager = session.getRoleManager();
+      RoleType developerRT = roleManager.createRoleType("Developer");
+      RoleType managerRT = roleManager.createRoleType("Manager");
+      RoleType leadDeveloperRT = roleManager.createRoleType("Lead Developer");
+      RoleType productManagerRT = roleManager.createRoleType("Product Manager");
+
+      // Assign roles
+
+      // Common frameworks manager
+
+      roleManager.createRole(managerRT, bgeorgesUser, commonFrameworksOU);
+
+      // Portal developers
+
+      roleManager.createRole(developerRT, theuteUser, portalProject);
+      roleManager.createRole(developerRT, bdawidowUser, portalProject);
+      roleManager.createRole(developerRT, claprunUser, portalProject);
+      roleManager.createRole(developerRT, whalesUser, portalProject);
+      roleManager.createRole(developerRT, sshahUser, portalProject);
+      roleManager.createRole(developerRT, mwringeUser, portalProject);
+
+      // Portal management
+      roleManager.createRole(leadDeveloperRT, theuteUser, portalProject);
+      roleManager.createRole(managerRT, theuteUser, portalTeamGroup);
+      roleManager.createRole(productManagerRT, janderseUser, portalProject);
+
+      // SOA
+
+      roleManager.createRole(developerRT, mlittleUser, portalProject);
+      roleManager.createRole(productManagerRT, mlittleUser, portalProject);
+
+      // AS & Security
+
+      roleManager.createRole(developerRT, asaldhanaUser, asProject);
+      roleManager.createRole(developerRT, asaldhanaUser, securityProject);
+      roleManager.createRole(leadDeveloperRT, asaldhanaUser, securityProject);
+
+
+      // Check what RoleTypes has user theute
+      Collection<RoleType> roleTypes = roleManager.findUserRoleTypes(theuteUser);
+      assertEquals(3, roleTypes.size());
+      assertTrue(roleTypes.contains(developerRT));
+      assertTrue(roleTypes.contains(leadDeveloperRT));
+      assertTrue(roleTypes.contains(managerRT));
+      assertFalse(roleTypes.contains(productManagerRT));
+
+      assertTrue(roleManager.hasRole(theuteUser, portalProject, developerRT));
+      assertTrue(roleManager.hasRole(theuteUser, portalProject, leadDeveloperRT));
+      assertTrue(roleManager.hasRole(theuteUser, portalTeamGroup, managerRT));
+
+      // Check where anil is Lead Developer and where Developer
+
+      roleTypes = roleManager.findUserRoleTypes(asaldhanaUser);
+      assertEquals(2, roleTypes.size());
+      assertTrue(roleTypes.contains(developerRT));
+      assertTrue(roleTypes.contains(leadDeveloperRT));
+
+      roleTypes = roleManager.findRoleTypes(asaldhanaUser, securityProject);
+      assertEquals(2, roleTypes.size());
+      assertTrue(roleTypes.contains(leadDeveloperRT));
+
+      roleTypes = roleManager.findRoleTypes(asaldhanaUser, asProject);
+      assertEquals(1, roleTypes.size());
+      assertTrue(roleTypes.contains(developerRT));
+
+      // and simpler...
+      assertTrue(roleManager.hasRole(asaldhanaUser, asProject, developerRT));
+
+      // Assert relationships
+
+      Collection<User> identities = relationshipManager.findAssociatedUsers(portalTeamGroup, false);
+      assertEquals(5, identities.size());
+      assertTrue(identities.contains(claprunUser));
+      assertTrue(identities.contains(mwringeUser));
+      assertTrue(identities.contains(sshahUser));
+      assertTrue(identities.contains(whalesUser));
+      assertTrue(identities.contains(bdawidowUser));
+
+      Collection<Group> groups = relationshipManager.findAssociatedGroups(rndDepartment, PROJECT, true, false);
+      assertEquals(0, groups.size());
+
+      // Check to which group Anil belongs
+      groups = relationshipManager.findAssociatedGroups(asaldhanaUser, PEOPLE);
+      assertEquals(1, groups.size());
+      assertTrue(groups.contains(employeesGroup));
+
+      // Now check sshah
+      groups = relationshipManager.findAssociatedGroups(sshahUser, PEOPLE);
+      assertEquals(2, groups.size());
+      assertTrue(groups.contains(employeesGroup));
+      assertTrue(groups.contains(portalTeamGroup));
+
+
+
+      
+      // User attributes
+      Attribute[] userInfo = new Attribute[]
+         {
+            new SimpleAttribute(P3PConstants.INFO_USER_NAME_GIVEN, new String[]{"Boleslaw"}),
+            new SimpleAttribute(P3PConstants.INFO_USER_NAME_FAMILY, new String[]{"Dawidowicz"}),
+            //new SimpleAttribute("picture", new byte[][]{picture}),
+            new SimpleAttribute("email", new String[]{"bd at example.com"})
+         };
+
+      AttributesManager attributesManager = session.getAttributesManager();
+      attributesManager.addAttributes(bdawidowUser, userInfo);
+
+      Map<String, Attribute> attributes = attributesManager.getAttributes(bdawidowUser);
+      assertEquals(3, attributes.keySet().size());
+      assertEquals("Dawidowicz", (attributes.get(P3PConstants.INFO_USER_NAME_FAMILY)).getValue());
+      
+      /* // Check readOnly attribute change
+      userInfo = new Attribute[]
+         {
+            new SimpleAttribute("description", new String[]{"some description"})
+         };
+
+      attributesManager.addAttributes(bdawidowUser, userInfo);
+      attributesManager.updateAttributes(bdawidowUser, userInfo);
+
+      attributes = attributesManager.getAttributes(bdawidowUser);
+      assertEquals(3, attributes.keySet().size());
+      assertEquals(null, (attributes.get("description")));
+
+      // Generate random binary data for binary attribute
+      Random random = new Random();
+
+      // Check that binary attribute picture is mapped
+      AttributeDescription attributeDescription = attributesManager.getAttributeDescription(bdawidowUser, "picture");
+
+      if (attributeDescription != null && attributeDescription.getType().equals("binary"))
+      {
+
+         // 900 kilobytes
+         byte[] picture = new byte[921600];
+         random.nextBytes(picture);
+
+         userInfo = new Attribute[]
+         {
+            new SimpleAttribute("picture", new byte[][]{picture}),
+         };
+
+
+         attributesManager.addAttributes(bdawidowUser, userInfo);
+
+         attributes = attributesManager.getAttributes(bdawidowUser);
+         assertEquals(4, attributes.keySet().size());
+         assertEquals("Dawidowicz", (attributes.get(P3PConstants.INFO_USER_NAME_FAMILY)).getValue());
+         assertTrue(Arrays.equals((byte[])attributes.get("picture").getValue(), picture));
+
+         // Update
+
+         // 500 kilobytes
+         picture = new byte[50600];
+         random.nextBytes(picture);
+
+         userInfo = new Attribute[]
+         {
+            new SimpleAttribute("picture", new byte[][]{picture}),
+         };
+
+
+         attributesManager.updateAttributes(bdawidowUser, userInfo);
+
+         attributes = attributesManager.getAttributes(bdawidowUser);
+         assertEquals(4, attributes.keySet().size());
+         assertTrue(Arrays.equals((byte[])attributes.get("picture").getValue(), picture));
+      }
+
+
+      // Find user by email
+      assertNull(attributesManager.findUserByUniqueAttribute("email", "toto"));
+      User user = attributesManager.findUserByUniqueAttribute("email", "bd at example.com");
+      assertEquals(bdawidowUser, user);
+
+
+      // If email is configured as unique it should not be possible to set same value for different user
+      
+      attributeDescription = attributesManager.getAttributeDescription(bdawidowUser, "email");
+
+      if (attributeDescription != null && attributeDescription.isUnique())
+      {
+
+
+         // check if same unique email can be used for other user
+         try
+         {
+            userInfo = new Attribute[]
+               {
+                  new SimpleAttribute("email", new String[]{"bd at example.com"})
+               };
+
+            attributesManager.addAttributes(theuteUser, userInfo);
+            fail();
+         }
+         catch (IdentityException e)
+         {
+            // expected
+         }
+      }
+
+
+
+      // Credential
+      User anotherOne = bdawidowUser; //session.getPersistenceManager().createUser("blah1");
+
+      if (attributesManager.isCredentialTypeSupported(PasswordCredential.TYPE))
+      {
+
+         // There is a known issue that on some LDAP servers (MSAD at least) old password can
+         // still be used for some time together with the new one. Because of this testsuite cannot
+         // assert previously set password values
+
+         // #1
+         attributesManager.updatePassword(anotherOne, "Password2000");
+         assertTrue(attributesManager.validatePassword(anotherOne, "Password2000"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2001"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2002"));
+
+         // #1
+         attributesManager.updatePassword(anotherOne, "Password2002");
+         assertTrue(attributesManager.validatePassword(anotherOne, "Password2002"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2001"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "wirdPasswordValue"));
+//         assertFalse(session.getAttributesManager().validatePassword(anotherOne, "Password2000"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2003"));
+
+
+         // #1
+         attributesManager.updatePassword(anotherOne, "Password2003");
+         assertTrue(attributesManager.validatePassword(anotherOne, "Password2003"));
+//         assertFalse(session.getAttributesManager().validatePassword(anotherOne, "Password2000"));
+//         assertFalse(session.getAttributesManager().validatePassword(anotherOne, "Password2002"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2005"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2006"));
+         assertFalse(attributesManager.validatePassword(anotherOne, "Password2007"));
+
+
+         // #2
+         Credential password = new PasswordCredential("SuperPassword2345");
+         attributesManager.updateCredential(anotherOne, password);
+         assertTrue(attributesManager.validateCredentials(anotherOne, new Credential[]{password}));
+
+         // #3
+      }
+
+      if (attributesManager.isCredentialTypeSupported(BinaryCredential.TYPE))
+      {
+         // 500 kilobytes
+         byte[] cert = new byte[512000];
+         random.nextBytes(cert);
+         Credential binaryCredential = new BinaryCredential(cert);
+         attributesManager.updateCredential(anotherOne, binaryCredential);
+         assertTrue(attributesManager.validateCredentials(anotherOne, new Credential[]{binaryCredential}));
+      }
+
+      persistenceManager.createUser("!(06_13_07 Sche) !(0");
+
+      User u1 = persistenceManager.findUser("!(06_13_07 Sche) !(0");
+
+      assertNotNull(u1);*/
+
+
+      commit();
+   }
+   
+   
+   public void begin()
+   {}
+   
+   public void commit()
+   {}
+}
\ No newline at end of file

Added: idm/branches/2.0.0/picketlink-idm-memory/src/test/resources/configs/memory-config.xml
===================================================================
--- idm/branches/2.0.0/picketlink-idm-memory/src/test/resources/configs/memory-config.xml	                        (rev 0)
+++ idm/branches/2.0.0/picketlink-idm-memory/src/test/resources/configs/memory-config.xml	2011-02-25 19:12:09 UTC (rev 777)
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jboss-identity xmlns="urn:picketlink:idm:config:v1_0_0_ga"
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="urn:picketlink:idm:config:v1_0_0_ga identity-config.xsd">
+    <realms>
+        <realm>
+            <id>realm://memory</id>
+            <repository-id-ref>Memory based repo</repository-id-ref>
+            <identity-type-mappings>
+                <user-mapping>USER</user-mapping>
+            </identity-type-mappings>
+        </realm>
+    </realms>
+    <repositories>
+        <repository>
+            <id>Memory based repo</id>
+            <class>org.picketlink.idm.impl.store.memory.MemoryIdentityStoreRepository</class>
+            <external-config/>
+            <default-identity-store-id>MemoryStore</default-identity-store-id>
+            <default-attribute-store-id>MemoryStore</default-attribute-store-id>
+            <!--<identity-store-mappings>-->
+                <!--<identity-store-mapping>-->
+                    <!--<identity-store-id>HibernateTestStore</identity-store-id>-->
+                    <!--<identity-object-types/>-->
+                    <!--<options/>-->
+                <!--</identity-store-mapping>-->
+            <!--</identity-store-mappings>-->
+        </repository>
+    </repositories>
+    <stores>
+        <attribute-stores/>
+        <identity-stores>
+            <identity-store>
+                <id>MemoryStore</id>
+                <class>org.picketlink.idm.impl.store.memory.MemoryIdentityStore</class>
+                <external-config/>
+                <supported-relationship-types>
+                    <relationship-type>JBOSS_IDENTITY_MEMBERSHIP</relationship-type>
+                    <relationship-type>JBOSS_IDENTITY_ROLE</relationship-type>
+                </supported-relationship-types>
+                <supported-identity-object-types>
+                    <identity-object-type>
+                        <name>USER</name>
+                        <relationships/>
+                        <credentials>
+                            <credential-type>PASSWORD</credential-type>
+                            <credential-type>BINARY</credential-type>
+                        </credentials>
+                        <attributes/>
+                        <options/>
+                    </identity-object-type>
+                    <identity-object-type>
+                        <name>GROUP</name>
+                        <relationships/>
+                        <credentials/>
+                        <attributes/>
+                        <options/>
+                    </identity-object-type>
+                    <identity-object-type>
+                        <name>ORGANIZATION</name>
+                        <relationships>
+                            <relationship>
+                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+                                <identity-object-type-ref>USER</identity-object-type-ref>
+                            </relationship>
+                            <relationship>
+                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+                                <identity-object-type-ref>ROLE</identity-object-type-ref>
+                            </relationship>
+                            <relationship>
+                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+                                <identity-object-type-ref>GROUP</identity-object-type-ref>
+                            </relationship>
+                            <relationship>
+                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+                                <identity-object-type-ref>ORGANIZATION</identity-object-type-ref>
+                            </relationship>
+                        </relationships>
+                        <credentials/>
+                        <attributes/>
+                        <options/>
+                    </identity-object-type>
+                    <identity-object-type>
+                        <name>ROLE</name>
+                        <relationships>
+                            <relationship>
+                                <relationship-type-ref>JBOSS_IDENTITY_MEMBERSHIP</relationship-type-ref>
+                                <identity-object-type-ref>USER</identity-object-type-ref>
+                            </relationship>
+                        </relationships>
+                        <credentials/>
+                        <attributes/>
+                        <options/>
+                    </identity-object-type>
+                </supported-identity-object-types>
+                <options>
+                    <!--<option>-->
+                        <!--<name>hibernateConfiguration</name>-->
+                        <!--<value>hibernate-jboss-identity.cfg.xml</value>-->
+                    <!--</option>-->
+                    <option>
+                        <name>hibernateSessionFactoryJNDIName</name>
+                        <value>java:/jbossidentity/HibernateStoreSessionFactory</value>
+                    </option>
+                    <option>
+                        <name>populateRelationshipTypes</name>
+                        <value>true</value>
+                    </option>
+                    <option>
+                        <name>populateIdentityObjectTypes</name>
+                        <value>true</value>
+                    </option>
+                    <option>
+                        <name>isRealmAware</name>
+                        <value>false</value>
+                    </option>
+                    <option>
+                        <name>allowNotDefinedAttributes</name>
+                        <value>true</value>
+                    </option>
+                </options>
+            </identity-store>
+        </identity-stores>
+    </stores>
+</jboss-identity>
\ No newline at end of file

Modified: idm/branches/2.0.0/pom.xml
===================================================================
--- idm/branches/2.0.0/pom.xml	2011-02-23 21:23:57 UTC (rev 776)
+++ idm/branches/2.0.0/pom.xml	2011-02-25 19:12:09 UTC (rev 777)
@@ -33,6 +33,7 @@
             <module>picketlink-idm-spi</module>
             <module>picketlink-idm-api</module>
             <module>picketlink-idm-core</module>
+            <module>picketlink-idm-memory</module>
             <module>picketlink-idm-docs</module>
          </modules>
       </profile>



More information about the jboss-cvs-commits mailing list