syncope-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ilgro...@apache.org
Subject [52/52] syncope git commit: [SYNCOPE-620] Console working, Selenium IT in
Date Thu, 05 Feb 2015 16:01:23 GMT
[SYNCOPE-620] Console working, Selenium IT in


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/07aa4585
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/07aa4585
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/07aa4585

Branch: refs/heads/2_0_X
Commit: 07aa458582c654e0683091b9da36e54c1ce7a0c4
Parents: 246ff1f
Author: Francesco Chicchiriccò <ilgrosso@apache.org>
Authored: Thu Feb 5 17:00:14 2015 +0100
Committer: Francesco Chicchiriccò <ilgrosso@apache.org>
Committed: Thu Feb 5 17:00:14 2015 +0100

----------------------------------------------------------------------
 .../console/commons/SchemaModalPageFactory.java |   4 +-
 .../console/pages/PlainSchemaModalPage.java     | 456 ++++++++++++++++
 .../syncope/console/pages/SchemaModalPage.java  | 456 ----------------
 .../console/pages/PlainSchemaModalPage.html     | 172 ++++++
 .../pages/PlainSchemaModalPage.properties       |  38 ++
 .../pages/PlainSchemaModalPage_it.properties    |  38 ++
 .../pages/PlainSchemaModalPage_pt_BR.properties |  38 ++
 .../syncope/console/pages/SchemaModalPage.html  | 172 ------
 .../console/pages/SchemaModalPage.properties    |  38 --
 .../console/pages/SchemaModalPage_it.properties |  38 --
 .../pages/SchemaModalPage_pt_BR.properties      |  38 --
 .../commons/AttributableDataProvider.java       |   8 +-
 .../SortableAttributableProviderComparator.java |   4 +-
 .../commons/SortableDataProviderComparator.java |   6 +-
 .../console/commons/status/StatusUtils.java     |  20 +-
 .../console/init/BinaryPreviewersLoader.java    |  71 +++
 .../client/console/init/ConsoleInitializer.java |  72 +++
 .../console/init/MIMETypesInitializer.java      |  63 ---
 .../client/console/init/MIMETypesLoader.java    |  69 +++
 .../init/PreviewPanelClassInitializer.java      |  69 ---
 .../console/init/SpringContextInitializer.java  |  45 --
 .../console/init/SyncopeConsoleLoader.java      |  35 ++
 .../client/console/pages/AbstractBasePage.java  |   6 +-
 .../pages/AbstractSchedTaskModalPage.java       |   8 +-
 .../console/pages/BulkActionModalPage.java      |   8 +-
 .../client/console/pages/Configuration.java     |  19 +-
 .../console/pages/ConnectorModalPage.java       |  54 +-
 .../console/pages/DerSchemaModalPage.java       |   8 +-
 .../pages/DisplayAttributesModalPage.java       |  22 +-
 .../console/pages/NotificationModalPage.java    |   2 +-
 .../console/pages/PlainSchemaModalPage.java     |   6 +-
 .../client/console/pages/PolicyModalPage.java   |  24 +-
 .../console/pages/ProvisioningModalPage.java    |  38 +-
 .../client/console/pages/ReportModalPage.java   |  16 +-
 .../console/pages/ReportletConfModalPage.java   |  10 +-
 .../syncope/client/console/pages/Reports.java   |  15 +-
 .../client/console/pages/ResourceModalPage.java |  17 +-
 .../syncope/client/console/pages/Resources.java |  43 +-
 .../console/pages/ResultStatusModalPage.java    |  25 +-
 .../syncope/client/console/pages/Schema.java    |  14 +-
 .../client/console/pages/StatusModalPage.java   |   5 +-
 .../client/console/pages/TaskModalPage.java     |  16 +-
 .../syncope/client/console/pages/Tasks.java     |  12 +-
 .../client/console/pages/UserModalPage.java     |   5 +-
 .../syncope/client/console/pages/Users.java     |   2 +-
 .../console/pages/VirSchemaModalPage.java       |   8 +-
 .../console/panels/AbstractSearchPanel.java     |  10 +-
 .../panels/AbstractSearchResultPanel.java       |   8 +-
 .../console/panels/AttrTemplatesPanel.java      |  10 +-
 .../client/console/panels/ImagePanel.java       |   3 +-
 .../client/console/panels/LayoutsPanel.java     |   2 +-
 .../console/panels/NotificationTasks.java       |   4 +-
 .../client/console/panels/PlainAttrsPanel.java  |  10 +-
 .../client/console/panels/PoliciesPanel.java    |   4 +-
 .../client/console/panels/PolicyBeanPanel.java  |  10 +-
 .../client/console/panels/PropagationTasks.java |  15 +-
 .../client/console/panels/PushTasksPanel.java   |   2 +-
 .../console/panels/ResourceDetailsPanel.java    |  22 +-
 .../console/panels/ResourceMappingPanel.java    |   2 +-
 .../client/console/panels/RoleDetailsPanel.java |   6 +-
 .../client/console/panels/RolePanel.java        |   6 +-
 .../console/panels/RoleSearchResultPanel.java   |   9 +-
 .../client/console/panels/SchedTasks.java       |   2 +-
 .../client/console/panels/SyncTasksPanel.java   |   6 +-
 .../console/panels/UserSearchResultPanel.java   |   5 +-
 .../client/console/preview/PreviewUtil.java     |  11 +-
 .../console/preview/PreviewerClassScanner.java  |   8 +-
 .../console/rest/ConfigurationRestClient.java   |   2 +-
 .../client/console/rest/ResourceRestClient.java |   4 +-
 .../client/console/rest/SchemaRestClient.java   |  19 +-
 .../META-INF/cxf/org.apache.cxf.Logger          |   1 +
 .../META-INF/resources/img/favicon.ico          | Bin 1406 -> 0 bytes
 .../META-INF/resources/img/favicon.png          | Bin 0 -> 641 bytes
 .../META-INF/resources/img/statuses/active.png  | Bin 0 -> 509 bytes
 .../resources/img/statuses/inactive.png         | Bin 0 -> 477 bytes
 .../resources/img/statuses/objectnotfound.png   | Bin 0 -> 668 bytes
 .../resources/img/statuses/undefined.png        | Bin 0 -> 758 bytes
 .../main/resources/META-INF/web-fragment.xml    |   4 +
 .../src/main/resources/console.properties       |   3 +-
 .../src/main/resources/consoleContext.xml       |   2 +-
 .../console/SyncopeApplication.properties       |   1 +
 .../console/SyncopeApplication_it.properties    |   1 +
 .../console/SyncopeApplication_pt_BR.properties |   1 +
 .../console/pages/AbstractStatusModalPage.html  |   4 +-
 .../syncope/client/console/pages/BasePage.html  |   2 +-
 .../client/console/pages/Configuration.html     | 403 +++++++-------
 .../console/pages/Configuration.properties      |   1 -
 .../console/pages/ConnectorModalPage.html       |   4 +-
 .../console/pages/ConnectorModalPage.properties |   3 +-
 .../pages/ConnectorModalPage_it.properties      |   3 +-
 .../pages/ConnectorModalPage_pt_BR.properties   |   3 +-
 .../console/pages/DerSchemaModalPage.html       |   4 +-
 .../pages/DisplayAttributesModalPage.html       |   8 +-
 .../pages/DisplayAttributesModalPage.properties |   2 +-
 .../DisplayAttributesModalPage_it.properties    |   2 +-
 .../DisplayAttributesModalPage_pt_BR.properties |  14 +-
 .../syncope/client/console/pages/Login.html     |   2 +-
 .../console/pages/MembershipModalPage.html      |   2 +-
 .../pages/MembershipModalPage.properties        |   2 +-
 .../pages/MembershipModalPage_it.properties     |   2 +-
 .../pages/MembershipModalPage_pt_BR.properties  |   2 +-
 .../pages/NotificationTaskModalPage.html        | 148 +++---
 .../console/pages/PlainSchemaModalPage.html     |   4 +-
 .../client/console/pages/PolicyModalPage.html   |   4 +-
 .../console/pages/PropagationTaskModalPage.html |  92 ++--
 .../client/console/pages/PushTaskModalPage.html |   2 +-
 .../client/console/pages/ReportModalPage.html   |   2 +-
 .../pages/ResourceModalPage_pt_BR.properties    |   2 +-
 .../client/console/pages/RoleModalPage.html     |   2 +-
 .../console/pages/RoleModalPage.properties      |   4 +-
 .../console/pages/RoleModalPage_it.properties   |  10 +-
 .../pages/RoleModalPage_pt_BR.properties        |   4 +-
 .../console/pages/SchedTaskModalPage.html       |   4 +-
 .../client/console/pages/Schema.properties      |   2 +-
 .../client/console/pages/Schema_it.properties   |   2 +-
 .../console/pages/Schema_pt_BR.properties       |   2 +-
 .../client/console/pages/SyncTaskModalPage.html |   2 +-
 .../client/console/pages/UserModalPage.html     |   2 +-
 .../console/pages/UserModalPage.properties      |   2 +-
 .../console/pages/UserModalPage_it.properties   |   2 +-
 .../pages/UserModalPage_pt_BR.properties        |   2 +-
 .../console/pages/VirSchemaModalPage.html       |   4 +-
 .../client/console/pages/statuses/active.png    | Bin 509 -> 0 bytes
 .../client/console/pages/statuses/inactive.png  | Bin 477 -> 0 bytes
 .../console/pages/statuses/objectnotfound.png   | Bin 668 -> 0 bytes
 .../client/console/pages/statuses/undefined.png | Bin 758 -> 0 bytes
 .../panels/AbstractProvisioningTasksPanel.html  |  41 ++
 .../console/panels/AbstractSyncTasksPanel.html  |  41 --
 .../console/panels/AttrTemplatesPanel.html      |  12 +-
 .../panels/AttrTemplatesPanel.properties        |   4 +-
 .../panels/AttrTemplatesPanel_it.properties     |   4 +-
 .../panels/AttrTemplatesPanel_pt_BR.properties  |   4 +-
 .../client/console/panels/RolePanel.html        |   8 +-
 .../client/console/panels/RolePanel.properties  |   2 +-
 .../console/panels/RolePanel_it.properties      |   2 +-
 .../console/panels/RolePanel_pt_BR.properties   |   2 +-
 .../client/console/panels/RoleTabPanel.html     |   6 +-
 .../console/panels/RoleTabPanel.properties      |   2 +-
 .../console/panels/RoleTabPanel_it.properties   |   2 +-
 .../panels/RoleTabPanel_pt_BR.properties        |   2 +-
 .../common/lib/AttributableOperations.java      |  12 +-
 .../common/lib/report/RoleReportletConf.java    |   4 +-
 .../common/lib/report/UserReportletConf.java    |   4 +-
 .../common/lib/search/SearchableFields.java     |  12 +-
 .../common/lib/to/AbstractSubjectTO.java        |   2 +-
 .../syncope/common/lib/to/NotificationTO.java   |   4 +-
 .../apache/syncope/common/lib/to/RoleTO.java    |  24 +-
 .../syncope/common/lib/types/PolicySpec.java    |   4 +-
 .../syncope/common/lib/wrap/SubjectId.java      |  25 -
 .../syncope/common/lib/wrap/SubjectKey.java     |  25 +
 .../rest/api/service/ResourceService.java       |   6 +-
 syncope620/fit/console-reference/pom.xml        | 525 +++++++++++++++++++
 .../src/main/resources/console.properties       |  22 +
 .../src/main/resources/context.xml              |  23 +
 .../src/main/resources/log4j2.xml               |  66 +++
 .../oryx.debug.js-tokenValueMap.properties      |  35 ++
 .../fit/console/reference/AbstractITCase.java   |  70 +++
 .../fit/console/reference/AccessITCase.java     |  80 +++
 .../console/reference/ConfigurationITCase.java  | 402 ++++++++++++++
 .../fit/console/reference/ConnectorITCase.java  | 238 +++++++++
 .../console/reference/EditProfileITCase.java    |  94 ++++
 .../fit/console/reference/ReportITCase.java     | 117 +++++
 .../fit/console/reference/ResourceITCase.java   | 144 +++++
 .../fit/console/reference/RoleITCase.java       | 211 ++++++++
 .../fit/console/reference/SchemaITCase.java     |  70 +++
 .../fit/console/reference/TaskITCase.java       | 123 +++++
 .../fit/console/reference/UserITCase.java       | 184 +++++++
 syncope620/fit/pom.xml                          |   1 +
 syncope620/fit/server-reference/pom.xml         |  75 ++-
 .../main/resources/all/provisioning.properties  |  19 +
 .../src/main/resources/all/workflow.properties  |  20 +
 .../resources/light/provisioning.properties     |  18 -
 .../main/resources/light/workflow.properties    |  20 -
 .../src/main/resources/provisioning.properties  |   5 +-
 .../src/main/resources/workflow.properties      |   4 +-
 .../server/reference/ConfigurationITCase.java   |   4 +-
 .../fit/server/reference/PushTaskITCase.java    |   2 +-
 .../fit/server/reference/RoleITCase.java        |  14 +-
 syncope620/pom.xml                              |  94 +++-
 .../syncope/server/misc/ConnObjectUtil.java     |   4 +-
 .../jpa/dao/JPASubjectSearchDAO.java            |  23 +-
 .../jpa/entity/AnnotatedEntityListener.java     |   2 +-
 .../src/test/resources/content.xml              |   8 +-
 .../java/data/RoleDataBinderImpl.java           |   8 +-
 .../rest/cxf/service/ResourceServiceImpl.java   |  18 +-
 185 files changed, 4414 insertions(+), 1870 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/java/org/apache/syncope/console/commons/SchemaModalPageFactory.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/commons/SchemaModalPageFactory.java b/console/src/main/java/org/apache/syncope/console/commons/SchemaModalPageFactory.java
