Some cleanings
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/d76009ca Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/d76009ca Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/d76009ca Branch: refs/heads/2_0_X Commit: d76009ca6b9e13dcf95b920cf568dda770d92b81 Parents: ec44748 Author: Francesco Chicchiriccò <ilgro...@apache.org> Authored: Fri Apr 14 14:12:30 2017 +0200 Committer: Francesco Chicchiriccò <ilgro...@apache.org> Committed: Fri Apr 14 14:13:00 2017 +0200 ---------------------------------------------------------------------- .../syncope/core/logic/AbstractAnyLogic.java | 3 +- .../syncope/core/logic/AnyObjectLogic.java | 14 ++-- .../apache/syncope/core/logic/GroupLogic.java | 22 +++--- .../apache/syncope/core/logic/UserLogic.java | 8 +- .../persistence/jpa/dao/AbstractAnyDAO.java | 71 +++++++++++------ .../persistence/jpa/dao/JPAAnyObjectDAO.java | 28 +++++-- .../core/persistence/jpa/dao/JPAConfDAO.java | 16 +++- .../jpa/dao/JPAExternalResourceDAO.java | 81 ++++++++++++++++---- .../core/persistence/jpa/dao/JPAGroupDAO.java | 39 +++++++--- .../persistence/jpa/dao/JPAPlainSchemaDAO.java | 13 +++- .../core/persistence/jpa/dao/JPARoleDAO.java | 16 +++- .../core/persistence/jpa/dao/JPAUserDAO.java | 36 ++++++--- .../persistence/jpa/dao/JPAVirSchemaDAO.java | 14 +++- .../src/main/resources/domains/MasterDomain.xml | 2 +- .../src/test/resources/domains/TwoDomain.xml | 4 +- .../java/data/AbstractAnyDataBinder.java | 54 +++++-------- .../src/main/resources/restCXFContext.xml | 5 +- .../src/main/resources/jboss/restCXFContext.xml | 5 +- 18 files changed, 281 insertions(+), 150 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java index f8467cd..9d57524 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java @@ -51,8 +51,7 @@ import org.apache.syncope.core.provisioning.api.LogicActions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.support.AbstractBeanDefinition; -public abstract class AbstractAnyLogic<TO extends AnyTO, P extends AnyPatch> - extends AbstractResourceAssociator<TO> { +public abstract class AbstractAnyLogic<TO extends AnyTO, P extends AnyPatch> extends AbstractResourceAssociator<TO> { @Autowired private RealmDAO realmDAO; http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java index 4a24621..efd263d 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java @@ -31,23 +31,22 @@ import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.patch.AnyObjectPatch; import org.apache.syncope.common.lib.patch.StringPatchItem; -import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.AnyObjectTO; +import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.types.AnyEntitlement; import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.PatchOperation; -import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO; +import org.apache.syncope.core.persistence.api.dao.AnySearchDAO; import org.apache.syncope.core.persistence.api.dao.search.OrderByClause; import org.apache.syncope.core.persistence.api.dao.search.SearchCond; -import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager; -import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder; -import org.apache.syncope.core.spring.security.AuthContextUtils; -import org.apache.syncope.core.persistence.api.dao.AnySearchDAO; import org.apache.syncope.core.persistence.api.entity.AnyType; import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject; +import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager; import org.apache.syncope.core.provisioning.api.LogicActions; +import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder; +import org.apache.syncope.core.spring.security.AuthContextUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -60,9 +59,6 @@ import org.springframework.transaction.annotation.Transactional; public class AnyObjectLogic extends AbstractAnyLogic<AnyObjectTO, AnyObjectPatch> { @Autowired - protected AnyObjectDAO anyObjectDAO; - - @Autowired protected AnySearchDAO searchDAO; @Autowired http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java index 157a7d6..a460d0c 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java @@ -37,8 +37,8 @@ import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.patch.GroupPatch; import org.apache.syncope.common.lib.patch.StringPatchItem; import org.apache.syncope.common.lib.to.ExecTO; -import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.GroupTO; +import org.apache.syncope.common.lib.to.PropagationStatus; import org.apache.syncope.common.lib.to.ProvisioningResult; import org.apache.syncope.common.lib.to.TypeExtensionTO; import org.apache.syncope.common.lib.types.AnyTypeKind; @@ -47,28 +47,28 @@ import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.JobType; import org.apache.syncope.common.lib.types.PatchOperation; import org.apache.syncope.common.lib.types.StandardEntitlement; -import org.apache.syncope.core.provisioning.api.utils.RealmUtils; -import org.apache.syncope.core.persistence.api.dao.GroupDAO; -import org.apache.syncope.core.persistence.api.dao.UserDAO; -import org.apache.syncope.core.persistence.api.dao.search.OrderByClause; -import org.apache.syncope.core.persistence.api.dao.search.SearchCond; -import org.apache.syncope.core.persistence.api.entity.group.Group; -import org.apache.syncope.core.provisioning.api.GroupProvisioningManager; -import org.apache.syncope.core.provisioning.api.data.GroupDataBinder; -import org.apache.syncope.core.spring.security.AuthContextUtils; -import org.apache.syncope.core.spring.security.DelegatedAdministrationException; import org.apache.syncope.core.persistence.api.dao.AnySearchDAO; import org.apache.syncope.core.persistence.api.dao.ConfDAO; +import org.apache.syncope.core.persistence.api.dao.GroupDAO; import org.apache.syncope.core.persistence.api.dao.NotFoundException; import org.apache.syncope.core.persistence.api.dao.TaskDAO; +import org.apache.syncope.core.persistence.api.dao.UserDAO; +import org.apache.syncope.core.persistence.api.dao.search.OrderByClause; +import org.apache.syncope.core.persistence.api.dao.search.SearchCond; import org.apache.syncope.core.persistence.api.entity.EntityFactory; +import org.apache.syncope.core.persistence.api.entity.group.Group; import org.apache.syncope.core.persistence.api.entity.task.SchedTask; +import org.apache.syncope.core.provisioning.api.GroupProvisioningManager; import org.apache.syncope.core.provisioning.api.LogicActions; +import org.apache.syncope.core.provisioning.api.data.GroupDataBinder; import org.apache.syncope.core.provisioning.api.data.TaskDataBinder; import org.apache.syncope.core.provisioning.api.job.JobManager; import org.apache.syncope.core.provisioning.api.job.JobNamer; +import org.apache.syncope.core.provisioning.api.utils.RealmUtils; import org.apache.syncope.core.provisioning.java.job.GroupMemberProvisionTaskJobDelegate; import org.apache.syncope.core.provisioning.java.job.TaskJob; +import org.apache.syncope.core.spring.security.AuthContextUtils; +import org.apache.syncope.core.spring.security.DelegatedAdministrationException; import org.quartz.JobDataMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.quartz.SchedulerFactoryBean; http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java ---------------------------------------------------------------------- diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java index 24619f0..22e8ccf 100644 --- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java +++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java @@ -43,19 +43,19 @@ import org.apache.syncope.common.lib.types.AnyTypeKind; import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.PatchOperation; import org.apache.syncope.common.lib.types.StandardEntitlement; -import org.apache.syncope.core.persistence.api.dao.NotFoundException; +import org.apache.syncope.core.persistence.api.dao.AnySearchDAO; import org.apache.syncope.core.persistence.api.dao.GroupDAO; +import org.apache.syncope.core.persistence.api.dao.NotFoundException; import org.apache.syncope.core.persistence.api.dao.UserDAO; import org.apache.syncope.core.persistence.api.dao.search.OrderByClause; import org.apache.syncope.core.persistence.api.dao.search.SearchCond; import org.apache.syncope.core.persistence.api.entity.group.Group; import org.apache.syncope.core.persistence.api.entity.user.User; +import org.apache.syncope.core.provisioning.api.LogicActions; import org.apache.syncope.core.provisioning.api.UserProvisioningManager; import org.apache.syncope.core.provisioning.api.data.UserDataBinder; -import org.apache.syncope.core.spring.security.AuthContextUtils; import org.apache.syncope.core.provisioning.api.serialization.POJOHelper; -import org.apache.syncope.core.persistence.api.dao.AnySearchDAO; -import org.apache.syncope.core.provisioning.api.LogicActions; +import org.apache.syncope.core.spring.security.AuthContextUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java index 0eb38ac..25bfe50 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java @@ -63,26 +63,50 @@ import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; import org.apache.syncope.core.persistence.api.entity.user.UMembership; import org.apache.syncope.core.persistence.api.entity.user.User; import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttrValue; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> implements AnyDAO<A> { - @Autowired - protected PlainSchemaDAO plainSchemaDAO; + private PlainSchemaDAO plainSchemaDAO; - @Autowired - protected DerSchemaDAO derSchemaDAO; + private DerSchemaDAO derSchemaDAO; - @Autowired - protected AnySearchDAO searchDAO; + private AnySearchDAO searchDAO; - protected AnyUtils anyUtils; + private AnyUtils anyUtils; + + private PlainSchemaDAO plainSchemaDAO() { + synchronized (this) { + if (plainSchemaDAO == null) { + plainSchemaDAO = ApplicationContextProvider.getApplicationContext().getBean(PlainSchemaDAO.class); + } + } + return plainSchemaDAO; + } + + private DerSchemaDAO derSchemaDAO() { + synchronized (this) { + if (derSchemaDAO == null) { + derSchemaDAO = ApplicationContextProvider.getApplicationContext().getBean(DerSchemaDAO.class); + } + } + return derSchemaDAO; + } + + protected AnySearchDAO searchDAO() { + synchronized (this) { + if (searchDAO == null) { + searchDAO = ApplicationContextProvider.getApplicationContext().getBean(AnySearchDAO.class); + } + } + return searchDAO; + } protected abstract AnyUtils init(); - protected AnyUtils getAnyUtils() { + protected AnyUtils anyUtils() { synchronized (this) { if (anyUtils == null) { anyUtils = init(); @@ -115,13 +139,13 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im @Override @SuppressWarnings("unchecked") public A find(final String key) { - return (A) entityManager().find(getAnyUtils().anyClass(), key); + return (A) entityManager().find(anyUtils().anyClass(), key); } @SuppressWarnings("unchecked") @Override public A findByWorkflowId(final String workflowId) { - Query query = entityManager().createQuery("SELECT e FROM " + getAnyUtils().anyClass().getSimpleName() + Query query = entityManager().createQuery("SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e WHERE e.workflowId = :workflowId", User.class); query.setParameter("workflowId", workflowId); @@ -148,15 +172,15 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im @Override @SuppressWarnings("unchecked") public List<A> findByAttrValue(final String schemaKey, final PlainAttrValue attrValue) { - PlainSchema schema = plainSchemaDAO.find(schemaKey); + PlainSchema schema = plainSchemaDAO().find(schemaKey); if (schema == null) { LOG.error("Invalid schema name '{}'", schemaKey); return Collections.<A>emptyList(); } String entityName = schema.isUniqueConstraint() - ? getAnyUtils().plainAttrUniqueValueClass().getName() - : getAnyUtils().plainAttrValueClass().getName(); + ? anyUtils().plainAttrUniqueValueClass().getName() + : anyUtils().plainAttrValueClass().getName(); Query query = findByAttrValueQuery(entityName); query.setParameter("schemaKey", schemaKey); query.setParameter("stringValue", attrValue.getStringValue()); @@ -184,7 +208,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im @Override public A findByAttrUniqueValue(final String schemaKey, final PlainAttrValue attrUniqueValue) { - PlainSchema schema = plainSchemaDAO.find(schemaKey); + PlainSchema schema = plainSchemaDAO().find(schemaKey); if (schema == null) { LOG.error("Invalid schema name '{}'", schemaKey); return null; @@ -296,7 +320,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im if (!used.contains(identifiers.get(i))) { // verify schema existence and get schema type - PlainSchema schema = plainSchemaDAO.find(identifiers.get(i)); + PlainSchema schema = plainSchemaDAO().find(identifiers.get(i)); if (schema == null) { LOG.error("Invalid schema id '{}'", identifiers.get(i)); throw new IllegalArgumentException("Invalid schema id " + identifiers.get(i)); @@ -351,7 +375,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im @Override public List<A> findByDerAttrValue(final String schemaKey, final String value) { - DerSchema schema = derSchemaDAO.find(schemaKey); + DerSchema schema = derSchemaDAO().find(schemaKey); if (schema == null) { LOG.error("Invalid schema name '{}'", schemaKey); return Collections.<A>emptyList(); @@ -368,8 +392,8 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im } querystring.append("SELECT a.owner_id "). - append("FROM ").append(getAnyUtils().plainAttrClass().getSimpleName().substring(3)).append(" a, "). - append(getAnyUtils().plainAttrValueClass().getSimpleName().substring(3)).append(" v, "). + append("FROM ").append(anyUtils().plainAttrClass().getSimpleName().substring(3)).append(" a, "). + append(anyUtils().plainAttrValueClass().getSimpleName().substring(3)).append(" v, "). append(PlainSchema.class.getSimpleName()).append(" s "). append("WHERE ").append(clause); @@ -394,8 +418,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im @SuppressWarnings("unchecked") @Override public List<A> findByResource(final ExternalResource resource) { - Query query = entityManager().createQuery( - "SELECT e FROM " + getAnyUtils().anyClass().getSimpleName() + " e " + Query query = entityManager().createQuery("SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e " + "WHERE :resource MEMBER OF e.resources"); query.setParameter("resource", resource); @@ -417,8 +440,8 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im public List<A> findAll(final Set<String> adminRealms, final int page, final int itemsPerPage, final List<OrderByClause> orderBy) { - return searchDAO.search(adminRealms, getAllMatchingCond(), page, itemsPerPage, orderBy, - getAnyUtils().getAnyTypeKind()); + return searchDAO().search(adminRealms, getAllMatchingCond(), page, itemsPerPage, orderBy, + anyUtils().getAnyTypeKind()); } @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true) @@ -481,7 +504,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im @Override public final int count(final Set<String> adminRealms) { - return searchDAO.count(adminRealms, getAllMatchingCond(), getAnyUtils().getAnyTypeKind()); + return searchDAO().count(adminRealms, getAllMatchingCond(), anyUtils().getAnyTypeKind()); } @Override http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java index 2eae708..164f9a3 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java @@ -58,7 +58,7 @@ import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject; import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup; import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -66,12 +66,28 @@ import org.springframework.transaction.annotation.Transactional; @Repository public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObjectDAO { - @Autowired private UserDAO userDAO; - @Autowired private GroupDAO groupDAO; + private UserDAO userDAO() { + synchronized (this) { + if (userDAO == null) { + userDAO = ApplicationContextProvider.getApplicationContext().getBean(UserDAO.class); + } + } + return userDAO; + } + + private GroupDAO groupDAO() { + synchronized (this) { + if (groupDAO == null) { + groupDAO = ApplicationContextProvider.getApplicationContext().getBean(GroupDAO.class); + } + } + return groupDAO; + } + @Override public Map<AnyType, Integer> countByType() { Query query = entityManager().createQuery( @@ -182,7 +198,7 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj public AnyObject save(final AnyObject anyObject) { AnyObject merged = super.save(anyObject); - groupDAO.refreshDynMemberships(merged); + groupDAO().refreshDynMemberships(merged); return merged; } @@ -201,7 +217,7 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj } for (URelationship relationship : findURelationships(any)) { relationship.getLeftEnd().getRelationships().remove(relationship); - userDAO.save(relationship.getLeftEnd()); + userDAO().save(relationship.getLeftEnd()); entityManager().remove(relationship); } @@ -227,7 +243,7 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj ? (String) ((Object[]) key)[0] : ((String) key); - Group group = groupDAO.find(actualKey); + Group group = groupDAO().find(actualKey); if (group == null) { LOG.error("Could not find group with id {}, even though returned by the native query", actualKey); } else if (!result.contains(group)) { http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java index 2366016..3e4ea2c 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java @@ -29,7 +29,7 @@ import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr; import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue; import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue; import org.apache.syncope.core.persistence.jpa.entity.conf.JPAConf; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @@ -38,9 +38,17 @@ public class JPAConfDAO extends AbstractDAO<Conf> implements ConfDAO { private static final String KEY = "cd64d66f-6fff-4008-b966-a06b1cc1436d"; - @Autowired private PlainSchemaDAO schemaDAO; + private PlainSchemaDAO schemaDAO() { + synchronized (this) { + if (schemaDAO == null) { + schemaDAO = ApplicationContextProvider.getApplicationContext().getBean(PlainSchemaDAO.class); + } + } + return schemaDAO; + } + @Override public Conf get() { Conf instance = entityManager().find(JPAConf.class, KEY); @@ -65,10 +73,10 @@ public class JPAConfDAO extends AbstractDAO<Conf> implements ConfDAO { public CPlainAttr find(final String key, final String defaultValue) { CPlainAttr result = find(key); if (result == null) { - PlainSchema schema = schemaDAO.find(key); + PlainSchema schema = schemaDAO().find(key); if (schema != null) { JPACPlainAttr newAttr = new JPACPlainAttr(); - newAttr.setSchema(schemaDAO.find(key)); + newAttr.setSchema(schema); PlainAttrValue attrValue; if (newAttr.getSchema().isUniqueConstraint()) { http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java index 0658179..222e645 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java @@ -49,6 +49,7 @@ import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResour import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping; import org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision; import org.apache.syncope.core.provisioning.api.ConnectorRegistry; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @@ -57,25 +58,73 @@ import org.springframework.transaction.annotation.Transactional; public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implements ExternalResourceDAO { @Autowired + private ConnectorRegistry connRegistry; + private TaskDAO taskDAO; - @Autowired private AnyObjectDAO anyObjectDAO; - @Autowired private UserDAO userDAO; - @Autowired private GroupDAO groupDAO; - @Autowired private PolicyDAO policyDAO; - @Autowired private VirSchemaDAO virSchemaDAO; - @Autowired - private ConnectorRegistry connRegistry; + private TaskDAO taskDAO() { + synchronized (this) { + if (taskDAO == null) { + taskDAO = ApplicationContextProvider.getApplicationContext().getBean(TaskDAO.class); + } + } + return taskDAO; + } + + private AnyObjectDAO anyObjectDAO() { + synchronized (this) { + if (anyObjectDAO == null) { + anyObjectDAO = ApplicationContextProvider.getApplicationContext().getBean(AnyObjectDAO.class); + } + } + return anyObjectDAO; + } + + private UserDAO userDAO() { + synchronized (this) { + if (userDAO == null) { + userDAO = ApplicationContextProvider.getApplicationContext().getBean(UserDAO.class); + } + } + return userDAO; + } + + private GroupDAO groupDAO() { + synchronized (this) { + if (groupDAO == null) { + groupDAO = ApplicationContextProvider.getApplicationContext().getBean(GroupDAO.class); + } + } + return groupDAO; + } + + private PolicyDAO policyDAO() { + synchronized (this) { + if (policyDAO == null) { + policyDAO = ApplicationContextProvider.getApplicationContext().getBean(PolicyDAO.class); + } + } + return policyDAO; + } + + private VirSchemaDAO virSchemaDAO() { + synchronized (this) { + if (virSchemaDAO == null) { + virSchemaDAO = ApplicationContextProvider.getApplicationContext().getBean(VirSchemaDAO.class); + } + } + return virSchemaDAO; + } @Override public int count() { @@ -191,20 +240,20 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem return; } - taskDAO.deleteAll(resource, TaskType.PROPAGATION); - taskDAO.deleteAll(resource, TaskType.PULL); - taskDAO.deleteAll(resource, TaskType.PUSH); + taskDAO().deleteAll(resource, TaskType.PROPAGATION); + taskDAO().deleteAll(resource, TaskType.PULL); + taskDAO().deleteAll(resource, TaskType.PUSH); - for (AnyObject anyObject : anyObjectDAO.findByResource(resource)) { + for (AnyObject anyObject : anyObjectDAO().findByResource(resource)) { anyObject.getResources().remove(resource); } - for (User user : userDAO.findByResource(resource)) { + for (User user : userDAO().findByResource(resource)) { user.getResources().remove(resource); } - for (Group group : groupDAO.findByResource(resource)) { + for (Group group : groupDAO().findByResource(resource)) { group.getResources().remove(resource); } - for (AccountPolicy policy : policyDAO.findByResource(resource)) { + for (AccountPolicy policy : policyDAO().findByResource(resource)) { policy.getResources().remove(resource); } @@ -216,8 +265,8 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem provision.setMapping(null); provision.setResource(null); - for (VirSchema schema : virSchemaDAO.findByProvision(provision)) { - virSchemaDAO.delete(schema.getKey()); + for (VirSchema schema : virSchemaDAO().findByProvision(provision)) { + virSchemaDAO().delete(schema.getKey()); } } http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java index 0bcdee2..15a9d3f 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java @@ -58,6 +58,7 @@ import org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory; import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership; import org.apache.syncope.core.persistence.jpa.entity.group.JPATypeExtension; import org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @@ -66,13 +67,29 @@ import org.springframework.transaction.annotation.Transactional; public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { @Autowired + private PlainAttrDAO plainAttrDAO; + private AnyObjectDAO anyObjectDAO; - @Autowired private UserDAO userDAO; - @Autowired - private PlainAttrDAO plainAttrDAO; + private UserDAO userDAO() { + synchronized (this) { + if (userDAO == null) { + userDAO = ApplicationContextProvider.getApplicationContext().getBean(UserDAO.class); + } + } + return userDAO; + } + + private AnyObjectDAO anyObjectDAO() { + synchronized (this) { + if (anyObjectDAO == null) { + anyObjectDAO = ApplicationContextProvider.getApplicationContext().getBean(AnyObjectDAO.class); + } + } + return anyObjectDAO; + } @Override protected AnyUtils init() { @@ -152,14 +169,14 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { @Transactional(readOnly = true) @Override public List<Group> findOwnedByUser(final String userKey) { - User owner = userDAO.find(userKey); + User owner = userDAO().find(userKey); if (owner == null) { return Collections.<Group>emptyList(); } StringBuilder queryString = new StringBuilder("SELECT e FROM ").append(JPAGroup.class.getSimpleName()). append(" e WHERE e.userOwner=:owner "); - for (String groupKey : userDAO.findAllGroupKeys(owner)) { + for (String groupKey : userDAO().findAllGroupKeys(owner)) { queryString.append("OR e.groupOwner.id='").append(groupKey).append("' "); } @@ -218,7 +235,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { // refresh dynaminc memberships if (merged.getUDynMembership() != null) { - List<User> matching = searchDAO.search( + List<User> matching = searchDAO().search( buildDynMembershipCond(merged.getUDynMembership().getFIQLCond(), merged.getRealm()), AnyTypeKind.USER); @@ -228,7 +245,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { } } for (ADynGroupMembership memb : merged.getADynMemberships()) { - List<AnyObject> matching = searchDAO.search( + List<AnyObject> matching = searchDAO().search( buildDynMembershipCond(memb.getFIQLCond(), merged.getRealm()), AnyTypeKind.ANY_OBJECT); @@ -254,7 +271,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { plainAttrDAO.delete(attr); } - anyObjectDAO.save(leftEnd); + anyObjectDAO().save(leftEnd); } for (UMembership membership : findUMemberships(group)) { User leftEnd = membership.getLeftEnd(); @@ -267,7 +284,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { plainAttrDAO.delete(attr); } - userDAO.save(leftEnd); + userDAO().save(leftEnd); } entityManager().remove(group); @@ -288,7 +305,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { public void refreshDynMemberships(final AnyObject anyObject) { for (Group group : findAll()) { for (ADynGroupMembership memb : group.getADynMemberships()) { - if (searchDAO.matches( + if (searchDAO().matches( anyObject, buildDynMembershipCond(memb.getFIQLCond(), group.getRealm()))) { @@ -305,7 +322,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO { public void refreshDynMemberships(final User user) { for (Group group : findAll()) { if (group.getUDynMembership() != null) { - if (searchDAO.matches( + if (searchDAO().matches( user, buildDynMembershipCond(group.getUDynMembership().getFIQLCond(), group.getRealm()))) { http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java index 2e3bef5..dfc3840 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java @@ -32,6 +32,7 @@ import org.apache.syncope.core.persistence.api.entity.PlainAttr; import org.apache.syncope.core.persistence.api.entity.PlainSchema; import org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory; import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -41,9 +42,17 @@ public class JPAPlainSchemaDAO extends AbstractDAO<PlainSchema> implements Plain @Autowired private PlainAttrDAO plainAttrDAO; - @Autowired private ExternalResourceDAO resourceDAO; + private ExternalResourceDAO resourceDAO() { + synchronized (this) { + if (resourceDAO == null) { + resourceDAO = ApplicationContextProvider.getApplicationContext().getBean(ExternalResourceDAO.class); + } + } + return resourceDAO; + } + @Override public PlainSchema find(final String key) { return entityManager().find(JPAPlainSchema.class, key); @@ -101,7 +110,7 @@ public class JPAPlainSchemaDAO extends AbstractDAO<PlainSchema> implements Plain plainAttrDAO.delete(attr.getKey(), anyUtils.plainAttrClass()); } - resourceDAO.deleteMapping(key); + resourceDAO().deleteMapping(key); } if (schema.getAnyTypeClass() != null) { http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java index b636fc6..dbf4f66 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java @@ -30,16 +30,24 @@ import org.apache.syncope.core.persistence.api.entity.Role; import org.apache.syncope.core.persistence.api.entity.user.User; import org.apache.syncope.core.persistence.jpa.entity.JPARole; import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; @Repository public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO { - @Autowired private AnySearchDAO searchDAO; + private AnySearchDAO searchDAO() { + synchronized (this) { + if (searchDAO == null) { + searchDAO = ApplicationContextProvider.getApplicationContext().getBean(AnySearchDAO.class); + } + } + return searchDAO; + } + @Override public int count() { Query query = entityManager().createQuery( @@ -71,7 +79,7 @@ public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO { public Role save(final Role role) { // refresh dynaminc memberships if (role.getDynMembership() != null) { - List<User> matchingUsers = searchDAO.search( + List<User> matchingUsers = searchDAO().search( SearchCondConverter.convert(role.getDynMembership().getFIQLCond()), AnyTypeKind.USER); role.getDynMembership().getMembers().clear(); @@ -111,7 +119,7 @@ public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO { public void refreshDynMemberships(final User user) { for (Role role : findAll()) { if (role.getDynMembership() != null) { - if (searchDAO.matches(user, SearchCondConverter.convert(role.getDynMembership().getFIQLCond()))) { + if (searchDAO().matches(user, SearchCondConverter.convert(role.getDynMembership().getFIQLCond()))) { role.getDynMembership().add(user); } else { role.getDynMembership().getMembers().remove(user); http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java index 3580136..3dff783 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java @@ -89,12 +89,6 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { Pattern.compile("^" + SyncopeConstants.NAME_PATTERN, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); @Autowired - private RealmDAO realmDAO; - - @Autowired - private GroupDAO groupDAO; - - @Autowired private RoleDAO roleDAO; @Autowired @@ -109,6 +103,28 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { @Resource(name = "anonymousUser") private String anonymousUser; + private RealmDAO realmDAO; + + private GroupDAO groupDAO; + + private RealmDAO realmDAO() { + synchronized (this) { + if (realmDAO == null) { + realmDAO = ApplicationContextProvider.getApplicationContext().getBean(RealmDAO.class); + } + } + return realmDAO; + } + + private GroupDAO groupDAO() { + synchronized (this) { + if (groupDAO == null) { + groupDAO = ApplicationContextProvider.getApplicationContext().getBean(GroupDAO.class); + } + } + return groupDAO; + } + @Override protected AnyUtils init() { return new JPAAnyUtilsFactory().getInstance(AnyTypeKind.USER); @@ -244,7 +260,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { } // add realm policies - for (Realm realm : realmDAO.findAncestors(user.getRealm())) { + for (Realm realm : realmDAO().findAncestors(user.getRealm())) { policy = realm.getPasswordPolicy(); if (policy != null) { policies.add(policy); @@ -266,7 +282,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { } // add realm policies - for (Realm realm : realmDAO.findAncestors(user.getRealm())) { + for (Realm realm : realmDAO().findAncestors(user.getRealm())) { AccountPolicy policy = realm.getAccountPolicy(); if (policy != null) { policies.add(policy); @@ -415,7 +431,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { } roleDAO.refreshDynMemberships(merged); - groupDAO.refreshDynMemberships(merged); + groupDAO().refreshDynMemberships(merged); return merged; } @@ -483,7 +499,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO { ? (String) ((Object[]) key)[0] : ((String) key); - Group group = groupDAO.find(actualKey); + Group group = groupDAO().find(actualKey); if (group == null) { LOG.error("Could not find group with id {}, even though returned by the native query", actualKey); } else if (!result.contains(group)) { http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java index 4636f7d..4dfc8db 100644 --- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java +++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java @@ -38,15 +38,23 @@ import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy; import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource; import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping; import org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.syncope.core.spring.ApplicationContextProvider; import org.springframework.stereotype.Repository; @Repository public class JPAVirSchemaDAO extends AbstractDAO<VirSchema> implements VirSchemaDAO { - @Autowired private ExternalResourceDAO resourceDAO; + private ExternalResourceDAO resourceDAO() { + synchronized (this) { + if (resourceDAO == null) { + resourceDAO = ApplicationContextProvider.getApplicationContext().getBean(ExternalResourceDAO.class); + } + } + return resourceDAO; + } + @Override public VirSchema find(final String key) { return entityManager().find(JPAVirSchema.class, key); @@ -118,7 +126,7 @@ public class JPAVirSchemaDAO extends AbstractDAO<VirSchema> implements VirSchema return; } - resourceDAO.deleteMapping(key); + resourceDAO().deleteMapping(key); if (schema.getAnyTypeClass() != null) { schema.getAnyTypeClass().getVirSchemas().remove(schema); http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml b/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml index f949e32..b5363e4 100644 --- a/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml +++ b/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml @@ -43,7 +43,7 @@ under the License. <!-- Use JNDI datasource as default but, when not available, revert to local datasource, with different properties for execution and testing. In any case, get all JDBC connections with a determined isolation level. --> - <bean id="MasterDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> + <bean id="MasterDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" primary="true"> <property name="jndiName" value="java:comp/env/jdbc/syncopeMasterDataSource"/> <property name="defaultObject" ref="localMasterDataSource"/> </bean> http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml ---------------------------------------------------------------------- diff --git a/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml b/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml index 506c068..46e1c79 100644 --- a/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml +++ b/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml @@ -43,7 +43,7 @@ under the License. <!-- Use JNDI datasource as default but, when not available, revert to local datasource, with different properties for execution and testing. In any case, get all JDBC connections with a determined isolation level. --> - <bean id="TwoDataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> + <bean id="TwoDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" primary="true"> <property name="jndiName" value="java:comp/env/jdbc/syncopeTwoDataSource"/> <property name="defaultObject" ref="localTwoDataSource"/> </bean> @@ -122,4 +122,4 @@ under the License. <tx:annotation-driven transaction-manager="TwoTransactionManager"/> -</beans> \ No newline at end of file +</beans> http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java ---------------------------------------------------------------------- diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java index 0bb5e25..160c702 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java @@ -40,57 +40,54 @@ import org.apache.syncope.common.lib.types.ClientExceptionType; import org.apache.syncope.common.lib.types.PatchOperation; import org.apache.syncope.common.lib.types.ResourceOperation; import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidPlainAttrValueException; -import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO; -import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO; -import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO; -import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO; -import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO; -import org.apache.syncope.core.persistence.api.dao.PolicyDAO; -import org.apache.syncope.core.persistence.api.dao.GroupDAO; -import org.apache.syncope.core.persistence.api.dao.UserDAO; -import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO; -import org.apache.syncope.core.persistence.api.entity.DerSchema; -import org.apache.syncope.core.persistence.api.entity.EntityFactory; -import org.apache.syncope.core.persistence.api.entity.PlainAttr; -import org.apache.syncope.core.persistence.api.entity.PlainAttrValue; -import org.apache.syncope.core.persistence.api.entity.PlainSchema; -import org.apache.syncope.core.persistence.api.entity.group.Group; -import org.apache.syncope.core.provisioning.api.PropagationByResource; import org.apache.syncope.core.persistence.api.dao.AllowedSchemas; -import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils; -import org.apache.syncope.core.provisioning.java.jexl.JexlUtils; -import org.apache.syncope.core.provisioning.api.utils.EntityUtils; import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO; import org.apache.syncope.core.persistence.api.dao.AnySearchDAO; import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO; +import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO; +import org.apache.syncope.core.persistence.api.dao.GroupDAO; import org.apache.syncope.core.persistence.api.dao.NotFoundException; +import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO; +import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO; +import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO; +import org.apache.syncope.core.persistence.api.dao.PolicyDAO; import org.apache.syncope.core.persistence.api.dao.RealmDAO; import org.apache.syncope.core.persistence.api.dao.RelationshipTypeDAO; +import org.apache.syncope.core.persistence.api.dao.UserDAO; import org.apache.syncope.core.persistence.api.entity.Any; import org.apache.syncope.core.persistence.api.entity.AnyTypeClass; import org.apache.syncope.core.persistence.api.entity.AnyUtils; import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory; +import org.apache.syncope.core.persistence.api.entity.DerSchema; +import org.apache.syncope.core.persistence.api.entity.EntityFactory; import org.apache.syncope.core.persistence.api.entity.GroupablePlainAttr; +import org.apache.syncope.core.persistence.api.entity.GroupableRelatable; import org.apache.syncope.core.persistence.api.entity.Membership; +import org.apache.syncope.core.persistence.api.entity.PlainAttr; +import org.apache.syncope.core.persistence.api.entity.PlainAttrValue; +import org.apache.syncope.core.persistence.api.entity.PlainSchema; import org.apache.syncope.core.persistence.api.entity.Realm; import org.apache.syncope.core.persistence.api.entity.Relationship; import org.apache.syncope.core.persistence.api.entity.VirSchema; import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject; +import org.apache.syncope.core.persistence.api.entity.group.Group; import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource; import org.apache.syncope.core.persistence.api.entity.resource.MappingItem; import org.apache.syncope.core.persistence.api.entity.resource.Provision; import org.apache.syncope.core.persistence.api.entity.user.User; import org.apache.syncope.core.provisioning.api.DerAttrHandler; +import org.apache.syncope.core.provisioning.api.IntAttrName; import org.apache.syncope.core.provisioning.api.MappingManager; +import org.apache.syncope.core.provisioning.api.PropagationByResource; import org.apache.syncope.core.provisioning.api.VirAttrHandler; +import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder; +import org.apache.syncope.core.provisioning.api.utils.EntityUtils; +import org.apache.syncope.core.provisioning.java.IntAttrNameParser; +import org.apache.syncope.core.provisioning.java.jexl.JexlUtils; +import org.apache.syncope.core.provisioning.java.utils.MappingUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.apache.syncope.core.persistence.api.entity.GroupableRelatable; -import org.apache.syncope.core.provisioning.java.IntAttrNameParser; -import org.apache.syncope.core.provisioning.api.IntAttrName; -import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder; -import org.apache.syncope.core.provisioning.java.utils.MappingUtils; abstract class AbstractAnyDataBinder { @@ -118,12 +115,6 @@ abstract class AbstractAnyDataBinder { protected PlainSchemaDAO plainSchemaDAO; @Autowired - protected DerSchemaDAO derSchemaDAO; - - @Autowired - protected VirSchemaDAO virSchemaDAO; - - @Autowired protected PlainAttrDAO plainAttrDAO; @Autowired @@ -154,9 +145,6 @@ abstract class AbstractAnyDataBinder { protected VirAttrHandler virAttrHandler; @Autowired - protected ConnObjectUtils connObjectUtils; - - @Autowired protected MappingManager mappingManager; @Autowired http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/rest-cxf/src/main/resources/restCXFContext.xml ---------------------------------------------------------------------- diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml index c918942..4701652 100644 --- a/core/rest-cxf/src/main/resources/restCXFContext.xml +++ b/core/rest-cxf/src/main/resources/restCXFContext.xml @@ -21,15 +21,12 @@ under the License. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:context="http://www.springframework.org/schema/context" - xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context.xsd - http://www.springframework.org/schema/aop - http://www.springframework.org/schema/aop/spring-aop.xsd"> + http://www.springframework.org/schema/context/spring-context.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/> http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/fit/core-reference/src/main/resources/jboss/restCXFContext.xml ---------------------------------------------------------------------- diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml index f64da85..dd6c88c 100644 --- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml +++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml @@ -21,15 +21,12 @@ under the License. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:context="http://www.springframework.org/schema/context" - xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context.xsd - http://www.springframework.org/schema/aop - http://www.springframework.org/schema/aop/spring-aop.xsd"> + http://www.springframework.org/schema/context/spring-context.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>