You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2014/01/09 14:45:15 UTC
svn commit: r1556805 [2/2] - in /syncope/branches/1_1_X:
common/src/main/java/org/apache/syncope/common/to/
common/src/main/java/org/apache/syncope/common/util/
console/src/main/java/org/apache/syncope/console/pages/
console/src/main/java/org/apache/sy...
Modified: syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.html?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.html (original)
+++ syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/SyncTasks.html Thu Jan 9 13:45:14 2014
@@ -16,7 +16,7 @@ KIND, either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<div id="users-contain" class="ui-widget" style="width:auto">
<span wicket:id="container">
@@ -39,4 +39,4 @@ under the License.
<wicket:message key="create_task"/>
</a>
</wicket:panel>
-</html>
+</html>
\ No newline at end of file
Modified: syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/VirtualAttributesPanel.html
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/VirtualAttributesPanel.html?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/VirtualAttributesPanel.html (original)
+++ syncope/branches/1_1_X/console/src/main/resources/org/apache/syncope/console/pages/panels/VirtualAttributesPanel.html Thu Jan 9 13:45:14 2014
@@ -16,43 +16,45 @@ KIND, either express or implied. See th
specific language governing permissions and limitations
under the License.
-->
-<wicket:panel>
- <table class="ui-widget ui-widget-content ui-corner-all"
- style="font-size: 1em;margin-top:2px;"
- width="100%" cellpadding="2px" cellspacing="1px">
- <thead>
- <tr class="ui-widget-header">
- <th><wicket:message key="virtualAttributeToBeRemoved"/></th>
- <th><wicket:message key="virtualAttributeName"/></th>
- <th><wicket:message key="virtualAttributeValue"/></th>
- </tr>
- </thead>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+ <wicket:panel>
+ <table class="ui-widget ui-widget-content ui-corner-all"
+ style="font-size: 1em;margin-top:2px;"
+ width="100%" cellpadding="2px" cellspacing="1px">
+ <thead>
+ <tr class="ui-widget-header">
+ <th><wicket:message key="virtualAttributeToBeRemoved"/></th>
+ <th><wicket:message key="virtualAttributeName"/></th>
+ <th><wicket:message key="virtualAttributeValue"/></th>
+ </tr>
+ </thead>
- <tfoot>
- <tr>
- <td>
- <input type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
- wicket:id="addAttributeBtn" />
- </td>
- </tr>
- </tfoot>
+ <tfoot>
+ <tr>
+ <td>
+ <input type="submit" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+ wicket:id="addAttributeBtn" />
+ </td>
+ </tr>
+ </tfoot>
- <tbody wicket:id="virAttrContainer">
- <tr wicket:id="attributes">
- <td align="center" valign="top">
- <input type="checkbox" class="text ui-widget-content ui-corner-all" wicket:id="toRemove"/>
- </td>
+ <tbody wicket:id="virAttrContainer">
+ <tr wicket:id="attributes">
+ <td align="center" valign="top">
+ <input type="checkbox" class="text ui-widget-content ui-corner-all" wicket:id="toRemove"/>
+ </td>
- <td align="center" valign="top">
- <select class="text ui-widget-content ui-corner-all"
- style="width:100%" wicket:id="schema"/>
- </td>
+ <td align="center" valign="top">
+ <select class="text ui-widget-content ui-corner-all"
+ style="width:100%" wicket:id="schema"/>
+ </td>
- <td align="center " valign="top">
- <span wicket:id="values" style="text-align:left;display:block;width:95%">[values]</span>
- </td>
+ <td align="center " valign="top">
+ <span wicket:id="values" style="text-align:left;display:block;width:95%">[values]</span>
+ </td>
- </tr>
- </tbody>
- </table>
-</wicket:panel>
+ </tr>
+ </tbody>
+ </table>
+ </wicket:panel>
+</html>
\ No newline at end of file
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/ExternalResource.java Thu Jan 9 13:45:14 2014
@@ -72,7 +72,7 @@ public class ExternalResource extends Ab
/**
* The resource type is identified by the associated connector.
*/
- @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
+ @ManyToOne(fetch = FetchType.EAGER, cascade = { CascadeType.MERGE })
@NotNull
private ConnInstance connector;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/role/SyncopeRole.java Thu Jan 9 13:45:14 2014
@@ -58,7 +58,7 @@ import org.apache.syncope.core.persisten
@Entity
@Table(uniqueConstraints =
-@UniqueConstraint(columnNames = {"name", "parent_id"}))
+ @UniqueConstraint(columnNames = { "name", "parent_id" }))
@Cacheable
@SyncopeRoleCheck
public class SyncopeRole extends AbstractAttributable {
@@ -82,9 +82,9 @@ public class SyncopeRole extends Abstrac
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(joinColumns =
- @JoinColumn(name = "role_id"),
- inverseJoinColumns =
- @JoinColumn(name = "entitlement_name"))
+ @JoinColumn(name = "role_id"),
+ inverseJoinColumns =
+ @JoinColumn(name = "entitlement_name"))
private Set<Entitlement> entitlements;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "owner")
@@ -140,9 +140,9 @@ public class SyncopeRole extends Abstrac
*/
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(joinColumns =
- @JoinColumn(name = "role_id"),
- inverseJoinColumns =
- @JoinColumn(name = "resource_name"))
+ @JoinColumn(name = "role_id"),
+ inverseJoinColumns =
+ @JoinColumn(name = "resource_name"))
@Valid
private Set<ExternalResource> resources;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/ResourceDAO.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/ResourceDAO.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/ResourceDAO.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/ResourceDAO.java Thu Jan 9 13:45:14 2014
@@ -21,14 +21,20 @@ package org.apache.syncope.core.persiste
import java.util.List;
import org.apache.syncope.common.types.IntMappingType;
+import org.apache.syncope.common.types.PolicyType;
import org.apache.syncope.core.persistence.beans.AbstractMappingItem;
import org.apache.syncope.core.persistence.beans.ExternalResource;
+import org.apache.syncope.core.persistence.beans.Policy;
import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
public interface ResourceDAO extends DAO {
ExternalResource find(String name);
+ List<ExternalResource> findByPolicy(Policy policy);
+
+ List<ExternalResource> findWithoutPolicy(PolicyType type);
+
List<ExternalResource> findAll();
List<ExternalResource> findAllByPriority();
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/RoleDAO.java Thu Jan 9 13:45:14 2014
@@ -21,8 +21,10 @@ package org.apache.syncope.core.persiste
import java.util.List;
import org.apache.syncope.common.services.InvalidSearchConditionException;
+import org.apache.syncope.common.types.PolicyType;
import org.apache.syncope.core.persistence.beans.Entitlement;
import org.apache.syncope.core.persistence.beans.ExternalResource;
+import org.apache.syncope.core.persistence.beans.Policy;
import org.apache.syncope.core.persistence.beans.membership.Membership;
import org.apache.syncope.core.persistence.beans.role.RAttrValue;
import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
@@ -39,7 +41,11 @@ public interface RoleDAO extends Attribu
List<SyncopeRole> findOwned(SyncopeUser owner);
- List<SyncopeRole> findByEntitlement(final Entitlement entitlement);
+ List<SyncopeRole> findByEntitlement(Entitlement entitlement);
+
+ List<SyncopeRole> findByPolicy(Policy policy);
+
+ List<SyncopeRole> findWithoutPolicy(PolicyType type);
List<SyncopeRole> findAncestors(SyncopeRole role);
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/ResourceDAOImpl.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/ResourceDAOImpl.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/ResourceDAOImpl.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/ResourceDAOImpl.java Thu Jan 9 13:45:14 2014
@@ -24,9 +24,11 @@ import java.util.Set;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import org.apache.syncope.common.types.IntMappingType;
+import org.apache.syncope.common.types.PolicyType;
import org.apache.syncope.core.persistence.beans.AbstractMapping;
import org.apache.syncope.core.persistence.beans.AbstractMappingItem;
import org.apache.syncope.core.persistence.beans.ExternalResource;
+import org.apache.syncope.core.persistence.beans.Policy;
import org.apache.syncope.core.persistence.beans.PropagationTask;
import org.apache.syncope.core.persistence.beans.SyncTask;
import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
@@ -58,7 +60,7 @@ public class ResourceDAOImpl extends Abs
@Override
public ExternalResource find(final String name) {
- TypedQuery<ExternalResource> query = entityManager.createQuery("SELECT e " + "FROM "
+ TypedQuery<ExternalResource> query = entityManager.createQuery("SELECT e FROM "
+ ExternalResource.class.getSimpleName() + " e " + "WHERE e.name = :name", ExternalResource.class);
query.setParameter("name", name);
@@ -72,19 +74,58 @@ public class ResourceDAOImpl extends Abs
return result;
}
+ private StringBuilder getByPolicyQuery(final PolicyType type) {
+ StringBuilder query = new StringBuilder("SELECT e FROM ").append(ExternalResource.class.getSimpleName()).
+ append(" e WHERE e.");
+ switch (type) {
+ case ACCOUNT:
+ case GLOBAL_ACCOUNT:
+ query.append("accountPolicy");
+ break;
+
+ case PASSWORD:
+ case GLOBAL_PASSWORD:
+ query.append("passwordPolicy");
+ break;
+
+ case SYNC:
+ case GLOBAL_SYNC:
+ query.append("syncPolicy");
+ break;
+
+ default:
+ break;
+ }
+ return query;
+ }
+
+ @Override
+ public List<ExternalResource> findByPolicy(final Policy policy) {
+ TypedQuery<ExternalResource> query = entityManager.createQuery(
+ getByPolicyQuery(policy.getType()).append(" = :policy").toString(), ExternalResource.class);
+ query.setParameter("policy", policy);
+ return query.getResultList();
+ }
+
+ @Override
+ public List<ExternalResource> findWithoutPolicy(final PolicyType type) {
+ TypedQuery<ExternalResource> query = entityManager.createQuery(
+ getByPolicyQuery(type).append(" IS NULL").toString(), ExternalResource.class);
+ return query.getResultList();
+ }
+
@Override
public List<ExternalResource> findAll() {
- TypedQuery<ExternalResource> query =
- entityManager.createQuery("SELECT e " + "FROM " + ExternalResource.class.getSimpleName() + " e",
- ExternalResource.class);
+ TypedQuery<ExternalResource> query = entityManager.createQuery(
+ "SELECT e FROM " + ExternalResource.class.getSimpleName() + " e", ExternalResource.class);
return query.getResultList();
}
@Override
public List<ExternalResource> findAllByPriority() {
- TypedQuery<ExternalResource> query =
- entityManager.createQuery("SELECT e " + "FROM " + ExternalResource.class.getSimpleName() + " e "
- + "ORDER BY e.propagationPriority", ExternalResource.class);
+ TypedQuery<ExternalResource> query = entityManager.createQuery(
+ "SELECT e FROM " + ExternalResource.class.getSimpleName() + " e ORDER BY e.propagationPriority",
+ ExternalResource.class);
return query.getResultList();
}
@@ -97,7 +138,7 @@ public class ResourceDAOImpl extends Abs
* @return the same entity, updated
*/
@Override
- @Transactional(rollbackFor = {Throwable.class})
+ @Transactional(rollbackFor = { Throwable.class })
public ExternalResource save(final ExternalResource resource) {
ExternalResource merged = entityManager.merge(resource);
try {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RoleDAOImpl.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RoleDAOImpl.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RoleDAOImpl.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/dao/impl/RoleDAOImpl.java Thu Jan 9 13:45:14 2014
@@ -18,17 +18,22 @@
*/
package org.apache.syncope.core.persistence.dao.impl;
+import java.util.AbstractMap;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Map;
import javax.persistence.NoResultException;
import javax.persistence.TypedQuery;
import org.apache.syncope.common.services.InvalidSearchConditionException;
import org.apache.syncope.common.types.AttributableType;
+import org.apache.syncope.common.types.PolicyType;
import org.apache.syncope.core.persistence.beans.AbstractAttributable;
import org.apache.syncope.core.persistence.beans.AbstractVirAttr;
import org.apache.syncope.core.persistence.beans.Entitlement;
import org.apache.syncope.core.persistence.beans.ExternalResource;
+import org.apache.syncope.core.persistence.beans.Policy;
import org.apache.syncope.core.persistence.beans.membership.Membership;
import org.apache.syncope.core.persistence.beans.role.RAttrValue;
import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
@@ -138,12 +143,83 @@ public class RoleDAOImpl extends Abstrac
public List<SyncopeRole> findByEntitlement(final Entitlement entitlement) {
TypedQuery<SyncopeRole> query =
entityManager.createQuery("SELECT e FROM " + SyncopeRole.class.getSimpleName() + " e "
- + "WHERE :entitlement MEMBER OF e.entitlements", SyncopeRole.class);
+ + "WHERE :entitlement MEMBER OF e.entitlements", SyncopeRole.class);
query.setParameter("entitlement", entitlement);
return query.getResultList();
}
+ private Map.Entry<String, String> getPolicyFields(final PolicyType type) {
+ String policyField;
+ String inheritPolicyField;
+ if (type == PolicyType.GLOBAL_ACCOUNT || type == PolicyType.ACCOUNT) {
+ policyField = "accountPolicy";
+ inheritPolicyField = "inheritAccountPolicy";
+ } else {
+ policyField = "passwordPolicy";
+ inheritPolicyField = "inheritPasswordPolicy";
+ }
+
+ return new AbstractMap.SimpleEntry<String, String>(policyField, inheritPolicyField);
+ }
+
+ private List<SyncopeRole> findSamePolicyChildren(final SyncopeRole role, final PolicyType type) {
+ List<SyncopeRole> result = new ArrayList<SyncopeRole>();
+
+ for (SyncopeRole child : findChildren(role)) {
+ boolean inherit = type == PolicyType.GLOBAL_ACCOUNT || type == PolicyType.ACCOUNT
+ ? child.isInheritAccountPolicy()
+ : child.isInheritPasswordPolicy();
+ if (inherit) {
+ result.add(child);
+ result.addAll(findSamePolicyChildren(child, type));
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public List<SyncopeRole> findByPolicy(final Policy policy) {
+ if (policy.getType() == PolicyType.GLOBAL_SYNC || policy.getType() == PolicyType.SYNC) {
+ return Collections.<SyncopeRole>emptyList();
+ }
+
+ Map.Entry<String, String> policyFields = getPolicyFields(policy.getType());
+ StringBuilder queryString = new StringBuilder("SELECT e FROM ").
+ append(SyncopeRole.class.getSimpleName()).append(" e WHERE e.").
+ append(policyFields.getKey()).append(" = :policy AND (e.").
+ append(policyFields.getValue()).append(" IS NULL OR e.").
+ append(policyFields.getValue()).append(" = 0)");
+
+ TypedQuery<SyncopeRole> query = entityManager.createQuery(queryString.toString(), SyncopeRole.class);
+ query.setParameter("policy", policy);
+
+ List<SyncopeRole> result = new ArrayList<SyncopeRole>();
+ for (SyncopeRole role : query.getResultList()) {
+ result.add(role);
+ result.addAll(findSamePolicyChildren(role, policy.getType()));
+ }
+ return result;
+ }
+
+ @Override
+ public List<SyncopeRole> findWithoutPolicy(final PolicyType type) {
+ if (type == PolicyType.GLOBAL_SYNC || type == PolicyType.SYNC) {
+ return Collections.<SyncopeRole>emptyList();
+ }
+
+ Map.Entry<String, String> policyFields = getPolicyFields(type);
+ StringBuilder queryString = new StringBuilder("SELECT e FROM ").
+ append(SyncopeRole.class.getSimpleName()).append(" e WHERE e.").
+ append(policyFields.getKey()).append(" IS NULL AND (e.").
+ append(policyFields.getValue()).append(" IS NULL OR e.").
+ append(policyFields.getValue()).append(" = 0)");
+
+ TypedQuery<SyncopeRole> query = entityManager.createQuery(queryString.toString(), SyncopeRole.class);
+ return query.getResultList();
+ }
+
private void findAncestors(final List<SyncopeRole> result, final SyncopeRole role) {
if (role.getParent() != null && !result.contains(role.getParent())) {
result.add(role.getParent());
@@ -161,7 +237,7 @@ public class RoleDAOImpl extends Abstrac
@Override
public List<SyncopeRole> findChildren(final SyncopeRole role) {
TypedQuery<SyncopeRole> query =
- entityManager.createQuery("SELECT r FROM SyncopeRole r WHERE " + "r.parent=:role", SyncopeRole.class);
+ entityManager.createQuery("SELECT r FROM SyncopeRole r WHERE r.parent=:role", SyncopeRole.class);
query.setParameter("role", role);
return query.getResultList();
@@ -217,7 +293,7 @@ public class RoleDAOImpl extends Abstrac
public List<Membership> findMemberships(final SyncopeRole role) {
TypedQuery<Membership> query =
entityManager.createQuery("SELECT e FROM " + Membership.class.getSimpleName() + " e"
- + " WHERE e.syncopeRole=:role", Membership.class);
+ + " WHERE e.syncopeRole=:role", Membership.class);
query.setParameter("role", role);
return query.getResultList();
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UnresolvedReferenceException.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UnresolvedReferenceException.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UnresolvedReferenceException.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/UnresolvedReferenceException.java Thu Jan 9 13:45:14 2014
@@ -29,7 +29,7 @@ public class UnresolvedReferenceExceptio
super();
}
- public UnresolvedReferenceException(Throwable cause) {
+ public UnresolvedReferenceException(final Throwable cause) {
super(cause);
}
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java Thu Jan 9 13:45:14 2014
@@ -30,15 +30,26 @@ import org.apache.syncope.common.types.S
import org.apache.syncope.common.validation.SyncopeClientCompositeErrorException;
import org.apache.syncope.common.validation.SyncopeClientException;
import org.apache.syncope.core.persistence.beans.AccountPolicy;
+import org.apache.syncope.core.persistence.beans.ExternalResource;
import org.apache.syncope.core.persistence.beans.PasswordPolicy;
import org.apache.syncope.core.persistence.beans.Policy;
import org.apache.syncope.core.persistence.beans.SyncPolicy;
+import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
+import org.apache.syncope.core.persistence.dao.ResourceDAO;
+import org.apache.syncope.core.persistence.dao.RoleDAO;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@Component
public class PolicyDataBinder {
+ @Autowired
+ private ResourceDAO resourceDAO;
+
+ @Autowired
+ private RoleDAO roleDAO;
+
private boolean isGlobalPolicy(final PolicyType policyType) {
boolean isGlobal;
switch (policyType) {
@@ -103,6 +114,23 @@ public class PolicyDataBinder {
policyTO.setId(policy.getId());
policyTO.setDescription(policy.getDescription());
+ for (ExternalResource resource : resourceDAO.findByPolicy(policy)) {
+ policyTO.getUsedByResources().add(resource.getName());
+ }
+ if (isGlobal) {
+ for (ExternalResource resource : resourceDAO.findWithoutPolicy(policy.getType())) {
+ policyTO.getUsedByResources().add(resource.getName());
+ }
+ }
+ for (SyncopeRole role : roleDAO.findByPolicy(policy)) {
+ policyTO.getUsedByRoles().add(role.getId());
+ }
+ if (isGlobal) {
+ for (SyncopeRole role : roleDAO.findWithoutPolicy(policy.getType())) {
+ policyTO.getUsedByRoles().add(role.getId());
+ }
+ }
+
return (T) policyTO;
}
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java Thu Jan 9 13:45:14 2014
@@ -21,8 +21,10 @@ package org.apache.syncope.core.rest;
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 static org.junit.Assert.fail;
+import java.util.Arrays;
import java.util.List;
import org.apache.syncope.common.to.AccountPolicyTO;
import org.apache.syncope.common.to.PasswordPolicyTO;
@@ -49,10 +51,37 @@ public class PolicyTestITCase extends Ab
}
@Test
- public void read() {
+ public void getAccountPolicy() {
+ AccountPolicyTO policyTO = policyService.read(PolicyType.ACCOUNT, 6L);
+
+ assertNotNull(policyTO);
+ assertTrue(policyTO.getUsedByResources().isEmpty());
+ assertEquals(Arrays.asList(6L, 7L, 10L, 14L), policyTO.getUsedByRoles());
+ }
+
+ @Test
+ public void getPasswordPolicy() {
+ PasswordPolicyTO policyTO = policyService.read(PolicyType.PASSWORD, 4L);
+
+ assertNotNull(policyTO);
+ assertTrue(policyTO.getUsedByResources().contains(RESOURCE_NAME_NOPROPAGATION));
+ assertEquals(Arrays.asList(6L, 7L, 10L, 8L), policyTO.getUsedByRoles());
+ }
+
+ @Test
+ public void getSyncPolicy() {
SyncPolicyTO policyTO = policyService.read(PolicyType.SYNC, 1L);
assertNotNull(policyTO);
+ assertTrue(policyTO.getUsedByRoles().isEmpty());
+ }
+
+ @Test
+ public void getGlobalAccountPolicy() {
+ AccountPolicyTO policyTO = policyService.readGlobal(PolicyType.ACCOUNT);
+
+ assertNotNull(policyTO);
+ assertEquals(PolicyType.GLOBAL_ACCOUNT, policyTO.getType());
}
@Test
@@ -62,14 +91,18 @@ public class PolicyTestITCase extends Ab
assertNotNull(policyTO);
assertEquals(PolicyType.GLOBAL_PASSWORD, policyTO.getType());
assertEquals(8, policyTO.getSpecification().getMinLength());
+ assertFalse(policyTO.getUsedByResources().contains(RESOURCE_NAME_NOPROPAGATION));
}
@Test
- public void getGlobalAccountPolicy() {
- AccountPolicyTO policyTO = policyService.readGlobal(PolicyType.ACCOUNT);
+ public void getGlobalSyncPolicy() {
+ SyncPolicyTO policyTO = policyService.readGlobal(PolicyType.SYNC);
assertNotNull(policyTO);
- assertEquals(PolicyType.GLOBAL_ACCOUNT, policyTO.getType());
+ assertEquals(PolicyType.GLOBAL_SYNC, policyTO.getType());
+ assertFalse(policyTO.getUsedByResources().contains(RESOURCE_NAME_CSV));
+ assertFalse(policyTO.getUsedByResources().contains(RESOURCE_NAME_WS2));
+ assertTrue(policyTO.getUsedByRoles().isEmpty());
}
@Test
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/SchemaTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/SchemaTestITCase.java?rev=1556805&r1=1556804&r2=1556805&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/SchemaTestITCase.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/SchemaTestITCase.java Thu Jan 9 13:45:14 2014
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertTru
import static org.junit.Assert.fail;
import java.util.List;
+import org.apache.commons.lang3.SerializationUtils;
import org.apache.syncope.common.mod.UserMod;
import org.apache.syncope.common.to.MembershipTO;
@@ -212,7 +213,7 @@ public class SchemaTestITCase extends Ab
userTO = createUser(userTO);
assertNotNull(userTO);
- UserTO newUserTO = AttributableOperations.clone(userTO);
+ UserTO newUserTO = SerializationUtils.clone(userTO);
MembershipTO membership = new MembershipTO();
membership.setRoleId(2L);
newUserTO.addMembership(membership);