[jboss-identity-commits] JBoss Identity SVN: r216 - in idm/trunk: identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session and 6 other directories.
jboss-identity-commits at lists.jboss.org
jboss-identity-commits at lists.jboss.org
Wed Jan 14 08:12:44 EST 2009
Author: bdaw
Date: 2009-01-14 08:12:43 -0500 (Wed, 14 Jan 2009)
New Revision: 216
Modified:
idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/PersistenceManagerFeaturesDescription.java
idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RelationshipManagerFeaturesDescription.java
idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManager.java
idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManagerFeaturesDescription.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/IdentitySessionImpl.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/PersistenceManagerImpl.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RelationshipManagerImpl.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RoleManagerImpl.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/repository/FallbackIdentityStoreRepository.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/FeaturesMetaDataImpl.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java
idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java
idm/trunk/identity-spi/src/main/java/org/jboss/identity/idm/spi/store/FeaturesMetaData.java
Log:
minimal number of NotYetImplementedException once again
Modified: idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/PersistenceManagerFeaturesDescription.java
===================================================================
--- idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/PersistenceManagerFeaturesDescription.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/PersistenceManagerFeaturesDescription.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -32,40 +32,52 @@
{
/**
- * Check if Identity objects can be created
+ * Check if Identity objects can be created and removed
* @return
*/
- boolean isIdentitiesCreationSupported();
+ boolean isIdentitiesAddRemoveSupported();
/**
- * Check if Group objects can be created
+ * Check if Group objects can be created and removed
+ *
+ * @param groupType
* @return
*/
- boolean isGroupsCreationSupported();
+ boolean isGroupsAddRemoveSupported(GroupType groupType);
/**
- * Check if IdentitySearchControl for sorted results can be used in Identity object queries
+ * Check if control can be used in Identity search methods
+ *
+ * @param control
* @return
*/
- boolean isIdentitiesSortedSearchSupported();
+ boolean isIdentitiesSearchControlSupported(IdentitySearchControl control);
/**
- * Check if IdentitySearchControl for sorted results can be used in Group object queries
- * @param groupType
+ * Check if control can be used in Identity search methods
+ *
+ * @param controlClazz
* @return
*/
- boolean isGroupsSortedSearchSupported(GroupType groupType);
+ boolean isIdentitiesSearchControlSupported(Class controlClazz);
/**
- * Check if IdentitySearchControl for paged results can be used in Identity object queries
+ * Check if control can be used in Group search methods
+ *
+ * @param groupType
+ * @param control
* @return
*/
- boolean isIdentitiesPaginatedSearchSupported();
+ boolean isGroupsSearchControlSupported(GroupType groupType, IdentitySearchControl control);
/**
- * Check if IdentitySearchControl for sorted results can be used in Group object queries
+ * Check if control can be used in Group search methods
+ *
* @param groupType
+ * @param controlClazz
* @return
*/
- boolean isGroupsPaginatedSearchSupported(GroupType groupType);
+ boolean isGroupsSearchControlSupported(GroupType groupType, Class controlClazz);
+
+
}
Modified: idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RelationshipManagerFeaturesDescription.java
===================================================================
--- idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RelationshipManagerFeaturesDescription.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RelationshipManagerFeaturesDescription.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -47,27 +47,38 @@
boolean isGroupAssociationSupported(GroupType fromGroupType, GroupType toGroupType);
/**
+ * Check if control can be used in Identity search methods
+ *
+ * @param control
* @return
*/
- boolean isIdentitiesSortedSearchSupported();
+ boolean isIdentitiesSearchControlSupported(IdentitySearchControl control);
/**
- * @param groupType
+ * Check if control can be used in Identity search methods
+ *
+ * @param controlClazz
* @return
*/
- boolean isGroupsSortedSearchSupported(GroupType groupType);
+ boolean isIdentitiesSearchControlSupported(Class controlClazz);
/**
+ * Check if control can be used in Group search methods
+ *
+ * @param groupType
+ * @param control
* @return
*/
- boolean isIdentitiesPaginatedSearchSupported();
+ boolean isGroupsSearchControlSupported(GroupType groupType, IdentitySearchControl control);
/**
+ * Check if control can be used in Group search methods
+ *
* @param groupType
+ * @param controlClazz
* @return
*/
- boolean isGroupsPaginatedSearchSupported(GroupType groupType);
+ boolean isGroupsSearchControlSupported(GroupType groupType, Class controlClazz);
-
}
Modified: idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManager.java
===================================================================
--- idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManager.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManager.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -185,15 +185,4 @@
<T extends IdentityType> Collection<Role> findRoles(T identityType,
RoleType roleType) throws IdentityException;
- /**
- * Find Role objects with a given RoleType associated with a given IdentityType
- * @param identityType
- * @param roleType
- * @return
- * @throws IdentityException
- */
- <T extends IdentityType> Collection<Role> findRoles(T identityType,
- RoleType roleType,
- IdentitySearchControl[] controls) throws IdentityException;
-
}
Modified: idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManagerFeaturesDescription.java
===================================================================
--- idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManagerFeaturesDescription.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-api/src/main/java/org/jboss/identity/idm/api/RoleManagerFeaturesDescription.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -31,37 +31,20 @@
public interface RoleManagerFeaturesDescription
{
/**
- * Can RoleType object be created
+ * Can RoleType object be created and removed
* @return
*/
- boolean isRoleTypeCreationSupported();
+ boolean isRoleTypeAddRemoveSupported();
/**
- * Can RoleType objects be removed
- *
+ * @param controlClazz
* @return
*/
- boolean isRoleTypeRemovalSupported();
+ boolean isRoleTypeSearchControlSupported(Class controlClazz);
/**
+ * @param control
* @return
*/
- boolean isRoleSortedSearchSupported();
-
- /**
- * @param groupType
- * @return
- */
- boolean isRoleTypeSortedSearchSupported(GroupType groupType);
-
- /**
- * @return
- */
- boolean isRolePaginatedSearchSupported();
-
- /**
- * @param groupType
- * @return
- */
- boolean isRoleTypePaginatedSearchSupported(GroupType groupType);
+ boolean isRoleTypeSearchControlSupported(IdentitySearchControl control);
}
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/IdentitySessionImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/IdentitySessionImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/IdentitySessionImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -29,6 +29,7 @@
import org.jboss.identity.idm.api.AttributesManager;
import org.jboss.identity.idm.api.RoleManager;
import org.jboss.identity.idm.exception.IdentityException;
+import org.jboss.identity.idm.exception.FeatureNotSupportedException;
import org.jboss.identity.idm.spi.store.IdentityStoreSession;
import org.jboss.identity.idm.spi.store.IdentityStoreInvocationContext;
import org.jboss.identity.idm.spi.repository.IdentityStoreRepository;
@@ -147,10 +148,13 @@
return profileManager;
}
- //TODO: proper exception if roles are not supported
+ public RoleManager getRoleManager() throws FeatureNotSupportedException
+ {
+ if (!getSessionContext().getIdentityStoreRepository().getSupportedFeatures().isNamedRelationshipsSupported())
+ {
+ throw new FeatureNotSupportedException("Role management not supported by underlaying configured identity stores");
+ }
- public RoleManager getRoleManager()
- {
return roleManager;
}
}
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/PersistenceManagerImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/PersistenceManagerImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/PersistenceManagerImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -32,6 +32,7 @@
import org.jboss.identity.idm.exception.IdentityException;
import org.jboss.identity.idm.spi.model.IdentityObjectType;
import org.jboss.identity.idm.spi.model.IdentityObject;
+import org.jboss.identity.idm.spi.searchcontrol.IdentityObjectSearchControl;
import org.jboss.identity.idm.impl.NotYetImplementedException;
import org.jboss.identity.idm.impl.api.session.managers.AbstractManager;
@@ -47,14 +48,80 @@
public class PersistenceManagerImpl extends AbstractManager implements PersistenceManager
{
+ private final PersistenceManagerFeaturesDescription featuresDescription;
+
+
public PersistenceManagerImpl(IdentitySession session)
{
super(session);
+
+ featuresDescription = new PersistenceManagerFeaturesDescription()
+ {
+ public boolean isIdentitiesAddRemoveSupported()
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType();
+
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isIdentityObjectAddRemoveSupported(objectType);
+ }
+
+ public boolean isGroupsAddRemoveSupported(GroupType groupType)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(groupType);
+
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isIdentityObjectAddRemoveSupported(objectType);
+ }
+
+ public boolean isIdentitiesSearchControlSupported(IdentitySearchControl control)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType();
+
+ if (control instanceof IdentityObjectSearchControl)
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, (IdentityObjectSearchControl)control);
+ }
+
+ return false;
+ }
+
+
+ public boolean isIdentitiesSearchControlSupported(Class controlClazz)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType();
+
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, controlClazz);
+
+ }
+
+ public boolean isGroupsSearchControlSupported(GroupType groupType, IdentitySearchControl control)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(groupType);
+
+ if (control instanceof IdentityObjectSearchControl)
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, (IdentityObjectSearchControl)control);
+ }
+
+ return false;
+ }
+
+ public boolean isGroupsSearchControlSupported(GroupType groupType, Class controlClazz)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(groupType);
+
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, controlClazz);
+ }
+ };
}
public PersistenceManagerFeaturesDescription getFeaturesDescription()
{
- throw new NotYetImplementedException("NYI");
+ return featuresDescription;
}
public Identity createIdentity(String identityName) throws IdentityException
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RelationshipManagerImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RelationshipManagerImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RelationshipManagerImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -35,8 +35,10 @@
import org.jboss.identity.idm.spi.model.IdentityObjectRelationship;
import org.jboss.identity.idm.spi.model.IdentityObject;
import org.jboss.identity.idm.spi.model.IdentityObjectType;
+import org.jboss.identity.idm.spi.searchcontrol.IdentityObjectSearchControl;
import org.jboss.identity.idm.impl.NotYetImplementedException;
import org.jboss.identity.idm.impl.api.session.managers.AbstractManager;
+import org.jboss.identity.idm.impl.api.session.mapper.IdentityObjectTypeMapper;
import java.util.Collection;
import java.util.Iterator;
@@ -51,6 +53,7 @@
*/
public class RelationshipManagerImpl extends AbstractManager implements RelationshipManager
{
+ RelationshipManagerFeaturesDescription featuresDescription;
public static final IdentityObjectRelationshipType MEMBER = new IdentityObjectRelationshipType()
{
@@ -63,11 +66,92 @@
public RelationshipManagerImpl(IdentitySession session)
{
super(session);
+
+ featuresDescription = new RelationshipManagerFeaturesDescription()
+ {
+ public boolean isIdentityAssociationSupported(GroupType fromGroupType)
+ {
+
+ IdentityObjectType identityOT = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType();
+ IdentityObjectType groupIdentityOT = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(fromGroupType);
+
+ try
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isRelationshipTypeSupported(groupIdentityOT, identityOT, MEMBER);
+ }
+ catch (IdentityException e)
+ {
+ return false;
+ }
+
+ }
+
+ public boolean isGroupAssociationSupported(GroupType fromGroupType, GroupType toGroupType)
+ {
+ IdentityObjectType toGroupOT = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(toGroupType);
+ IdentityObjectType fromGroupOT = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(fromGroupType);
+
+ try
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isRelationshipTypeSupported(fromGroupOT, toGroupOT, MEMBER);
+ }
+ catch (IdentityException e)
+ {
+ return false;
+ }
+ }
+
+ public boolean isIdentitiesSearchControlSupported(IdentitySearchControl control)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType();
+
+ if (control instanceof IdentityObjectSearchControl)
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, (IdentityObjectSearchControl)control);
+ }
+
+ return false;
+ }
+
+
+ public boolean isIdentitiesSearchControlSupported(Class controlClazz)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType();
+
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, controlClazz);
+
+ }
+
+ public boolean isGroupsSearchControlSupported(GroupType groupType, IdentitySearchControl control)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(groupType);
+
+ if (control instanceof IdentityObjectSearchControl)
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, (IdentityObjectSearchControl)control);
+ }
+
+ return false;
+ }
+
+ public boolean isGroupsSearchControlSupported(GroupType groupType, Class controlClazz)
+ {
+ IdentityObjectType objectType = getSessionContext().getIdentityObjectTypeMapper().getIdentityObjectType(groupType);
+
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isControlSupported(objectType, controlClazz);
+ }
+ };
}
public RelationshipManagerFeaturesDescription getFeaturesDescription()
{
- throw new NotYetImplementedException("NYI");
+ return featuresDescription;
}
public void associateGroups(Collection<Group> parents, Collection<Group> members) throws IdentityException
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RoleManagerImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RoleManagerImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/api/session/managers/RoleManagerImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -31,10 +31,12 @@
import org.jboss.identity.idm.api.IdentityType;
import org.jboss.identity.idm.api.RoleManagerFeaturesDescription;
import org.jboss.identity.idm.api.IdentitySearchControl;
+import org.jboss.identity.idm.api.GroupType;
import org.jboss.identity.idm.exception.IdentityException;
import org.jboss.identity.idm.spi.model.IdentityObjectRelationshipType;
import org.jboss.identity.idm.spi.model.IdentityObjectRelationship;
import org.jboss.identity.idm.spi.exception.OperationNotSupportedException;
+import org.jboss.identity.idm.spi.searchcontrol.IdentityObjectSearchControl;
import org.jboss.identity.idm.impl.NotYetImplementedException;
import org.jboss.identity.idm.impl.api.session.managers.AbstractManager;
import org.jboss.identity.idm.impl.api.model.SimpleRoleType;
@@ -58,14 +60,42 @@
}
};
+ private final RoleManagerFeaturesDescription featuresDescription;
+
public RoleManagerImpl(IdentitySession session)
{
super(session);
+
+ featuresDescription = new RoleManagerFeaturesDescription()
+ {
+ public boolean isRoleTypeAddRemoveSupported()
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().isRelationshipNameAddRemoveSupported();
+ }
+
+ public boolean isRoleTypeSearchControlSupported(Class controlClazz)
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().isRoleNameControlSupported(controlClazz);
+ }
+
+ public boolean isRoleTypeSearchControlSupported(IdentitySearchControl control)
+ {
+ if (control instanceof IdentityObjectSearchControl)
+ {
+ return getSessionContext().getIdentityStoreRepository().getSupportedFeatures().
+ isRoleNameControlSupported((IdentityObjectSearchControl)control);
+ }
+ else
+ {
+ return false;
+ }
+ }
+ };
}
public RoleManagerFeaturesDescription getSupportedFeatures()
{
- throw new NotYetImplementedException("NYI");
+ return featuresDescription;
}
public RoleType createRoleType(String name) throws IdentityException
@@ -256,13 +286,8 @@
}
- public <T extends IdentityType> Collection<Role> findRoles(T identityType, RoleType roleType) throws IdentityException
+ public Collection<Role> findRoles(IdentityType identityType, RoleType roleType) throws IdentityException
{
- return findRoles(identityType, roleType, null);
- }
-
- public <T extends IdentityType> Collection<Role> findRoles(T identityType, RoleType roleType, IdentitySearchControl[] controls) throws IdentityException
- {
Set<Role> roles = new HashSet<Role>();
Set<IdentityObjectRelationship> relationships = null;
@@ -280,7 +305,10 @@
for (IdentityObjectRelationship relationship : relationships)
{
- roles.add(new SimpleRole(new SimpleRoleType(relationship.getName()), createIdentity(relationship.getFromIdentityObject()), createGroup(relationship.getToIdentityObject())));
+ if (roleType.getName().equals(relationship.getName()))
+ {
+ roles.add(new SimpleRole(new SimpleRoleType(relationship.getName()), createIdentity(relationship.getFromIdentityObject()), createGroup(relationship.getToIdentityObject())));
+ }
}
return roles;
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/repository/FallbackIdentityStoreRepository.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/repository/FallbackIdentityStoreRepository.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/repository/FallbackIdentityStoreRepository.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -207,6 +207,55 @@
{
return resolveIdentityStore(identityObjectType).getSupportedFeatures().isCredentialSupported(identityObjectType, credentialType);
}
+
+ public boolean isIdentityObjectAddRemoveSupported(IdentityObjectType objectType)
+ {
+ return resolveIdentityStore(objectType).getSupportedFeatures().isIdentityObjectAddRemoveSupported(objectType);
+ }
+
+ public boolean isRelationshipNameAddRemoveSupported()
+ {
+ // If there is any IdentityStore that supports named relationships...
+ for (IdentityStore identityStore : getIdentityStoreMappings().values())
+ {
+ if (identityStore.getSupportedFeatures().isRelationshipNameAddRemoveSupported())
+ {
+ return true;
+ }
+ }
+ return defaultIdentityStore.getSupportedFeatures().isRelationshipNameAddRemoveSupported();
+
+ }
+
+ public boolean isRoleNameControlSupported(IdentityObjectSearchControl control)
+ {
+ // If there is any IdentityStore that supports named relationships...
+ for (IdentityStore identityStore : getIdentityStoreMappings().values())
+ {
+ if (identityStore.getSupportedFeatures().isNamedRelationshipsSupported() &&
+ identityStore.getSupportedFeatures().isRoleNameControlSupported(control))
+ {
+ return true;
+ }
+ }
+ return defaultIdentityStore.getSupportedFeatures().isNamedRelationshipsSupported() &&
+ defaultIdentityStore.getSupportedFeatures().isRoleNameControlSupported(control);
+ }
+
+ public boolean isRoleNameControlSupported(Class controlClazz)
+ {
+ // If there is any IdentityStore that supports named relationships...
+ for (IdentityStore identityStore : getIdentityStoreMappings().values())
+ {
+ if (identityStore.getSupportedFeatures().isNamedRelationshipsSupported() &&
+ identityStore.getSupportedFeatures().isRoleNameControlSupported(controlClazz))
+ {
+ return true;
+ }
+ }
+ return defaultIdentityStore.getSupportedFeatures().isNamedRelationshipsSupported() &&
+ defaultIdentityStore.getSupportedFeatures().isRoleNameControlSupported(controlClazz);
+ }
};
}
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/FeaturesMetaDataImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/FeaturesMetaDataImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/FeaturesMetaDataImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -53,15 +53,19 @@
private final boolean namedRelationshipsSupport;
+ private final Set<String> readOnlyObjectTypes;
+
// <Relationship Type, <From IdentityType, To IdentityType>>
private final Map<String, Map<String, Set<String>>> supportedRelationshipMappings = new HashMap<String, Map<String, Set<String>>>();
public FeaturesMetaDataImpl(IdentityStoreConfigurationMetaData configurationMD,
Set<Class> supportedControls,
- boolean namedRelationshipsSupport)
+ boolean namedRelationshipsSupport,
+ Set<String> readOnlyObjectTypes)
{
this.namedRelationshipsSupport = namedRelationshipsSupport;
+ this.readOnlyObjectTypes = readOnlyObjectTypes;
Map<String, Set<String>> supportedCredentials = new HashMap<String, Set<String>>();
@@ -140,6 +144,22 @@
}
+ public boolean isIdentityObjectAddRemoveSupported(IdentityObjectType objectType)
+ {
+ if (readOnlyObjectTypes.contains(objectType.getName()))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public boolean isRelationshipNameAddRemoveSupported()
+ {
+ // For now just assume that if store supports named relationships, names can be altered
+ return namedRelationshipsSupport;
+ }
+
public boolean isNamedRelationshipsSupported()
{
return namedRelationshipsSupport;
@@ -204,4 +224,16 @@
}
return false;
}
+
+ public boolean isRoleNameControlSupported(IdentityObjectSearchControl control)
+ {
+ // For now simple - use the same allowed controls list for everything
+ return isNamedRelationshipsSupported() && isControlSupported(null, control);
+ }
+
+ public boolean isRoleNameControlSupported(Class controlClazz)
+ {
+ // For now simple - use the same allowed controls list for everything
+ return isNamedRelationshipsSupported() && isControlSupported(null, controlClazz);
+ }
}
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/hibernate/HibernateIdentityStoreImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -168,7 +168,7 @@
id = configurationMD.getId();
- supportedFeatures = new FeaturesMetaDataImpl(configurationMD, supportedIdentityObjectSearchControls, true);
+ supportedFeatures = new FeaturesMetaDataImpl(configurationMD, supportedIdentityObjectSearchControls, true, new HashSet<String>());
String persistenceUnit = configurationMD.getOptionSingleValue(PERSISTENCE_UNIT);
Modified: idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java
===================================================================
--- idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-impl/src/main/java/org/jboss/identity/idm/impl/store/ldap/LDAPIdentityStoreImpl.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -134,8 +134,18 @@
configuration = new SimpleLDAPIdentityStoreConfiguration(configurationMD);
- supportedFeatures = new FeaturesMetaDataImpl(configurationMD, supportedSearchControls, false);
+ Set<String> readOnlyObjectTypes = new HashSet<String>();
+ for (IdentityObjectType identityObjectType : configuration.getConfiguredTypes())
+ {
+ if (!configuration.getTypeConfiguration(identityObjectType.getName()).isAllowCreateEntry())
+ {
+ readOnlyObjectTypes.add(identityObjectType.getName());
+ }
+ }
+
+ supportedFeatures = new FeaturesMetaDataImpl(configurationMD, supportedSearchControls, false, readOnlyObjectTypes);
+
// Attribute mappings - helper structures
for (IdentityObjectTypeMetaData identityObjectTypeMetaData : configurationMD.getSupportedIdentityTypes())
Modified: idm/trunk/identity-spi/src/main/java/org/jboss/identity/idm/spi/store/FeaturesMetaData.java
===================================================================
--- idm/trunk/identity-spi/src/main/java/org/jboss/identity/idm/spi/store/FeaturesMetaData.java 2009-01-13 22:54:31 UTC (rev 215)
+++ idm/trunk/identity-spi/src/main/java/org/jboss/identity/idm/spi/store/FeaturesMetaData.java 2009-01-14 13:12:43 UTC (rev 216)
@@ -31,14 +31,32 @@
/**
* Describe the features supported by an Identity Store
+ *
* @author boleslaw dot dawidowicz at redhat anotherdot com
* @author Anil.Saldhana at redhat.com
* @since Jul 10, 2008
*/
public interface FeaturesMetaData
{
+
/**
+ * Check if IdentityObjects with a given IdentityObjectType can be created and removed
*
+ * @param objectType
+ * @return
+ */
+ boolean isIdentityObjectAddRemoveSupported(IdentityObjectType objectType);
+
+
+ /**
+ * Check if RelationshipNames can be created and removed
+ *
+ * @return
+ */
+ boolean isRelationshipNameAddRemoveSupported();
+
+ /**
+ *
* @param identityObjectType
* @param control
* @return
@@ -54,6 +72,20 @@
boolean isControlSupported(IdentityObjectType identityObjectType, Class controlClazz);
/**
+ *
+ * @param control
+ * @return
+ */
+ boolean isRoleNameControlSupported(IdentityObjectSearchControl control);
+
+ /**
+ *
+ * @param controlClazz
+ * @return
+ */
+ boolean isRoleNameControlSupported(Class controlClazz);
+
+ /**
* @return set of identity types that can be persisted
*/
Set<String> getSupportedIdentityObjectTypes();
More information about the jboss-identity-commits
mailing list