Author: ilgrosso
Date: Mon Jan 7 16:30:17 2013
New Revision: 1429884
URL: http://svn.apache.org/viewvc?rev=1429884&view=rev
Log:
[SYNCOPE-262] Switching to PropertyDescriptor for accessing Policy definition
fields
Modified:
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PolicyBeanPanel.java
syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage.properties
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage_it.properties
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/Policy.java
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/PolicyController.java
Modified:
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java
URL:
http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java
(original)
+++
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/PolicyModalPage.java
Mon Jan 7 16:30:17 2013
@@ -103,6 +103,7 @@ public class PolicyModalPage<T extends P
form.add(new PolicyBeanPanel("panel", policy));
final IndicatingAjaxButton submit = new IndicatingAjaxButton("apply",
new ResourceModel("apply")) {
+
private static final long serialVersionUID = -958724007591692537L;
@Override
@@ -121,14 +122,13 @@ public class PolicyModalPage<T extends P
} catch (Exception e) {
LOG.error("While creating policy", e);
- error(getString("operation_error"));
+ error(getString("error") + ":" + e.getMessage());
target.add(getPage().get("feedback"));
}
}
@Override
protected void onError(final AjaxRequestTarget target, final
Form<?> form) {
-
target.add(getPage().get("feedback"));
}
};
@@ -136,6 +136,7 @@ public class PolicyModalPage<T extends P
form.add(submit);
final IndicatingAjaxButton cancel = new IndicatingAjaxButton("cancel",
new ResourceModel("cancel")) {
+
private static final long serialVersionUID = -958724007591692537L;
@Override
@@ -188,7 +189,8 @@ public class PolicyModalPage<T extends P
case GLOBAL_ACCOUNT:
case ACCOUNT:
if (!(specification instanceof AccountPolicySpec)) {
- throw new ClassCastException("policy is type Account, but
spec is not: " + specification.getClass().getName());
+ throw new ClassCastException("policy is type Account, but
spec is not: " + specification.getClass().
+ getName());
}
((AccountPolicyTO)
policyTO).setSpecification((AccountPolicySpec) specification);
break;
@@ -196,7 +198,8 @@ public class PolicyModalPage<T extends P
case GLOBAL_PASSWORD:
case PASSWORD:
if (!(specification instanceof PasswordPolicySpec)) {
- throw new ClassCastException("policy is type Password, but
spec is not: " + specification.getClass().getName());
+ throw new ClassCastException("policy is type Password, but
spec is not: "
+ + specification.getClass().getName());
}
((PasswordPolicyTO)
policyTO).setSpecification((PasswordPolicySpec) specification);
break;
@@ -204,7 +207,8 @@ public class PolicyModalPage<T extends P
case GLOBAL_SYNC:
case SYNC:
if (!(specification instanceof SyncPolicySpec)) {
- throw new ClassCastException("policy is type Sync, but
spec is not: " + specification.getClass().getName());
+ throw new ClassCastException("policy is type Sync, but
spec is not: " + specification.getClass().
+ getName());
}
((SyncPolicyTO) policyTO).setSpecification((SyncPolicySpec)
specification);
Modified:
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PolicyBeanPanel.java
URL:
http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PolicyBeanPanel.java?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PolicyBeanPanel.java
(original)
+++
syncope/trunk/console/src/main/java/org/apache/syncope/console/pages/panels/PolicyBeanPanel.java
Mon Jan 7 16:30:17 2013
@@ -18,15 +18,14 @@
*/
package org.apache.syncope.console.pages.panels;
+import java.beans.PropertyDescriptor;
import java.io.Serializable;
import java.lang.reflect.Field;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.List;
-import java.util.Set;
import org.apache.syncope.annotation.SchemaList;
-import org.apache.syncope.console.commons.XMLRolesReader;
import org.apache.syncope.console.rest.SchemaRestClient;
import org.apache.syncope.console.wicket.markup.html.form.AbstractFieldPanel;
import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
@@ -53,16 +52,16 @@ import org.apache.wicket.model.util.List
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.util.StringUtils;
+import org.springframework.beans.BeanUtils;
public class PolicyBeanPanel extends Panel {
+ private static final long serialVersionUID = -3035998190456928143L;
+
/**
* Logger.
*/
- protected static final Logger LOG =
LoggerFactory.getLogger(PolicyBeanPanel.class);
-
- private static final long serialVersionUID = -3035998190456928143L;
+ private static final Logger LOG =
LoggerFactory.getLogger(PolicyBeanPanel.class);
@SpringBean
private SchemaRestClient schemaRestClient;
@@ -77,9 +76,6 @@ public class PolicyBeanPanel extends Pan
}
};
- @SpringBean
- protected XMLRolesReader xmlRolesReader;
-
public PolicyBeanPanel(final String id, final AbstractPolicySpec policy) {
super(id);
@@ -108,16 +104,13 @@ public class PolicyBeanPanel extends Pan
final FieldWrapper field = item.getModelObject();
+ final PropertyDescriptor propDesc =
BeanUtils.getPropertyDescriptor(policy.getClass(), field.getName());
+
item.add(new Label("label", new
ResourceModel(field.getName())));
final AbstractFieldPanel component;
- Method classMethod;
-
try {
if
(field.getType().equals(ConflictResolutionAction.class)) {
- classMethod = policy.getClass().getMethod("get" +
StringUtils.capitalize(field.getName()),
- new Class[]{});
-
component = new AjaxDropDownChoicePanel("field",
field.getName(), new PropertyModel(policy,
field.getName()));
@@ -127,7 +120,7 @@ public class PolicyBeanPanel extends Pan
item.add(component);
item.add(getActivationControl(component,
- (Enum<?>) classMethod.invoke(policy, new
Object[]{}) != null,
+ (Enum<?>)
propDesc.getReadMethod().invoke(policy, new Object[]{}) != null,
ConflictResolutionAction.IGNORE,
ConflictResolutionAction.IGNORE));
} else if (field.getType().equals(boolean.class) ||
field.getType().equals(Boolean.class)) {
@@ -136,10 +129,7 @@ public class PolicyBeanPanel extends Pan
item.add(new Label("field", new Model(null)));
- } else if (field.getType().equals(List.class) ||
field.getType().equals(Set.class)) {
- classMethod = policy.getClass().getMethod("get" +
StringUtils.capitalize(field.getName()),
- new Class[]{});
-
+ } else if
(Collection.class.isAssignableFrom(field.getType())) {
if (field.getSchemaList() != null) {
final List<String> values = schemas.getObject();
@@ -153,15 +143,16 @@ public class PolicyBeanPanel extends Pan
item.add(component);
- item.add(getActivationControl(component, !((List)
classMethod.invoke(policy,
- new Object[]{})).isEmpty(), new
ArrayList<String>(), new ArrayList<String>()));
+ item.add(getActivationControl(component,
+ !((Collection)
propDesc.getReadMethod().invoke(policy, new Object[]{})).isEmpty(),
+ new ArrayList<String>(), new
ArrayList<String>()));
} else {
- final FieldPanel panel = new
AjaxTextFieldPanel("panel", field.getName(), new Model<String>(null));
-
+ final FieldPanel panel = new
AjaxTextFieldPanel("panel", field.getName(),
+ new Model<String>(null));
panel.setRequired(true);
- component = new
MultiValueSelectorPanel<String>("field", new PropertyModel(policy, field.
- getName()), panel);
+ component = new
MultiValueSelectorPanel<String>("field",
+ new PropertyModel(policy,
field.getName()), panel);
item.add(component);
@@ -169,22 +160,18 @@ public class PolicyBeanPanel extends Pan
reinitializedValue.add("");
- item.add(getActivationControl(component,
!((List<String>) classMethod.invoke(policy,
- new Object[]{})).isEmpty(), (Serializable)
new ArrayList<String>(),
- (Serializable) reinitializedValue));
+ item.add(getActivationControl(component,
+ !((Collection)
propDesc.getReadMethod().invoke(policy, new Object[]{})).isEmpty(),
+ new ArrayList<String>(), (Serializable)
reinitializedValue));
}
} else if (field.getType().equals(int.class) ||
field.getType().equals(Integer.class)) {
-
- classMethod = policy.getClass().getMethod("get" +
StringUtils.capitalize(field.getName()),
- new Class[]{});
-
- component = new AjaxTextFieldPanel("field",
field.getName(), new PropertyModel(policy, field.
- getName()));
+ component = new AjaxTextFieldPanel("field",
field.getName(),
+ new PropertyModel(policy, field.getName()));
item.add(component);
item.add(getActivationControl(component,
- (Integer) classMethod.invoke(policy, new
Object[]{}) > 0, 0, 0));
+ (Integer)
propDesc.getReadMethod().invoke(policy, new Object[]{}) > 0, 0, 0));
} else {
item.add(new AjaxCheckBoxPanel("check",
field.getName(), new Model()));
item.add(new Label("field", new Model(null)));
Modified:
syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java
URL:
http://svn.apache.org/viewvc/syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java
(original)
+++
syncope/trunk/console/src/main/java/org/apache/syncope/console/rest/PolicyRestClient.java
Mon Jan 7 16:30:17 2013
@@ -40,7 +40,6 @@ public class PolicyRestClient extends Ba
T policy = null;
try {
-
switch (type) {
case GLOBAL_ACCOUNT:
try {
@@ -72,7 +71,6 @@ public class PolicyRestClient extends Ba
default:
throw new Exception("Invalid policy type");
}
-
} catch (Exception ignore) {
LOG.error("Invalid policy type", ignore);
}
Modified:
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage.properties
URL:
http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage.properties?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage.properties
(original)
+++
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage.properties
Mon Jan 7 16:30:17 2013
@@ -70,7 +70,7 @@ permittedLoginRetries=Maximum number of
#-----------------------------
# Sync policy specification properties
#-----------------------------
-alternativeSearchAttrs=Alternative attributes for local search
+uAltSearchSchemas=Alternative attributes for local search (users)
conflictResolutionAction= Conflict resolution action
#-----------------------------
@@ -78,9 +78,10 @@ conflictResolutionAction= Conflict resol
# Policy Type
#-----------------------------
ACCOUNT=Account Policy
-GLOBAL_ACCOUNT=Account Global Policy
+GLOBAL_ACCOUNT=Global Account Policy
PASSWORD=Password Policy
-GLOBAL_PASSWORD=Password Global Policy
+GLOBAL_PASSWORD=Global Password Policy
SYNC=Synchronization Policy
-GLOBAL_SYNC=Synchronization Global Policy
+GLOBAL_SYNC=Global Synchronization Policy
#-----------------------------
+rAltSearchSchemas=Alternative attributes for local search (roles)
Modified:
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage_it.properties
URL:
http://svn.apache.org/viewvc/syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage_it.properties?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage_it.properties
(original)
+++
syncope/trunk/console/src/main/resources/org/apache/syncope/console/pages/PolicyModalPage_it.properties
Mon Jan 7 16:30:17 2013
@@ -68,7 +68,7 @@ permittedLoginRetries=Numero massimo di
#-----------------------------
# Sync policy specification properties
#-----------------------------
-alternativeSearchAttrs=Attributi alternativi per ricerca locale
+uAltSearchSchemas=Attributi alternativi per ricerca locale (utenti)
conflictResolutionAction= Azione di risoluzione dei conflitti
#-----------------------------
@@ -84,3 +84,5 @@ GLOBAL_SYNC=Policy globale di sincronizz
#-----------------------------
nonAlphanumericRequired=Carattere non alfanumerico richiesto
alphanumericRequired=Carattere alfanumerico richiesto
+rAltSearchSchemas=Attributi alternativi per ricerca locale (ruolii)
+ttributi alternativi per ricerca locale (ruolii)
Modified:
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/Policy.java
URL:
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/Policy.java?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/Policy.java
(original)
+++
syncope/trunk/core/src/main/java/org/apache/syncope/core/persistence/beans/Policy.java
Mon Jan 7 16:30:17 2013
@@ -24,8 +24,8 @@ import javax.persistence.Enumerated;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.validation.constraints.NotNull;
-import org.apache.syncope.core.util.XMLSerializer;
import org.apache.syncope.core.persistence.validation.entity.PolicyCheck;
+import org.apache.syncope.core.util.XMLSerializer;
import org.apache.syncope.types.AbstractPolicySpec;
import org.apache.syncope.types.PolicyType;
@@ -65,11 +65,10 @@ public abstract class Policy extends Abs
}
public <T extends AbstractPolicySpec> T getSpecification() {
- return XMLSerializer.<T> deserialize(specification);
+ return XMLSerializer.<T>deserialize(specification);
}
public <T extends AbstractPolicySpec> void setSpecification(final T
policy) {
-
- specification = XMLSerializer.serialize(policy);
+ specification = XMLSerializer.<T>serialize(policy);
}
}
Modified:
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/PolicyController.java
URL:
http://svn.apache.org/viewvc/syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/PolicyController.java?rev=1429884&r1=1429883&r2=1429884&view=diff
==============================================================================
---
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/PolicyController.java
(original)
+++
syncope/trunk/core/src/main/java/org/apache/syncope/core/rest/controller/PolicyController.java
Mon Jan 7 16:30:17 2013
@@ -247,18 +247,17 @@ public class PolicyController extends Ab
@PreAuthorize("hasRole('POLICY_DELETE')")
@RequestMapping(method = RequestMethod.GET, value = "/delete/{id}")
public PolicyTO delete(@PathVariable("id") final Long id) throws
NotFoundException {
-
- LOG.debug("Delete policy");
Policy policy = policyDAO.find(id);
if (policy == null) {
throw new NotFoundException("Policy " + id + " not found");
}
+
PolicyTO policyToDelete = binder.getPolicyTO(policy);
policyDAO.delete(id);
auditManager.audit(Category.policy, PolicySubCategory.delete,
Result.success,
"Successfully deleted policy: " + id);
-
+
return policyToDelete;
}
}