index b545e8f..429fd40 100644
--- a/console/src/main/java/org/apache/syncope/console/commons/SchemaModalPageFactory.java
+++ b/console/src/main/java/org/apache/syncope/console/commons/SchemaModalPageFactory.java
@@ -22,7 +22,7 @@ import org.apache.syncope.common.types.AttributableType;
 import org.apache.syncope.common.types.SchemaType;
 import org.apache.syncope.console.pages.AbstractSchemaModalPage;
 import org.apache.syncope.console.pages.DerSchemaModalPage;
-import org.apache.syncope.console.pages.SchemaModalPage;
+import org.apache.syncope.console.pages.PlainSchemaModalPage;
 import org.apache.syncope.console.pages.VirSchemaModalPage;
 
 public final class SchemaModalPageFactory {
@@ -49,7 +49,7 @@ public final class SchemaModalPageFactory {
                 break;
 
             default:
-                page = (T) new SchemaModalPage(entity);
+                page = (T) new PlainSchemaModalPage(entity);
                 break;
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/java/org/apache/syncope/console/pages/PlainSchemaModalPage.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/pages/PlainSchemaModalPage.java b/console/src/main/java/org/apache/syncope/console/pages/PlainSchemaModalPage.java
new file mode 100644
index 0000000..935e605
--- /dev/null
+++ b/console/src/main/java/org/apache/syncope/console/pages/PlainSchemaModalPage.java
@@ -0,0 +1,456 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.console.pages;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.SyncopeConstants;
+import org.apache.syncope.common.to.SchemaTO;
+import org.apache.syncope.common.types.AttributableType;
+import org.apache.syncope.common.types.AttributeSchemaType;
+import org.apache.syncope.common.SyncopeClientException;
+import org.apache.syncope.common.types.CipherAlgorithm;
+import org.apache.syncope.console.commons.Constants;
+import org.apache.syncope.console.commons.JexlHelpUtil;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.console.wicket.markup.html.form.MultiFieldPanel;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.util.string.Strings;
+
+/**
+ * Modal window with Schema form.
+ */
+public class PlainSchemaModalPage extends AbstractSchemaModalPage<SchemaTO> {
+
+    private static final long serialVersionUID = -5991561277287424057L;
+
+    public PlainSchemaModalPage(final AttributableType kind) {
+        super(kind);
+    }
+
+    @Override
+    public void setSchemaModalPage(final PageReference pageRef, final ModalWindow window,
+            final SchemaTO schemaTO, final boolean createFlag) {
+
+        final SchemaTO schema = schemaTO == null
+                ? new SchemaTO()
+                : schemaTO;
+
+        final Form<SchemaTO> schemaForm = new Form<SchemaTO>(FORM);
+
+        schemaForm.setModel(new CompoundPropertyModel<SchemaTO>(schema));
+        schemaForm.setOutputMarkupId(true);
+
+        final AjaxTextFieldPanel name =
+                new AjaxTextFieldPanel("name", getString("name"), new PropertyModel<String>(schema, "name"));
+        name.addRequiredLabel();
+        name.setEnabled(createFlag);
+        schemaForm.add(name);
+
+        final AjaxDropDownChoicePanel<AttributeSchemaType> type = new AjaxDropDownChoicePanel<AttributeSchemaType>(
+                "type", getString("type"), new PropertyModel<AttributeSchemaType>(schema, "type"));
+        type.setChoices(Arrays.asList(AttributeSchemaType.values()));
+        type.addRequiredLabel();
+        schemaForm.add(type);
+
+        // -- long, double, date
+        final AjaxTextFieldPanel conversionPattern = new AjaxTextFieldPanel("conversionPattern",
+                getString("conversionPattern"), new PropertyModel<String>(schema, "conversionPattern"));
+        schemaForm.add(conversionPattern);
+
+        final WebMarkupContainer conversionParams = new WebMarkupContainer("conversionParams");
+        conversionParams.setOutputMarkupPlaceholderTag(true);
+        conversionParams.add(conversionPattern);
+        schemaForm.add(conversionParams);
+
+        final WebMarkupContainer typeParams = new WebMarkupContainer("typeParams");
+        typeParams.setOutputMarkupPlaceholderTag(true);
+        // -- enum
+        final AjaxTextFieldPanel enumerationValuesPanel =
+                new AjaxTextFieldPanel("panel", "enumerationValues", new Model<String>(null));
+        @SuppressWarnings({ "unchecked", "rawtypes" })
+        final MultiFieldPanel<String> enumerationValues = new MultiFieldPanel<String>("enumerationValues",
+                new Model(),
+                enumerationValuesPanel);
+        enumerationValues.setModelObject(getEnumValuesAsList(schema.getEnumerationValues()));
+
+        @SuppressWarnings({ "unchecked", "rawtypes" })
+        final MultiFieldPanel<String> enumerationKeys = new MultiFieldPanel<String>("enumerationKeys",
+                new Model(),
+                new AjaxTextFieldPanel("panel", "enumerationKeys", new Model<String>(null)));
+        enumerationKeys.setModelObject(getEnumValuesAsList(schema.getEnumerationKeys()));
+
+        final WebMarkupContainer enumParams = new WebMarkupContainer("enumParams");
+        enumParams.setOutputMarkupPlaceholderTag(true);
+        enumParams.add(enumerationValues);
+        enumParams.add(enumerationKeys);
+        typeParams.add(enumParams);
+
+        // -- encrypted
+        final AjaxTextFieldPanel secretKey = new AjaxTextFieldPanel("secretKey",
+                getString("secretKey"), new PropertyModel<String>(schema, "secretKey"));
+
+        final AjaxDropDownChoicePanel<CipherAlgorithm> cipherAlgorithm = new AjaxDropDownChoicePanel<CipherAlgorithm>(
+                "cipherAlgorithm", getString("cipherAlgorithm"),
+                new PropertyModel<CipherAlgorithm>(schema, "cipherAlgorithm"));
+        cipherAlgorithm.setChoices(Arrays.asList(CipherAlgorithm.values()));
+
+        final WebMarkupContainer encryptedParams = new WebMarkupContainer("encryptedParams");
+        encryptedParams.setOutputMarkupPlaceholderTag(true);
+        encryptedParams.add(secretKey);
+        encryptedParams.add(cipherAlgorithm);
+        typeParams.add(encryptedParams);
+
+        // -- binary
+        final AjaxTextFieldPanel mimeType = new AjaxTextFieldPanel("mimeType",
+                getString("mimeType"), new PropertyModel<String>(schema, "mimeType"));
+        mimeType.setChoices(mimeTypesInitializer.getMimeTypes());
+        
+        final WebMarkupContainer binaryParams = new WebMarkupContainer("binaryParams");
+        binaryParams.setOutputMarkupPlaceholderTag(true);
+        binaryParams.add(mimeType);
+        typeParams.add(binaryParams);
+
+        schemaForm.add(typeParams);
+        
+        // -- show or hide
+        showHide(schema, type,
+                conversionParams, conversionPattern,
+                enumParams, enumerationValuesPanel, enumerationValues, enumerationKeys,
+                encryptedParams, secretKey, cipherAlgorithm,
+                binaryParams, mimeType);
+        type.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+            private static final long serialVersionUID = -1107858522700306810L;
+
+            @Override
+            protected void onUpdate(final AjaxRequestTarget target) {
+                PlainSchemaModalPage.this.showHide(schema, type,
+                        conversionParams, conversionPattern,
+                        enumParams, enumerationValuesPanel, enumerationValues, enumerationKeys,
+                        encryptedParams, secretKey, cipherAlgorithm,
+                        binaryParams, mimeType);
+                target.add(typeParams);
+            }
+        });
+
+        final IModel<List<String>> validatorsList = new LoadableDetachableModel<List<String>>() {
+
+            private static final long serialVersionUID = 5275935387613157437L;
+
+            @Override
+            protected List<String> load() {
+                return schemaRestClient.getAllValidatorClasses();
+            }
+        };
+        final AjaxDropDownChoicePanel<String> validatorClass = new AjaxDropDownChoicePanel<String>("validatorClass",
+                getString("validatorClass"), new PropertyModel<String>(schema, "validatorClass"));
+        ((DropDownChoice) validatorClass.getField()).setNullValid(true);
+        validatorClass.setChoices(validatorsList.getObject());
+        schemaForm.add(validatorClass);
+
+        final AutoCompleteTextField<String> mandatoryCondition =
+                new AutoCompleteTextField<String>("mandatoryCondition") {
+
+                    private static final long serialVersionUID = -2428903969518079100L;
+
+                    @Override
+                    protected Iterator<String> getChoices(final String input) {
+                        List<String> choices = new ArrayList<String>();
+
+                        if (Strings.isEmpty(input)) {
+                            choices = Collections.emptyList();
+                        } else if ("true".startsWith(input.toLowerCase())) {
+                            choices.add("true");
+                        } else if ("false".startsWith(input.toLowerCase())) {
+                            choices.add("false");
+                        }
+
+                        return choices.iterator();
+                    }
+                };
+        mandatoryCondition.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+            private static final long serialVersionUID = -1107858522700306810L;
+
+            @Override
+            protected void onUpdate(final AjaxRequestTarget target) {
+            }
+        });
+        schemaForm.add(mandatoryCondition);
+
+        final WebMarkupContainer pwdJexlHelp = JexlHelpUtil.getJexlHelpWebContainer("jexlHelp");
+
+        final AjaxLink<Void> pwdQuestionMarkJexlHelp = JexlHelpUtil.getAjaxLink(pwdJexlHelp, "questionMarkJexlHelp");
+        schemaForm.add(pwdQuestionMarkJexlHelp);
+        pwdQuestionMarkJexlHelp.add(pwdJexlHelp);
+
+        final AjaxCheckBoxPanel multivalue = new AjaxCheckBoxPanel("multivalue", getString("multivalue"),
+                new PropertyModel<Boolean>(schema, "multivalue"));
+        schemaForm.add(multivalue);
+
+        final AjaxCheckBoxPanel readonly = new AjaxCheckBoxPanel("readonly", getString("readonly"),
+                new PropertyModel<Boolean>(schema, "readonly"));
+        schemaForm.add(readonly);
+
+        final AjaxCheckBoxPanel uniqueConstraint = new AjaxCheckBoxPanel("uniqueConstraint",
+                getString("uniqueConstraint"), new PropertyModel<Boolean>(schema, "uniqueConstraint"));
+        schemaForm.add(uniqueConstraint);
+
+        final AjaxButton submit = new IndicatingAjaxButton(APPLY, new ResourceModel(SUBMIT)) {
+
+            private static final long serialVersionUID = -958724007591692537L;
+
+            @Override
+            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                final SchemaTO schemaTO = (SchemaTO) form.getDefaultModelObject();
+
+                schemaTO.setEnumerationValues(getEnumValuesAsString(enumerationValues.getView().getModelObject()));
+                schemaTO.setEnumerationKeys(getEnumValuesAsString(enumerationKeys.getView().getModelObject()));
+
+                if (schemaTO.isMultivalue() && schemaTO.isUniqueConstraint()) {
+                    error(getString("multivalueAndUniqueConstr.validation"));
+                    feedbackPanel.refresh(target);
+                    return;
+                }
+
+                try {
+                    if (createFlag) {
+                        schemaRestClient.createSchema(kind, schemaTO);
+                    } else {
+                        schemaRestClient.updateSchema(kind, schemaTO);
+                    }
+                    if (pageRef.getPage() instanceof BasePage) {
+                        ((BasePage) pageRef.getPage()).setModalResult(true);
+                    }
+
+                    window.close(target);
+                } catch (SyncopeClientException e) {
+                    error(getString(Constants.ERROR) + ": " + e.getMessage());
+                    feedbackPanel.refresh(target);
+                }
+            }
+
+            @Override
+            protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+                feedbackPanel.refresh(target);
+            }
+        };
+        schemaForm.add(submit);
+
+        final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {
+
+            private static final long serialVersionUID = -958724007591692537L;
+
+            @Override
+            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                window.close(target);
+            }
+        };
+        cancel.setDefaultFormProcessing(false);
+        schemaForm.add(cancel);
+
+        String allowedRoles = createFlag
+                ? xmlRolesReader.getEntitlement("Schema", "create")
+                : xmlRolesReader.getEntitlement("Schema", "update");
+
+        MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, allowedRoles);
+
+        add(schemaForm);
+    }
+
+    private void showHide(final SchemaTO schema, final AjaxDropDownChoicePanel<AttributeSchemaType> type,
+            final WebMarkupContainer conversionParams, final AjaxTextFieldPanel conversionPattern,
+            final WebMarkupContainer enumParams, final AjaxTextFieldPanel enumerationValuesPanel,
+            final MultiFieldPanel<String> enumerationValues, final MultiFieldPanel<String> enumerationKeys,
+            final WebMarkupContainer encryptedParams,
+            final AjaxTextFieldPanel secretKey, final AjaxDropDownChoicePanel<CipherAlgorithm> cipherAlgorithm,
+            final WebMarkupContainer binaryParams, final AjaxTextFieldPanel mimeType) {
+
+        final int typeOrdinal = Integer.parseInt(type.getField().getValue());
+        if (AttributeSchemaType.Long.ordinal() == typeOrdinal
+                || AttributeSchemaType.Double.ordinal() == typeOrdinal
+                || AttributeSchemaType.Date.ordinal() == typeOrdinal) {
+
+            conversionParams.setVisible(true);
+
+            enumParams.setVisible(false);
+            if (enumerationValuesPanel.isRequired()) {
+                enumerationValuesPanel.removeRequiredLabel();
+            }
+            enumerationValues.setModelObject(getEnumValuesAsList(null));
+            enumerationKeys.setModelObject(getEnumValuesAsList(null));
+
+            encryptedParams.setVisible(false);
+            if (secretKey.isRequired()) {
+                secretKey.removeRequiredLabel();
+            }
+            secretKey.setModelObject(null);
+            if (cipherAlgorithm.isRequired()) {
+                cipherAlgorithm.removeRequiredLabel();
+            }
+            cipherAlgorithm.setModelObject(null);
+
+            binaryParams.setVisible(false);
+            mimeType.setModelObject(null);
+        } else if (AttributeSchemaType.Enum.ordinal() == typeOrdinal) {
+            conversionParams.setVisible(false);
+            conversionPattern.setModelObject(null);
+
+            enumParams.setVisible(true);
+            if (!enumerationValuesPanel.isRequired()) {
+                enumerationValuesPanel.addRequiredLabel();
+            }
+            enumerationValues.setModelObject(getEnumValuesAsList(schema.getEnumerationValues()));
+            enumerationKeys.setModelObject(getEnumValuesAsList(schema.getEnumerationKeys()));
+
+            encryptedParams.setVisible(false);
+            if (secretKey.isRequired()) {
+                secretKey.removeRequiredLabel();
+            }
+            secretKey.setModelObject(null);
+            if (cipherAlgorithm.isRequired()) {
+                cipherAlgorithm.removeRequiredLabel();
+            }
+            cipherAlgorithm.setModelObject(null);
+
+            binaryParams.setVisible(false);
+            mimeType.setModelObject(null);
+        } else if (AttributeSchemaType.Encrypted.ordinal() == typeOrdinal) {
+            conversionParams.setVisible(false);
+            conversionPattern.setModelObject(null);
+
+            enumParams.setVisible(false);
+            if (enumerationValuesPanel.isRequired()) {
+                enumerationValuesPanel.removeRequiredLabel();
+            }
+            enumerationValues.setModelObject(getEnumValuesAsList(null));
+            enumerationKeys.setModelObject(getEnumValuesAsList(null));
+
+            encryptedParams.setVisible(true);
+            if (!secretKey.isRequired()) {
+                secretKey.addRequiredLabel();
+            }
+            if (cipherAlgorithm.isRequired()) {
+                cipherAlgorithm.addRequiredLabel();
+            }
+
+            binaryParams.setVisible(false);
+            mimeType.setModelObject(null);
+        } else if (AttributeSchemaType.Binary.ordinal() == typeOrdinal) {
+            conversionParams.setVisible(false);
+            conversionPattern.setModelObject(null);
+
+            enumParams.setVisible(false);
+            if (enumerationValuesPanel.isRequired()) {
+                enumerationValuesPanel.removeRequiredLabel();
+            }
+            enumerationValues.setModelObject(getEnumValuesAsList(null));
+            enumerationKeys.setModelObject(getEnumValuesAsList(null));
+
+            encryptedParams.setVisible(false);
+            if (secretKey.isRequired()) {
+                secretKey.removeRequiredLabel();
+            }
+            secretKey.setModelObject(null);
+            if (cipherAlgorithm.isRequired()) {
+                cipherAlgorithm.removeRequiredLabel();
+            }
+            cipherAlgorithm.setModelObject(null);
+
+            binaryParams.setVisible(true);
+        } else {
+            conversionParams.setVisible(false);
+            conversionPattern.setModelObject(null);
+
+            enumParams.setVisible(false);
+            if (enumerationValuesPanel.isRequired()) {
+                enumerationValuesPanel.removeRequiredLabel();
+            }
+            enumerationValues.setModelObject(getEnumValuesAsList(null));
+            enumerationKeys.setModelObject(getEnumValuesAsList(null));
+
+            encryptedParams.setVisible(false);
+            if (secretKey.isRequired()) {
+                secretKey.removeRequiredLabel();
+            }
+            secretKey.setModelObject(null);
+            if (cipherAlgorithm.isRequired()) {
+                cipherAlgorithm.removeRequiredLabel();
+            }
+            cipherAlgorithm.setModelObject(null);
+
+            binaryParams.setVisible(false);
+            mimeType.setModelObject(null);
+        }
+    }
+
+    private String getEnumValuesAsString(final List<String> enumerationValues) {
+        final StringBuilder builder = new StringBuilder();
+
+        for (String str : enumerationValues) {
+            if (StringUtils.isNotBlank(str)) {
+                if (builder.length() > 0) {
+                    builder.append(SyncopeConstants.ENUM_VALUES_SEPARATOR);
+                }
+
+                builder.append(str.trim());
+            }
+        }
+
+        return builder.toString();
+    }
+
+    private List<String> getEnumValuesAsList(final String enumerationValues) {
+        final List<String> values = new ArrayList<String>();
+
+        if (StringUtils.isNotBlank(enumerationValues)) {
+            for (String value : enumerationValues.split(SyncopeConstants.ENUM_VALUES_SEPARATOR)) {
+                values.add(value.trim());
+            }
+        } else {
+            values.add(StringUtils.EMPTY);
+        }
+
+        return values;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java
----------------------------------------------------------------------
diff --git a/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java b/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java
deleted file mode 100644
index 1e634f0..0000000
--- a/console/src/main/java/org/apache/syncope/console/pages/SchemaModalPage.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.syncope.console.pages;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.common.SyncopeConstants;
-import org.apache.syncope.common.to.SchemaTO;
-import org.apache.syncope.common.types.AttributableType;
-import org.apache.syncope.common.types.AttributeSchemaType;
-import org.apache.syncope.common.SyncopeClientException;
-import org.apache.syncope.common.types.CipherAlgorithm;
-import org.apache.syncope.console.commons.Constants;
-import org.apache.syncope.console.commons.JexlHelpUtil;
-import org.apache.syncope.console.wicket.markup.html.form.AjaxCheckBoxPanel;
-import org.apache.syncope.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
-import org.apache.syncope.console.wicket.markup.html.form.AjaxTextFieldPanel;
-import org.apache.syncope.console.wicket.markup.html.form.MultiFieldPanel;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.ajax.markup.html.form.AjaxButton;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
-import org.apache.wicket.extensions.ajax.markup.html.autocomplete.AutoCompleteTextField;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.LoadableDetachableModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.util.string.Strings;
-
-/**
- * Modal window with Schema form.
- */
-public class SchemaModalPage extends AbstractSchemaModalPage<SchemaTO> {
-
-    private static final long serialVersionUID = -5991561277287424057L;
-
-    public SchemaModalPage(final AttributableType kind) {
-        super(kind);
-    }
-
-    @Override
-    public void setSchemaModalPage(final PageReference pageRef, final ModalWindow window,
-            final SchemaTO schemaTO, final boolean createFlag) {
-
-        final SchemaTO schema = schemaTO == null
-                ? new SchemaTO()
-                : schemaTO;
-
-        final Form<SchemaTO> schemaForm = new Form<SchemaTO>(FORM);
-
-        schemaForm.setModel(new CompoundPropertyModel<SchemaTO>(schema));
-        schemaForm.setOutputMarkupId(true);
-
-        final AjaxTextFieldPanel name =
-                new AjaxTextFieldPanel("name", getString("name"), new PropertyModel<String>(schema, "name"));
-        name.addRequiredLabel();
-        name.setEnabled(createFlag);
-        schemaForm.add(name);
-
-        final AjaxDropDownChoicePanel<AttributeSchemaType> type = new AjaxDropDownChoicePanel<AttributeSchemaType>(
-                "type", getString("type"), new PropertyModel<AttributeSchemaType>(schema, "type"));
-        type.setChoices(Arrays.asList(AttributeSchemaType.values()));
-        type.addRequiredLabel();
-        schemaForm.add(type);
-
-        // -- long, double, date
-        final AjaxTextFieldPanel conversionPattern = new AjaxTextFieldPanel("conversionPattern",
-                getString("conversionPattern"), new PropertyModel<String>(schema, "conversionPattern"));
-        schemaForm.add(conversionPattern);
-
-        final WebMarkupContainer conversionParams = new WebMarkupContainer("conversionParams");
-        conversionParams.setOutputMarkupPlaceholderTag(true);
-        conversionParams.add(conversionPattern);
-        schemaForm.add(conversionParams);
-
-        final WebMarkupContainer typeParams = new WebMarkupContainer("typeParams");
-        typeParams.setOutputMarkupPlaceholderTag(true);
-        // -- enum
-        final AjaxTextFieldPanel enumerationValuesPanel =
-                new AjaxTextFieldPanel("panel", "enumerationValues", new Model<String>(null));
-        @SuppressWarnings({ "unchecked", "rawtypes" })
-        final MultiFieldPanel<String> enumerationValues = new MultiFieldPanel<String>("enumerationValues",
-                new Model(),
-                enumerationValuesPanel);
-        enumerationValues.setModelObject(getEnumValuesAsList(schema.getEnumerationValues()));
-
-        @SuppressWarnings({ "unchecked", "rawtypes" })
-        final MultiFieldPanel<String> enumerationKeys = new MultiFieldPanel<String>("enumerationKeys",
-                new Model(),
-                new AjaxTextFieldPanel("panel", "enumerationKeys", new Model<String>(null)));
-        enumerationKeys.setModelObject(getEnumValuesAsList(schema.getEnumerationKeys()));
-
-        final WebMarkupContainer enumParams = new WebMarkupContainer("enumParams");
-        enumParams.setOutputMarkupPlaceholderTag(true);
-        enumParams.add(enumerationValues);
-        enumParams.add(enumerationKeys);
-        typeParams.add(enumParams);
-
-        // -- encrypted
-        final AjaxTextFieldPanel secretKey = new AjaxTextFieldPanel("secretKey",
-                getString("secretKey"), new PropertyModel<String>(schema, "secretKey"));
-
-        final AjaxDropDownChoicePanel<CipherAlgorithm> cipherAlgorithm = new AjaxDropDownChoicePanel<CipherAlgorithm>(
-                "cipherAlgorithm", getString("cipherAlgorithm"),
-                new PropertyModel<CipherAlgorithm>(schema, "cipherAlgorithm"));
-        cipherAlgorithm.setChoices(Arrays.asList(CipherAlgorithm.values()));
-
-        final WebMarkupContainer encryptedParams = new WebMarkupContainer("encryptedParams");
-        encryptedParams.setOutputMarkupPlaceholderTag(true);
-        encryptedParams.add(secretKey);
-        encryptedParams.add(cipherAlgorithm);
-        typeParams.add(encryptedParams);
-
-        // -- binary
-        final AjaxTextFieldPanel mimeType = new AjaxTextFieldPanel("mimeType",
-                getString("mimeType"), new PropertyModel<String>(schema, "mimeType"));
-        mimeType.setChoices(mimeTypesInitializer.getMimeTypes());
-        
-        final WebMarkupContainer binaryParams = new WebMarkupContainer("binaryParams");
-        binaryParams.setOutputMarkupPlaceholderTag(true);
-        binaryParams.add(mimeType);
-        typeParams.add(binaryParams);
-
-        schemaForm.add(typeParams);
-        
-        // -- show or hide
-        showHide(schema, type,
-                conversionParams, conversionPattern,
-                enumParams, enumerationValuesPanel, enumerationValues, enumerationKeys,
-                encryptedParams, secretKey, cipherAlgorithm,
-                binaryParams, mimeType);
-        type.getField().add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-                SchemaModalPage.this.showHide(schema, type,
-                        conversionParams, conversionPattern,
-                        enumParams, enumerationValuesPanel, enumerationValues, enumerationKeys,
-                        encryptedParams, secretKey, cipherAlgorithm,
-                        binaryParams, mimeType);
-                target.add(typeParams);
-            }
-        });
-
-        final IModel<List<String>> validatorsList = new LoadableDetachableModel<List<String>>() {
-
-            private static final long serialVersionUID = 5275935387613157437L;
-
-            @Override
-            protected List<String> load() {
-                return schemaRestClient.getAllValidatorClasses();
-            }
-        };
-        final AjaxDropDownChoicePanel<String> validatorClass = new AjaxDropDownChoicePanel<String>("validatorClass",
-                getString("validatorClass"), new PropertyModel<String>(schema, "validatorClass"));
-        ((DropDownChoice) validatorClass.getField()).setNullValid(true);
-        validatorClass.setChoices(validatorsList.getObject());
-        schemaForm.add(validatorClass);
-
-        final AutoCompleteTextField<String> mandatoryCondition =
-                new AutoCompleteTextField<String>("mandatoryCondition") {
-
-                    private static final long serialVersionUID = -2428903969518079100L;
-
-                    @Override
-                    protected Iterator<String> getChoices(final String input) {
-                        List<String> choices = new ArrayList<String>();
-
-                        if (Strings.isEmpty(input)) {
-                            choices = Collections.emptyList();
-                        } else if ("true".startsWith(input.toLowerCase())) {
-                            choices.add("true");
-                        } else if ("false".startsWith(input.toLowerCase())) {
-                            choices.add("false");
-                        }
-
-                        return choices.iterator();
-                    }
-                };
-        mandatoryCondition.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
-
-            private static final long serialVersionUID = -1107858522700306810L;
-
-            @Override
-            protected void onUpdate(final AjaxRequestTarget target) {
-            }
-        });
-        schemaForm.add(mandatoryCondition);
-
-        final WebMarkupContainer pwdJexlHelp = JexlHelpUtil.getJexlHelpWebContainer("jexlHelp");
-
-        final AjaxLink<Void> pwdQuestionMarkJexlHelp = JexlHelpUtil.getAjaxLink(pwdJexlHelp, "questionMarkJexlHelp");
-        schemaForm.add(pwdQuestionMarkJexlHelp);
-        pwdQuestionMarkJexlHelp.add(pwdJexlHelp);
-
-        final AjaxCheckBoxPanel multivalue = new AjaxCheckBoxPanel("multivalue", getString("multivalue"),
-                new PropertyModel<Boolean>(schema, "multivalue"));
-        schemaForm.add(multivalue);
-
-        final AjaxCheckBoxPanel readonly = new AjaxCheckBoxPanel("readonly", getString("readonly"),
-                new PropertyModel<Boolean>(schema, "readonly"));
-        schemaForm.add(readonly);
-
-        final AjaxCheckBoxPanel uniqueConstraint = new AjaxCheckBoxPanel("uniqueConstraint",
-                getString("uniqueConstraint"), new PropertyModel<Boolean>(schema, "uniqueConstraint"));
-        schemaForm.add(uniqueConstraint);
-
-        final AjaxButton submit = new IndicatingAjaxButton(APPLY, new ResourceModel(SUBMIT)) {
-
-            private static final long serialVersionUID = -958724007591692537L;
-
-            @Override
-            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
-                final SchemaTO schemaTO = (SchemaTO) form.getDefaultModelObject();
-
-                schemaTO.setEnumerationValues(getEnumValuesAsString(enumerationValues.getView().getModelObject()));
-                schemaTO.setEnumerationKeys(getEnumValuesAsString(enumerationKeys.getView().getModelObject()));
-
-                if (schemaTO.isMultivalue() && schemaTO.isUniqueConstraint()) {
-                    error(getString("multivalueAndUniqueConstr.validation"));
-                    feedbackPanel.refresh(target);
-                    return;
-                }
-
-                try {
-                    if (createFlag) {
-                        schemaRestClient.createSchema(kind, schemaTO);
-                    } else {
-                        schemaRestClient.updateSchema(kind, schemaTO);
-                    }
-                    if (pageRef.getPage() instanceof BasePage) {
-                        ((BasePage) pageRef.getPage()).setModalResult(true);
-                    }
-
-                    window.close(target);
-                } catch (SyncopeClientException e) {
-                    error(getString(Constants.ERROR) + ": " + e.getMessage());
-                    feedbackPanel.refresh(target);
-                }
-            }
-
-            @Override
-            protected void onError(final AjaxRequestTarget target, final Form<?> form) {
-                feedbackPanel.refresh(target);
-            }
-        };
-        schemaForm.add(submit);
-
-        final AjaxButton cancel = new IndicatingAjaxButton(CANCEL, new ResourceModel(CANCEL)) {
-
-            private static final long serialVersionUID = -958724007591692537L;
-
-            @Override
-            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
-                window.close(target);
-            }
-        };
-        cancel.setDefaultFormProcessing(false);
-        schemaForm.add(cancel);
-
-        String allowedRoles = createFlag
-                ? xmlRolesReader.getEntitlement("Schema", "create")
-                : xmlRolesReader.getEntitlement("Schema", "update");
-
-        MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, allowedRoles);
-
-        add(schemaForm);
-    }
-
-    private void showHide(final SchemaTO schema, final AjaxDropDownChoicePanel<AttributeSchemaType> type,
-            final WebMarkupContainer conversionParams, final AjaxTextFieldPanel conversionPattern,
-            final WebMarkupContainer enumParams, final AjaxTextFieldPanel enumerationValuesPanel,
-            final MultiFieldPanel<String> enumerationValues, final MultiFieldPanel<String> enumerationKeys,
-            final WebMarkupContainer encryptedParams,
-            final AjaxTextFieldPanel secretKey, final AjaxDropDownChoicePanel<CipherAlgorithm> cipherAlgorithm,
-            final WebMarkupContainer binaryParams, final AjaxTextFieldPanel mimeType) {
-
-        final int typeOrdinal = Integer.parseInt(type.getField().getValue());
-        if (AttributeSchemaType.Long.ordinal() == typeOrdinal
-                || AttributeSchemaType.Double.ordinal() == typeOrdinal
-                || AttributeSchemaType.Date.ordinal() == typeOrdinal) {
-
-            conversionParams.setVisible(true);
-
-            enumParams.setVisible(false);
-            if (enumerationValuesPanel.isRequired()) {
-                enumerationValuesPanel.removeRequiredLabel();
-            }
-            enumerationValues.setModelObject(getEnumValuesAsList(null));
-            enumerationKeys.setModelObject(getEnumValuesAsList(null));
-
-            encryptedParams.setVisible(false);
-            if (secretKey.isRequired()) {
-                secretKey.removeRequiredLabel();
-            }
-            secretKey.setModelObject(null);
-            if (cipherAlgorithm.isRequired()) {
-                cipherAlgorithm.removeRequiredLabel();
-            }
-            cipherAlgorithm.setModelObject(null);
-
-            binaryParams.setVisible(false);
-            mimeType.setModelObject(null);
-        } else if (AttributeSchemaType.Enum.ordinal() == typeOrdinal) {
-            conversionParams.setVisible(false);
-            conversionPattern.setModelObject(null);
-
-            enumParams.setVisible(true);
-            if (!enumerationValuesPanel.isRequired()) {
-                enumerationValuesPanel.addRequiredLabel();
-            }
-            enumerationValues.setModelObject(getEnumValuesAsList(schema.getEnumerationValues()));
-            enumerationKeys.setModelObject(getEnumValuesAsList(schema.getEnumerationKeys()));
-
-            encryptedParams.setVisible(false);
-            if (secretKey.isRequired()) {
-                secretKey.removeRequiredLabel();
-            }
-            secretKey.setModelObject(null);
-            if (cipherAlgorithm.isRequired()) {
-                cipherAlgorithm.removeRequiredLabel();
-            }
-            cipherAlgorithm.setModelObject(null);
-
-            binaryParams.setVisible(false);
-            mimeType.setModelObject(null);
-        } else if (AttributeSchemaType.Encrypted.ordinal() == typeOrdinal) {
-            conversionParams.setVisible(false);
-            conversionPattern.setModelObject(null);
-
-            enumParams.setVisible(false);
-            if (enumerationValuesPanel.isRequired()) {
-                enumerationValuesPanel.removeRequiredLabel();
-            }
-            enumerationValues.setModelObject(getEnumValuesAsList(null));
-            enumerationKeys.setModelObject(getEnumValuesAsList(null));
-
-            encryptedParams.setVisible(true);
-            if (!secretKey.isRequired()) {
-                secretKey.addRequiredLabel();
-            }
-            if (cipherAlgorithm.isRequired()) {
-                cipherAlgorithm.addRequiredLabel();
-            }
-
-            binaryParams.setVisible(false);
-            mimeType.setModelObject(null);
-        } else if (AttributeSchemaType.Binary.ordinal() == typeOrdinal) {
-            conversionParams.setVisible(false);
-            conversionPattern.setModelObject(null);
-
-            enumParams.setVisible(false);
-            if (enumerationValuesPanel.isRequired()) {
-                enumerationValuesPanel.removeRequiredLabel();
-            }
-            enumerationValues.setModelObject(getEnumValuesAsList(null));
-            enumerationKeys.setModelObject(getEnumValuesAsList(null));
-
-            encryptedParams.setVisible(false);
-            if (secretKey.isRequired()) {
-                secretKey.removeRequiredLabel();
-            }
-            secretKey.setModelObject(null);
-            if (cipherAlgorithm.isRequired()) {
-                cipherAlgorithm.removeRequiredLabel();
-            }
-            cipherAlgorithm.setModelObject(null);
-
-            binaryParams.setVisible(true);
-        } else {
-            conversionParams.setVisible(false);
-            conversionPattern.setModelObject(null);
-
-            enumParams.setVisible(false);
-            if (enumerationValuesPanel.isRequired()) {
-                enumerationValuesPanel.removeRequiredLabel();
-            }
-            enumerationValues.setModelObject(getEnumValuesAsList(null));
-            enumerationKeys.setModelObject(getEnumValuesAsList(null));
-
-            encryptedParams.setVisible(false);
-            if (secretKey.isRequired()) {
-                secretKey.removeRequiredLabel();
-            }
-            secretKey.setModelObject(null);
-            if (cipherAlgorithm.isRequired()) {
-                cipherAlgorithm.removeRequiredLabel();
-            }
-            cipherAlgorithm.setModelObject(null);
-
-            binaryParams.setVisible(false);
-            mimeType.setModelObject(null);
-        }
-    }
-
-    private String getEnumValuesAsString(final List<String> enumerationValues) {
-        final StringBuilder builder = new StringBuilder();
-
-        for (String str : enumerationValues) {
-            if (StringUtils.isNotBlank(str)) {
-                if (builder.length() > 0) {
-                    builder.append(SyncopeConstants.ENUM_VALUES_SEPARATOR);
-                }
-
-                builder.append(str.trim());
-            }
-        }
-
-        return builder.toString();
-    }
-
-    private List<String> getEnumValuesAsList(final String enumerationValues) {
-        final List<String> values = new ArrayList<String>();
-
-        if (StringUtils.isNotBlank(enumerationValues)) {
-            for (String value : enumerationValues.split(SyncopeConstants.ENUM_VALUES_SEPARATOR)) {
-                values.add(value.trim());
-            }
-        } else {
-            values.add(StringUtils.EMPTY);
-        }
-
-        return values;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.html
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.html b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.html
new file mode 100644
index 0000000..154419f
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.html
@@ -0,0 +1,172 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
+  <wicket:extend>
+    <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
+    <div style="margin: 5px;">
+      <form wicket:id="form">
+        <div id="formtable">
+          <div class="tablerow alt">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="key"><wicket:message key="key"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="key">[name]</span>
+            </div>
+          </div>
+
+          <div class="tablerow">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="type"><wicket:message key="type"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="type">[type]</span>
+            </div>
+          </div>
+
+          <div wicket:id="conversionParams">
+            <div class="tablerow alt">
+              <div class="tablecolumn_label short_dynamicsize">
+                <label for="conversionPattern"><wicket:message key="conversionPattern"/></label>
+              </div>
+              <div class="tablecolumn_field medium_dynamicsize">
+                <span wicket:id="conversionPattern">[conversionPattern]</span>
+              </div>
+            </div>
+          </div>
+
+          <div wicket:id="typeParams">
+            <div wicket:id="enumParams">
+              <div class="tablerow">
+                <div class="tablecolumn_label short_dynamicsize">
+                  <label for="enumerationValues"><wicket:message key="enumerationValues"/></label>
+                </div>
+                <div class="tablecolumn_field medium_dynamicsize">
+                  <span wicket:id="enumerationValues">[enumerationValues]</span>
+                </div>
+              </div>
+              <div class="tablerow alt">
+                <div class="tablecolumn_label short_dynamicsize">
+                  <label for="enumerationKeys"><wicket:message key="enumerationKeys"/></label>
+                </div>
+                <div class="tablecolumn_field medium_dynamicsize">
+                  <span wicket:id="enumerationKeys">[enumerationKeys]</span>
+                </div>
+              </div>
+            </div>
+            <div wicket:id="encryptedParams">
+              <div class="tablerow">
+                <div class="tablecolumn_label short_dynamicsize">
+                  <label for="secretKey"><wicket:message key="secretKey"/></label>
+                </div>
+                <div class="tablecolumn_field medium_dynamicsize">
+                  <span wicket:id="secretKey">[secretKey]</span>
+                </div>
+              </div>
+              <div class="tablerow alt">
+                <div class="tablecolumn_label short_dynamicsize">
+                  <label for="cipherAlgorithm"><wicket:message key="cipherAlgorithm"/></label>
+                </div>
+                <div class="tablecolumn_field medium_dynamicsize">
+                  <span wicket:id="cipherAlgorithm">[cipherAlgorithm]</span>
+                </div>
+              </div>
+            </div>
+            <div wicket:id="binaryParams">
+              <div class="tablerow alt">
+                <div class="tablecolumn_label short_dynamicsize">
+                  <label for="mimeType"><wicket:message key="mimeType"/></label>
+                </div>
+                <div class="tablecolumn_field medium_dynamicsize">
+                  <span wicket:id="mimeType">[mimeType]</span>
+                </div>
+              </div>
+            </div>
+          </div>
+
+          <div class="tablerow">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="validatorClass"><wicket:message key="validatorClass"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="validatorClass">[validatorClass]</span>
+            </div>
+          </div>
+
+          <div class="tablerow alt">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="mandatoryCondition"><wicket:message key="mandatoryCondition"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <input type="text" class="ui-widget-content ui-corner-all"
+                     id="mandatoryCondition" wicket:id="mandatoryCondition"/>
+              <a class="tooltips" wicket:id="questionMarkJexlHelp" href="#" alt="Click to help" title="Click to help">
+                <img src="img/help.png"/>
+                <span wicket:id="jexlHelp" class="tooltips">
+                  <wicket:message key="jexl_info"/>
+                  <ul>
+                    <li><wicket:message key="jexl_ex1"/></li>
+                    <li><wicket:message key="jexl_ex2"/></li>
+                  </ul>
+                  <a href="#" wicket:id="jexlLink" target="_blank"><wicket:message key="jexl_syntax_url"/></a>
+                </span>
+              </a>
+            </div>
+          </div>
+
+          <div class="tablerow">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="uniqueConstraint" class="onerowlabel"><wicket:message key="uniqueConstraint"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="uniqueConstraint">[uniqueConstraint]</span>
+            </div>
+          </div>
+
+          <div class="tablerow alt">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="multivalue" class="onerowlabel"><wicket:message key="multivalue"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="multivalue">[multivalue]</span>
+            </div>
+          </div>
+
+          <div class="tablerow">
+            <div class="tablecolumn_label short_dynamicsize">
+              <label for="readonly" class="onerowlabel"><wicket:message key="readonly"/></label>
+            </div>
+            <div class="tablecolumn_field medium_dynamicsize">
+              <span wicket:id="readonly">[readonly]</span>
+            </div>
+          </div>
+        </div>
+
+        <div style="margin: 10px 0px 0;">
+          <input type="submit"
+                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                 wicket:id="apply"/>
+          <input type="button"
+                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
+                 wicket:id="cancel"/>      
+        </div>
+      </form>
+    </div>
+  </wicket:extend>
+</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.properties b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.properties
new file mode 100644
index 0000000..58c5708
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage.properties
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+tab1=Attributes
+tab2=Derived attributes
+tab3=User attributes
+tab4=User derived attributes
+required_alert=All form fields are required.
+mandatoryCondition=Mandatory
+enumerationValues= Enumeration values
+enumerationKeys= Enumeration labels
+uniqueConstraint=Unique
+multivalue=Multivalue
+multivalueAndUniqueConstr.validation='Multivalue' and 'Unique constraint' options can't be both checked
+type=Type
+validatorClass=Validator class
+conversionPattern=Conversion pattern
+existing_schemas=Existing Schemas:
+action=Action
+edit_attribute=Edit attribute
+title=Schema
+readonly=Read-only
+secretKey=Secret key
+cipherAlgorithm=Cipher algorithm
+mimeType=MIME Type

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_it.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_it.properties b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_it.properties
new file mode 100644
index 0000000..74eed7d
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_it.properties
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+tab1=Attributi
+tab2=Attributi derivati
+tab3=Attributi utenti
+tab4=Attributi utenti derivati
+required_alert=Tutti i campi sono richiesti
+mandatoryCondition=Obbligatorio
+enumerationValues= Valori enumeration
+enumerationKeys= Label enumeration
+multivalue=Multivalore
+type=Tipo
+validatorClass=Validatore
+conversionPattern=Conversion pattern
+existing_schemas=Schema esistenti:
+action=Azione
+edit_attribute=Modifica attributo
+title=Schema
+readonly=Read-only
+uniqueConstraint=Univoco
+multivalueAndUniqueConstr.validation=Le opzioni 'Multivalore' e 'Vincolo unique' non possono essere entrambe impostate
+secretKey=Chiave segreta
+cipherAlgorithm=Algoritmo di cifratura
+mimeType=MIME Type

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_pt_BR.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_pt_BR.properties b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_pt_BR.properties
new file mode 100644
index 0000000..a026c17
--- /dev/null
+++ b/console/src/main/resources/org/apache/syncope/console/pages/PlainSchemaModalPage_pt_BR.properties
@@ -0,0 +1,38 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+tab1=Atributos
+tab2=Atributos derivados
+tab3=Atributos de usu\u00e1rios
+tab4=Atributos derivados de usu\u00e1rios
+required_alert=Todos os campos s\u00e3o obrigat\u00f3rios
+mandatoryCondition=obrigat\u00f3rio
+enumerationValues= Valores enumerados
+enumerationKeys= R\u00f3tulos de enumera\u00e7\u00e3o
+uniqueConstraint=\u00danico
+multivalue=Multivalorado
+multivalueAndUniqueConstr.validation=As op\u00e7\u00f5es 'Multivalorado' e 'Restri\u00e7\u00e3o \u00fanica' n\u00e3o podem serem ambas selecionadas
+type=Tipo
+validatorClass=Classe de Valida\u00e7\u00e3o
+conversionPattern=Padr\u00e3o de Convers\u00e3o
+existing_schemas=Esquemas Existentes\:
+action=A\u00e7\u00e3o
+edit_attribute=Editar Atributo
+title=Esquema
+readonly=Apenas leitura
+secretKey=Chave secreta
+cipherAlgorithm=Algoritmo de criptografia
+mimeType=MIME Type

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.html
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.html b/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.html
deleted file mode 100644
index 43b95cb..0000000
--- a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.html
+++ /dev/null
@@ -1,172 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
-  <wicket:extend>
-    <p class="ui-widget ui-corner-all ui-widget-header"><wicket:message key="title"/></p>
-    <div style="margin: 5px;">
-      <form wicket:id="form">
-        <div id="formtable">
-          <div class="tablerow alt">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="name"><wicket:message key="name"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <span wicket:id="name">[name]</span>
-            </div>
-          </div>
-
-          <div class="tablerow">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="type"><wicket:message key="type"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <span wicket:id="type">[type]</span>
-            </div>
-          </div>
-
-          <div wicket:id="conversionParams">
-            <div class="tablerow alt">
-              <div class="tablecolumn_label short_dynamicsize">
-                <label for="conversionPattern"><wicket:message key="conversionPattern"/></label>
-              </div>
-              <div class="tablecolumn_field medium_dynamicsize">
-                <span wicket:id="conversionPattern">[conversionPattern]</span>
-              </div>
-            </div>
-          </div>
-
-          <div wicket:id="typeParams">
-            <div wicket:id="enumParams">
-              <div class="tablerow">
-                <div class="tablecolumn_label short_dynamicsize">
-                  <label for="enumerationValues"><wicket:message key="enumerationValues"/></label>
-                </div>
-                <div class="tablecolumn_field medium_dynamicsize">
-                  <span wicket:id="enumerationValues">[enumerationValues]</span>
-                </div>
-              </div>
-              <div class="tablerow alt">
-                <div class="tablecolumn_label short_dynamicsize">
-                  <label for="enumerationKeys"><wicket:message key="enumerationKeys"/></label>
-                </div>
-                <div class="tablecolumn_field medium_dynamicsize">
-                  <span wicket:id="enumerationKeys">[enumerationKeys]</span>
-                </div>
-              </div>
-            </div>
-            <div wicket:id="encryptedParams">
-              <div class="tablerow">
-                <div class="tablecolumn_label short_dynamicsize">
-                  <label for="secretKey"><wicket:message key="secretKey"/></label>
-                </div>
-                <div class="tablecolumn_field medium_dynamicsize">
-                  <span wicket:id="secretKey">[secretKey]</span>
-                </div>
-              </div>
-              <div class="tablerow alt">
-                <div class="tablecolumn_label short_dynamicsize">
-                  <label for="cipherAlgorithm"><wicket:message key="cipherAlgorithm"/></label>
-                </div>
-                <div class="tablecolumn_field medium_dynamicsize">
-                  <span wicket:id="cipherAlgorithm">[cipherAlgorithm]</span>
-                </div>
-              </div>
-            </div>
-            <div wicket:id="binaryParams">
-              <div class="tablerow alt">
-                <div class="tablecolumn_label short_dynamicsize">
-                  <label for="mimeType"><wicket:message key="mimeType"/></label>
-                </div>
-                <div class="tablecolumn_field medium_dynamicsize">
-                  <span wicket:id="mimeType">[mimeType]</span>
-                </div>
-              </div>
-            </div>
-          </div>
-
-          <div class="tablerow">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="validatorClass"><wicket:message key="validatorClass"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <span wicket:id="validatorClass">[validatorClass]</span>
-            </div>
-          </div>
-
-          <div class="tablerow alt">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="mandatoryCondition"><wicket:message key="mandatoryCondition"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <input type="text" class="ui-widget-content ui-corner-all"
-                     id="mandatoryCondition" wicket:id="mandatoryCondition"/>
-              <a class="tooltips" wicket:id="questionMarkJexlHelp" href="#" alt="Click to help" title="Click to help">
-                <img src="img/help.png"/>
-                <span wicket:id="jexlHelp" class="tooltips">
-                  <wicket:message key="jexl_info"/>
-                  <ul>
-                    <li><wicket:message key="jexl_ex1"/></li>
-                    <li><wicket:message key="jexl_ex2"/></li>
-                  </ul>
-                  <a href="#" wicket:id="jexlLink" target="_blank"><wicket:message key="jexl_syntax_url"/></a>
-                </span>
-              </a>
-            </div>
-          </div>
-
-          <div class="tablerow">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="uniqueConstraint" class="onerowlabel"><wicket:message key="uniqueConstraint"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <span wicket:id="uniqueConstraint">[uniqueConstraint]</span>
-            </div>
-          </div>
-
-          <div class="tablerow alt">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="multivalue" class="onerowlabel"><wicket:message key="multivalue"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <span wicket:id="multivalue">[multivalue]</span>
-            </div>
-          </div>
-
-          <div class="tablerow">
-            <div class="tablecolumn_label short_dynamicsize">
-              <label for="readonly" class="onerowlabel"><wicket:message key="readonly"/></label>
-            </div>
-            <div class="tablecolumn_field medium_dynamicsize">
-              <span wicket:id="readonly">[readonly]</span>
-            </div>
-          </div>
-        </div>
-
-        <div style="margin: 10px 0px 0;">
-          <input type="submit"
-                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-                 wicket:id="apply"/>
-          <input type="button"
-                 class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
-                 wicket:id="cancel"/>      
-        </div>
-      </form>
-    </div>
-  </wicket:extend>
-</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.properties b/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.properties
deleted file mode 100644
index 58c5708..0000000
--- a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-tab1=Attributes
-tab2=Derived attributes
-tab3=User attributes
-tab4=User derived attributes
-required_alert=All form fields are required.
-mandatoryCondition=Mandatory
-enumerationValues= Enumeration values
-enumerationKeys= Enumeration labels
-uniqueConstraint=Unique
-multivalue=Multivalue
-multivalueAndUniqueConstr.validation='Multivalue' and 'Unique constraint' options can't be both checked
-type=Type
-validatorClass=Validator class
-conversionPattern=Conversion pattern
-existing_schemas=Existing Schemas:
-action=Action
-edit_attribute=Edit attribute
-title=Schema
-readonly=Read-only
-secretKey=Secret key
-cipherAlgorithm=Cipher algorithm
-mimeType=MIME Type

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_it.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_it.properties b/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_it.properties
deleted file mode 100644
index 74eed7d..0000000
--- a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_it.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-tab1=Attributi
-tab2=Attributi derivati
-tab3=Attributi utenti
-tab4=Attributi utenti derivati
-required_alert=Tutti i campi sono richiesti
-mandatoryCondition=Obbligatorio
-enumerationValues= Valori enumeration
-enumerationKeys= Label enumeration
-multivalue=Multivalore
-type=Tipo
-validatorClass=Validatore
-conversionPattern=Conversion pattern
-existing_schemas=Schema esistenti:
-action=Azione
-edit_attribute=Modifica attributo
-title=Schema
-readonly=Read-only
-uniqueConstraint=Univoco
-multivalueAndUniqueConstr.validation=Le opzioni 'Multivalore' e 'Vincolo unique' non possono essere entrambe impostate
-secretKey=Chiave segreta
-cipherAlgorithm=Algoritmo di cifratura
-mimeType=MIME Type

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_pt_BR.properties
----------------------------------------------------------------------
diff --git a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_pt_BR.properties b/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_pt_BR.properties
deleted file mode 100644
index a026c17..0000000
--- a/console/src/main/resources/org/apache/syncope/console/pages/SchemaModalPage_pt_BR.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-tab1=Atributos
-tab2=Atributos derivados
-tab3=Atributos de usu\u00e1rios
-tab4=Atributos derivados de usu\u00e1rios
-required_alert=Todos os campos s\u00e3o obrigat\u00f3rios
-mandatoryCondition=obrigat\u00f3rio
-enumerationValues= Valores enumerados
-enumerationKeys= R\u00f3tulos de enumera\u00e7\u00e3o
-uniqueConstraint=\u00danico
-multivalue=Multivalorado
-multivalueAndUniqueConstr.validation=As op\u00e7\u00f5es 'Multivalorado' e 'Restri\u00e7\u00e3o \u00fanica' n\u00e3o podem serem ambas selecionadas
-type=Tipo
-validatorClass=Classe de Valida\u00e7\u00e3o
-conversionPattern=Padr\u00e3o de Convers\u00e3o
-existing_schemas=Esquemas Existentes\:
-action=A\u00e7\u00e3o
-edit_attribute=Editar Atributo
-title=Esquema
-readonly=Apenas leitura
-secretKey=Chave secreta
-cipherAlgorithm=Algoritmo de criptografia
-mimeType=MIME Type

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
index 4b207a7..91a797e 100644
--- a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/AttributableDataProvider.java
@@ -27,15 +27,11 @@ import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class AttributableDataProvider extends SortableDataProvider<AbstractAttributableTO, String> {
 
     private static final long serialVersionUID = 6267494272884913376L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(AttributableDataProvider.class);
-
     private final SortableAttributableProviderComparator comparator;
 
     private String fiql = null;
@@ -56,7 +52,7 @@ public class AttributableDataProvider extends SortableDataProvider<AbstractAttri
         this.paginatorRows = paginatorRows;
 
         // default sorting
-        setSort("id", SortOrder.ASCENDING);
+        setSort("key", SortOrder.ASCENDING);
 
         this.comparator = new SortableAttributableProviderComparator(this);
     }
@@ -100,6 +96,6 @@ public class AttributableDataProvider extends SortableDataProvider<AbstractAttri
 
     @Override
     public IModel<AbstractAttributableTO> model(final AbstractAttributableTO object) {
-        return new CompoundPropertyModel<AbstractAttributableTO>(object);
+        return new CompoundPropertyModel<>(object);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/07aa4585/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/SortableAttributableProviderComparator.java
----------------------------------------------------------------------
diff --git a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/SortableAttributableProviderComparator.java b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/SortableAttributableProviderComparator.java
index 15fcddb..e82b9bb 100644
--- a/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/SortableAttributableProviderComparator.java
+++ b/syncope620/client/console/src/main/java/org/apache/syncope/client/console/commons/SortableAttributableProviderComparator.java
@@ -33,8 +33,8 @@ public class SortableAttributableProviderComparator extends SortableDataProvider
 
     private static final long serialVersionUID = 1775967163571699258L;
 
-    private static final Set<String> INLINE_PROPS = new HashSet<String>(Arrays.asList(
-            new String[] { "id", "status", "token", "username" }));
+    private static final Set<String> INLINE_PROPS = new HashSet<>(Arrays.asList(
+            new String[] { "key", "status", "token", "username" }));
 
     public SortableAttributableProviderComparator(final SortableDataProvider<AbstractAttributableTO, String> provider) {
         super(provider);


Mime
View raw message