[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