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;
     }
 }


Reply via email to