You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2017/04/18 08:53:46 UTC

[01/50] [abbrv] syncope git commit: [SYNCOPE-1060] fixed wrong dates propagation to/from enduser [Forced Update!]

Repository: syncope
Updated Branches:
  refs/heads/SYNCOPE-808 cf18763b9 -> 06fd9e371 (forced update)


[SYNCOPE-1060] fixed wrong dates propagation to/from enduser


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

Branch: refs/heads/SYNCOPE-808
Commit: 23fdc9140e8ae69f4c15f6448fe51af43cd5df8c
Parents: 905b98d
Author: Andrea Patricelli <an...@apache.org>
Authored: Fri Apr 7 16:57:24 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Fri Apr 7 16:57:24 2017 +0200

----------------------------------------------------------------------
 .../enduser/resources/UserSelfReadResource.java | 33 +++++++----
 .../resources/UserSelfUpdateResource.java       | 60 +++++++++++---------
 .../resources/app/configuration/customForm.json |  2 +-
 3 files changed, 56 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/23fdc914/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
index 8aefb55..3d913e2 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
@@ -20,6 +20,7 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -59,22 +60,15 @@ public class UserSelfReadResource extends BaseResource {
             UserTO userTO = SerializationUtils.clone(SyncopeEnduserSession.get().getSelfTO());
             Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
 
-            // Date -> millis conversion
+            // 1. Date -> millis conversion for PLAIN attributes of USER and its MEMBERSHIPS
             for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
-                    FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-                    AttrTO dateAttr = userPlainAttrMap.get(plainSchema.getKey());
-                    List<String> milliValues = new ArrayList<>(dateAttr.getValues().size());
-                    for (String value : dateAttr.getValues()) {
-                        milliValues.add(String.valueOf(fmt.parse(value).getTime()));
-                    }
-                    dateAttr.getValues().clear();
-                    dateAttr.getValues().addAll(milliValues);
+                dateToMillis(userPlainAttrMap, plainSchema);
+                for (MembershipTO membership : userTO.getMemberships()) {
+                    dateToMillis(membership.getPlainAttrMap(), plainSchema);
                 }
             }
 
-            // membership attributes management
+            // 2. membership attributes management
             for (MembershipTO membership : userTO.getMemberships()) {
                 String groupName = membership.getGroupName();
                 for (AttrTO attr : membership.getPlainAttrs()) {
@@ -116,4 +110,19 @@ public class UserSelfReadResource extends BaseResource {
         }
         return response;
     }
+
+    private void dateToMillis(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
+            throws ParseException {
+        if (plainAttrMap.containsKey(plainSchema.getKey())) {
+            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
+            List<String> milliValues = new ArrayList<>(dateAttr.getValues().size());
+            for (String value : dateAttr.getValues()) {
+                milliValues.add(String.valueOf(fmt.parse(value).getTime()));
+            }
+            dateAttr.getValues().clear();
+            dateAttr.getValues().addAll(milliValues);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/23fdc914/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index 2ee22db..9934aad 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -70,52 +70,40 @@ public class UserSelfUpdateResource extends BaseResource {
 
             UserTO userTO = MAPPER.readValue(request.getReader().readLine(), UserTO.class);
 
-            Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
-
-            // millis -> Date conversion
-            for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
-                    FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-                    AttrTO dateAttr = userPlainAttrMap.get(plainSchema.getKey());
-                    List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
-                    for (String value : dateAttr.getValues()) {
-                        try {
-                            formattedValues.add(fmt.format(Long.valueOf(value)));
-                        } catch (NumberFormatException e) {
-                            throw new IllegalArgumentException("Invalid format value for " + value);
-                        }
-                    }
-                    dateAttr.getValues().clear();
-                    dateAttr.getValues().addAll(formattedValues);
-                }
-            }
-
-            // membership attributes management
+            // 1. membership attributes management
             Set<AttrTO> membAttrs = new HashSet<>();
             for (AttrTO attr : userTO.getPlainAttrs()) {
                 if (attr.getSchema().contains("#")) {
-                    final String[] simpleAttrs = attr.getSchema().split("#");
+                    final String[] compositeSchemaKey = attr.getSchema().split("#");
                     MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
                             new Predicate<MembershipTO>() {
 
                         @Override
                         public boolean evaluate(final MembershipTO item) {
-                            return simpleAttrs[0].equals(item.getGroupName());
+                            return compositeSchemaKey[0].equals(item.getGroupName());
                         }
                     });
                     if (membership == null) {
-                        membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                        membership = new MembershipTO.Builder().group(null, compositeSchemaKey[0]).build();
                         userTO.getMemberships().add(membership);
                     }
                     AttrTO clone = SerializationUtils.clone(attr);
-                    clone.setSchema(simpleAttrs[1]);
+                    clone.setSchema(compositeSchemaKey[1]);
                     membership.getPlainAttrs().add(clone);
                     membAttrs.add(attr);
                 }
             }
             userTO.getPlainAttrs().removeAll(membAttrs);
 
+            // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
+            Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
+            for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
+                millisToDate(userPlainAttrMap, plainSchema);
+                for (MembershipTO membership : userTO.getMemberships()) {
+                    millisToDate(membership.getPlainAttrMap(), plainSchema);
+                }
+            }
+
             membAttrs.clear();
             for (AttrTO attr : userTO.getDerAttrs()) {
                 if (attr.getSchema().contains("#")) {
@@ -198,4 +186,24 @@ public class UserSelfUpdateResource extends BaseResource {
         }
         return response;
     }
+
+    private void millisToDate(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
+            throws IllegalArgumentException {
+        LOG.info("CONVERTING >>>>>>>>>> {}", plainSchema.getKey());
+        if (plainAttrMap.containsKey(plainSchema.getKey())) {
+            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
+            List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
+            for (String value : dateAttr.getValues()) {
+                try {
+                    formattedValues.add(fmt.format(Long.valueOf(value)));
+                } catch (NumberFormatException e) {
+                    throw new IllegalArgumentException("Invalid format value for " + value);
+                }
+            }
+            dateAttr.getValues().clear();
+            dateAttr.getValues().addAll(formattedValues);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/23fdc914/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json b/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
index 9e26dfe..0967ef4 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
+++ b/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
@@ -1 +1 @@
-{}
\ No newline at end of file
+{}


[17/50] [abbrv] syncope git commit: restored customForm.json useful for test

Posted by il...@apache.org.
restored customForm.json useful for test


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

Branch: refs/heads/SYNCOPE-808
Commit: 8f94d1b7d88698283d4305add174c7776bb2158d
Parents: 107e51f
Author: Andrea Patricelli <an...@apache.org>
Authored: Thu Apr 13 11:24:36 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Thu Apr 13 11:24:36 2017 +0200

----------------------------------------------------------------------
 .../enduser/src/test/resources/customForm.json  | 48 +++++++++++++++++++-
 1 file changed, 47 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8f94d1b7/client/enduser/src/test/resources/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/resources/customForm.json b/client/enduser/src/test/resources/customForm.json
index 9e26dfe..0a8b4d3 100644
--- a/client/enduser/src/test/resources/customForm.json
+++ b/client/enduser/src/test/resources/customForm.json
@@ -1 +1,47 @@
-{}
\ No newline at end of file
+{
+  "PLAIN": 
+          {
+            "show": true,
+            "attributes": {
+              "firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname"]
+              },
+              "surname": {
+                "readonly": false,
+                "defaultValues": []
+              },
+              "fullname": {
+                "readonly": false
+              },
+              "loginDate": {
+                "readonly": false
+              },
+              "additional#loginDate": {
+                "readonly": false
+              },
+              "additional#ctype": {
+                "readonly": false,
+                "defaultValues": ["ctypeDefault"]
+              },
+              "additional#cool": {
+                "readonly": false,
+                "defaultValues": ["true"]
+              }
+            }
+          },
+  "DERIVED":
+          {
+            "show": false
+          },
+  "VIRTUAL": 
+          {
+            "show": true,
+            "attributes": {
+              "virtualdata": {
+                "readonly": true,
+                "defaultValues": ["defaultVirtualData"]
+              }
+            }
+          }
+}
\ No newline at end of file


[23/50] [abbrv] syncope git commit: Reviewing docs

Posted by il...@apache.org.
Reviewing docs


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

Branch: refs/heads/SYNCOPE-808
Commit: 72d9c1f5f01332149f3240ebe807f7228c575f55
Parents: ad8e197
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Apr 13 17:08:47 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Apr 13 17:08:47 2017 +0200

----------------------------------------------------------------------
 .../workingwithapachesyncope/customization.adoc | 131 +++++++++----------
 1 file changed, 63 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/72d9c1f5/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
index 97e2e72..7efb82c 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
@@ -460,29 +460,34 @@ as
 and modify the JSON files under the new directory
 ====
 
+[[customization-enduser-form]]
 ===== Form customization
 
-User self create/edit form could be customized in order to:
+The <<enduser-application>> allows to customize the form in order to:
 
-* Hide/show some attributes
-* Deny/allow attribute write
+* hide / show attributes
+* set attributes read-only for users
+* provide default value(s)
 
-Under the `enduser/src/main/resources` directory you can find `customForm.json` file.
-This specifies the rules about form customization, in particular it allows to customize `PLAIN`, `DERIVED` and `VIRTUAL`
-attributes forms.
+Under the `enduser/src/main/resources` directory, the `customForm.json` file is available, allowing to configure form
+customization.
 
-[TIP]
+[NOTE]
+.Hot deploy
 ====
-The file provided with the archetype contains an empty json: `{}`.
-If such file is deleted or contains empty or not parseable json, customization will be simply ignored and all attributes
-will be shown.
+The `customForm.json` could be edited and reloaded without the need of re-starting the Java EE container.
 ====
 
-Here is an example:
+[TIP]
+The `customForm.json` default content is just an empty object `{}`: if such file is missing, empty or not valid,
+form customization will be simply disabled and all attributes will be shown.
 
-```
+.Sample form customization
+====
+[source,json]
+----
 {
-  "PLAIN": 
+  "PLAIN":
           {
             "show": true,
             "attributes": {
@@ -521,7 +526,7 @@ Here is an example:
           {
             "show": false
           },
-  "VIRTUAL": 
+  "VIRTUAL":
           {
             "show": true,
             "attributes": {
@@ -532,28 +537,50 @@ Here is an example:
             }
           }
 }
-```
-As you can see the file has two main levels:
+----
+====
+
+The `customForm.json` file has two main levels:
 
-* Schema type: `PLAIN`, `DERIVED`, `VIRTUAL`.
-* Attributes: list of attributes (by schema type) to be shown in the form.
+. Schema type, e.g. `PLAIN`, `DERIVED`, `VIRTUAL`;
+. Attributes: list of attributes (by schema type) to be shown on the form.
 
+[discrete]
 ====== Schema type
 
-The schema type level allows to define customization of the three sub-forms available in the wizard.
-An user can specify one or each of the three sections in order to customize only what is really needed.
-Though enable/disable of schema forms can be configured also from the `app.js` file of the enduser, form customization
-json provides an attribute `show` to hide/show attributes input fields.
-If `show` is set to `false` info contained into `attributes` will be ignored and nothing is displayed in the form section.
+The schema type level allows to define customization of the three sub-forms available in the Enduser Application's form.
+
+Only one, two or all three sections can be specified, in order to customize only what is really needed.
+
+Moreover, a global boolean field `show` is available, to indicate that the whole sub-form should be shown or hidden.
+When not specified, `show` is treated as `true`.
 
+[discrete]
 ====== Attributes
 
-Attributes level contains a map of attributes to show.
+The attributes level contains a map of attributes to show.
+
+Each attribute has:
+
+* a name, e.g. the name of the <<schema,Schema>> from which the attribute is generated
+* a body, that specifies if the attribute should be readonly, and possibly its default values
+
+.Form attribute specification
+====
+[source,json]
+----
+              "firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname1", "defaultFirstname2"]
+              },
+----
+Here, `firstname` is readonly and has two default values `defaultFirstname1` and `defaultFirstname2`.
+====
 
 [TIP]
 ====
-Attributes map is meant to be populated, i.e. empty `attributes` field means "do not filter at all and show all attributes".
-For example:
+An empty `attributes` field translates to skip filtering and show all attributes; for example:
+
 ```
 {
   "PLAIN": 
@@ -563,57 +590,25 @@ For example:
           }
 }
 ```
-shows all attributes.
-If you want to hide all attributes please use `show` field: `show: false`.
-====
-
-As you can see from the sample json each attribute has:
-
-* A name: the name of schema from which the attribute has been generated.
-* A body: specifies if attribute should be readonly and its default values.
-
-Here is an example of attribute specification:
+shows all `PLAIN` attributes.
 
-```
-"firstname": {
-                "readonly": true,
-                "defaultValues": ["defaultFirstname","defaultFirstname2"]
-              }
-```
-In the example `firstname` is readonly and has two default values defined by a (comma separated) array of strings. 
-Default values section can be omitted if there are not default values to assign to that attribute.
+If all attributes are to be hidden, please set `"show": false`, instead.
+====
 
-[CAUTION]
+[NOTE]
 ====
-There are some clarifications to be made about form customization:
-
-* Default value of `show` (about schema sections) is `true`, i.e. if not specified the section is visible.
-* `readonly` field must not be confused with schema `readonly` information. In form customization `readonly` 
-means a front-end readonly, i.e. the attribute is not modifiable from the enduser, but it can be fully accessible 
-from the administration console. 
-It does not provide info about the schema, but about the specific attribute of the USER.
-* If `readonly` is not specified it is considered `false` by default.
-* `defaultValues` is an array of strings; this means that also date values should be specified as strings, in particular
-in dates must be provided into timestamp format in milliseconds (this behavior will be improved further).
-* `defaultValues` (obviously) do not averride populated fields, an attribute is filled with default values 
-only if it is empty (in create and update).
+The `readonly` field should not be confused with the read-only flag available for <<plain,Plain>> and
+<<virtual,Virtual>> schema. +
+Within Enduser form customization, `readonly` prevenst the user's browser to modify the value of a given attribute.
 ====
 
-====== Hot deploy
-
-Form customization supports "hot deploy" feature. This means that `customForm.json` could be edited and reloaded 
-without stopping and re-starting the application server.
-Obviously to see "hot" modifications to the form you must refresh the page of the browser.
-
 [TIP]
 ====
-When running Syncope into embedded mode you should edit `fit/enduser-reference/target/test-classes/customForm.json`
-file.
-
-While running, instead, Syncope in a real environment you should edit the file under `conf.directory`. Please refer to <<deployment-directories>> section. 
+`defaultValues` is a string array: this means, in particular, that date values should be specified as strings
+(timestamps). +
+Moreover, `defaultValues` do not overwrite any existing value.
 ====
 
-
 [[customization-extensions]]
 ==== Extensions
 


[40/50] [abbrv] syncope git commit: Fixing AOP class name extraction for Camel components

Posted by il...@apache.org.
Fixing AOP class name extraction for Camel components


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

Branch: refs/heads/SYNCOPE-808
Commit: 89530be82b38b5fba4292e034bfc233d14c3a45c
Parents: 904be1a
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 18 10:32:35 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:32:35 2017 +0200

----------------------------------------------------------------------
 .../main/java/org/apache/syncope/core/logic/SyncopeLogic.java  | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/89530be8/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
index 2d0d920..36cc50c 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/SyncopeLogic.java
@@ -173,9 +173,9 @@ public class SyncopeLogic extends AbstractLogic<AbstractBaseBean> {
                 PLATFORM_INFO.setGroupWorkflowAdapter(AopUtils.getTargetClass(gwfAdapter).getName());
                 PLATFORM_INFO.setGroupWorkflowAdapterSupportEdit(gwfAdapter.supportsDefinitionEdit());
 
-                PLATFORM_INFO.setAnyObjectProvisioningManager(aProvisioningManager.getClass().getName());
-                PLATFORM_INFO.setUserProvisioningManager(uProvisioningManager.getClass().getName());
-                PLATFORM_INFO.setGroupProvisioningManager(gProvisioningManager.getClass().getName());
+                PLATFORM_INFO.setAnyObjectProvisioningManager(AopUtils.getTargetClass(aProvisioningManager).getName());
+                PLATFORM_INFO.setUserProvisioningManager(AopUtils.getTargetClass(uProvisioningManager).getName());
+                PLATFORM_INFO.setGroupProvisioningManager(AopUtils.getTargetClass(gProvisioningManager).getName());
                 PLATFORM_INFO.setVirAttrCache(virAttrCache.getClass().getName());
                 PLATFORM_INFO.setPasswordGenerator(passwordGenerator.getClass().getName());
 


[42/50] [abbrv] syncope git commit: Added netbeans to syncope/ide

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties b/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties
new file mode 100644
index 0000000..17de78d
--- /dev/null
+++ b/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties
@@ -0,0 +1,28 @@
+#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.
+
+TemplateViewTopComponent.jPanel1.TabConstraints.tabTitle=TEXT
+TemplateViewTopComponent.jPanel2.TabConstraints.tabTitle=XML
+
+ServerDetailsView.jLabel1.text=URL
+ServerDetailsView.jLabel4.text=Apache Syncope
+ServerDetailsView.okButton.text=OK
+ServerDetailsView.passwordTxt.text=
+ServerDetailsView.userNameTxt.text=
+ServerDetailsView.urlTxt.text=
+ServerDetailsView.jLabel3.text=Password
+ServerDetailsView.jLabel2.text=User Name

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/pom.xml
----------------------------------------------------------------------
diff --git a/ide/pom.xml b/ide/pom.xml
index dbd135f..fae2fae 100644
--- a/ide/pom.xml
+++ b/ide/pom.xml
@@ -7,9 +7,7 @@ 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
@@ -39,6 +37,7 @@ under the License.
 
   <modules>
     <module>eclipse</module>
+    <module>netbeans</module>
   </modules>
 
   <profiles>
@@ -105,4 +104,4 @@ under the License.
       </build>
     </profile>
   </profiles>
-</project>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index cfa0ba0..3f39f2c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -443,6 +443,11 @@ under the License.
     <maven-invoker.version>3.0.0</maven-invoker.version>
     <tycho-version>0.23.1</tycho-version>
 
+    <org-netbeans-api-version>RELEASE802</org-netbeans-api-version>
+    <org-netbeans-version>RELEASE82</org-netbeans-version>
+    <ianal-maven-plugin-version>1.0-alpha-1</ianal-maven-plugin-version>
+    <maven-jar-plugin-version>3.0.0</maven-jar-plugin-version>
+
     <testds.port>1389</testds.port>
     <testdb.webport>9082</testdb.webport>
 
@@ -1472,7 +1477,100 @@ under the License.
         <artifactId>httpmime</artifactId>
         <version>${httpclient.version}</version>
       </dependency>
-      
+
+      <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-annotations-common</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-windows</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util</artifactId>
+            <version>${org-netbeans-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-ui</artifactId>
+            <version>${org-netbeans-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-lookup</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-awt</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-settings</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.syncope.common</groupId>
+            <artifactId>syncope-common-lib</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.syncope.client</groupId>
+            <artifactId>syncope-client-lib</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-io</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-nodes</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-text</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-filesystems</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-loaders</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-core-multiview</artifactId>
+            <version>${org-netbeans-api-version}</version>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-editor-lib2</artifactId>
+            <version>${org-netbeans-api-version}</version>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-progress</artifactId>
+            <version>${org-netbeans-api-version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-progress-nb</artifactId>
+            <version>${org-netbeans-version}</version>
+        </dependency>
+
       <!-- TEST -->
       <dependency>
         <groupId>com.github.detro</groupId>
@@ -1513,6 +1611,10 @@ under the License.
         <enabled>true</enabled>
       </snapshots>
     </repository>
+    <repository>
+      <id>netbeans</id>
+      <url>http://bits.netbeans.org/maven2/</url>
+    </repository>
   </repositories>
 
   <pluginRepositories>


[32/50] [abbrv] syncope git commit: Fix typo

Posted by il...@apache.org.
Fix typo


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

Branch: refs/heads/SYNCOPE-808
Commit: 09069e516ce2cf1e48d260b20f5743fca1295a22
Parents: 13d7765
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 20:54:35 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 20:54:35 2017 +0200

----------------------------------------------------------------------
 archetype/src/main/resources/archetype-resources/enduser/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/09069e51/archetype/src/main/resources/archetype-resources/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/enduser/pom.xml b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
index 35d7aa7..2f9943c 100644
--- a/archetype/src/main/resources/archetype-resources/enduser/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
@@ -247,7 +247,7 @@ under the License.
                           todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
                           overwrite="true"/>
                     
-                    <copy file="${project.build.directory}/test-classes/customForm..json" 
+                    <copy file="${project.build.directory}/test-classes/customForm.json" 
                           todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
                           overwrite="true"/>
                   </target>


[41/50] [abbrv] syncope git commit: [SYNCOPE-1066] Avoid invoking REST via HTTP to fetch the generated WADL; rather getting it via Spring bean

Posted by il...@apache.org.
[SYNCOPE-1066] Avoid invoking REST via HTTP to fetch the generated WADL; rather getting it via Spring bean


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

Branch: refs/heads/SYNCOPE-808
Commit: 3da6a0455d99e8c97e184072f54362d6801297fc
Parents: 89530be
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 18 10:41:41 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:41:41 2017 +0200

----------------------------------------------------------------------
 .../syncope/core/rest/cxf/WADLServlet.java      | 13 ++--
 .../syncope/core/rest/cxf/WadlGenerator.java    | 74 +++++++++++++++++++-
 .../src/main/resources/log4j2.xml               |  4 ++
 3 files changed, 83 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/3da6a045/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
index 534ae9f..e421909 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WADLServlet.java
@@ -18,10 +18,10 @@
  */
 package org.apache.syncope.core.rest.cxf;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.net.URL;
 import java.rmi.ServerException;
 import java.util.HashMap;
 import java.util.Map;
@@ -39,7 +39,7 @@ import org.apache.cocoon.sax.component.XMLGenerator;
 import org.apache.cocoon.sax.component.XMLSerializer;
 import org.apache.cocoon.sax.component.XSLTTransformer;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 
 public class WADLServlet extends HttpServlet {
 
@@ -73,10 +73,11 @@ public class WADLServlet extends HttpServlet {
 
         Matcher schemaMatcher = SCHEMA_PATTERN.matcher(request.getServletPath());
 
+        WadlGenerator wadlGenerator = ApplicationContextProvider.getApplicationContext().getBean(WadlGenerator.class);
+        String wadl = wadlGenerator.getWadl();
+
         Pipeline<SAXPipelineComponent> pipeline = new CachingPipeline<>();
-        String wadlURL = StringUtils.substringBeforeLast(request.getRequestURL().toString(), "/")
-                + "/rest/?_wadl";
-        pipeline.addComponent(new XMLGenerator(new URL(wadlURL)));
+        pipeline.addComponent(new XMLGenerator(wadl));
         if ("/index.html".equals(request.getServletPath())) {
             XSLTTransformer xslt = new XSLTTransformer(getClass().getResource("/wadl2html/index.xsl"));
 
@@ -102,7 +103,7 @@ public class WADLServlet extends HttpServlet {
         } else if ("/syncope.wadl".equals(request.getServletPath())) {
             response.setContentType(MediaType.APPLICATION_XML);
 
-            InputStream in = new URL(wadlURL).openStream();
+            InputStream in = new ByteArrayInputStream(wadl.getBytes());
             OutputStream out = response.getOutputStream();
             try {
                 IOUtils.copy(in, out);

http://git-wip-us.apache.org/repos/asf/syncope/blob/3da6a045/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
index 444e58e..8595293 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/WadlGenerator.java
@@ -18,8 +18,21 @@
  */
 package org.apache.syncope.core.rest.cxf;
 
+import java.lang.annotation.Annotation;
 import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import javax.ws.rs.Path;
 import javax.ws.rs.container.ContainerRequestContext;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.common.util.ClasspathScanner;
+import org.apache.cxf.jaxrs.model.ClassResourceInfo;
+import org.apache.cxf.jaxrs.utils.InjectionUtils;
+import org.apache.cxf.jaxrs.utils.ResourceUtils;
 
 /**
  * Automatically loads available javadocs from class loader (when {@link java.net.URLClassLoader}).
@@ -28,8 +41,9 @@ public class WadlGenerator extends org.apache.cxf.jaxrs.model.wadl.WadlGenerator
 
     private boolean inited = false;
 
-    @Override
-    public void filter(final ContainerRequestContext context) {
+    private String wadl = null;
+
+    private void init() {
         synchronized (this) {
             if (!inited) {
                 URL[] javaDocURLs = JavaDocUtils.getJavaDocURLs();
@@ -40,8 +54,64 @@ public class WadlGenerator extends org.apache.cxf.jaxrs.model.wadl.WadlGenerator
                 inited = true;
             }
         }
+    }
 
+    @Override
+    public void filter(final ContainerRequestContext context) {
+        init();
         super.filter(context);
     }
 
+    public String getWadl() {
+        synchronized (this) {
+            if (wadl == null) {
+                init();
+
+                List<Class<?>> resourceClasses = new ArrayList<>();
+                try {
+                    List<Class<? extends Annotation>> anns = new ArrayList<>();
+                    anns.add(Path.class);
+                    Map<Class<? extends Annotation>, Collection<Class<?>>> discoveredClasses =
+                            ClasspathScanner.findClasses(ClasspathScanner.parsePackages(
+                                    "org.apache.syncope.common.rest.api.service"),
+                                    anns);
+                    if (discoveredClasses.containsKey(Path.class)) {
+                        resourceClasses.addAll(discoveredClasses.get(Path.class));
+                    }
+                } catch (Exception e) {
+                    // ignore
+                }
+
+                List<ClassResourceInfo> classResourceInfos = new ArrayList<>();
+                for (final Class<?> beanClass : resourceClasses) {
+                    ClassResourceInfo cri = IterableUtils.find(classResourceInfos, new Predicate<ClassResourceInfo>() {
+
+                        @Override
+                        public boolean evaluate(final ClassResourceInfo cri) {
+                            return cri.isCreatedFromModel() && cri.isRoot()
+                                    && cri.getServiceClass().isAssignableFrom(beanClass);
+                        }
+                    });
+                    if (cri != null) {
+                        if (!InjectionUtils.isConcreteClass(cri.getServiceClass())) {
+                            cri = new ClassResourceInfo(cri);
+                            classResourceInfos.add(cri);
+                        }
+                        cri.setResourceClass(beanClass);
+                        continue;
+                    }
+
+                    cri = ResourceUtils.createClassResourceInfo(
+                            beanClass, beanClass, true, true, BusFactory.getDefaultBus());
+                    if (cri != null) {
+                        classResourceInfos.add(cri);
+                    }
+                }
+
+                wadl = generateWADL("/", classResourceInfos, false, null, null).toString();
+            }
+        }
+
+        return wadl;
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/3da6a045/fit/core-reference/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/log4j2.xml b/fit/core-reference/src/main/resources/log4j2.xml
index bc4771c..19f5cc4 100644
--- a/fit/core-reference/src/main/resources/log4j2.xml
+++ b/fit/core-reference/src/main/resources/log4j2.xml
@@ -144,6 +144,10 @@ under the License.
       <appender-ref ref="mainFile"/>
       <appender-ref ref="main"/>
     </asyncLogger>
+    <asyncLogger name="org.apache.cocoon" additivity="false" level="ERROR">
+      <appender-ref ref="mainFile"/>
+      <appender-ref ref="main"/>
+    </asyncLogger>
     <asyncLogger name="org.apache.camel" additivity="false" level="ERROR">
       <appender-ref ref="mainFile"/>
       <appender-ref ref="main"/>


[06/50] [abbrv] syncope git commit: [SYNCOPE-1020] Implementation completed: now several sub-processes can be managed besides the main workflow definition; for both Activiti and Flowable

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowDefinitionTO.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowDefinitionTO.java b/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowDefinitionTO.java
new file mode 100644
index 0000000..804d75c
--- /dev/null
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/to/WorkflowDefinitionTO.java
@@ -0,0 +1,71 @@
+/*
+ * 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.common.lib.to;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.syncope.common.lib.AbstractBaseBean;
+
+@XmlRootElement(name = "workflowDefinition")
+@XmlType
+public class WorkflowDefinitionTO extends AbstractBaseBean {
+
+    private static final long serialVersionUID = -7044543391316529128L;
+
+    private String key;
+
+    private String modelId;
+
+    private String name;
+
+    private boolean main;
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(final String key) {
+        this.key = key;
+    }
+
+    public String getModelId() {
+        return modelId;
+    }
+
+    public void setModelId(final String modelId) {
+        this.modelId = modelId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    public boolean isMain() {
+        return main;
+    }
+
+    public void setMain(final boolean main) {
+        this.main = main;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java b/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
index 8f70ba1..aa3fd17 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/types/StandardEntitlement.java
@@ -160,9 +160,13 @@ public final class StandardEntitlement {
 
     public static final String POLICY_DELETE = "POLICY_DELETE";
 
-    public static final String WORKFLOW_DEF_READ = "WORKFLOW_DEF_READ";
+    public static final String WORKFLOW_DEF_LIST = "WORKFLOW_DEF_LIST";
 
-    public static final String WORKFLOW_DEF_UPDATE = "WORKFLOW_DEF_UPDATE";
+    public static final String WORKFLOW_DEF_GET = "WORKFLOW_DEF_GET";
+
+    public static final String WORKFLOW_DEF_SET = "WORKFLOW_DEF_SET";
+
+    public static final String WORKFLOW_DEF_DELETE = "WORKFLOW_DEF_DELETE";
 
     public static final String WORKFLOW_TASK_LIST = "WORKFLOW_TASK_LIST";
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/WorkflowService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/WorkflowService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/WorkflowService.java
index 28b8932..cb1cc4a 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/WorkflowService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/WorkflowService.java
@@ -18,8 +18,10 @@
  */
 package org.apache.syncope.common.rest.api.service;
 
+import java.util.List;
 import javax.validation.constraints.NotNull;
 import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
 import javax.ws.rs.GET;
 import javax.ws.rs.PUT;
 import javax.ws.rs.Path;
@@ -27,7 +29,7 @@ import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 
 /**
@@ -37,36 +39,68 @@ import org.apache.syncope.common.rest.api.RESTHeaders;
 public interface WorkflowService extends JAXRSService {
 
     /**
-     * Exports workflow definition for matching kind.
+     * Lists the available workflow definitions, for the given any object type.
      *
-     * @param anyTypeKind any object type
-     * @return workflow definition for matching kind
+     * @param anyType any object type
+     * @return available workflow definitions, for the given any object type
      */
     @GET
-    @Path("{anyTypeKind}")
+    @Path("{anyType}")
     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-    Response exportDefinition(@NotNull @PathParam("anyTypeKind") AnyTypeKind anyTypeKind);
+    List<WorkflowDefinitionTO> list(@NotNull @PathParam("anyType") String anyType);
 
     /**
-     * Exports workflow diagram representation.
+     * Exports the workflow definition for matching any object type and key.
      *
-     * @param anyTypeKind any object type
+     * @param anyType any object type
+     * @param key workflow definition key
+     * @return workflow definition for matching any object type and key
+     */
+    @GET
+    @Path("{anyType}/{key}")
+    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+    Response get(
+            @NotNull @PathParam("anyType") String anyType,
+            @NotNull @PathParam("key") String key);
+
+    /**
+     * Exports the workflow diagram representation (if available), for matching any object type and key.
+     *
+     * @param anyType any object type
+     * @param key workflow definition key
      * @return workflow diagram representation
      */
     @GET
-    @Path("{anyTypeKind}/diagram.png")
+    @Path("{anyType}/{key}/diagram.png")
     @Produces({ RESTHeaders.MEDIATYPE_IMAGE_PNG })
-    Response exportDiagram(@NotNull @PathParam("anyTypeKind") AnyTypeKind anyTypeKind);
+    Response exportDiagram(
+            @NotNull @PathParam("anyType") String anyType,
+            @NotNull @PathParam("key") String key);
 
     /**
-     * Imports workflow definition for matching kind.
+     * Imports the workflow definition for matching any object type, under the provided key.
      *
-     * @param anyTypeKind any object type
+     * @param anyType any object type
+     * @param key workflow definition key
      * @param definition workflow definition for matching kind
      */
     @PUT
-    @Path("{anyTypeKind}")
+    @Path("{anyType}/{key}")
     @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-    void importDefinition(@NotNull @PathParam("anyTypeKind") AnyTypeKind anyTypeKind, @NotNull String definition);
+    void set(
+            @NotNull @PathParam("anyType") String anyType,
+            @NotNull @PathParam("key") String key,
+            @NotNull String definition);
 
+    /**
+     * Removes the workflow definition for matching any object type, under the provided key.
+     *
+     * @param anyType any object type
+     * @param key workflow definition key
+     */
+    @DELETE
+    @Path("{anyType}/{key}")
+    void delete(
+            @NotNull @PathParam("anyType") String anyType,
+            @NotNull @PathParam("key") String key);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/logic/src/main/java/org/apache/syncope/core/logic/WorkflowLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/WorkflowLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/WorkflowLogic.java
index 8b6d530..4f3e512 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/WorkflowLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/WorkflowLogic.java
@@ -20,13 +20,16 @@ package org.apache.syncope.core.logic;
 
 import java.io.OutputStream;
 import java.lang.reflect.Method;
-import javax.ws.rs.core.MediaType;
-import org.apache.syncope.common.lib.AbstractBaseBean;
+import java.util.List;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
-import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
-import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
-import org.apache.syncope.core.workflow.api.WorkflowAdapter;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.entity.AnyType;
+import org.apache.syncope.core.workflow.api.AnyObjectWorkflowDefinitionAdapter;
+import org.apache.syncope.core.workflow.api.GroupWorkflowDefinitionAdapter;
+import org.apache.syncope.core.workflow.api.UserWorkflowDefinitionAdapter;
+import org.apache.syncope.core.workflow.api.WorkflowDefinitionAdapter;
 import org.apache.syncope.core.workflow.api.WorkflowDefinitionFormat;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -34,94 +37,77 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 @Component
-public class WorkflowLogic extends AbstractTransactionalLogic<AbstractBaseBean> {
+public class WorkflowLogic extends AbstractTransactionalLogic<WorkflowDefinitionTO> {
 
     @Autowired
-    private AnyObjectWorkflowAdapter awfAdapter;
+    private AnyTypeDAO anyTypeDAO;
 
     @Autowired
-    private UserWorkflowAdapter uwfAdapter;
+    private AnyObjectWorkflowDefinitionAdapter awfAdapter;
 
     @Autowired
-    private GroupWorkflowAdapter gwfAdapter;
+    private UserWorkflowDefinitionAdapter uwfAdapter;
 
-    private void exportDefinition(
-            final WorkflowAdapter adapter, final WorkflowDefinitionFormat format, final OutputStream os) {
-
-        adapter.exportDefinition(format, os);
-    }
-
-    private WorkflowDefinitionFormat getFormat(final MediaType format) {
-        return format.equals(MediaType.APPLICATION_JSON_TYPE)
-                ? WorkflowDefinitionFormat.JSON
-                : WorkflowDefinitionFormat.XML;
-    }
-
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_READ + "')")
-    @Transactional(readOnly = true)
-    public void exportAnyObjectDefinition(final MediaType format, final OutputStream os) {
-        exportDefinition(awfAdapter, getFormat(format), os);
+    @Autowired
+    private GroupWorkflowDefinitionAdapter gwfAdapter;
+
+    private WorkflowDefinitionAdapter getAdapter(final String anyTypeKey) {
+        AnyType anyType = anyTypeDAO.find(anyTypeKey);
+        if (anyType == null) {
+            LOG.error("Could not find anyType '" + anyTypeKey + "'");
+            throw new NotFoundException(anyTypeKey);
+        }
+
+        switch (anyType.getKind()) {
+            case ANY_OBJECT:
+                return awfAdapter;
+
+            case GROUP:
+                return gwfAdapter;
+
+            case USER:
+            default:
+                return uwfAdapter;
+        }
     }
 
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_READ + "')")
+    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_LIST + "')")
     @Transactional(readOnly = true)
-    public void exportUserDefinition(final MediaType format, final OutputStream os) {
-        exportDefinition(uwfAdapter, getFormat(format), os);
+    public List<WorkflowDefinitionTO> list(final String anyType) {
+        return getAdapter(anyType).getDefinitions();
     }
 
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_READ + "')")
+    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_GET + "')")
     @Transactional(readOnly = true)
-    public void exportGroupDefinition(final MediaType format, final OutputStream os) {
-        exportDefinition(gwfAdapter, getFormat(format), os);
-    }
+    public void exportDefinition(
+            final String anyType, final String key, final WorkflowDefinitionFormat format, final OutputStream os) {
 
-    private void exportDiagram(final WorkflowAdapter adapter, final OutputStream os) {
-        adapter.exportDiagram(os);
+        getAdapter(anyType).exportDefinition(key, format, os);
     }
 
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_READ + "')")
+    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_GET + "')")
     @Transactional(readOnly = true)
-    public void exportAnyObjectDiagram(final OutputStream os) {
-        exportDiagram(awfAdapter, os);
+    public void exportDiagram(final String anyType, final String key, final OutputStream os) {
+        getAdapter(anyType).exportDiagram(key, os);
     }
 
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_READ + "')")
-    @Transactional(readOnly = true)
-    public void exportUserDiagram(final OutputStream os) {
-        exportDiagram(uwfAdapter, os);
-    }
+    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_GET + "')")
+    public void importDefinition(
+            final String anyType, final String key, final WorkflowDefinitionFormat format, final String definition) {
 
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_READ + "')")
-    @Transactional(readOnly = true)
-    public void exportGroupDiagram(final OutputStream os) {
-        exportDiagram(gwfAdapter, os);
+        getAdapter(anyType).importDefinition(key, format, definition);
     }
 
-    private void importDefinition(
-            final WorkflowAdapter adapter, final WorkflowDefinitionFormat format, final String definition) {
-
-        adapter.importDefinition(format, definition);
-    }
-
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_UPDATE + "')")
-    public void importAnyObjectDefinition(final MediaType format, final String definition) {
-        importDefinition(awfAdapter, getFormat(format), definition);
-    }
-
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_UPDATE + "')")
-    public void importUserDefinition(final MediaType format, final String definition) {
-        importDefinition(uwfAdapter, getFormat(format), definition);
-    }
-
-    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_UPDATE + "')")
-    public void importGroupDefinition(final MediaType format, final String definition) {
-        importDefinition(gwfAdapter, getFormat(format), definition);
+    @PreAuthorize("hasRole('" + StandardEntitlement.WORKFLOW_DEF_DELETE + "')")
+    public void delete(final String anyType, final String key) {
+        getAdapter(anyType).deleteDefinition(key);
     }
 
     @Override
-    protected AbstractBaseBean resolveReference(final Method method, final Object... args)
+    protected WorkflowDefinitionTO resolveReference(final Method method, final Object... args)
             throws UnresolvedReferenceException {
 
         throw new UnresolvedReferenceException();
     }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/WorkflowServiceImpl.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/WorkflowServiceImpl.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/WorkflowServiceImpl.java
index 5b82db0..2642853 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/WorkflowServiceImpl.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/WorkflowServiceImpl.java
@@ -20,13 +20,15 @@ package org.apache.syncope.core.rest.cxf.service;
 
 import java.io.IOException;
 import java.io.OutputStream;
+import java.util.List;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import javax.ws.rs.core.StreamingOutput;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.service.WorkflowService;
 import org.apache.syncope.core.logic.WorkflowLogic;
+import org.apache.syncope.core.workflow.api.WorkflowDefinitionFormat;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -37,44 +39,38 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
     private WorkflowLogic logic;
 
     @Override
-    public Response exportDefinition(final AnyTypeKind kind) {
-        final MediaType accept =
+    public List<WorkflowDefinitionTO> list(final String anyType) {
+        return logic.list(anyType);
+    }
+
+    @Override
+    public Response get(final String anyType, final String key) {
+        final WorkflowDefinitionFormat format =
                 messageContext.getHttpHeaders().getAcceptableMediaTypes().contains(MediaType.APPLICATION_JSON_TYPE)
-                        ? MediaType.APPLICATION_JSON_TYPE
-                        : MediaType.APPLICATION_XML_TYPE;
+                ? WorkflowDefinitionFormat.JSON
+                : WorkflowDefinitionFormat.XML;
 
         StreamingOutput sout = new StreamingOutput() {
 
             @Override
             public void write(final OutputStream os) throws IOException {
-                if (kind == AnyTypeKind.USER) {
-                    logic.exportUserDefinition(accept, os);
-                } else if (kind == AnyTypeKind.ANY_OBJECT) {
-                    logic.exportAnyObjectDefinition(accept, os);
-                } else {
-                    logic.exportGroupDefinition(accept, os);
-                }
+                logic.exportDefinition(anyType, key, format, os);
             }
         };
 
         return Response.ok(sout).
-                type(accept).
+                type(format == WorkflowDefinitionFormat.JSON
+                        ? MediaType.APPLICATION_JSON_TYPE : MediaType.APPLICATION_XHTML_XML_TYPE).
                 build();
     }
 
     @Override
-    public Response exportDiagram(final AnyTypeKind kind) {
+    public Response exportDiagram(final String anyType, final String key) {
         StreamingOutput sout = new StreamingOutput() {
 
             @Override
             public void write(final OutputStream os) throws IOException {
-                if (kind == AnyTypeKind.USER) {
-                    logic.exportUserDiagram(os);
-                } else if (kind == AnyTypeKind.ANY_OBJECT) {
-                    logic.exportAnyObjectDiagram(os);
-                } else {
-                    logic.exportGroupDiagram(os);
-                }
+                logic.exportDiagram(anyType, key, os);
             }
         };
 
@@ -84,19 +80,18 @@ public class WorkflowServiceImpl extends AbstractServiceImpl implements Workflow
     }
 
     @Override
-    public void importDefinition(final AnyTypeKind kind, final String definition) {
-        final MediaType contentType =
+    public void set(final String anyType, final String key, final String definition) {
+        WorkflowDefinitionFormat format =
                 messageContext.getHttpHeaders().getMediaType().equals(MediaType.APPLICATION_JSON_TYPE)
-                        ? MediaType.APPLICATION_JSON_TYPE
-                        : MediaType.APPLICATION_XML_TYPE;
+                ? WorkflowDefinitionFormat.JSON
+                : WorkflowDefinitionFormat.XML;
 
-        if (kind == AnyTypeKind.USER) {
-            logic.importUserDefinition(contentType, definition);
-        } else if (kind == AnyTypeKind.ANY_OBJECT) {
-            logic.importAnyObjectDefinition(contentType, definition);
-        } else {
-            logic.importGroupDefinition(contentType, definition);
-        }
+        logic.importDefinition(anyType, key, format, definition);
+    }
+
+    @Override
+    public void delete(final String anyType, final String key) {
+        logic.delete(anyType, key);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDefinitionLoader.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDefinitionLoader.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDefinitionLoader.java
index e91f595..9521213 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDefinitionLoader.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDefinitionLoader.java
@@ -18,17 +18,13 @@
  */
 package org.apache.syncope.core.workflow.activiti;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Resource;
-import org.activiti.editor.constants.ModelDataJsonConstants;
 import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.repository.Model;
 import org.activiti.engine.repository.ProcessDefinition;
 import org.activiti.spring.SpringProcessEngineConfiguration;
 import org.apache.commons.io.IOUtils;
@@ -65,7 +61,7 @@ public class ActivitiDefinitionLoader implements SyncopeLoader {
             wfIn = userWorkflowDef.getResource().getInputStream();
             wfDef = IOUtils.toByteArray(wfIn);
         } catch (IOException e) {
-            LOG.error("While loading " + ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
+            LOG.error("While loading " + userWorkflowDef.getResource().getFilename(), e);
         } finally {
             IOUtils.closeQuietly(wfIn);
         }
@@ -79,21 +75,13 @@ public class ActivitiDefinitionLoader implements SyncopeLoader {
             // Only loads process definition from file if not found in repository
             if (processes.isEmpty()) {
                 entry.getValue().getRepositoryService().createDeployment().addInputStream(
-                        ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE, new ByteArrayInputStream(wfDef)).deploy();
+                        userWorkflowDef.getResource().getFilename(), new ByteArrayInputStream(wfDef)).deploy();
 
                 ProcessDefinition procDef = entry.getValue().getRepositoryService().createProcessDefinitionQuery().
                         processDefinitionKey(ActivitiUserWorkflowAdapter.WF_PROCESS_ID).latestVersion().
                         singleResult();
 
-                Model model = entry.getValue().getRepositoryService().newModel();
-                ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
-                modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, procDef.getName());
-                modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
-                modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, procDef.getDescription());
-                model.setMetaInfo(modelObjectNode.toString());
-                model.setName(procDef.getName());
-                model.setDeploymentId(procDef.getDeploymentId());
-                ActivitiImportUtils.fromJSON(entry.getValue(), procDef, model);
+                ActivitiDeployUtils.deployModel(entry.getValue(), procDef);
 
                 LOG.debug("Activiti Workflow definition loaded for domain {}", entry.getKey());
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDeployUtils.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDeployUtils.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDeployUtils.java
new file mode 100644
index 0000000..965e03c
--- /dev/null
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiDeployUtils.java
@@ -0,0 +1,97 @@
+/*
+ * 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.core.workflow.activiti;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import org.activiti.bpmn.converter.BpmnXMLConverter;
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.editor.constants.ModelDataJsonConstants;
+import org.activiti.editor.language.json.converter.BpmnJsonConverter;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.repository.Deployment;
+import org.activiti.engine.repository.Model;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.commons.io.IOUtils;
+import org.apache.syncope.core.workflow.api.WorkflowException;
+
+public final class ActivitiDeployUtils {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    public static Deployment deployDefinition(
+            final ProcessEngine engine, final String resourceName, final byte[] definition) {
+
+        try {
+            return engine.getRepositoryService().createDeployment().
+                    addInputStream(resourceName, new ByteArrayInputStream(definition)).deploy();
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While importing " + resourceName, e);
+        }
+    }
+
+    public static void deployModel(final ProcessEngine engine, final ProcessDefinition procDef) {
+        InputStream bpmnStream = null;
+        InputStreamReader isr = null;
+        XMLStreamReader xtr = null;
+        try {
+            bpmnStream = engine.getRepositoryService().getResourceAsStream(
+                    procDef.getDeploymentId(), procDef.getResourceName());
+            isr = new InputStreamReader(bpmnStream);
+            xtr = XMLInputFactory.newInstance().createXMLStreamReader(isr);
+            BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
+
+            Model model = engine.getRepositoryService().newModel();
+            ObjectNode modelObjectNode = OBJECT_MAPPER.createObjectNode();
+            modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, procDef.getName());
+            model.setMetaInfo(modelObjectNode.toString());
+            model.setName(procDef.getName());
+            model.setDeploymentId(procDef.getDeploymentId());
+            model.setVersion(procDef.getVersion());
+
+            engine.getRepositoryService().saveModel(model);
+            engine.getRepositoryService().addModelEditorSource(
+                    model.getId(),
+                    new BpmnJsonConverter().convertToJson(bpmnModel).toString().getBytes());
+        } catch (Exception e) {
+            throw new WorkflowException("While importing " + procDef.getResourceName(), e);
+        } finally {
+            if (xtr != null) {
+                try {
+                    xtr.close();
+                } catch (XMLStreamException e) {
+                    // ignore
+                }
+            }
+            IOUtils.closeQuietly(isr);
+            IOUtils.closeQuietly(bpmnStream);
+        }
+    }
+
+    private ActivitiDeployUtils() {
+        // private constructor for static utility class
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiImportUtils.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiImportUtils.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiImportUtils.java
deleted file mode 100644
index 5df8ac4..0000000
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiImportUtils.java
+++ /dev/null
@@ -1,93 +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.core.workflow.activiti;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import org.activiti.bpmn.converter.BpmnXMLConverter;
-import org.activiti.bpmn.model.BpmnModel;
-import org.activiti.editor.language.json.converter.BpmnJsonConverter;
-import org.activiti.engine.ActivitiException;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.repository.Model;
-import org.activiti.engine.repository.ProcessDefinition;
-import org.apache.commons.io.IOUtils;
-import org.apache.syncope.core.workflow.api.WorkflowException;
-
-public final class ActivitiImportUtils {
-
-    public static void fromXML(final ProcessEngine engine, final byte[] definition) {
-        try {
-            engine.getRepositoryService().createDeployment().
-                    addInputStream(ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE,
-                            new ByteArrayInputStream(definition)).deploy();
-        } catch (ActivitiException e) {
-            throw new WorkflowException("While updating process " + ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-        }
-    }
-
-    public static void fromJSON(
-            final ProcessEngine engine, final byte[] definition, final ProcessDefinition procDef, final Model model) {
-
-        try {
-            model.setVersion(procDef.getVersion());
-            model.setDeploymentId(procDef.getDeploymentId());
-            engine.getRepositoryService().saveModel(model);
-
-            engine.getRepositoryService().addModelEditorSource(model.getId(), definition);
-        } catch (Exception e) {
-            throw new WorkflowException("While updating process " + ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-        }
-    }
-
-    public static void fromJSON(final ProcessEngine engine, final ProcessDefinition procDef, final Model model) {
-        InputStream bpmnStream = null;
-        InputStreamReader isr = null;
-        XMLStreamReader xtr = null;
-        try {
-            bpmnStream = engine.getRepositoryService().getResourceAsStream(
-                    procDef.getDeploymentId(), procDef.getResourceName());
-            isr = new InputStreamReader(bpmnStream);
-            xtr = XMLInputFactory.newInstance().createXMLStreamReader(isr);
-            BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
-
-            fromJSON(engine, new BpmnJsonConverter().convertToJson(bpmnModel).toString().getBytes(), procDef, model);
-        } catch (Exception e) {
-            throw new WorkflowException("While updating process " + ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-        } finally {
-            if (xtr != null) {
-                try {
-                    xtr.close();
-                } catch (XMLStreamException e) {
-                    // ignore
-                }
-            }
-            IOUtils.closeQuietly(isr);
-            IOUtils.closeQuietly(bpmnStream);
-        }
-    }
-
-    private ActivitiImportUtils() {
-        // private constructor for static utility class
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
index 8f4fe93..569dce1 100644
--- a/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
+++ b/core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/ActivitiUserWorkflowAdapter.java
@@ -32,7 +32,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.Resource;
-import javax.ws.rs.NotFoundException;
 import org.activiti.bpmn.converter.BpmnXMLConverter;
 import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.editor.constants.ModelDataJsonConstants;
@@ -46,11 +45,13 @@ import org.activiti.engine.history.HistoricDetail;
 import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.impl.persistence.entity.HistoricFormPropertyEntity;
 import org.activiti.engine.query.Query;
+import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.Model;
 import org.activiti.engine.repository.ProcessDefinition;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -59,6 +60,7 @@ import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.to.WorkflowFormPropertyTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
@@ -68,6 +70,7 @@ import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.BeanUtils;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
@@ -83,14 +86,12 @@ import org.springframework.transaction.annotation.Transactional;
  */
 public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
+    protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
     protected static final String[] PROPERTY_IGNORE_PROPS = { "type" };
 
     public static final String WF_PROCESS_ID = "userWorkflow";
 
-    public static final String WF_PROCESS_RESOURCE = "userWorkflow.bpmn20.xml";
-
-    public static final String WF_DGRM_RESOURCE = "userWorkflow.userWorkflow.png";
-
     public static final String USER = "user";
 
     public static final String WF_EXECUTOR = "wfExecutor";
@@ -464,112 +465,6 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         return new WorkflowResult<>(updated.getKey(), null, performedTasks);
     }
 
-    protected ProcessDefinition getProcessDefinition() {
-        try {
-            return engine.getRepositoryService().createProcessDefinitionQuery().processDefinitionKey(
-                    ActivitiUserWorkflowAdapter.WF_PROCESS_ID).latestVersion().singleResult();
-        } catch (ActivitiException e) {
-            throw new WorkflowException("While accessing process " + ActivitiUserWorkflowAdapter.WF_PROCESS_ID, e);
-        }
-
-    }
-
-    protected Model getModel(final ProcessDefinition procDef) {
-        try {
-            Model model = engine.getRepositoryService().createModelQuery().
-                    deploymentId(procDef.getDeploymentId()).singleResult();
-            if (model == null) {
-                throw new NotFoundException("Could not find Model for deployment " + procDef.getDeploymentId());
-            }
-            return model;
-        } catch (Exception e) {
-            throw new WorkflowException("While accessing process " + ActivitiUserWorkflowAdapter.WF_PROCESS_ID, e);
-        }
-    }
-
-    protected void exportProcessResource(final String resourceName, final OutputStream os) {
-        ProcessDefinition procDef = getProcessDefinition();
-
-        InputStream procDefIS = engine.getRepositoryService().getResourceAsStream(procDef.getDeploymentId(),
-                resourceName);
-        try {
-            IOUtils.copy(procDefIS, os);
-        } catch (IOException e) {
-            LOG.error("While exporting workflow definition {}", procDef.getKey(), e);
-        } finally {
-            IOUtils.closeQuietly(procDefIS);
-        }
-    }
-
-    protected void exportProcessModel(final OutputStream os) {
-        Model model = getModel(getProcessDefinition());
-
-        ObjectMapper objectMapper = new ObjectMapper();
-        try {
-            ObjectNode modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
-            modelNode.put(ModelDataJsonConstants.MODEL_ID, model.getId());
-            modelNode.replace(MODEL_DATA_JSON_MODEL,
-                    objectMapper.readTree(engine.getRepositoryService().getModelEditorSource(model.getId())));
-
-            os.write(modelNode.toString().getBytes());
-        } catch (IOException e) {
-            LOG.error("While exporting workflow definition {}", model.getId(), e);
-        }
-    }
-
-    @Override
-    public void exportDefinition(final WorkflowDefinitionFormat format, final OutputStream os) {
-        switch (format) {
-            case JSON:
-                exportProcessModel(os);
-                break;
-
-            case XML:
-            default:
-                exportProcessResource(WF_PROCESS_RESOURCE, os);
-        }
-    }
-
-    @Override
-    public void exportDiagram(final OutputStream os) {
-        exportProcessResource(WF_DGRM_RESOURCE, os);
-    }
-
-    @Override
-    public void importDefinition(final WorkflowDefinitionFormat format, final String definition) {
-        Model model = getModel(getProcessDefinition());
-        switch (format) {
-            case JSON:
-                JsonNode definitionNode;
-                try {
-                    definitionNode = new ObjectMapper().readTree(definition);
-                    if (definitionNode.has(MODEL_DATA_JSON_MODEL)) {
-                        definitionNode = definitionNode.get(MODEL_DATA_JSON_MODEL);
-                    }
-                    if (!definitionNode.has(BpmnJsonConverter.EDITOR_CHILD_SHAPES)) {
-                        throw new IllegalArgumentException(
-                                "Could not find JSON node " + BpmnJsonConverter.EDITOR_CHILD_SHAPES);
-                    }
-
-                    BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(definitionNode);
-                    ActivitiImportUtils.fromXML(engine, new BpmnXMLConverter().convertToXML(bpmnModel));
-                } catch (Exception e) {
-                    throw new WorkflowException("While updating process "
-                            + ActivitiUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-                }
-
-                ActivitiImportUtils.fromJSON(
-                        engine, definitionNode.toString().getBytes(), getProcessDefinition(), model);
-                break;
-
-            case XML:
-            default:
-                ActivitiImportUtils.fromXML(engine, definition.getBytes());
-
-                ActivitiImportUtils.fromJSON(engine, getProcessDefinition(), model);
-        }
-    }
-
     protected WorkflowFormPropertyType fromActivitiFormType(final FormType activitiFormType) {
         WorkflowFormPropertyType result = WorkflowFormPropertyType.String;
 
@@ -884,4 +779,173 @@ public class ActivitiUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
         return new WorkflowResult<>(userPatch, propByRes, postTasks);
     }
+
+    protected Model getModel(final ProcessDefinition procDef) {
+        try {
+            Model model = engine.getRepositoryService().createModelQuery().
+                    deploymentId(procDef.getDeploymentId()).singleResult();
+            if (model == null) {
+                throw new NotFoundException("Could not find Model for deployment " + procDef.getDeploymentId());
+            }
+            return model;
+        } catch (Exception e) {
+            throw new WorkflowException("While accessing process " + procDef.getKey(), e);
+        }
+    }
+
+    @Override
+    public List<WorkflowDefinitionTO> getDefinitions() {
+        try {
+            return CollectionUtils.collect(
+                    engine.getRepositoryService().createProcessDefinitionQuery().latestVersion().list(),
+                    new Transformer<ProcessDefinition, WorkflowDefinitionTO>() {
+
+                @Override
+                public WorkflowDefinitionTO transform(final ProcessDefinition procDef) {
+                    WorkflowDefinitionTO defTO = new WorkflowDefinitionTO();
+                    defTO.setKey(procDef.getKey());
+                    defTO.setName(procDef.getName());
+
+                    try {
+                        defTO.setModelId(getModel(procDef).getId());
+                    } catch (NotFoundException e) {
+                        LOG.warn("No model found for definition {}, ignoring", procDef.getDeploymentId(), e);
+                    }
+
+                    defTO.setMain(WF_PROCESS_ID.equals(procDef.getKey()));
+
+                    return defTO;
+                }
+            }, new ArrayList<WorkflowDefinitionTO>());
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While listing available process definitions", e);
+        }
+    }
+
+    protected ProcessDefinition getProcessDefinitionByKey(final String key) {
+        try {
+            return engine.getRepositoryService().createProcessDefinitionQuery().
+                    processDefinitionKey(key).latestVersion().singleResult();
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While accessing process " + key, e);
+        }
+
+    }
+
+    protected ProcessDefinition getProcessDefinitionByDeploymentId(final String deploymentId) {
+        try {
+            return engine.getRepositoryService().createProcessDefinitionQuery().
+                    deploymentId(deploymentId).latestVersion().singleResult();
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While accessing deployment " + deploymentId, e);
+        }
+
+    }
+
+    protected void exportProcessModel(final String key, final OutputStream os) {
+        Model model = getModel(getProcessDefinitionByKey(key));
+
+        try {
+            ObjectNode modelNode = (ObjectNode) OBJECT_MAPPER.readTree(model.getMetaInfo());
+            modelNode.put(ModelDataJsonConstants.MODEL_ID, model.getId());
+            modelNode.replace(MODEL_DATA_JSON_MODEL,
+                    OBJECT_MAPPER.readTree(engine.getRepositoryService().getModelEditorSource(model.getId())));
+
+            os.write(modelNode.toString().getBytes());
+        } catch (IOException e) {
+            LOG.error("While exporting workflow definition {}", model.getId(), e);
+        }
+    }
+
+    protected void exportProcessResource(final String deploymentId, final String resourceName, final OutputStream os) {
+        InputStream procDefIS = engine.getRepositoryService().
+                getResourceAsStream(deploymentId, resourceName);
+        try {
+            IOUtils.copy(procDefIS, os);
+        } catch (IOException e) {
+            LOG.error("While exporting {}", resourceName, e);
+        } finally {
+            IOUtils.closeQuietly(procDefIS);
+        }
+    }
+
+    @Override
+    public void exportDefinition(final String key, final WorkflowDefinitionFormat format, final OutputStream os) {
+        switch (format) {
+            case JSON:
+                exportProcessModel(key, os);
+                break;
+
+            case XML:
+            default:
+                ProcessDefinition procDef = getProcessDefinitionByKey(key);
+                exportProcessResource(procDef.getDeploymentId(), procDef.getResourceName(), os);
+        }
+    }
+
+    @Override
+    public void exportDiagram(final String key, final OutputStream os) {
+        ProcessDefinition procDef = getProcessDefinitionByKey(key);
+        if (procDef == null) {
+            throw new NotFoundException("Workflow process definition for " + key);
+        }
+        exportProcessResource(procDef.getDeploymentId(), procDef.getDiagramResourceName(), os);
+    }
+
+    @Override
+    public void importDefinition(final String key, final WorkflowDefinitionFormat format, final String definition) {
+        ProcessDefinition procDef = getProcessDefinitionByKey(key);
+        String resourceName = procDef == null ? key + ".bpmn20.xml" : procDef.getResourceName();
+        Deployment deployment;
+        switch (format) {
+            case JSON:
+                JsonNode definitionNode;
+                try {
+                    definitionNode = OBJECT_MAPPER.readTree(definition);
+                    if (definitionNode.has(MODEL_DATA_JSON_MODEL)) {
+                        definitionNode = definitionNode.get(MODEL_DATA_JSON_MODEL);
+                    }
+                    if (!definitionNode.has(BpmnJsonConverter.EDITOR_CHILD_SHAPES)) {
+                        throw new IllegalArgumentException(
+                                "Could not find JSON node " + BpmnJsonConverter.EDITOR_CHILD_SHAPES);
+                    }
+
+                    BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(definitionNode);
+                    deployment = ActivitiDeployUtils.deployDefinition(
+                            engine,
+                            resourceName,
+                            new BpmnXMLConverter().convertToXML(bpmnModel));
+                } catch (Exception e) {
+                    throw new WorkflowException("While creating or updating process " + key, e);
+                }
+                break;
+
+            case XML:
+            default:
+                deployment = ActivitiDeployUtils.deployDefinition(
+                        engine,
+                        resourceName,
+                        definition.getBytes());
+        }
+
+        procDef = getProcessDefinitionByDeploymentId(deployment.getId());
+        if (!key.equals(procDef.getKey())) {
+            throw new WorkflowException("Mismatching key: expected " + key + ", found " + procDef.getKey());
+        }
+        ActivitiDeployUtils.deployModel(engine, procDef);
+    }
+
+    @Override
+    public void deleteDefinition(final String key) {
+        ProcessDefinition procDef = getProcessDefinitionByKey(key);
+        if (WF_PROCESS_ID.equals(procDef.getKey())) {
+            throw new WorkflowException("Cannot delete the main process " + WF_PROCESS_ID);
+        }
+
+        try {
+            engine.getRepositoryService().deleteDeployment(procDef.getDeploymentId());
+        } catch (Exception e) {
+            throw new WorkflowException("While deleting " + key, e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowDefinitionAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowDefinitionAdapter.java b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowDefinitionAdapter.java
new file mode 100644
index 0000000..43fb0dd
--- /dev/null
+++ b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/AnyObjectWorkflowDefinitionAdapter.java
@@ -0,0 +1,22 @@
+/*
+ * 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.core.workflow.api;
+
+public interface AnyObjectWorkflowDefinitionAdapter extends WorkflowDefinitionAdapter {
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowDefinitionAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowDefinitionAdapter.java b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowDefinitionAdapter.java
new file mode 100644
index 0000000..6dc2241
--- /dev/null
+++ b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/GroupWorkflowDefinitionAdapter.java
@@ -0,0 +1,22 @@
+/*
+ * 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.core.workflow.api;
+
+public interface GroupWorkflowDefinitionAdapter extends WorkflowDefinitionAdapter {
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowDefinitionAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowDefinitionAdapter.java b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowDefinitionAdapter.java
new file mode 100644
index 0000000..93b3969
--- /dev/null
+++ b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/UserWorkflowDefinitionAdapter.java
@@ -0,0 +1,22 @@
+/*
+ * 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.core.workflow.api;
+
+public interface UserWorkflowDefinitionAdapter extends WorkflowDefinitionAdapter {
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowAdapter.java b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowAdapter.java
index b6fab8f..881c4dc 100644
--- a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowAdapter.java
+++ b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowAdapter.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.core.workflow.api;
 
-import java.io.OutputStream;
 import java.util.List;
 import org.apache.syncope.common.lib.patch.AnyPatch;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
@@ -37,29 +36,6 @@ public interface WorkflowAdapter {
     String getPrefix();
 
     /**
-     * Export workflow definition.
-     *
-     * @param format export format
-     * @param os export stream
-     */
-    void exportDefinition(WorkflowDefinitionFormat format, OutputStream os);
-
-    /**
-     * Export workflow graphical representation (if available).
-     *
-     * @param os export stream
-     */
-    void exportDiagram(OutputStream os);
-
-    /**
-     * Update workflow definition.
-     *
-     * @param format import format
-     * @param definition definition
-     */
-    void importDefinition(WorkflowDefinitionFormat format, String definition);
-
-    /**
      * Get all defined forms for current workflow process instances.
      *
      * @return list of defined forms

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowDefinitionAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowDefinitionAdapter.java b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowDefinitionAdapter.java
new file mode 100644
index 0000000..ea84598
--- /dev/null
+++ b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowDefinitionAdapter.java
@@ -0,0 +1,64 @@
+/*
+ * 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.core.workflow.api;
+
+import java.io.OutputStream;
+import java.util.List;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
+
+public interface WorkflowDefinitionAdapter {
+
+    /**
+     * @return all available workflow definitions.
+     */
+    List<WorkflowDefinitionTO> getDefinitions();
+
+    /**
+     * Export the workflow definition for the given key, in the requested format.
+     *
+     * @param key definition key
+     * @param format export format
+     * @param os export stream
+     */
+    void exportDefinition(String key, WorkflowDefinitionFormat format, OutputStream os);
+
+    /**
+     * Export the workflow graphical representation for the given key (if available).
+     *
+     * @param key definition key
+     * @param os export stream
+     */
+    void exportDiagram(String key, OutputStream os);
+
+    /**
+     * Import the workflow definition for the given key.
+     *
+     * @param key definition key
+     * @param format import format
+     * @param definition definition
+     */
+    void importDefinition(String key, WorkflowDefinitionFormat format, String definition);
+
+    /**
+     * Remove the workflow definition for the given key.
+     *
+     * @param key definition key
+     */
+    void deleteDefinition(String key);
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowException.java
----------------------------------------------------------------------
diff --git a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowException.java b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowException.java
index 74abc21..7b3805d 100644
--- a/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowException.java
+++ b/core/workflow-api/src/main/java/org/apache/syncope/core/workflow/api/WorkflowException.java
@@ -25,11 +25,12 @@ package org.apache.syncope.core.workflow.api;
  */
 public class WorkflowException extends RuntimeException {
 
-    /**
-     * Generated serialVersionUID.
-     */
     private static final long serialVersionUID = -6261173250078013869L;
 
+    public WorkflowException(final String message) {
+        super(message);
+    }
+
     /**
      * Return a new instance wrapping the original workflow exception.
      *

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
index 18f4b37..d918ecc 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDefinitionLoader.java
@@ -18,17 +18,13 @@
  */
 package org.apache.syncope.core.workflow.flowable;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.List;
 import java.util.Map;
 import javax.annotation.Resource;
-import org.activiti.editor.constants.ModelDataJsonConstants;
 import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.repository.Model;
 import org.activiti.engine.repository.ProcessDefinition;
 import org.activiti.spring.SpringProcessEngineConfiguration;
 import org.apache.commons.io.IOUtils;
@@ -65,7 +61,7 @@ public class FlowableDefinitionLoader implements SyncopeLoader {
             wfIn = userWorkflowDef.getResource().getInputStream();
             wfDef = IOUtils.toByteArray(wfIn);
         } catch (IOException e) {
-            LOG.error("While loading " + FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
+            LOG.error("While loading " + userWorkflowDef.getResource().getFilename(), e);
         } finally {
             IOUtils.closeQuietly(wfIn);
         }
@@ -74,28 +70,20 @@ public class FlowableDefinitionLoader implements SyncopeLoader {
             List<ProcessDefinition> processes = entry.getValue().getRepositoryService().
                     createProcessDefinitionQuery().processDefinitionKey(FlowableUserWorkflowAdapter.WF_PROCESS_ID).
                     list();
-            LOG.debug(FlowableUserWorkflowAdapter.WF_PROCESS_ID + " Flowable processes in repository: {}", processes);
+            LOG.debug(FlowableUserWorkflowAdapter.WF_PROCESS_ID + " Activiti processes in repository: {}", processes);
 
             // Only loads process definition from file if not found in repository
             if (processes.isEmpty()) {
                 entry.getValue().getRepositoryService().createDeployment().addInputStream(
-                        FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE, new ByteArrayInputStream(wfDef)).deploy();
+                        userWorkflowDef.getResource().getFilename(), new ByteArrayInputStream(wfDef)).deploy();
 
                 ProcessDefinition procDef = entry.getValue().getRepositoryService().createProcessDefinitionQuery().
                         processDefinitionKey(FlowableUserWorkflowAdapter.WF_PROCESS_ID).latestVersion().
                         singleResult();
 
-                Model model = entry.getValue().getRepositoryService().newModel();
-                ObjectNode modelObjectNode = new ObjectMapper().createObjectNode();
-                modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, procDef.getName());
-                modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
-                modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, procDef.getDescription());
-                model.setMetaInfo(modelObjectNode.toString());
-                model.setName(procDef.getName());
-                model.setDeploymentId(procDef.getDeploymentId());
-                FlowableImportUtils.fromJSON(entry.getValue(), procDef, model);
+                FlowableDeployUtils.deployModel(entry.getValue(), procDef);
 
-                LOG.debug("Flowable Workflow definition loaded for domain {}", entry.getKey());
+                LOG.debug("Activiti Workflow definition loaded for domain {}", entry.getKey());
             }
 
             // jump to the next ID block

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
new file mode 100644
index 0000000..4d28cd2
--- /dev/null
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableDeployUtils.java
@@ -0,0 +1,97 @@
+/*
+ * 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.core.workflow.flowable;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import org.activiti.bpmn.converter.BpmnXMLConverter;
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.editor.constants.ModelDataJsonConstants;
+import org.activiti.editor.language.json.converter.BpmnJsonConverter;
+import org.activiti.engine.ActivitiException;
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.repository.Deployment;
+import org.activiti.engine.repository.Model;
+import org.activiti.engine.repository.ProcessDefinition;
+import org.apache.commons.io.IOUtils;
+import org.apache.syncope.core.workflow.api.WorkflowException;
+
+public final class FlowableDeployUtils {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+    public static Deployment deployDefinition(
+            final ProcessEngine engine, final String resourceName, final byte[] definition) {
+
+        try {
+            return engine.getRepositoryService().createDeployment().
+                    addInputStream(resourceName, new ByteArrayInputStream(definition)).deploy();
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While importing " + resourceName, e);
+        }
+    }
+
+    public static void deployModel(final ProcessEngine engine, final ProcessDefinition procDef) {
+        InputStream bpmnStream = null;
+        InputStreamReader isr = null;
+        XMLStreamReader xtr = null;
+        try {
+            bpmnStream = engine.getRepositoryService().getResourceAsStream(
+                    procDef.getDeploymentId(), procDef.getResourceName());
+            isr = new InputStreamReader(bpmnStream);
+            xtr = XMLInputFactory.newInstance().createXMLStreamReader(isr);
+            BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
+
+            Model model = engine.getRepositoryService().newModel();
+            ObjectNode modelObjectNode = OBJECT_MAPPER.createObjectNode();
+            modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, procDef.getName());
+            model.setMetaInfo(modelObjectNode.toString());
+            model.setName(procDef.getName());
+            model.setDeploymentId(procDef.getDeploymentId());
+            model.setVersion(procDef.getVersion());
+
+            engine.getRepositoryService().saveModel(model);
+            engine.getRepositoryService().addModelEditorSource(
+                    model.getId(),
+                    new BpmnJsonConverter().convertToJson(bpmnModel).toString().getBytes());
+        } catch (Exception e) {
+            throw new WorkflowException("While importing " + procDef.getResourceName(), e);
+        } finally {
+            if (xtr != null) {
+                try {
+                    xtr.close();
+                } catch (XMLStreamException e) {
+                    // ignore
+                }
+            }
+            IOUtils.closeQuietly(isr);
+            IOUtils.closeQuietly(bpmnStream);
+        }
+    }
+
+    private FlowableDeployUtils() {
+        // private constructor for static utility class
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableImportUtils.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableImportUtils.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableImportUtils.java
deleted file mode 100644
index 6d0aae5..0000000
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableImportUtils.java
+++ /dev/null
@@ -1,93 +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.core.workflow.flowable;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import org.activiti.bpmn.converter.BpmnXMLConverter;
-import org.activiti.bpmn.model.BpmnModel;
-import org.activiti.editor.language.json.converter.BpmnJsonConverter;
-import org.activiti.engine.ActivitiException;
-import org.activiti.engine.ProcessEngine;
-import org.activiti.engine.repository.Model;
-import org.activiti.engine.repository.ProcessDefinition;
-import org.apache.commons.io.IOUtils;
-import org.apache.syncope.core.workflow.api.WorkflowException;
-
-public final class FlowableImportUtils {
-
-    public static void fromXML(final ProcessEngine engine, final byte[] definition) {
-        try {
-            engine.getRepositoryService().createDeployment().
-                    addInputStream(FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE,
-                            new ByteArrayInputStream(definition)).deploy();
-        } catch (ActivitiException e) {
-            throw new WorkflowException("While updating process " + FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-        }
-    }
-
-    public static void fromJSON(
-            final ProcessEngine engine, final byte[] definition, final ProcessDefinition procDef, final Model model) {
-
-        try {
-            model.setVersion(procDef.getVersion());
-            model.setDeploymentId(procDef.getDeploymentId());
-            engine.getRepositoryService().saveModel(model);
-
-            engine.getRepositoryService().addModelEditorSource(model.getId(), definition);
-        } catch (Exception e) {
-            throw new WorkflowException("While updating process " + FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-        }
-    }
-
-    public static void fromJSON(final ProcessEngine engine, final ProcessDefinition procDef, final Model model) {
-        InputStream bpmnStream = null;
-        InputStreamReader isr = null;
-        XMLStreamReader xtr = null;
-        try {
-            bpmnStream = engine.getRepositoryService().getResourceAsStream(
-                    procDef.getDeploymentId(), procDef.getResourceName());
-            isr = new InputStreamReader(bpmnStream);
-            xtr = XMLInputFactory.newInstance().createXMLStreamReader(isr);
-            BpmnModel bpmnModel = new BpmnXMLConverter().convertToBpmnModel(xtr);
-
-            fromJSON(engine, new BpmnJsonConverter().convertToJson(bpmnModel).toString().getBytes(), procDef, model);
-        } catch (Exception e) {
-            throw new WorkflowException("While updating process " + FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-        } finally {
-            if (xtr != null) {
-                try {
-                    xtr.close();
-                } catch (XMLStreamException e) {
-                    // ignore
-                }
-            }
-            IOUtils.closeQuietly(isr);
-            IOUtils.closeQuietly(bpmnStream);
-        }
-    }
-
-    private FlowableImportUtils() {
-        // private constructor for static utility class
-    }
-}


[25/50] [abbrv] syncope git commit: [SYNCOPE-1059] removed final landing page and managed feedback after successful self create/update

Posted by il...@apache.org.
[SYNCOPE-1059] removed final landing page and managed feedback after successful self create/update


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

Branch: refs/heads/SYNCOPE-808
Commit: ec44748419c080ca8a36b48a85351266f34835f7
Parents: 9b0331e
Author: Andrea Patricelli <an...@apache.org>
Authored: Fri Apr 14 10:32:33 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Fri Apr 14 10:32:33 2017 +0200

----------------------------------------------------------------------
 .../syncope/client/enduser/pages/HomePage.java  | 18 +++++---
 .../syncope/client/enduser/pages/Logout.java    |  9 ++--
 .../resources/META-INF/resources/app/js/app.js  |  4 --
 .../app/js/controllers/LoginController.js       | 24 ++++------
 .../app/js/controllers/UserController.js        | 46 ++++++++++++++------
 .../META-INF/resources/app/views/success.html   | 33 --------------
 6 files changed, 58 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ec447484/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/HomePage.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/HomePage.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/HomePage.java
index 4c017ca..ef9ab90 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/HomePage.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/HomePage.java
@@ -34,13 +34,19 @@ public class HomePage extends WebPage {
         StringBuilder redirectUrl = new StringBuilder("/app/");
         if (!parameters.get("errorMessage").isNull()) {
             redirectUrl.append("#!self?errorMessage=");
-            try {
-                redirectUrl.append(
-                        URLEncoder.encode(parameters.get("errorMessage").toString(), StandardCharsets.UTF_8.name()));
-            } catch (Exception e) {
-                redirectUrl.append("Generic error");
-            }
+            appendMessage(redirectUrl, parameters.get("errorMessage").toString());
+        } else if (!parameters.get("successMessage").isNull()) {
+            redirectUrl.append("#!self?successMessage=");
+            appendMessage(redirectUrl, parameters.get("successMessage").toString());
         }
         throw new NonResettingRestartException(redirectUrl.toString());
     }
+
+    private void appendMessage(final StringBuilder redirectUrl, final String message) {
+        try {
+            redirectUrl.append(URLEncoder.encode(message, StandardCharsets.UTF_8.name()));
+        } catch (Exception e) {
+            redirectUrl.append("Generic error");
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec447484/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/Logout.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/Logout.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/Logout.java
index 37e3103..ced2654 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/Logout.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/pages/Logout.java
@@ -21,22 +21,23 @@ package org.apache.syncope.client.enduser.pages;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.commons.Constants;
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public class Logout extends WebPage {
 
     private static final long serialVersionUID = -4514869014471715933L;
 
-    public Logout() {
-        super();
+    public Logout(final PageParameters parameters) {
+        super(parameters);
 
         @SuppressWarnings("unchecked")
         Class<? extends WebPage> beforeLogout = (Class<? extends WebPage>) SyncopeEnduserSession.get().
                 getAttribute(Constants.BEFORE_LOGOUT);
         if (beforeLogout == null) {
             SyncopeEnduserSession.get().invalidateNow();
-            setResponsePage(getApplication().getHomePage());
+            setResponsePage(getApplication().getHomePage(), getPageParameters());
         } else {
-            setResponsePage(beforeLogout);
+            setResponsePage(beforeLogout, getPageParameters());
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec447484/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/app.js b/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
index 6bc7b8a..253609a 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
@@ -119,10 +119,6 @@ app.config(['$stateProvider', '$urlRouterProvider', '$httpProvider', '$translate
               url: '/finish',
               templateUrl: 'views/user-form-finish.html'
             })
-            .state('success', {
-              url: '/success',
-              templateUrl: 'views/success.html'
-            })
             .state('update', {
               url: '/self/update',
               templateUrl: 'views/editUser.html',

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec447484/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/LoginController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/LoginController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/LoginController.js
index 460d12c..1b68e07 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/LoginController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/LoginController.js
@@ -67,21 +67,15 @@ angular.module("login").controller("LoginController", ['$scope', '$rootScope', '
     $scope.passwordReset = function () {
       $location.path("/passwordreset");
     };
-    $scope.errorAPI = function () {
-      $http.get("/syncope-enduser/api/error").success(function (data) {
-        console.debug("errorAPI response: ", data);
-      });
-    };
-    $scope.sampleAPI = function () {
-      $http.get("/syncope-enduser/api/user-self").success(function (data) {
-        console.debug("sampleAPI response: ", data);
-      });
-    };
-    $scope.schemaAPI = function () {
-      $http.get("/syncope-enduser/api/schema").success(function (data) {
-        console.debug("schemaAPI response: ", data);
-      });
-    };
+    $scope.$watch(function () {
+      return $location.search().successMessage;
+    }, function (successMessage) {
+      if (successMessage) {
+        var message = (' ' + successMessage).slice(1);
+        $scope.showSuccess(message, $scope.notification);
+        delete $location.$$search.successMessage;
+      }
+    });
     $scope.$watch(function () {
       return $location.search().errorMessage;
     }, function (errorMessage) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec447484/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index e2c0540..fbee936 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -23,9 +23,10 @@
 
 angular.module("self").controller("UserController", ['$scope', '$rootScope', '$location', "$state",
   'UserSelfService', 'SchemaService', 'RealmService', 'ResourceService', 'SecurityQuestionService',
-  'GroupService', 'AnyService', 'UserUtil', 'GenericUtil', 'ValidationExecutor', '$translate',
+  'GroupService', 'AnyService', 'UserUtil', 'GenericUtil', 'ValidationExecutor', '$translate', '$filter',
   function ($scope, $rootScope, $location, $state, UserSelfService, SchemaService, RealmService,
-          ResourceService, SecurityQuestionService, GroupService, AnyService, UserUtil, GenericUtil, ValidationExecutor, $translate) {
+          ResourceService, SecurityQuestionService, GroupService, AnyService, UserUtil, GenericUtil, ValidationExecutor,
+          $translate, $filter) {
 
     $scope.user = {};
     $scope.confirmPassword = {
@@ -228,7 +229,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
             return x < y ? -1 : x > y ? 1 : 0;
           });
         }, function (e) {
-          $scope.showError("An error occur during retrieving groups " + e, $scope.notification);
+          $scope.showError("An error occur while retrieving groups " + e, $scope.notification);
         });
       };
 
@@ -248,10 +249,10 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
               }
             }
           }, function (e) {
-            $scope.showError("An error occur during retrieving auxiliary classes " + e, $scope.notification);
+            $scope.showError("An error occur while retrieving auxiliary classes " + e, $scope.notification);
           });
         }, function (e) {
-          $scope.showError("An error occur during retrieving auxiliary classes " + e, $scope.notification);
+          $scope.showError("An error occur while retrieving auxiliary classes " + e, $scope.notification);
         });
       };
 
@@ -302,7 +303,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
             initProperties();
           }
         }, function (e) {
-          console.error("Error during user read ", e);
+          console.error("Error while user read ", e);
         });
       };
 
@@ -401,10 +402,14 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
       var wrappedUser = UserUtil.getWrappedUser(user);
       if ($scope.createMode) {
         UserSelfService.create(wrappedUser, $scope.captchaInput.value).then(function (response) {
-          console.debug("User " + $scope.user.username + " SUCCESSFULLY_CREATED");
+          console.debug("User " + $scope.user.username + " successfully CREATED");
           $rootScope.currentUser = $scope.user.username;
           $rootScope.currentOp = "SUCCESSFULLY_CREATED";
-          $state.go('success');
+          $scope.success({successMessage: $filter('translate')(["USER"]).USER
+                    + " "
+                    + $scope.user.username
+                    + " "
+                    + $filter('translate')(["SUCCESSFULLY_CREATED"]).SUCCESSFULLY_CREATED});
         }, function (response) {
           console.error("Error during user creation: ", response);
           var errorMessage;
@@ -417,12 +422,14 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
         });
       } else {
         UserSelfService.update(wrappedUser, $scope.captchaInput.value).then(function (response) {
-          console.debug("User " + $scope.user.username + " SUCCESSFULLY_UPDATED");
+          console.debug("User " + $scope.user.username + " successfully UPDATED");
           $rootScope.currentUser = $scope.user.username;
           $rootScope.currentOp = "SUCCESSFULLY_UPDATED";
-          $state.go('success');
-
-          $scope.logout();
+          $scope.logout({successMessage: $filter('translate')(["USER"]).USER
+                    + " "
+                    + $scope.user.username
+                    + " "
+                    + $filter('translate')(["SUCCESSFULLY_UPDATED"]).SUCCESSFULLY_UPDATED});
         }, function (response) {
           console.info("Error during user update: ", response);
           var errorMessage;
@@ -541,10 +548,21 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
       kendo.culture($rootScope.languages.selectedLanguage.code);
     };
 
-    $scope.logout = function () {
+    $scope.logout = function (params) {
       $translate.use($scope.languages.selectedLanguage.code);
       $rootScope.endReached = false;
-      window.location.href = '../wicket/bookmarkable/org.apache.syncope.client.enduser.pages.Logout';
+      var destination = params && params.successMessage
+              ? '../wicket/bookmarkable/org.apache.syncope.client.enduser.pages.Logout?successMessage=' + params.successMessage
+              : '../wicket/bookmarkable/org.apache.syncope.client.enduser.pages.Logout';
+      window.location.href = destination;
+    };
+
+    $scope.success = function (params) {
+      $rootScope.endReached = false;
+      var destination = params && params.successMessage
+              ? '../wicket/bookmarkable/org.apache.syncope.client.enduser.pages.HomePage?successMessage=' + params.successMessage
+              : '../wicket/bookmarkable/org.apache.syncope.client.enduser.pages.HomePage';
+      window.location.href = destination;
     };
 
     $scope.redirect = function () {

http://git-wip-us.apache.org/repos/asf/syncope/blob/ec447484/client/enduser/src/main/resources/META-INF/resources/app/views/success.html
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/success.html b/client/enduser/src/main/resources/META-INF/resources/app/views/success.html
deleted file mode 100644
index 1be0c9a..0000000
--- a/client/enduser/src/main/resources/META-INF/resources/app/views/success.html
+++ /dev/null
@@ -1,33 +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.
--->
-
-<div ng-cloak class="container">
-  <div class="login-container" style="box-sizing: border-box; ">
-    <div id="form-container" class="col-md-6 col-md-offset-3" style="box-sizing: border-box; background-color: #F7F7F7;">
-      <div ng-controller="UserController">
-        <div class="page-header" style="text-align: left; font-weight: 700;">          
-          <span>{{'USER'| translate}} <b> {{currentUser}}</b> {{currentOp| translate}}</span>
-        </div>
-        <span>
-          <a id="redirect" href="javascript:void(0);" class="btn btn-link" ng-click="redirect()">{{'GOBACKHOME'| translate}}</a>
-        </span> 
-      </div>
-    </div>
-  </div>
-</div>
\ No newline at end of file


[30/50] [abbrv] syncope git commit: [maven-release-plugin] prepare release syncope-2.0.3

Posted by il...@apache.org.
[maven-release-plugin] prepare release syncope-2.0.3


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

Branch: refs/heads/SYNCOPE-808
Commit: db1c571856e9f85f8415dd55311592890ac37b61
Parents: 27a12c5
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 14:59:52 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 14:59:52 2017 +0200

----------------------------------------------------------------------
 archetype/pom.xml                                |  2 +-
 client/cli/pom.xml                               |  2 +-
 client/console/pom.xml                           |  2 +-
 client/enduser/pom.xml                           |  2 +-
 client/lib/pom.xml                               |  2 +-
 client/pom.xml                                   |  2 +-
 common/lib/pom.xml                               |  2 +-
 common/pom.xml                                   |  2 +-
 common/rest-api/pom.xml                          |  2 +-
 core/logic/pom.xml                               |  2 +-
 core/migration/pom.xml                           |  2 +-
 core/persistence-api/pom.xml                     |  2 +-
 core/persistence-jpa/pom.xml                     |  2 +-
 core/pom.xml                                     |  2 +-
 core/provisioning-api/pom.xml                    |  2 +-
 core/provisioning-java/pom.xml                   |  2 +-
 core/rest-cxf/pom.xml                            |  2 +-
 core/spring/pom.xml                              |  2 +-
 core/workflow-activiti/pom.xml                   |  2 +-
 core/workflow-api/pom.xml                        |  2 +-
 core/workflow-flowable/pom.xml                   |  2 +-
 core/workflow-java/pom.xml                       |  2 +-
 deb/console/pom.xml                              |  2 +-
 deb/core/pom.xml                                 |  2 +-
 deb/enduser/pom.xml                              |  2 +-
 deb/pom.xml                                      |  2 +-
 ext/camel/client-console/pom.xml                 |  2 +-
 ext/camel/common-lib/pom.xml                     |  2 +-
 ext/camel/logic/pom.xml                          |  2 +-
 ext/camel/persistence-api/pom.xml                |  2 +-
 ext/camel/persistence-jpa/pom.xml                |  2 +-
 ext/camel/pom.xml                                |  2 +-
 ext/camel/provisioning-api/pom.xml               |  2 +-
 ext/camel/provisioning-camel/pom.xml             |  2 +-
 ext/camel/rest-api/pom.xml                       |  2 +-
 ext/camel/rest-cxf/pom.xml                       |  2 +-
 ext/pom.xml                                      |  2 +-
 ext/saml2sp/agent/pom.xml                        |  2 +-
 ext/saml2sp/client-console/pom.xml               |  2 +-
 ext/saml2sp/client-enduser/pom.xml               |  2 +-
 ext/saml2sp/common-lib/pom.xml                   |  2 +-
 ext/saml2sp/logic/pom.xml                        |  2 +-
 ext/saml2sp/persistence-api/pom.xml              |  2 +-
 ext/saml2sp/persistence-jpa/pom.xml              |  2 +-
 ext/saml2sp/pom.xml                              |  2 +-
 ext/saml2sp/provisioning-api/pom.xml             |  2 +-
 ext/saml2sp/provisioning-java/pom.xml            |  2 +-
 ext/saml2sp/rest-api/pom.xml                     |  2 +-
 ext/saml2sp/rest-cxf/pom.xml                     |  2 +-
 ext/swagger-ui/pom.xml                           |  2 +-
 fit/build-tools/pom.xml                          |  2 +-
 fit/console-reference/pom.xml                    | 19 +++++--------------
 fit/core-reference/pom.xml                       |  2 +-
 fit/enduser-reference/pom.xml                    |  2 +-
 fit/pom.xml                                      |  2 +-
 .../pom.xml                                      |  2 +-
 ide/eclipse/pom.xml                              |  2 +-
 .../org.apache.syncope.ide.eclipse.site/pom.xml  |  2 +-
 ide/pom.xml                                      |  2 +-
 installer/pom.xml                                |  2 +-
 pom.xml                                          |  4 ++--
 standalone/pom.xml                               |  5 ++---
 62 files changed, 68 insertions(+), 78 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/archetype/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/pom.xml b/archetype/pom.xml
index 8ecc078..a5fdc14 100644
--- a/archetype/pom.xml
+++ b/archetype/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Archetype</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/client/cli/pom.xml
----------------------------------------------------------------------
diff --git a/client/cli/pom.xml b/client/cli/pom.xml
index c0fb754..bfe48a9 100644
--- a/client/cli/pom.xml
+++ b/client/cli/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client CLI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/client/console/pom.xml
----------------------------------------------------------------------
diff --git a/client/console/pom.xml b/client/console/pom.xml
index 16bdc3e..ff75615 100644
--- a/client/console/pom.xml
+++ b/client/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/client/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml
index 48f4f04..10da00d 100644
--- a/client/enduser/pom.xml
+++ b/client/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
     
   <name>Apache Syncope Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/client/lib/pom.xml
----------------------------------------------------------------------
diff --git a/client/lib/pom.xml b/client/lib/pom.xml
index 7306d25..bdae59a 100644
--- a/client/lib/pom.xml
+++ b/client/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index 113e76b..9c8e88b 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/common/lib/pom.xml
----------------------------------------------------------------------
diff --git a/common/lib/pom.xml b/common/lib/pom.xml
index f00f07d..28aa542 100644
--- a/common/lib/pom.xml
+++ b/common/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/common/pom.xml
----------------------------------------------------------------------
diff --git a/common/pom.xml b/common/pom.xml
index 8d773ea..6c372c7 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Common</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/common/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml
index 8873e25..d169a52 100644
--- a/common/rest-api/pom.xml
+++ b/common/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Common REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/logic/pom.xml
----------------------------------------------------------------------
diff --git a/core/logic/pom.xml b/core/logic/pom.xml
index 4762a71..355acf4 100644
--- a/core/logic/pom.xml
+++ b/core/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/migration/pom.xml
----------------------------------------------------------------------
diff --git a/core/migration/pom.xml b/core/migration/pom.xml
index db38d1c..00f5a62 100644
--- a/core/migration/pom.xml
+++ b/core/migration/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Migration</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-api/pom.xml b/core/persistence-api/pom.xml
index 933c5eb..2543033 100644
--- a/core/persistence-api/pom.xml
+++ b/core/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml
index 5914c8d..02c7530 100644
--- a/core/persistence-jpa/pom.xml
+++ b/core/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 4de422a..a252a28 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-api/pom.xml b/core/provisioning-api/pom.xml
index a66d956..1c85f06 100644
--- a/core/provisioning-api/pom.xml
+++ b/core/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml
index 7e4db39..542a0ad 100644
--- a/core/provisioning-java/pom.xml
+++ b/core/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml
index a530a53..2afea73 100644
--- a/core/rest-cxf/pom.xml
+++ b/core/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/spring/pom.xml
----------------------------------------------------------------------
diff --git a/core/spring/pom.xml b/core/spring/pom.xml
index f07ba6d..dff3f6e 100644
--- a/core/spring/pom.xml
+++ b/core/spring/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Spring</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/workflow-activiti/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/pom.xml b/core/workflow-activiti/pom.xml
index c52d616..52ba44d 100644
--- a/core/workflow-activiti/pom.xml
+++ b/core/workflow-activiti/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Activiti</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/workflow-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-api/pom.xml b/core/workflow-api/pom.xml
index 70f103c..57d75f1 100644
--- a/core/workflow-api/pom.xml
+++ b/core/workflow-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/workflow-flowable/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/pom.xml b/core/workflow-flowable/pom.xml
index a68b8c2..bc695b2 100644
--- a/core/workflow-flowable/pom.xml
+++ b/core/workflow-flowable/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Flowable</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/core/workflow-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-java/pom.xml b/core/workflow-java/pom.xml
index a8e61a0..b5f4a2e 100644
--- a/core/workflow-java/pom.xml
+++ b/core/workflow-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/deb/console/pom.xml
----------------------------------------------------------------------
diff --git a/deb/console/pom.xml b/deb/console/pom.xml
index 0495dd3..f2bcdc6 100644
--- a/deb/console/pom.xml
+++ b/deb/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/deb/core/pom.xml
----------------------------------------------------------------------
diff --git a/deb/core/pom.xml b/deb/core/pom.xml
index e52b286..b064927 100644
--- a/deb/core/pom.xml
+++ b/deb/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
index 770c894..dcd889f 100644
--- a/deb/enduser/pom.xml
+++ b/deb/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/deb/pom.xml
----------------------------------------------------------------------
diff --git a/deb/pom.xml b/deb/pom.xml
index dc3b677..a40a90b 100644
--- a/deb/pom.xml
+++ b/deb/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/pom.xml b/ext/camel/client-console/pom.xml
index 5285ea3..269f493 100644
--- a/ext/camel/client-console/pom.xml
+++ b/ext/camel/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/common-lib/pom.xml b/ext/camel/common-lib/pom.xml
index e67a97f..6dcaa61 100644
--- a/ext/camel/common-lib/pom.xml
+++ b/ext/camel/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml
index d408e35..2420f2f 100644
--- a/ext/camel/logic/pom.xml
+++ b/ext/camel/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-api/pom.xml b/ext/camel/persistence-api/pom.xml
index 3af0c58..0bd4929 100644
--- a/ext/camel/persistence-api/pom.xml
+++ b/ext/camel/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-jpa/pom.xml b/ext/camel/persistence-jpa/pom.xml
index f3fa3d7..8ac8d60 100644
--- a/ext/camel/persistence-jpa/pom.xml
+++ b/ext/camel/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/pom.xml b/ext/camel/pom.xml
index 29d237f..a713352 100644
--- a/ext/camel/pom.xml
+++ b/ext/camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-api/pom.xml b/ext/camel/provisioning-api/pom.xml
index c23a8ba..90957c9 100644
--- a/ext/camel/provisioning-api/pom.xml
+++ b/ext/camel/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/provisioning-camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/pom.xml b/ext/camel/provisioning-camel/pom.xml
index dd8cb29..4755628 100644
--- a/ext/camel/provisioning-camel/pom.xml
+++ b/ext/camel/provisioning-camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-api/pom.xml b/ext/camel/rest-api/pom.xml
index 84528cf..c3c993f 100644
--- a/ext/camel/rest-api/pom.xml
+++ b/ext/camel/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/camel/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml
index bd20e00..52a73a2 100644
--- a/ext/camel/rest-cxf/pom.xml
+++ b/ext/camel/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pom.xml b/ext/pom.xml
index 9bda1d7..10297d7 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/agent/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/pom.xml b/ext/saml2sp/agent/pom.xml
index 6bccccc..606be20 100644
--- a/ext/saml2sp/agent/pom.xml
+++ b/ext/saml2sp/agent/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Agent</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/pom.xml b/ext/saml2sp/client-console/pom.xml
index a9e2934..b801d43 100644
--- a/ext/saml2sp/client-console/pom.xml
+++ b/ext/saml2sp/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/client-enduser/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-enduser/pom.xml b/ext/saml2sp/client-enduser/pom.xml
index 24cfc0b..c0c1cb0 100644
--- a/ext/saml2sp/client-enduser/pom.xml
+++ b/ext/saml2sp/client-enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/pom.xml b/ext/saml2sp/common-lib/pom.xml
index 9aa8409..7039f5c 100644
--- a/ext/saml2sp/common-lib/pom.xml
+++ b/ext/saml2sp/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/pom.xml b/ext/saml2sp/logic/pom.xml
index ecc229b..b82be74 100644
--- a/ext/saml2sp/logic/pom.xml
+++ b/ext/saml2sp/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-api/pom.xml b/ext/saml2sp/persistence-api/pom.xml
index 057d79f..108681e 100644
--- a/ext/saml2sp/persistence-api/pom.xml
+++ b/ext/saml2sp/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-jpa/pom.xml b/ext/saml2sp/persistence-jpa/pom.xml
index 8f9bd67..2aac44a 100644
--- a/ext/saml2sp/persistence-jpa/pom.xml
+++ b/ext/saml2sp/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/pom.xml b/ext/saml2sp/pom.xml
index 7976a32..c0457fc 100644
--- a/ext/saml2sp/pom.xml
+++ b/ext/saml2sp/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-api/pom.xml b/ext/saml2sp/provisioning-api/pom.xml
index 0c89b3d..9a8e2fa 100644
--- a/ext/saml2sp/provisioning-api/pom.xml
+++ b/ext/saml2sp/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/pom.xml b/ext/saml2sp/provisioning-java/pom.xml
index cd10e55..752f155 100644
--- a/ext/saml2sp/provisioning-java/pom.xml
+++ b/ext/saml2sp/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-api/pom.xml b/ext/saml2sp/rest-api/pom.xml
index 9035ff4..287ed8f 100644
--- a/ext/saml2sp/rest-api/pom.xml
+++ b/ext/saml2sp/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/saml2sp/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-cxf/pom.xml b/ext/saml2sp/rest-cxf/pom.xml
index 3f70e0b..f6700fe 100644
--- a/ext/saml2sp/rest-cxf/pom.xml
+++ b/ext/saml2sp/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ext/swagger-ui/pom.xml
----------------------------------------------------------------------
diff --git a/ext/swagger-ui/pom.xml b/ext/swagger-ui/pom.xml
index d7f0999..d75cbab 100644
--- a/ext/swagger-ui/pom.xml
+++ b/ext/swagger-ui/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Swagger UI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/fit/build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml
index 3e8a5c5..18e052b 100644
--- a/fit/build-tools/pom.xml
+++ b/fit/build-tools/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Build Tools</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index b5ae489..6746e57 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Console Reference</name>
@@ -155,19 +155,10 @@ under the License.
                 <copy todir="${activiti-modeler.directory}/editor-app">
                   <fileset dir="${project.build.directory}/activiti-webapp-explorer2/editor-app" />                  
                 </copy>
-                <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
-                               match="ORYX.CONFIG.ROOT_PATH =.*&quot;editor/&quot;; //TODO: Remove last slash!!"
-                               replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&quot;;"
-                               byline="true" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
-                         token="new Ajax.Request(ACTIVITI.CONFIG.contextRoot + '/editor/stencilset?version=' + Date.now(), {"
-                         value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) + &quot;/activiti-modeler/stencilset.json&quot;, {" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
-                         token="ORYX.Editor.createByUrl = function(modelUrl){"
-                         value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />                
-                <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
-                         token="window.location.href = &quot;./&quot;;"
-                         value="window.close();" />
+                <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" match="ORYX.CONFIG.ROOT_PATH =.*&quot;editor/&quot;; //TODO: Remove last slash!!" replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&quot;;" byline="true" />
+                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="new Ajax.Request(ACTIVITI.CONFIG.contextRoot + '/editor/stencilset?version=' + Date.now(), {" value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) + &quot;/activiti-modeler/stencilset.json&quot;, {" />
+                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl = function(modelUrl){" value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />                
+                <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js" token="window.location.href = &quot;./&quot;;" value="window.close();" />
                                                
                 <copy file="${basedir}/src/main/resources/url-config.js" todir="${activiti-modeler.directory}/editor-app/configuration" overwrite="true" />
                 <copy file="${basedir}/src/main/resources/save-model.html" todir="${activiti-modeler.directory}/editor-app/popups" overwrite="true" />

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/fit/core-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 2ea5e3a..1004590 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Core Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/fit/enduser-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml
index 958e9f0..1e5bcce 100644
--- a/fit/enduser-reference/pom.xml
+++ b/fit/enduser-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Enduser Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/fit/pom.xml
----------------------------------------------------------------------
diff --git a/fit/pom.xml b/fit/pom.xml
index f33bef9..26ef182 100644
--- a/fit/pom.xml
+++ b/fit/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
index ed153aa..a05e349 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ide/eclipse/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/pom.xml b/ide/eclipse/pom.xml
index 42e5530..9032e61 100644
--- a/ide/eclipse/pom.xml
+++ b/ide/eclipse/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ide</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope IDE Eclipse</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
index 4682e96..3913397 100644
--- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
+++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/ide/pom.xml
----------------------------------------------------------------------
diff --git a/ide/pom.xml b/ide/pom.xml
index c14a1e6..f16d5e8 100644
--- a/ide/pom.xml
+++ b/ide/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope IDE</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/installer/pom.xml
----------------------------------------------------------------------
diff --git a/installer/pom.xml b/installer/pom.xml
index de4b778..2ed15e8 100644
--- a/installer/pom.xml
+++ b/installer/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Installer</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 9b63a5f..be4aee8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@ under the License.
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>
-  <version>2.0.3-SNAPSHOT</version>
+  <version>2.0.3</version>
   <packaging>pom</packaging>
 
   <parent>
@@ -52,7 +52,7 @@ under the License.
     <connection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</developerConnection>
     <url>https://git-wip-us.apache.org/repos/asf?p=syncope.git</url>
-    <tag>HEAD</tag>
+    <tag>syncope-2.0.3</tag>
   </scm>
 
   <issueManagement>

http://git-wip-us.apache.org/repos/asf/syncope/blob/db1c5718/standalone/pom.xml
----------------------------------------------------------------------
diff --git a/standalone/pom.xml b/standalone/pom.xml
index 93af0f3..097fd57 100644
--- a/standalone/pom.xml
+++ b/standalone/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Standalone Distribution</name>
@@ -142,8 +142,7 @@ under the License.
                 <copy todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope/WEB-INF/classes" overwrite="true">
                   <fileset dir="${project.build.outputDirectory}/core" />
                 </copy>
-                <copy file="../fit/core-reference/target/test-classes/keystore"
-                      todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope/WEB-INF/classes" overwrite="true"/>
+                <copy file="../fit/core-reference/target/test-classes/keystore" todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope/WEB-INF/classes" overwrite="true" />
 
                 <!-- Syncope console -->
                 <copy todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope-console">


[08/50] [abbrv] syncope git commit: Upgrade CXF

Posted by il...@apache.org.
Upgrade CXF


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

Branch: refs/heads/SYNCOPE-808
Commit: 1b493e3b89d4da6f57fa33e46d010c302151f3c0
Parents: 7a44061
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 11 15:06:03 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 11 15:06:03 2017 +0200

----------------------------------------------------------------------
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/1b493e3b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index f9a10d9..acf3e14 100644
--- a/pom.xml
+++ b/pom.xml
@@ -357,7 +357,7 @@ under the License.
     <connid.ldap.version>1.5.1</connid.ldap.version>
     <connid.ad.version>1.3.2</connid.ad.version>
 
-    <cxf.version>3.1.10</cxf.version>
+    <cxf.version>3.1.11</cxf.version>
 
     <jackson.version>2.8.8</jackson.version>
 


[48/50] [abbrv] syncope git commit: Several pom fixes, proper LICENSE and NOTICE, package reorganization, checkstyle setup

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java
deleted file mode 100644
index e56b24b..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java
+++ /dev/null
@@ -1,68 +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.netbeans.plugin.service;
-
-import java.io.InputStream;
-import java.util.List;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
-import org.apache.syncope.common.lib.to.ReportTemplateTO;
-import org.apache.syncope.common.lib.types.ReportTemplateFormat;
-import org.apache.syncope.common.rest.api.service.ReportTemplateService;
-
-public class ReportTemplateManagerService {
-
-    private ReportTemplateService service;
-
-    public ReportTemplateManagerService(final String url, final String userName, final String password) {
-        SyncopeClient syncopeClient = new SyncopeClientFactoryBean().setAddress(url).create(userName, password);
-        service = syncopeClient.getService(ReportTemplateService.class);
-    }
-
-    public List<ReportTemplateTO> list() {
-        return service.list();
-    }
-
-    public boolean create(final ReportTemplateTO reportTemplateTO) {
-        return Response.Status.CREATED.getStatusCode() == service.create(reportTemplateTO).getStatus();
-    }
-
-    public ReportTemplateTO read(final String key) {
-        return service.read(key);
-    }
-
-    public boolean delete(final String key) {
-        service.delete(key);
-        return true;
-    }
-
-    public Object getFormat(final String key, final ReportTemplateFormat format) {
-        return service.getFormat(key, format).getEntity();
-    }
-
-    public void setFormat(final String key, final ReportTemplateFormat format, final InputStream templateIn) {
-        service.setFormat(key, format, templateIn);
-    }
-
-    public boolean removeFormat(final String key, final ReportTemplateFormat format) {
-        return false;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form
deleted file mode 100644
index 79458db..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-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 owership.  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.
--->
-<Form version="1.7" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Component id="jScrollPane1" alignment="0" pref="258" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Component id="jScrollPane1" alignment="0" pref="445" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTree" name="resourceExplorerTree">
-          <Properties>
-            <Property name="model" type="javax.swing.tree.TreeModel" editor="org.netbeans.modules.form.editors2.TreeModelEditor">
-              <TreeModel code=""/>
-            </Property>
-            <Property name="rootVisible" type="boolean" value="false"/>
-            <Property name="scrollsOnExpand" type="boolean" value="true"/>
-          </Properties>
-          <Events>
-            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="resourceExplorerTreeMouseClicked"/>
-          </Events>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
deleted file mode 100644
index 4c91ec5..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
+++ /dev/null
@@ -1,553 +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.netbeans.plugin.view;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import java.beans.PropertyChangeListener;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.charset.Charset;
-import java.util.List;
-import javax.swing.Action;
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-import javax.swing.JPopupMenu;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Document;
-import javax.swing.text.JTextComponent;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import org.apache.commons.io.IOUtils;
-import org.apache.syncope.common.lib.to.MailTemplateTO;
-import org.apache.syncope.common.lib.to.ReportTemplateTO;
-import org.apache.syncope.common.lib.types.MailTemplateFormat;
-import org.apache.syncope.common.lib.types.ReportTemplateFormat;
-import org.apache.syncope.netbeans.plugin.connector.ResourceConnector;
-import org.apache.syncope.netbeans.plugin.constants.PluginConstants;
-import org.apache.syncope.netbeans.plugin.service.MailTemplateManagerService;
-import org.apache.syncope.netbeans.plugin.service.ReportTemplateManagerService;
-import org.netbeans.api.editor.EditorRegistry;
-import org.netbeans.api.progress.ProgressHandle;
-import org.netbeans.api.progress.ProgressHandleFactory;
-import org.netbeans.api.settings.ConvertAsProperties;
-import org.openide.awt.ActionID;
-import org.openide.awt.ActionReference;
-import org.openide.cookies.OpenCookie;
-import org.openide.filesystems.FileObject;
-import org.openide.filesystems.FileUtil;
-import org.openide.loaders.DataObject;
-import org.openide.util.Cancellable;
-import org.openide.util.Exceptions;
-import org.openide.util.RequestProcessor;
-import org.openide.windows.TopComponent;
-
-/**
- * Top component which displays something.
- */
-@ConvertAsProperties(
-        dtd = "-//org.apache.syncope.netbeans.plugin//ResourceExplorer//EN",
-        autostore = false
-)
-@TopComponent.Description(
-        preferredID = "ResourceExplorerTopComponent",
-        iconBase = "images/syncope.png",
-        persistenceType = TopComponent.PERSISTENCE_ALWAYS
-)
-@TopComponent.Registration(mode = "explorer", openAtStartup = false)
-@ActionID(category = "Window", id = "org.apache.syncope.netbeans.plugin.ResourceExplorerTopComponent")
-@ActionReference(path = "Menu/Window" /*, position = 333 */)
-@TopComponent.OpenActionRegistration(
-        displayName = "Apache Syncope",
-        preferredID = "ResourceExplorerTopComponent"
-)
-
-public final class ResourceExplorerTopComponent extends TopComponent {
-
-    private DefaultTreeModel treeModel;
-    private DefaultMutableTreeNode root;
-    private DefaultMutableTreeNode mailTemplates;
-    private DefaultMutableTreeNode reportXslts;
-    private MailTemplateManagerService mailTemplateManagerService;
-    private ReportTemplateManagerService reportTemplateManagerService;
-    private Charset encodingPattern;
-
-    public ResourceExplorerTopComponent() {
-
-        initComponents();
-        setName(PluginConstants.DISPLAY_NAME);
-        setToolTipText(PluginConstants.TOOL_TIP_TEXT);
-
-        treeModel = (DefaultTreeModel) resourceExplorerTree.getModel();
-        root = (DefaultMutableTreeNode) treeModel.getRoot();
-        DefaultMutableTreeNode visibleRoot
-                = new DefaultMutableTreeNode(PluginConstants.DISPLAY_NAME);
-        mailTemplates = new DefaultMutableTreeNode(PluginConstants.MAIL_TEMPLTAE_CONSTANT);
-        reportXslts = new DefaultMutableTreeNode(PluginConstants.REPORT_XSLTS_CONSTANT);
-        root.add(visibleRoot);
-        visibleRoot.add(mailTemplates);
-        visibleRoot.add(reportXslts);
-        treeModel.reload();
-
-    }
-
-    /**
-     * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
-     * content of this method is always regenerated by the Form Editor.
-     */
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        jScrollPane1 = new javax.swing.JScrollPane();
-        resourceExplorerTree = new javax.swing.JTree();
-
-        javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
-        resourceExplorerTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
-        resourceExplorerTree.setRootVisible(false);
-        resourceExplorerTree.setScrollsOnExpand(true);
-        resourceExplorerTree.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(final java.awt.event.MouseEvent evt) {
-                resourceExplorerTreeMouseClicked(evt);
-            }
-        });
-        jScrollPane1.setViewportView(resourceExplorerTree);
-
-        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
-        this.setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 445, Short.MAX_VALUE)
-        );
-    }
-    // </editor-fold>//GEN-END:initComponents
-
-    private void resourceExplorerTreeMouseClicked(final java.awt.event.MouseEvent evt) {
-        if (evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2) {
-            DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree.
-                    getLastSelectedPathComponent();
-            DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectedNode.getParent();
-            if (selectedNode.isLeaf()) {
-                String name = (String) selectedNode.getUserObject();
-                if (parentNode.getUserObject().equals(PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
-                    try {
-                        openMailEditor(name);
-                    } catch (IOException ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-                } else {
-                    try {
-                        openReportEditor(name);
-                    } catch (IOException ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-                }
-            }
-        } else if (evt.getButton() == MouseEvent.BUTTON3 && evt.getClickCount() == 1) {
-            DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree.
-                    getLastSelectedPathComponent();
-            String selectedNodeName = (String) selectedNode.getUserObject();
-            if (selectedNode.isLeaf()) {
-                leafRightClickAction(evt, selectedNode);
-            } else if (selectedNodeName.equals(PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
-                folderRightClickAction(evt, mailTemplates);
-            } else if (selectedNodeName.equals(PluginConstants.REPORT_XSLTS_CONSTANT)) {
-                folderRightClickAction(evt, reportXslts);
-            } else if (selectedNodeName.equals(PluginConstants.DISPLAY_NAME)) {
-                rootRightClickAction(evt);
-            }
-        }
-    }
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JScrollPane jScrollPane1;
-    private javax.swing.JTree resourceExplorerTree;
-    // End of variables declaration//GEN-END:variables
-
-    @Override
-    public void componentOpened() {
-        File file = new File("UserData.txt");
-        if (!file.exists()) {
-            new ServerDetailsView(null, true).setVisible(true);
-        }
-        try {
-            mailTemplateManagerService = ResourceConnector.getMailTemplateManagerService();
-        } catch (IOException ex) {
-            JOptionPane.showMessageDialog(null, "Error Occured.", "Error",
-                    JOptionPane.ERROR_MESSAGE);
-            new ServerDetailsView(null, true).setVisible(true);
-        }
-        try {
-            reportTemplateManagerService
-                    = ResourceConnector.getReportTemplateManagerService();
-        } catch (IOException ex) {
-            new ServerDetailsView(null, true).setVisible(true);
-        }
-
-        Runnable tsk = new Runnable() {
-            @Override
-            public void run() {
-                final ProgressHandle progr = ProgressHandleFactory.createHandle("Loading Templates", new Cancellable() {
-                    @Override
-                    public boolean cancel() {
-                        return true;
-                    }
-                }, new Action() {
-                    @Override
-                    public Object getValue(final String key) {
-                        return null;
-                    }
-
-                    @Override
-                    public void putValue(final String key, final Object value) {
-                    }
-
-                    @Override
-                    public void setEnabled(final boolean b) {
-                    }
-
-                    @Override
-                    public boolean isEnabled() {
-                        return false;
-                    }
-
-                    @Override
-                    public void addPropertyChangeListener(final PropertyChangeListener listener) {
-                    }
-
-                    @Override
-                    public void removePropertyChangeListener(final PropertyChangeListener listener) {
-                    }
-
-                    @Override
-                    public void actionPerformed(final ActionEvent e) {
-                    }
-                });
-
-                progr.start();
-                progr.progress("Loading Templates.");
-                addMailTemplates();
-                addReportXslts();
-                progr.finish();
-            }
-
-        };
-        RequestProcessor.getDefault().post(tsk);
-    }
-
-    @Override
-    public void componentClosed() {
-        // TODO add custom code on component closing
-    }
-
-    void writeProperties(final java.util.Properties p) {
-        // better to version settings since initial version as advocated at
-        // http://wiki.apidesign.org/wiki/PropertyFiles
-        p.setProperty("version", "1.0");
-        // TODO store your settings
-    }
-
-    void readProperties(final java.util.Properties p) {
-        String version = p.getProperty("version");
-        // TODO read your settings according to their version
-    }
-
-    private void addMailTemplates() {
-        List<MailTemplateTO> mailTemplateList = mailTemplateManagerService.list();
-        for (MailTemplateTO mailTemplate : mailTemplateList) {
-            this.mailTemplates.add(new DefaultMutableTreeNode(
-                    mailTemplate.getKey()));
-        }
-        treeModel.reload();
-    }
-
-    private void addReportXslts() {
-        List<ReportTemplateTO> reportTemplates = reportTemplateManagerService.list();
-        for (ReportTemplateTO reportTemplate : reportTemplates) {
-            reportXslts.add(new DefaultMutableTreeNode(
-                    reportTemplate.getKey()));
-        }
-        treeModel.reload();
-    }
-
-    private void rootRightClickAction(final MouseEvent evt) {
-        JPopupMenu menu = new JPopupMenu();
-        JMenuItem saveItem = new JMenuItem("Save");
-        JMenuItem resetConnectionItem = new JMenuItem("Reset Connection");
-        menu.add(saveItem);
-        menu.add(resetConnectionItem);
-
-        saveItem.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(final ActionEvent e) {
-                saveContent();
-            }
-        });
-
-        resetConnectionItem.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(final ActionEvent e) {
-                File file = new File("UserData.txt");
-                try {
-                    BufferedReader bf = new BufferedReader(new FileReader(file));
-                    String host = bf.readLine();
-                    String userName = bf.readLine();
-                    String password = bf.readLine();
-                    ServerDetailsView serverDetails = new ServerDetailsView(null, true);
-                    serverDetails.setDetails(host, userName, password);
-                    serverDetails.setVisible(true);
-                } catch (FileNotFoundException ex) {
-                    Exceptions.printStackTrace(ex);
-                } catch (IOException ex) {
-                    Exceptions.printStackTrace(ex);
-                }
-            }
-        });
-
-        menu.show(evt.getComponent(), evt.getX(), evt.getY());
-    }
-
-    private void folderRightClickAction(final MouseEvent evt,
-            final DefaultMutableTreeNode node) {
-        JPopupMenu menu = new JPopupMenu();
-        JMenuItem addItem = new JMenuItem("New");
-        menu.add(addItem);
-
-        addItem.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(final ActionEvent e) {
-                String name = JOptionPane.showInputDialog("Enter Name");
-                boolean added = false;
-                if (node.getUserObject().equals(
-                        PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
-                    MailTemplateTO mailTemplate = new MailTemplateTO();
-                    mailTemplate.setKey(name);
-                    added = mailTemplateManagerService.create(mailTemplate);
-                    mailTemplateManagerService.setFormat(name,
-                            MailTemplateFormat.HTML,
-                            IOUtils.toInputStream("//Enter Content here", encodingPattern));
-                    mailTemplateManagerService.setFormat(name,
-                            MailTemplateFormat.TEXT,
-                            IOUtils.toInputStream("//Enter Content here", encodingPattern));
-                    try {
-                        openMailEditor(name);
-                    } catch (IOException ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-                } else {
-                    ReportTemplateTO reportTemplate = new ReportTemplateTO();
-                    reportTemplate.setKey(name);
-                    added = reportTemplateManagerService.create(reportTemplate);
-                    reportTemplateManagerService.setFormat(name,
-                            ReportTemplateFormat.FO,
-                            IOUtils.toInputStream("//Enter content here", encodingPattern));
-                    reportTemplateManagerService.setFormat(name,
-                            ReportTemplateFormat.CSV,
-                            IOUtils.toInputStream("//Enter content here", encodingPattern));
-                    reportTemplateManagerService.setFormat(name,
-                            ReportTemplateFormat.HTML,
-                            IOUtils.toInputStream("//Enter content here", encodingPattern));
-                    try {
-                        openReportEditor(name);
-                    } catch (IOException ex) {
-                        Exceptions.printStackTrace(ex);
-                    }
-                }
-
-                if (added) {
-                    node.add(new DefaultMutableTreeNode(name));
-                    treeModel.reload(node);
-                } else {
-                    JOptionPane.showMessageDialog(null, "Error while creating "
-                            + "new element", "Error", JOptionPane.ERROR_MESSAGE);
-                }
-            }
-        });
-
-        menu.show(evt.getComponent(), evt.getX(), evt.getY());
-    }
-
-    private void leafRightClickAction(final MouseEvent evt,
-            final DefaultMutableTreeNode node) {
-        JPopupMenu menu = new JPopupMenu();
-        JMenuItem deleteItem = new JMenuItem("Delete");
-        menu.add(deleteItem);
-
-        deleteItem.addActionListener(new ActionListener() {
-            public void actionPerformed(final ActionEvent e) {
-                int result = JOptionPane.showConfirmDialog(null,
-                        "Do you want to delete ?");
-                if (result == JOptionPane.OK_OPTION) {
-                    DefaultMutableTreeNode parent
-                            = (DefaultMutableTreeNode) node.getParent();
-                    String name = (String) node.getUserObject();
-                    boolean deleted;
-                    if (parent.getUserObject().equals(
-                            PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
-                        deleted = mailTemplateManagerService.delete(
-                                (String) node.getUserObject());
-                    } else {
-                        deleted = reportTemplateManagerService.delete(
-                                (String) node.getUserObject());
-                    }
-                    if (deleted) {
-                        node.removeFromParent();
-                        treeModel.reload(parent);
-                    } else {
-
-                        JOptionPane.showMessageDialog(null,
-                                "Error while deleting new element", "Error",
-                                JOptionPane.ERROR_MESSAGE);
-                    }
-                }
-            }
-        });
-
-        menu.show(evt.getComponent(), evt.getX(), evt.getY());
-    }
-
-    private void openMailEditor(final String name) throws IOException {
-        String type = null;
-        String content = null;
-        InputStream is = null;
-        String formatStr = (String) JOptionPane.showInputDialog(null, "Select File Format",
-                "File format", JOptionPane.QUESTION_MESSAGE, null,
-                PluginConstants.MAIL_TEMPLATE_FORMATS, "TEXT");
-        MailTemplateFormat format = MailTemplateFormat.valueOf(formatStr);
-
-        switch (format) {
-            case HTML:  type = "html";
-                        is = (InputStream) mailTemplateManagerService.getFormat(name,
-                                MailTemplateFormat.HTML);
-                        break;
-            case TEXT:  type = "txt";
-                        is = (InputStream) mailTemplateManagerService.getFormat(name,
-                                MailTemplateFormat.TEXT);
-                        break;
-            default: break;
-        }
-        content = IOUtils.toString(is, encodingPattern);
-
-        File directory = new File("Template/Mail");
-        if (!directory.exists()) {
-            directory.mkdirs();
-        }
-        File file = new File("Template/Mail/" + name + "." + type);
-        FileWriter fw = new FileWriter(file);
-        fw.write(content);
-        fw.flush();
-        FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile());
-        fob.setAttribute("description", "TEXT");
-        DataObject data = DataObject.find(fob);
-        OpenCookie cookie = (OpenCookie) data.getCookie(OpenCookie.class);
-        cookie.open();
-    }
-
-    private void openReportEditor(final String name) throws IOException {
-        String type = null;
-        String content = null;
-        InputStream is = null;
-        String formatStr = (String) JOptionPane.showInputDialog(null, "Select File Format",
-                "File format", JOptionPane.QUESTION_MESSAGE, null,
-                PluginConstants.REPORT_TEMPLATE_FORMATS, "TEXT");
-        ReportTemplateFormat format = ReportTemplateFormat.valueOf(formatStr);
-
-        switch (format) {
-            case HTML:  type = "html";
-                        is = (InputStream) reportTemplateManagerService.getFormat(name,
-                                ReportTemplateFormat.HTML);
-                        break;
-            case CSV:   type = "csv";
-                        is = (InputStream) reportTemplateManagerService.getFormat(name,
-                                ReportTemplateFormat.CSV);
-                        break;
-            case FO:    type = "fo";
-                        is = (InputStream) reportTemplateManagerService.getFormat(name,
-                                ReportTemplateFormat.FO);
-                        break;
-            default: break;
-        }
-        content = IOUtils.toString(is, encodingPattern);
-
-        File directory = new File("Template/Report");
-        if (!directory.exists()) {
-            directory.mkdirs();
-        }
-        File file = new File("Template/Report/" + name + "." + type);
-        FileWriter fw = new FileWriter(file);
-        fw.write(content);
-        fw.flush();
-        FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile());
-        DataObject data = DataObject.find(fob);
-        OpenCookie cookie = (OpenCookie) data.getCookie(OpenCookie.class);
-        cookie.open();
-    }
-
-    private void saveContent() {
-
-        try {
-            JTextComponent ed = EditorRegistry.lastFocusedComponent();
-            Document document = ed.getDocument();
-            String content = document.getText(0, document.getLength());
-            String path = (String) document.getProperty(Document.TitleProperty);
-            String[] temp = path.split(File.separator);
-            String name = temp[temp.length - 1];
-            String templateType = temp[temp.length - 2];
-            temp = name.split("\\.");
-            String format = temp[1];
-            String key = temp[0];
-
-            if (templateType.equals("Mail")) {
-                if (format.equals("txt")) {
-                    mailTemplateManagerService.setFormat(key,
-                            MailTemplateFormat.TEXT,
-                            IOUtils.toInputStream(content, encodingPattern));
-                } else {
-                    mailTemplateManagerService.setFormat(key,
-                            MailTemplateFormat.HTML,
-                            IOUtils.toInputStream(content, encodingPattern));
-                }
-            } else if (format.equals("html")) {
-                reportTemplateManagerService.setFormat(key,
-                        ReportTemplateFormat.HTML,
-                        IOUtils.toInputStream(content, encodingPattern));
-            } else if (format.equals("fo")) {
-                reportTemplateManagerService.setFormat(key,
-                        ReportTemplateFormat.FO,
-                        IOUtils.toInputStream(content, encodingPattern));
-            } else {
-                reportTemplateManagerService.setFormat(key,
-                        ReportTemplateFormat.CSV,
-                        IOUtils.toInputStream(content, encodingPattern));
-            }
-        } catch (BadLocationException ex) {
-            Exceptions.printStackTrace(ex);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form
deleted file mode 100644
index da41034..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-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 owership.  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.
--->
-<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" attributes="0">
-              <Group type="103" groupAlignment="0" attributes="0">
-                  <Group type="102" attributes="0">
-                      <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="1" attributes="0">
-                          <Component id="okButton" min="-2" pref="74" max="-2" attributes="0"/>
-                          <Group type="102" attributes="0">
-                              <Group type="103" groupAlignment="0" attributes="0">
-                                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
-                                  <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
-                                  <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
-                              </Group>
-                              <EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
-                              <Group type="103" groupAlignment="0" max="-2" attributes="0">
-                                  <Component id="userNameTxt" max="32767" attributes="0"/>
-                                  <Component id="urlTxt" max="32767" attributes="0"/>
-                                  <Component id="passwordTxt" alignment="0" min="-2" pref="155" max="-2" attributes="0"/>
-                              </Group>
-                          </Group>
-                      </Group>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="101" max="-2" attributes="0"/>
-                      <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
-                  </Group>
-              </Group>
-              <EmptySpace pref="41" max="32767" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="1" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jLabel4" pref="32" max="32767" attributes="0"/>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="urlTxt" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="userNameTxt" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace type="separate" max="-2" attributes="0"/>
-              <Group type="103" groupAlignment="3" attributes="0">
-                  <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
-                  <Component id="passwordTxt" alignment="3" min="-2" max="-2" attributes="0"/>
-              </Group>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="okButton" min="-2" max="-2" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JTextField" name="urlTxt">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.urlTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JTextField" name="userNameTxt">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.userNameTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JPasswordField" name="passwordTxt">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.passwordTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JButton" name="okButton">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.okButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel4">
-      <Properties>
-        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
-          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
-        </Property>
-      </Properties>
-    </Component>
-  </SubComponents>
-</Form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java
deleted file mode 100644
index dc03d4d..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java
+++ /dev/null
@@ -1,218 +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.netbeans.plugin.view;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import javax.swing.JOptionPane;
-
-public class ServerDetailsView extends javax.swing.JDialog {
-
-    /**
-     * Creates new form LoginView
-     */
-    public ServerDetailsView(final java.awt.Frame parent, final boolean modal) {
-        super(parent, modal);
-        initComponents();
-        setLocationRelativeTo(this);
-    }
-
-    /**
-     * This method is called from within the constructor to initialize the form.
-     * WARNING: Do NOT modify this code. The content of this method is always
-     * regenerated by the Form Editor.
-     */
-    @SuppressWarnings("unchecked")
-    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
-
-        jLabel1 = new javax.swing.JLabel();
-        jLabel2 = new javax.swing.JLabel();
-        jLabel3 = new javax.swing.JLabel();
-        urlTxt = new javax.swing.JTextField();
-        userNameTxt = new javax.swing.JTextField();
-        passwordTxt = new javax.swing.JPasswordField();
-        okButton = new javax.swing.JButton();
-        jLabel4 = new javax.swing.JLabel();
-
-        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(
-                                                 ServerDetailsView.class, "ServerDetailsView.jLabel1.text"));
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(
-                                                 ServerDetailsView.class, "ServerDetailsView.jLabel2.text"));
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(
-                                                 ServerDetailsView.class, "ServerDetailsView.jLabel3.text"));
-
-        urlTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.urlTxt.text"));
-
-        userNameTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class,
-                                                                "ServerDetailsView.userNameTxt.text"));
-
-        passwordTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class,
-                                                                "ServerDetailsView.passwordTxt.text"));
-
-        org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(
-                                                   ServerDetailsView.class, "ServerDetailsView.okButton.text"));
-        okButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(final java.awt.event.ActionEvent evt) {
-                okButtonActionPerformed(evt);
-            }
-        });
-
-        org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(
-                                                   ServerDetailsView.class, "ServerDetailsView.jLabel4.text"));
-
-        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
-        getContentPane().setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGroup(layout.createSequentialGroup()
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(41, 41, 41)
-                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                            .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 74,
-                                          javax.swing.GroupLayout.PREFERRED_SIZE)
-                            .addGroup(layout.createSequentialGroup()
-                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                                    .addComponent(jLabel1)
-                                    .addComponent(jLabel2)
-                                    .addComponent(jLabel3))
-                                .addGap(39, 39, 39)
-                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                                    .addComponent(userNameTxt)
-                                    .addComponent(urlTxt)
-                                    .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 155,
-                                                  javax.swing.GroupLayout.PREFERRED_SIZE)))))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(101, 101, 101)
-                        .addComponent(jLabel4)))
-                .addContainerGap(41, Short.MAX_VALUE))
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
-                .addContainerGap()
-                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
-                .addGap(18, 18, 18)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(jLabel1)
-                    .addComponent(urlTxt, javax.swing.GroupLayout.PREFERRED_SIZE,
-                                  javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                .addGap(18, 18, 18)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(jLabel2)
-                    .addComponent(userNameTxt, javax.swing.GroupLayout.PREFERRED_SIZE,
-                                  javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                .addGap(18, 18, 18)
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                    .addComponent(jLabel3)
-                    .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE,
-                                  javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(okButton)
-                .addContainerGap())
-        );
-
-        pack();
-    }
-    // </editor-fold>//GEN-END:initComponents
-
-    private void okButtonActionPerformed(final java.awt.event.ActionEvent evt) {
-        String url = urlTxt.getText();
-        String userName = userNameTxt.getText();
-        String password = new String(passwordTxt.getPassword());
-        File file = new File("UserData.txt");
-        try {
-            FileWriter fileWriter = new FileWriter(file);
-            fileWriter.write(url + "\n" + userName + "\n" + password);
-            fileWriter.flush();
-            this.dispose();
-        } catch (IOException ex) {
-            JOptionPane.showMessageDialog(this, "Error while saving Data.", "Error", JOptionPane.ERROR_MESSAGE);
-        }
-    }
-
-    public void setDetails(final String host, final String userName,
-            final String password) {
-        urlTxt.setText(host);
-        userNameTxt.setText(userName);
-        passwordTxt.setText(password);
-    }
-
-    public static void main(final String[] args) {
-        /* Set the Nimbus look and feel */
-        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
-        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
-         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
-         */
-        try {
-            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
-                if ("Nimbus".equals(info.getName())) {
-                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
-                    break;
-                }
-            }
-        } catch (ClassNotFoundException ex) {
-            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
-                                               java.util.logging.Level.SEVERE, null, ex);
-        } catch (InstantiationException ex) {
-            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
-                                               java.util.logging.Level.SEVERE, null, ex);
-        } catch (IllegalAccessException ex) {
-            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
-                                               java.util.logging.Level.SEVERE, null, ex);
-        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
-            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
-                                               java.util.logging.Level.SEVERE, null, ex);
-        }
-        //</editor-fold>
-        //</editor-fold>
-        /* Create and display the dialog */
-        java.awt.EventQueue.invokeLater(new Runnable() {
-            public void run() {
-                ServerDetailsView dialog = new ServerDetailsView(
-                        new javax.swing.JFrame(), true);
-                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
-                    @Override
-                    public void windowClosing(
-                            final java.awt.event.WindowEvent e) {
-                        System.exit(0);
-                    }
-                });
-                dialog.setVisible(true);
-            }
-        });
-    }
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JLabel jLabel1;
-    private javax.swing.JLabel jLabel2;
-    private javax.swing.JLabel jLabel3;
-    private javax.swing.JLabel jLabel4;
-    private javax.swing.JButton okButton;
-    private javax.swing.JPasswordField passwordTxt;
-    private javax.swing.JTextField urlTxt;
-    private javax.swing.JTextField userNameTxt;
-    // End of variables declaration//GEN-END:variables
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml b/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml
deleted file mode 100644
index 74e9d97..0000000
--- a/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-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.
--->
-<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
-"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
-<!--
-
-  Checkstyle configuration that checks the sun coding conventions from:
-
-    - the Java Language Specification at
-      http://java.sun.com/docs/books/jls/second_edition/html/index.html
-
-    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
-
-    - the Javadoc guidelines at
-      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
-
-    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
-
-    - some best practices
-
-  Checkstyle is very configurable. Be sure to read the documentation at
-  http://checkstyle.sf.net (or in your downloaded distribution).
-
-  Most Checks are configurable, be sure to consult the documentation.
-
-  To completely disable a check, just comment it out or delete it from the file.
-
-  Finally, it is worth reading the documentation.
-
--->
-<module name="Checker">
-    <!--
-        If you set the basedir property below, then all reported file
-        names will be relative to the specified directory. See
-        http://checkstyle.sourceforge.net/5.x/config.html#Checker
-
-      <property name="basedir" value="${basedir}"/>
-  -->
-
-  <!-- Checks that a package-info.java file exists for each package.     -->
-  <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
-  <!--<module name="JavadocPackage"/>-->
-
-  <!-- Checks whether files end with a new line.                        -->
-  <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-  <module name="NewlineAtEndOfFile"/>
-
-  <!-- Checks that property files contain the same keys.         -->
-  <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-  <module name="Translation"/>
-    
-  <!-- Checks for Size Violations.                    -->
-  <!-- See http://checkstyle.sf.net/config_sizes.html -->
-  <module name="FileLength"/>
-    
-  <!-- Checks for whitespace                               -->
-  <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-  <module name="FileTabCharacter"/>
-
-  <!-- Miscellaneous other checks.                   -->
-  <!-- See http://checkstyle.sf.net/config_misc.html -->
-  <module name="RegexpSingleline">
-    <property name="format" value="\s+$"/>
-    <property name="minimum" value="0"/>
-    <property name="maximum" value="2"/>
-    <property name="message" value="Line has trailing spaces."/>
-  </module>
-
-  <module name="TreeWalker">
-
-    <property name="cacheFile" value="target/checkstyle.cache"/>
-
-    <!-- Checks for Javadoc comments.                     -->
-    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
-    <!--<module name="JavadocMethod">
-      <property name="scope" value="public"/>
-      <property name="allowMissingPropertyJavadoc" value="true"/>
-    </module>
-    <module name="JavadocType"/>
-    <module name="JavadocVariable">
-      <property name="scope" value="public"/>
-      <property name="ignoreNamePattern" value="LOG"/>
-    </module>
-    <module name="JavadocStyle"/>-->
-
-
-    <!-- Checks for Naming Conventions.                  -->
-    <!-- See http://checkstyle.sf.net/config_naming.html -->
-    <module name="ConstantName"/>
-    <module name="LocalFinalVariableName"/>
-    <module name="LocalVariableName"/>
-    <module name="MemberName"/>
-    <module name="MethodName"/>
-    <module name="PackageName"/>
-    <module name="ParameterName"/>
-    <module name="StaticVariableName">
-      <property name="format" value="^[A-Z][A-Z0-9_]*$"/>
-    </module>
-    <module name="TypeName"/>
-
-
-    <!-- Checks for Headers                                -->
-    <!-- See http://checkstyle.sf.net/config_header.html   -->
-    <!-- <module name="Header">                            -->
-    <!-- The follow property value demonstrates the ability     -->
-    <!-- to have access to ANT properties. In this case it uses -->
-    <!-- the ${basedir} property to allow Checkstyle to be run  -->
-    <!-- from any directory within a project. See property      -->
-    <!-- expansion,                                             -->
-    <!-- http://checkstyle.sf.net/config.html#properties        -->
-    <!-- <property                                              -->
-    <!--     name="headerFile"                                  -->
-    <!--     value="${basedir}/java.header"/>                   -->
-    <!-- </module> -->
-
-    <!-- Following interprets the header file as regular expressions. -->
-    <!-- <module name="RegexpHeader"/>                                -->
-
-
-    <!-- Checks for imports                              -->
-    <!-- See http://checkstyle.sf.net/config_import.html -->
-    <module name="AvoidStarImport"/>
-    <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
-    <module name="RedundantImport"/>
-    <module name="UnusedImports"/>
-
-
-    <!-- Checks for Size Violations.                    -->
-    <!-- See http://checkstyle.sf.net/config_sizes.html -->
-    <module name="LineLength">
-      <property name="max" value="120"/>
-      <property name="ignorePattern" value="^import"/>
-    </module>
-    <!--<module name="MethodLength"/>-->
-    <!--<module name="ParameterNumber"/>-->
-
-
-    <!-- Checks for whitespace                               -->
-    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-    <module name="EmptyForIteratorPad"/>
-    <module name="GenericWhitespace"/>
-    <module name="MethodParamPad"/>
-    <!--<module name="NoWhitespaceAfter"/>
-    <module name="NoWhitespaceBefore"/>-->
-    <module name="OperatorWrap"/>
-    <module name="ParenPad"/>
-    <module name="TypecastParenPad"/>
-    <module name="WhitespaceAfter"/>
-    <module name="WhitespaceAround"/>
-
-
-    <!-- Modifier Checks                                    -->
-    <!-- See http://checkstyle.sf.net/config_modifiers.html -->
-    <module name="ModifierOrder"/>
-    <module name="RedundantModifier"/>
-
-
-    <!-- Checks for blocks. You know, those {}'s         -->
-    <!-- See http://checkstyle.sf.net/config_blocks.html -->
-    <module name="AvoidNestedBlocks"/>
-    <module name="EmptyBlock">
-      <property name="option" value="text"/>
-    </module>
-    <module name="LeftCurly"/>
-    <module name="NeedBraces"/>
-    <module name="RightCurly"/>
-
-
-    <!-- Checks for common coding problems               -->
-    <!-- See http://checkstyle.sf.net/config_coding.html -->
-    <!--        <module name="AvoidInlineConditionals"/>-->
-    <module name="EmptyStatement"/>
-    <module name="EqualsHashCode"/>
-    <module name="HiddenField">
-      <property name="ignoreSetter" value="true"/>
-      <property name="ignoreConstructorParameter" value="true"/>
-      <property name="tokens" value="VARIABLE_DEF"/>
-    </module>
-    <module name="IllegalInstantiation"/>
-    <module name="InnerAssignment"/>
-    <!--<module name="MagicNumber"/>-->
-    <module name="MissingSwitchDefault"/>
-    <module name="SimplifyBooleanExpression"/>
-    <module name="SimplifyBooleanReturn"/>
-
-    <!-- Checks for class design                         -->
-    <!-- See http://checkstyle.sf.net/config_design.html -->
-    <!--<module name="DesignForExtension"/>-->
-    <module name="FinalClass"/>
-    <module name="HideUtilityClassConstructor"/>
-    <!--<module name="InterfaceIsType"/>-->
-    <module name="VisibilityModifier">
-      <property name="protectedAllowed" value="true"/>
-    </module>
-
-
-    <!-- Miscellaneous other checks.                   -->
-    <!-- See http://checkstyle.sf.net/config_misc.html -->
-    <module name="ArrayTypeStyle"/>
-    <module name="FinalParameters"/>
-    <module name="TodoComment"/>
-    <module name="UpperEll"/>
-
-  </module>
-
-</module>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/Bundle.properties
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/Bundle.properties b/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/Bundle.properties
new file mode 100644
index 0000000..17de78d
--- /dev/null
+++ b/ide/netbeans/src/main/resources/org/apache/syncope/ide/netbeans/view/Bundle.properties
@@ -0,0 +1,28 @@
+#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.
+
+TemplateViewTopComponent.jPanel1.TabConstraints.tabTitle=TEXT
+TemplateViewTopComponent.jPanel2.TabConstraints.tabTitle=XML
+
+ServerDetailsView.jLabel1.text=URL
+ServerDetailsView.jLabel4.text=Apache Syncope
+ServerDetailsView.okButton.text=OK
+ServerDetailsView.passwordTxt.text=
+ServerDetailsView.userNameTxt.text=
+ServerDetailsView.urlTxt.text=
+ServerDetailsView.jLabel3.text=Password
+ServerDetailsView.jLabel2.text=User Name


[47/50] [abbrv] syncope git commit: Several pom fixes, proper LICENSE and NOTICE, package reorganization, checkstyle setup

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml b/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml
deleted file mode 100644
index 07961a6..0000000
--- a/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml
+++ /dev/null
@@ -1,309 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!--
-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.
--->
-<profiles version="12">
-  <profile kind="CodeFormatterProfile" name="Syncope" version="12">
-    <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="49"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-    <setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
-    <setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
-    <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="32"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-    <setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
-    <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="48"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="48"/>
-    <setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="32"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-    <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="120"/>
-    <setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="16"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="49"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-    <setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
-    <setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-  </profile>
-</profiles>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties b/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties
deleted file mode 100644
index 17de78d..0000000
--- a/ide/netbeans/src/main/resources/org/apache/syncope/netbeans/plugin/view/Bundle.properties
+++ /dev/null
@@ -1,28 +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.
-
-TemplateViewTopComponent.jPanel1.TabConstraints.tabTitle=TEXT
-TemplateViewTopComponent.jPanel2.TabConstraints.tabTitle=XML
-
-ServerDetailsView.jLabel1.text=URL
-ServerDetailsView.jLabel4.text=Apache Syncope
-ServerDetailsView.okButton.text=OK
-ServerDetailsView.passwordTxt.text=
-ServerDetailsView.userNameTxt.text=
-ServerDetailsView.urlTxt.text=
-ServerDetailsView.jLabel3.text=Password
-ServerDetailsView.jLabel2.text=User Name

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ec44eba..35d9a30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -441,13 +441,12 @@ under the License.
     <izpack.version>5.1.0</izpack.version>
     <httpclient.version>4.3.6</httpclient.version>
     <maven-invoker.version>3.0.0</maven-invoker.version>
-    <tycho-version>0.23.1</tycho-version>
-
-    <org-netbeans-api-version>RELEASE802</org-netbeans-api-version>
-    <org-netbeans-version>RELEASE82</org-netbeans-version>
     <ianal-maven-plugin-version>1.0-alpha-1</ianal-maven-plugin-version>
     <maven-jar-plugin-version>3.0.0</maven-jar-plugin-version>
 
+    <tycho.version>0.23.1</tycho.version>
+    <netbeans.version>RELEASE82</netbeans.version>
+
     <testds.port>1389</testds.port>
     <testdb.webport>9082</testdb.webport>
 
@@ -1479,97 +1478,102 @@ under the License.
       </dependency>
 
       <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-api-annotations-common</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-windows</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-util</artifactId>
-            <version>${org-netbeans-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-util-ui</artifactId>
-            <version>${org-netbeans-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-util-lookup</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-awt</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-modules-settings</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.syncope.common</groupId>
-            <artifactId>syncope-common-lib</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.syncope.client</groupId>
-            <artifactId>syncope-client-lib</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-io</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-nodes</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-text</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-filesystems</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-loaders</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-core-multiview</artifactId>
-            <version>${org-netbeans-api-version}</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-modules-editor-lib2</artifactId>
-            <version>${org-netbeans-api-version}</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-api-progress</artifactId>
-            <version>${org-netbeans-api-version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-api-progress-nb</artifactId>
-            <version>${org-netbeans-version}</version>
-        </dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-netbeans-api-annotations-common</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-windows</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-util</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-util-ui</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-util-lookup</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-awt</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-netbeans-modules-settings</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.syncope.common</groupId>
+        <artifactId>syncope-common-lib</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.syncope.client</groupId>
+        <artifactId>syncope-client-lib</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-io</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-nodes</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-text</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-filesystems</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-openide-loaders</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-netbeans-core-multiview</artifactId>
+        <version>${netbeans.version}</version>
+        <type>jar</type>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-netbeans-modules-editor-lib2</artifactId>
+        <version>${netbeans.version}</version>
+        <type>jar</type>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-netbeans-api-progress</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.api</groupId>
+        <artifactId>org-netbeans-api-progress-nb</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.netbeans.external</groupId>
+        <artifactId>asm-all-5.0.1</artifactId>
+        <version>${netbeans.version}</version>
+      </dependency>
 
       <!-- TEST -->
       <dependency>
@@ -1722,6 +1726,12 @@ under the License.
         
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>3.0.2</version>
+        </plugin>
+        
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-war-plugin</artifactId>
           <version>3.0.0</version>
           <configuration>
@@ -1838,23 +1848,23 @@ under the License.
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-maven-plugin</artifactId>
-          <version>${tycho-version}</version>
+          <version>${tycho.version}</version>
           <extensions>true</extensions>
         </plugin>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>target-platform-configuration</artifactId>
-          <version>${tycho-version}</version>
+          <version>${tycho.version}</version>
         </plugin>
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-p2-repository-plugin</artifactId>
-          <version>${tycho-version}</version>
+          <version>${tycho.version}</version>
         </plugin>   
         <plugin>
           <groupId>org.eclipse.tycho</groupId>
           <artifactId>tycho-surefire-plugin</artifactId>
-          <version>${tycho-version}</version>
+          <version>${tycho.version}</version>
         </plugin>
         
         <plugin>
@@ -1876,9 +1886,8 @@ under the License.
         <plugin>
           <groupId>org.codehaus.mojo</groupId>
           <artifactId>nbm-maven-plugin</artifactId>
-          <version>3.13</version>
+          <version>4.1</version>
         </plugin>
-
       </plugins>
     </pluginManagement>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/src/main/resources/org/apache/syncope/checkstyle.xml
----------------------------------------------------------------------
diff --git a/src/main/resources/org/apache/syncope/checkstyle.xml b/src/main/resources/org/apache/syncope/checkstyle.xml
index 74e9d97..27be37a 100644
--- a/src/main/resources/org/apache/syncope/checkstyle.xml
+++ b/src/main/resources/org/apache/syncope/checkstyle.xml
@@ -46,7 +46,7 @@ under the License.
 
 -->
 <module name="Checker">
-    <!--
+  <!--
         If you set the basedir property below, then all reported file
         names will be relative to the specified directory. See
         http://checkstyle.sourceforge.net/5.x/config.html#Checker
@@ -83,6 +83,8 @@ under the License.
     <property name="message" value="Line has trailing spaces."/>
   </module>
 
+  <module name="SuppressionCommentFilter"/>
+
   <module name="TreeWalker">
 
     <property name="cacheFile" value="target/checkstyle.cache"/>
@@ -218,6 +220,7 @@ under the License.
     <module name="TodoComment"/>
     <module name="UpperEll"/>
 
+    <module name="FileContentsHolder"/>
   </module>
 
 </module>


[44/50] [abbrv] syncope git commit: Added netbeans to syncope/ide

Posted by il...@apache.org.
Added netbeans to syncope/ide


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

Branch: refs/heads/SYNCOPE-808
Commit: 238bf75fef4c597bde8c5412d9c9a65822a36776
Parents: 3da6a04
Author: Tushar <tu...@gmail.com>
Authored: Tue Jan 3 15:36:07 2017 +0530
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:52:32 2017 +0200

----------------------------------------------------------------------
 ide/netbeans/nb-configuration.xml               |  36 +
 ide/netbeans/pom.xml                            | 144 +++
 .../plugin/connector/ResourceConnector.java     |  76 ++
 .../plugin/constants/PluginConstants.java       |  33 +
 .../netbeans/plugin/entity/UserProperties.java  |  78 ++
 .../service/MailTemplateManagerService.java     |  68 ++
 .../service/ReportTemplateManagerService.java   |  68 ++
 .../view/ResourceExplorerTopComponent.form      |  68 ++
 .../view/ResourceExplorerTopComponent.java      | 553 ++++++++++++
 .../netbeans/plugin/view/ServerDetailsView.form | 161 ++++
 .../netbeans/plugin/view/ServerDetailsView.java | 218 +++++
 ide/netbeans/src/main/nbm/MANIFEST.MF           |   3 +
 .../src/main/resources/META-INF/LICENSE         | 896 +++++++++++++++++++
 ide/netbeans/src/main/resources/META-INF/NOTICE |  80 ++
 .../resources/org/apache/syncope/checkstyle.xml | 223 +++++
 .../org/apache/syncope/java-formatter.xml       | 309 +++++++
 .../netbeans/plugin/view/Bundle.properties      |  28 +
 ide/pom.xml                                     |   5 +-
 pom.xml                                         | 104 ++-
 19 files changed, 3147 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/nb-configuration.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/nb-configuration.xml b/ide/netbeans/nb-configuration.xml
new file mode 100644
index 0000000..ec22826
--- /dev/null
+++ b/ide/netbeans/nb-configuration.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<project-shared-configuration>
+    <!--
+This file contains additional configuration written by modules in the NetBeans IDE.
+The configuration is intended to be shared among all the users of project and
+therefore it is assumed to be part of version control checkout.
+Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+-->
+    <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
+        <!--
+Properties that influence various parts of the IDE, especially code formatting and the like. 
+You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+That way multiple projects can share the same settings (useful for formatting rules for example).
+Any value defined here will override the pom.xml file value but is only applicable to the current project.
+-->
+        <org-netbeans-modules-javascript2-requirejs.enabled>true</org-netbeans-modules-javascript2-requirejs.enabled>
+    </properties>
+</project-shared-configuration>

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/pom.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/pom.xml b/ide/netbeans/pom.xml
new file mode 100644
index 0000000..1afbb88
--- /dev/null
+++ b/ide/netbeans/pom.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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 owership.  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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+      <groupId>org.apache.syncope</groupId>
+      <artifactId>syncope-ide</artifactId>
+      <version>2.0.2-SNAPSHOT</version>
+    </parent>
+
+    <name>Apache Syncope IDE Netbeans</name>
+    <description>Apache Syncope IDE Netbeans</description>
+    <groupId>org.apache.syncope.ide</groupId>
+    <artifactId>syncope-ide-netbeans</artifactId>
+
+    <packaging>nbm</packaging>
+
+    <properties>
+      <rootpom.basedir>${basedir}/../..</rootpom.basedir>
+    </properties>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources/META-INF/</directory>
+            </resource>
+        </resources>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>nbm-maven-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <useOSGiDependencies>false</useOSGiDependencies>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-annotations-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-windows</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-ui</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-util-lookup</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-awt</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-settings</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.syncope.common</groupId>
+            <artifactId>syncope-common-lib</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.syncope.client</groupId>
+            <artifactId>syncope-client-lib</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-nodes</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-text</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-filesystems</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-openide-loaders</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-core-multiview</artifactId>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-modules-editor-lib2</artifactId>
+            <type>jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-progress</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.netbeans.api</groupId>
+            <artifactId>org-netbeans-api-progress-nb</artifactId>
+        </dependency>
+    </dependencies>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java
new file mode 100644
index 0000000..f9c4c13
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java
@@ -0,0 +1,76 @@
+/*
+ * 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.netbeans.plugin.connector;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import org.apache.syncope.netbeans.plugin.entity.UserProperties;
+import org.apache.syncope.netbeans.plugin.service.MailTemplateManagerService;
+import org.apache.syncope.netbeans.plugin.service.ReportTemplateManagerService;
+
+public final class ResourceConnector {
+
+    private static MailTemplateManagerService MAIL_TEMPLATE_MANAGER_SERVICE;
+    private static ReportTemplateManagerService REPORT_TEMPLATE_MANAGER_SERVICE;
+
+    private static final Object MAIL_TEMPLATE_MONITOR = new Object();
+    private static final Object REPORT_TEMPLATE_MONITOR = new Object();
+
+    private ResourceConnector() {
+    }
+    
+    public static MailTemplateManagerService getMailTemplateManagerService() throws IOException {
+        synchronized (MAIL_TEMPLATE_MONITOR) {
+            if (MAIL_TEMPLATE_MANAGER_SERVICE == null) {
+                UserProperties userProperties = getUserProperties();
+                MAIL_TEMPLATE_MANAGER_SERVICE = new MailTemplateManagerService(
+                        userProperties.getUrl(), userProperties.getUserName(),
+                        userProperties.getPassword());
+            }
+        }
+        return MAIL_TEMPLATE_MANAGER_SERVICE;
+    }
+
+    public static ReportTemplateManagerService getReportTemplateManagerService() throws IOException {
+        synchronized (REPORT_TEMPLATE_MONITOR) {
+            if (REPORT_TEMPLATE_MANAGER_SERVICE == null) {
+                UserProperties userProperties = getUserProperties();
+                REPORT_TEMPLATE_MANAGER_SERVICE = new ReportTemplateManagerService(
+                        userProperties.getUrl(), userProperties.getUserName(),
+                        userProperties.getPassword());
+            }
+        }
+        return REPORT_TEMPLATE_MANAGER_SERVICE;
+    }
+
+    private static UserProperties getUserProperties() throws FileNotFoundException, IOException {
+        File file = new File("UserData.txt");
+        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
+        String url = bufferedReader.readLine();
+        String userName = bufferedReader.readLine();
+        String password = bufferedReader.readLine();
+
+        UserProperties userProperties = new UserProperties(url, userName, password);
+        return userProperties;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java
new file mode 100644
index 0000000..50976d7
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java
@@ -0,0 +1,33 @@
+/*
+ * 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.netbeans.plugin.constants;
+
+public final class PluginConstants {
+
+    public static final String MAIL_TEMPLTAE_CONSTANT = "Mail Template";
+    public static final String REPORT_XSLTS_CONSTANT = "Report XSLTs";
+    public static final String[] MAIL_TEMPLATE_FORMATS = {"TEXT", "HTML"};
+    public static final String[] REPORT_TEMPLATE_FORMATS = {"HTML", "CSV", "FO"};
+    public static final String DISPLAY_NAME = "Apache Syncope";
+    public static final String TOOL_TIP_TEXT = "This is a Apache Syncope window";
+
+    private PluginConstants() {
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java
new file mode 100644
index 0000000..9bb0845
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java
@@ -0,0 +1,78 @@
+/*
+ * 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.netbeans.plugin.entity;
+
+public class UserProperties {
+    
+    private String url;
+    private String userName;
+    private String password;
+
+    public UserProperties() {
+    }
+
+    public UserProperties(final String url, final String userName, 
+            final String password) {
+        this.url = url;
+        this.userName = userName;
+        this.password = password;
+    }
+
+    /**
+     * @return the userName
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    /**
+     * @return the password
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * @return the url
+     */
+    public String getUrl() {
+        return url;
+    }
+
+    /**
+     * @param url the url to set
+     */
+    public void setUrl(final String url) {
+        this.url = url;
+    }
+
+    /**
+     * @param userName the userName to set
+     */
+    public void setUserName(final String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * @param password the password to set
+     */
+    public void setPassword(final String password) {
+        this.password = password;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java
new file mode 100644
index 0000000..953d081
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java
@@ -0,0 +1,68 @@
+/*
+ * 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.netbeans.plugin.service;
+
+import java.io.InputStream;
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.to.MailTemplateTO;
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.rest.api.service.MailTemplateService;
+
+public class MailTemplateManagerService {
+
+    private MailTemplateService service;
+
+    public MailTemplateManagerService(final String url, final String userName, final String password) {
+        SyncopeClient syncopeClient = new SyncopeClientFactoryBean().setAddress(url).create(userName, password);
+        service = syncopeClient.getService(MailTemplateService.class);
+    }
+
+    public List<MailTemplateTO> list() {
+        return service.list();
+    }
+
+    public boolean create(final MailTemplateTO mailTemplateTO) {
+        return Response.Status.CREATED.getStatusCode() == service.create(mailTemplateTO).getStatus();
+    }
+
+    public MailTemplateTO read(final String key) {
+        return service.read(key);
+    }
+
+    public boolean delete(final String key) {
+        service.delete(key);
+        return true;
+    }
+
+    public Object getFormat(final String key, final MailTemplateFormat format) {
+        return service.getFormat(key, format).getEntity();
+    }
+
+    public void setFormat(final String key, final MailTemplateFormat format, final InputStream templateIn) {
+        service.setFormat(key, format, templateIn);
+    }
+
+    public boolean removeFormat(final String key, final MailTemplateFormat format) {
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java
new file mode 100644
index 0000000..e56b24b
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/ReportTemplateManagerService.java
@@ -0,0 +1,68 @@
+/*
+ * 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.netbeans.plugin.service;
+
+import java.io.InputStream;
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+import org.apache.syncope.common.rest.api.service.ReportTemplateService;
+
+public class ReportTemplateManagerService {
+
+    private ReportTemplateService service;
+
+    public ReportTemplateManagerService(final String url, final String userName, final String password) {
+        SyncopeClient syncopeClient = new SyncopeClientFactoryBean().setAddress(url).create(userName, password);
+        service = syncopeClient.getService(ReportTemplateService.class);
+    }
+
+    public List<ReportTemplateTO> list() {
+        return service.list();
+    }
+
+    public boolean create(final ReportTemplateTO reportTemplateTO) {
+        return Response.Status.CREATED.getStatusCode() == service.create(reportTemplateTO).getStatus();
+    }
+
+    public ReportTemplateTO read(final String key) {
+        return service.read(key);
+    }
+
+    public boolean delete(final String key) {
+        service.delete(key);
+        return true;
+    }
+
+    public Object getFormat(final String key, final ReportTemplateFormat format) {
+        return service.getFormat(key, format).getEntity();
+    }
+
+    public void setFormat(final String key, final ReportTemplateFormat format, final InputStream templateIn) {
+        service.setFormat(key, format, templateIn);
+    }
+
+    public boolean removeFormat(final String key, final ReportTemplateFormat format) {
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form
new file mode 100644
index 0000000..79458db
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.form
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+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 owership.  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.
+-->
+<Form version="1.7" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jScrollPane1" alignment="0" pref="258" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jScrollPane1" alignment="0" pref="445" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+      <AuxValues>
+        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+      </AuxValues>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JTree" name="resourceExplorerTree">
+          <Properties>
+            <Property name="model" type="javax.swing.tree.TreeModel" editor="org.netbeans.modules.form.editors2.TreeModelEditor">
+              <TreeModel code=""/>
+            </Property>
+            <Property name="rootVisible" type="boolean" value="false"/>
+            <Property name="scrollsOnExpand" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="resourceExplorerTreeMouseClicked"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
new file mode 100644
index 0000000..4c91ec5
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ResourceExplorerTopComponent.java
@@ -0,0 +1,553 @@
+/*
+ * 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.netbeans.plugin.view;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeListener;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.util.List;
+import javax.swing.Action;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPopupMenu;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Document;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import org.apache.commons.io.IOUtils;
+import org.apache.syncope.common.lib.to.MailTemplateTO;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+import org.apache.syncope.netbeans.plugin.connector.ResourceConnector;
+import org.apache.syncope.netbeans.plugin.constants.PluginConstants;
+import org.apache.syncope.netbeans.plugin.service.MailTemplateManagerService;
+import org.apache.syncope.netbeans.plugin.service.ReportTemplateManagerService;
+import org.netbeans.api.editor.EditorRegistry;
+import org.netbeans.api.progress.ProgressHandle;
+import org.netbeans.api.progress.ProgressHandleFactory;
+import org.netbeans.api.settings.ConvertAsProperties;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.cookies.OpenCookie;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.loaders.DataObject;
+import org.openide.util.Cancellable;
+import org.openide.util.Exceptions;
+import org.openide.util.RequestProcessor;
+import org.openide.windows.TopComponent;
+
+/**
+ * Top component which displays something.
+ */
+@ConvertAsProperties(
+        dtd = "-//org.apache.syncope.netbeans.plugin//ResourceExplorer//EN",
+        autostore = false
+)
+@TopComponent.Description(
+        preferredID = "ResourceExplorerTopComponent",
+        iconBase = "images/syncope.png",
+        persistenceType = TopComponent.PERSISTENCE_ALWAYS
+)
+@TopComponent.Registration(mode = "explorer", openAtStartup = false)
+@ActionID(category = "Window", id = "org.apache.syncope.netbeans.plugin.ResourceExplorerTopComponent")
+@ActionReference(path = "Menu/Window" /*, position = 333 */)
+@TopComponent.OpenActionRegistration(
+        displayName = "Apache Syncope",
+        preferredID = "ResourceExplorerTopComponent"
+)
+
+public final class ResourceExplorerTopComponent extends TopComponent {
+
+    private DefaultTreeModel treeModel;
+    private DefaultMutableTreeNode root;
+    private DefaultMutableTreeNode mailTemplates;
+    private DefaultMutableTreeNode reportXslts;
+    private MailTemplateManagerService mailTemplateManagerService;
+    private ReportTemplateManagerService reportTemplateManagerService;
+    private Charset encodingPattern;
+
+    public ResourceExplorerTopComponent() {
+
+        initComponents();
+        setName(PluginConstants.DISPLAY_NAME);
+        setToolTipText(PluginConstants.TOOL_TIP_TEXT);
+
+        treeModel = (DefaultTreeModel) resourceExplorerTree.getModel();
+        root = (DefaultMutableTreeNode) treeModel.getRoot();
+        DefaultMutableTreeNode visibleRoot
+                = new DefaultMutableTreeNode(PluginConstants.DISPLAY_NAME);
+        mailTemplates = new DefaultMutableTreeNode(PluginConstants.MAIL_TEMPLTAE_CONSTANT);
+        reportXslts = new DefaultMutableTreeNode(PluginConstants.REPORT_XSLTS_CONSTANT);
+        root.add(visibleRoot);
+        visibleRoot.add(mailTemplates);
+        visibleRoot.add(reportXslts);
+        treeModel.reload();
+
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
+     * content of this method is always regenerated by the Form Editor.
+     */
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jScrollPane1 = new javax.swing.JScrollPane();
+        resourceExplorerTree = new javax.swing.JTree();
+
+        javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
+        resourceExplorerTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
+        resourceExplorerTree.setRootVisible(false);
+        resourceExplorerTree.setScrollsOnExpand(true);
+        resourceExplorerTree.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(final java.awt.event.MouseEvent evt) {
+                resourceExplorerTreeMouseClicked(evt);
+            }
+        });
+        jScrollPane1.setViewportView(resourceExplorerTree);
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+        this.setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 445, Short.MAX_VALUE)
+        );
+    }
+    // </editor-fold>//GEN-END:initComponents
+
+    private void resourceExplorerTreeMouseClicked(final java.awt.event.MouseEvent evt) {
+        if (evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2) {
+            DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree.
+                    getLastSelectedPathComponent();
+            DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectedNode.getParent();
+            if (selectedNode.isLeaf()) {
+                String name = (String) selectedNode.getUserObject();
+                if (parentNode.getUserObject().equals(PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
+                    try {
+                        openMailEditor(name);
+                    } catch (IOException ex) {
+                        Exceptions.printStackTrace(ex);
+                    }
+                } else {
+                    try {
+                        openReportEditor(name);
+                    } catch (IOException ex) {
+                        Exceptions.printStackTrace(ex);
+                    }
+                }
+            }
+        } else if (evt.getButton() == MouseEvent.BUTTON3 && evt.getClickCount() == 1) {
+            DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree.
+                    getLastSelectedPathComponent();
+            String selectedNodeName = (String) selectedNode.getUserObject();
+            if (selectedNode.isLeaf()) {
+                leafRightClickAction(evt, selectedNode);
+            } else if (selectedNodeName.equals(PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
+                folderRightClickAction(evt, mailTemplates);
+            } else if (selectedNodeName.equals(PluginConstants.REPORT_XSLTS_CONSTANT)) {
+                folderRightClickAction(evt, reportXslts);
+            } else if (selectedNodeName.equals(PluginConstants.DISPLAY_NAME)) {
+                rootRightClickAction(evt);
+            }
+        }
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JScrollPane jScrollPane1;
+    private javax.swing.JTree resourceExplorerTree;
+    // End of variables declaration//GEN-END:variables
+
+    @Override
+    public void componentOpened() {
+        File file = new File("UserData.txt");
+        if (!file.exists()) {
+            new ServerDetailsView(null, true).setVisible(true);
+        }
+        try {
+            mailTemplateManagerService = ResourceConnector.getMailTemplateManagerService();
+        } catch (IOException ex) {
+            JOptionPane.showMessageDialog(null, "Error Occured.", "Error",
+                    JOptionPane.ERROR_MESSAGE);
+            new ServerDetailsView(null, true).setVisible(true);
+        }
+        try {
+            reportTemplateManagerService
+                    = ResourceConnector.getReportTemplateManagerService();
+        } catch (IOException ex) {
+            new ServerDetailsView(null, true).setVisible(true);
+        }
+
+        Runnable tsk = new Runnable() {
+            @Override
+            public void run() {
+                final ProgressHandle progr = ProgressHandleFactory.createHandle("Loading Templates", new Cancellable() {
+                    @Override
+                    public boolean cancel() {
+                        return true;
+                    }
+                }, new Action() {
+                    @Override
+                    public Object getValue(final String key) {
+                        return null;
+                    }
+
+                    @Override
+                    public void putValue(final String key, final Object value) {
+                    }
+
+                    @Override
+                    public void setEnabled(final boolean b) {
+                    }
+
+                    @Override
+                    public boolean isEnabled() {
+                        return false;
+                    }
+
+                    @Override
+                    public void addPropertyChangeListener(final PropertyChangeListener listener) {
+                    }
+
+                    @Override
+                    public void removePropertyChangeListener(final PropertyChangeListener listener) {
+                    }
+
+                    @Override
+                    public void actionPerformed(final ActionEvent e) {
+                    }
+                });
+
+                progr.start();
+                progr.progress("Loading Templates.");
+                addMailTemplates();
+                addReportXslts();
+                progr.finish();
+            }
+
+        };
+        RequestProcessor.getDefault().post(tsk);
+    }
+
+    @Override
+    public void componentClosed() {
+        // TODO add custom code on component closing
+    }
+
+    void writeProperties(final java.util.Properties p) {
+        // better to version settings since initial version as advocated at
+        // http://wiki.apidesign.org/wiki/PropertyFiles
+        p.setProperty("version", "1.0");
+        // TODO store your settings
+    }
+
+    void readProperties(final java.util.Properties p) {
+        String version = p.getProperty("version");
+        // TODO read your settings according to their version
+    }
+
+    private void addMailTemplates() {
+        List<MailTemplateTO> mailTemplateList = mailTemplateManagerService.list();
+        for (MailTemplateTO mailTemplate : mailTemplateList) {
+            this.mailTemplates.add(new DefaultMutableTreeNode(
+                    mailTemplate.getKey()));
+        }
+        treeModel.reload();
+    }
+
+    private void addReportXslts() {
+        List<ReportTemplateTO> reportTemplates = reportTemplateManagerService.list();
+        for (ReportTemplateTO reportTemplate : reportTemplates) {
+            reportXslts.add(new DefaultMutableTreeNode(
+                    reportTemplate.getKey()));
+        }
+        treeModel.reload();
+    }
+
+    private void rootRightClickAction(final MouseEvent evt) {
+        JPopupMenu menu = new JPopupMenu();
+        JMenuItem saveItem = new JMenuItem("Save");
+        JMenuItem resetConnectionItem = new JMenuItem("Reset Connection");
+        menu.add(saveItem);
+        menu.add(resetConnectionItem);
+
+        saveItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(final ActionEvent e) {
+                saveContent();
+            }
+        });
+
+        resetConnectionItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(final ActionEvent e) {
+                File file = new File("UserData.txt");
+                try {
+                    BufferedReader bf = new BufferedReader(new FileReader(file));
+                    String host = bf.readLine();
+                    String userName = bf.readLine();
+                    String password = bf.readLine();
+                    ServerDetailsView serverDetails = new ServerDetailsView(null, true);
+                    serverDetails.setDetails(host, userName, password);
+                    serverDetails.setVisible(true);
+                } catch (FileNotFoundException ex) {
+                    Exceptions.printStackTrace(ex);
+                } catch (IOException ex) {
+                    Exceptions.printStackTrace(ex);
+                }
+            }
+        });
+
+        menu.show(evt.getComponent(), evt.getX(), evt.getY());
+    }
+
+    private void folderRightClickAction(final MouseEvent evt,
+            final DefaultMutableTreeNode node) {
+        JPopupMenu menu = new JPopupMenu();
+        JMenuItem addItem = new JMenuItem("New");
+        menu.add(addItem);
+
+        addItem.addActionListener(new ActionListener() {
+            @Override
+            public void actionPerformed(final ActionEvent e) {
+                String name = JOptionPane.showInputDialog("Enter Name");
+                boolean added = false;
+                if (node.getUserObject().equals(
+                        PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
+                    MailTemplateTO mailTemplate = new MailTemplateTO();
+                    mailTemplate.setKey(name);
+                    added = mailTemplateManagerService.create(mailTemplate);
+                    mailTemplateManagerService.setFormat(name,
+                            MailTemplateFormat.HTML,
+                            IOUtils.toInputStream("//Enter Content here", encodingPattern));
+                    mailTemplateManagerService.setFormat(name,
+                            MailTemplateFormat.TEXT,
+                            IOUtils.toInputStream("//Enter Content here", encodingPattern));
+                    try {
+                        openMailEditor(name);
+                    } catch (IOException ex) {
+                        Exceptions.printStackTrace(ex);
+                    }
+                } else {
+                    ReportTemplateTO reportTemplate = new ReportTemplateTO();
+                    reportTemplate.setKey(name);
+                    added = reportTemplateManagerService.create(reportTemplate);
+                    reportTemplateManagerService.setFormat(name,
+                            ReportTemplateFormat.FO,
+                            IOUtils.toInputStream("//Enter content here", encodingPattern));
+                    reportTemplateManagerService.setFormat(name,
+                            ReportTemplateFormat.CSV,
+                            IOUtils.toInputStream("//Enter content here", encodingPattern));
+                    reportTemplateManagerService.setFormat(name,
+                            ReportTemplateFormat.HTML,
+                            IOUtils.toInputStream("//Enter content here", encodingPattern));
+                    try {
+                        openReportEditor(name);
+                    } catch (IOException ex) {
+                        Exceptions.printStackTrace(ex);
+                    }
+                }
+
+                if (added) {
+                    node.add(new DefaultMutableTreeNode(name));
+                    treeModel.reload(node);
+                } else {
+                    JOptionPane.showMessageDialog(null, "Error while creating "
+                            + "new element", "Error", JOptionPane.ERROR_MESSAGE);
+                }
+            }
+        });
+
+        menu.show(evt.getComponent(), evt.getX(), evt.getY());
+    }
+
+    private void leafRightClickAction(final MouseEvent evt,
+            final DefaultMutableTreeNode node) {
+        JPopupMenu menu = new JPopupMenu();
+        JMenuItem deleteItem = new JMenuItem("Delete");
+        menu.add(deleteItem);
+
+        deleteItem.addActionListener(new ActionListener() {
+            public void actionPerformed(final ActionEvent e) {
+                int result = JOptionPane.showConfirmDialog(null,
+                        "Do you want to delete ?");
+                if (result == JOptionPane.OK_OPTION) {
+                    DefaultMutableTreeNode parent
+                            = (DefaultMutableTreeNode) node.getParent();
+                    String name = (String) node.getUserObject();
+                    boolean deleted;
+                    if (parent.getUserObject().equals(
+                            PluginConstants.MAIL_TEMPLTAE_CONSTANT)) {
+                        deleted = mailTemplateManagerService.delete(
+                                (String) node.getUserObject());
+                    } else {
+                        deleted = reportTemplateManagerService.delete(
+                                (String) node.getUserObject());
+                    }
+                    if (deleted) {
+                        node.removeFromParent();
+                        treeModel.reload(parent);
+                    } else {
+
+                        JOptionPane.showMessageDialog(null,
+                                "Error while deleting new element", "Error",
+                                JOptionPane.ERROR_MESSAGE);
+                    }
+                }
+            }
+        });
+
+        menu.show(evt.getComponent(), evt.getX(), evt.getY());
+    }
+
+    private void openMailEditor(final String name) throws IOException {
+        String type = null;
+        String content = null;
+        InputStream is = null;
+        String formatStr = (String) JOptionPane.showInputDialog(null, "Select File Format",
+                "File format", JOptionPane.QUESTION_MESSAGE, null,
+                PluginConstants.MAIL_TEMPLATE_FORMATS, "TEXT");
+        MailTemplateFormat format = MailTemplateFormat.valueOf(formatStr);
+
+        switch (format) {
+            case HTML:  type = "html";
+                        is = (InputStream) mailTemplateManagerService.getFormat(name,
+                                MailTemplateFormat.HTML);
+                        break;
+            case TEXT:  type = "txt";
+                        is = (InputStream) mailTemplateManagerService.getFormat(name,
+                                MailTemplateFormat.TEXT);
+                        break;
+            default: break;
+        }
+        content = IOUtils.toString(is, encodingPattern);
+
+        File directory = new File("Template/Mail");
+        if (!directory.exists()) {
+            directory.mkdirs();
+        }
+        File file = new File("Template/Mail/" + name + "." + type);
+        FileWriter fw = new FileWriter(file);
+        fw.write(content);
+        fw.flush();
+        FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile());
+        fob.setAttribute("description", "TEXT");
+        DataObject data = DataObject.find(fob);
+        OpenCookie cookie = (OpenCookie) data.getCookie(OpenCookie.class);
+        cookie.open();
+    }
+
+    private void openReportEditor(final String name) throws IOException {
+        String type = null;
+        String content = null;
+        InputStream is = null;
+        String formatStr = (String) JOptionPane.showInputDialog(null, "Select File Format",
+                "File format", JOptionPane.QUESTION_MESSAGE, null,
+                PluginConstants.REPORT_TEMPLATE_FORMATS, "TEXT");
+        ReportTemplateFormat format = ReportTemplateFormat.valueOf(formatStr);
+
+        switch (format) {
+            case HTML:  type = "html";
+                        is = (InputStream) reportTemplateManagerService.getFormat(name,
+                                ReportTemplateFormat.HTML);
+                        break;
+            case CSV:   type = "csv";
+                        is = (InputStream) reportTemplateManagerService.getFormat(name,
+                                ReportTemplateFormat.CSV);
+                        break;
+            case FO:    type = "fo";
+                        is = (InputStream) reportTemplateManagerService.getFormat(name,
+                                ReportTemplateFormat.FO);
+                        break;
+            default: break;
+        }
+        content = IOUtils.toString(is, encodingPattern);
+
+        File directory = new File("Template/Report");
+        if (!directory.exists()) {
+            directory.mkdirs();
+        }
+        File file = new File("Template/Report/" + name + "." + type);
+        FileWriter fw = new FileWriter(file);
+        fw.write(content);
+        fw.flush();
+        FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile());
+        DataObject data = DataObject.find(fob);
+        OpenCookie cookie = (OpenCookie) data.getCookie(OpenCookie.class);
+        cookie.open();
+    }
+
+    private void saveContent() {
+
+        try {
+            JTextComponent ed = EditorRegistry.lastFocusedComponent();
+            Document document = ed.getDocument();
+            String content = document.getText(0, document.getLength());
+            String path = (String) document.getProperty(Document.TitleProperty);
+            String[] temp = path.split(File.separator);
+            String name = temp[temp.length - 1];
+            String templateType = temp[temp.length - 2];
+            temp = name.split("\\.");
+            String format = temp[1];
+            String key = temp[0];
+
+            if (templateType.equals("Mail")) {
+                if (format.equals("txt")) {
+                    mailTemplateManagerService.setFormat(key,
+                            MailTemplateFormat.TEXT,
+                            IOUtils.toInputStream(content, encodingPattern));
+                } else {
+                    mailTemplateManagerService.setFormat(key,
+                            MailTemplateFormat.HTML,
+                            IOUtils.toInputStream(content, encodingPattern));
+                }
+            } else if (format.equals("html")) {
+                reportTemplateManagerService.setFormat(key,
+                        ReportTemplateFormat.HTML,
+                        IOUtils.toInputStream(content, encodingPattern));
+            } else if (format.equals("fo")) {
+                reportTemplateManagerService.setFormat(key,
+                        ReportTemplateFormat.FO,
+                        IOUtils.toInputStream(content, encodingPattern));
+            } else {
+                reportTemplateManagerService.setFormat(key,
+                        ReportTemplateFormat.CSV,
+                        IOUtils.toInputStream(content, encodingPattern));
+            }
+        } catch (BadLocationException ex) {
+            Exceptions.printStackTrace(ex);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form
new file mode 100644
index 0000000..da41034
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.form
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+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 owership.  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.
+-->
+<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="1" attributes="0">
+                          <Component id="okButton" min="-2" pref="74" max="-2" attributes="0"/>
+                          <Group type="102" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                  <Component id="userNameTxt" max="32767" attributes="0"/>
+                                  <Component id="urlTxt" max="32767" attributes="0"/>
+                                  <Component id="passwordTxt" alignment="0" min="-2" pref="155" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace min="-2" pref="101" max="-2" attributes="0"/>
+                      <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+              <EmptySpace pref="41" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="1" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jLabel4" pref="32" max="32767" attributes="0"/>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="urlTxt" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="userNameTxt" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="passwordTxt" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="okButton" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel3">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="urlTxt">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.urlTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="userNameTxt">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.userNameTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JPasswordField" name="passwordTxt">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.passwordTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JButton" name="okButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.okButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel4">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/netbeans/plugin/view/Bundle.properties" key="ServerDetailsView.jLabel4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java
new file mode 100644
index 0000000..dc03d4d
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/view/ServerDetailsView.java
@@ -0,0 +1,218 @@
+/*
+ * 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.netbeans.plugin.view;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import javax.swing.JOptionPane;
+
+public class ServerDetailsView extends javax.swing.JDialog {
+
+    /**
+     * Creates new form LoginView
+     */
+    public ServerDetailsView(final java.awt.Frame parent, final boolean modal) {
+        super(parent, modal);
+        initComponents();
+        setLocationRelativeTo(this);
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jLabel1 = new javax.swing.JLabel();
+        jLabel2 = new javax.swing.JLabel();
+        jLabel3 = new javax.swing.JLabel();
+        urlTxt = new javax.swing.JTextField();
+        userNameTxt = new javax.swing.JTextField();
+        passwordTxt = new javax.swing.JPasswordField();
+        okButton = new javax.swing.JButton();
+        jLabel4 = new javax.swing.JLabel();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(
+                                                 ServerDetailsView.class, "ServerDetailsView.jLabel1.text"));
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(
+                                                 ServerDetailsView.class, "ServerDetailsView.jLabel2.text"));
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(
+                                                 ServerDetailsView.class, "ServerDetailsView.jLabel3.text"));
+
+        urlTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.urlTxt.text"));
+
+        userNameTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class,
+                                                                "ServerDetailsView.userNameTxt.text"));
+
+        passwordTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class,
+                                                                "ServerDetailsView.passwordTxt.text"));
+
+        org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(
+                                                   ServerDetailsView.class, "ServerDetailsView.okButton.text"));
+        okButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(final java.awt.event.ActionEvent evt) {
+                okButtonActionPerformed(evt);
+            }
+        });
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(
+                                                   ServerDetailsView.class, "ServerDetailsView.jLabel4.text"));
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(layout.createSequentialGroup()
+                        .addGap(41, 41, 41)
+                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 74,
+                                          javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addGroup(layout.createSequentialGroup()
+                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                    .addComponent(jLabel1)
+                                    .addComponent(jLabel2)
+                                    .addComponent(jLabel3))
+                                .addGap(39, 39, 39)
+                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                    .addComponent(userNameTxt)
+                                    .addComponent(urlTxt)
+                                    .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 155,
+                                                  javax.swing.GroupLayout.PREFERRED_SIZE)))))
+                    .addGroup(layout.createSequentialGroup()
+                        .addGap(101, 101, 101)
+                        .addComponent(jLabel4)))
+                .addContainerGap(41, Short.MAX_VALUE))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
+                .addGap(18, 18, 18)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel1)
+                    .addComponent(urlTxt, javax.swing.GroupLayout.PREFERRED_SIZE,
+                                  javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(18, 18, 18)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel2)
+                    .addComponent(userNameTxt, javax.swing.GroupLayout.PREFERRED_SIZE,
+                                  javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(18, 18, 18)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel3)
+                    .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE,
+                                  javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(okButton)
+                .addContainerGap())
+        );
+
+        pack();
+    }
+    // </editor-fold>//GEN-END:initComponents
+
+    private void okButtonActionPerformed(final java.awt.event.ActionEvent evt) {
+        String url = urlTxt.getText();
+        String userName = userNameTxt.getText();
+        String password = new String(passwordTxt.getPassword());
+        File file = new File("UserData.txt");
+        try {
+            FileWriter fileWriter = new FileWriter(file);
+            fileWriter.write(url + "\n" + userName + "\n" + password);
+            fileWriter.flush();
+            this.dispose();
+        } catch (IOException ex) {
+            JOptionPane.showMessageDialog(this, "Error while saving Data.", "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    public void setDetails(final String host, final String userName,
+            final String password) {
+        urlTxt.setText(host);
+        userNameTxt.setText(userName);
+        passwordTxt.setText(password);
+    }
+
+    public static void main(final String[] args) {
+        /* Set the Nimbus look and feel */
+        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
+        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
+         */
+        try {
+            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+                if ("Nimbus".equals(info.getName())) {
+                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
+                    break;
+                }
+            }
+        } catch (ClassNotFoundException ex) {
+            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
+                                               java.util.logging.Level.SEVERE, null, ex);
+        } catch (InstantiationException ex) {
+            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
+                                               java.util.logging.Level.SEVERE, null, ex);
+        } catch (IllegalAccessException ex) {
+            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
+                                               java.util.logging.Level.SEVERE, null, ex);
+        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+            java.util.logging.Logger.getLogger(ServerDetailsView.class.getName()).log(
+                                               java.util.logging.Level.SEVERE, null, ex);
+        }
+        //</editor-fold>
+        //</editor-fold>
+        /* Create and display the dialog */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+            public void run() {
+                ServerDetailsView dialog = new ServerDetailsView(
+                        new javax.swing.JFrame(), true);
+                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+                    @Override
+                    public void windowClosing(
+                            final java.awt.event.WindowEvent e) {
+                        System.exit(0);
+                    }
+                });
+                dialog.setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JButton okButton;
+    private javax.swing.JPasswordField passwordTxt;
+    private javax.swing.JTextField urlTxt;
+    private javax.swing.JTextField userNameTxt;
+    // End of variables declaration//GEN-END:variables
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/nbm/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/nbm/MANIFEST.MF b/ide/netbeans/src/main/nbm/MANIFEST.MF
new file mode 100644
index 0000000..b147609
--- /dev/null
+++ b/ide/netbeans/src/main/nbm/MANIFEST.MF
@@ -0,0 +1,3 @@
+Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
+Manifest-Version: 1.0
+OpenIDE-Module-Requires: org.openide.windows.WindowManager


[11/50] [abbrv] syncope git commit: Maven-compliant site generation + fix javadocs

Posted by il...@apache.org.
Maven-compliant site generation + fix javadocs


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

Branch: refs/heads/SYNCOPE-808
Commit: dcc1266d8837762b31d6007121a152adaa213fa1
Parents: 10d53d2
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 11 16:20:01 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 11 16:39:30 2017 +0200

----------------------------------------------------------------------
 .../resources/WorkflowDefGETResource.java       |   2 +-
 .../resources/WorkflowDefPUTResource.java       |   2 +-
 .../common/lib/search/SyncopeProperty.java      |  37 ++++-
 .../core/spring/security/AuthDataAccessor.java  |   5 +-
 pom.xml                                         | 149 +++++++++++--------
 5 files changed, 126 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/dcc1266d/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
index 2c14d35..6d1ac41 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
@@ -28,7 +28,7 @@ import org.apache.wicket.util.io.IOUtils;
 /**
  * Mirror REST resource for obtaining user workflow definition in JSON (used by Activiti / Flowable Modeler).
  *
- * @see org.apache.syncope.common.rest.api.service.WorkflowService#exportDefinition
+ * @see org.apache.syncope.common.rest.api.service.WorkflowService#get
  */
 public class WorkflowDefGETResource extends AbstractWorkflowResource {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/dcc1266d/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
index bd34711..ca1debf 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
@@ -29,7 +29,7 @@ import org.apache.wicket.util.io.IOUtils;
 /**
  * Mirror REST resource for putting user workflow definition in JSON (used by Activiti / Flowable Modeler).
  *
- * @see org.apache.syncope.common.rest.api.service.WorkflowService#importDefinition
+ * @see org.apache.syncope.common.rest.api.service.WorkflowService#set
  */
 public class WorkflowDefPUTResource extends AbstractWorkflowResource {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/dcc1266d/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
index 2f560c1..0d06c5b 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/search/SyncopeProperty.java
@@ -27,22 +27,47 @@ import org.apache.cxf.jaxrs.ext.search.client.Property;
  */
 public interface SyncopeProperty extends Property {
 
-    /** Is textual property equal to (ignoring case) given literal or matching given pattern? */
+    /** Is textual property equal to (ignoring case) given literal or matching given pattern?
+     *
+     * @param value first value
+     * @param moreValues more values
+     * @return updated condition
+     */
     CompleteCondition equalToIgnoreCase(String value, String... moreValues);
 
-    /** Is textual property different (ignoring case) than given literal or not matching given pattern? */
+    /** Is textual property different (ignoring case) than given literal or not matching given pattern?
+     *
+     * @param literalOrPattern
+     * @return updated condition
+     */
     CompleteCondition notEqualTolIgnoreCase(String literalOrPattern);
 
-    /** Is property null? */
+    /** Is property null?
+     *
+     * @return updated condition
+     */
     CompleteCondition nullValue();
 
-    /** Is property not null? */
+    /** Is property not null?
+     *
+     * @return updated condition
+     */
     CompleteCondition notNullValue();
 
-    /** Is user, group or any object owning given resource(s)? */
+    /** Is user, group or any object owning given resource(s)?
+     *
+     * @param resource first resource
+     * @param moreResources more resources
+     * @return updated condition
+     */
     CompleteCondition hasResources(String resource, String... moreResources);
 
-    /** Is user, group or any object not owning given resource(s)? */
+    /** Is user, group or any object not owning given resource(s)?
+     *
+     * @param resource first resource
+     * @param moreResources more resources
+     * @return updated condition
+     */
     CompleteCondition hasNotResources(String resource, String... moreResources);
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/dcc1266d/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
----------------------------------------------------------------------
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
index 616f3e7..b54d756 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthDataAccessor.java
@@ -74,9 +74,10 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
- * Domain-sensible (via {@code @Transactional} access to authentication / authorization data.
+ * Domain-sensible (via {@code @Transactional}) access to authentication / authorization data.
  *
- * @see SyncopeAuthenticationProvider
+ * @see JWTAuthenticationProvider
+ * @see UsernamePasswordAuthenticationProvider
  * @see SyncopeAuthenticationDetails
  */
 public class AuthDataAccessor {

http://git-wip-us.apache.org/repos/asf/syncope/blob/dcc1266d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index acf3e14..9b63a5f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -342,10 +342,6 @@ under the License.
     </contributor>
   </contributors>
 
-  <prerequisites>
-    <maven>[3.0.3,)</maven>
-  </prerequisites>
-
   <properties>
     <syncope.version>${project.version}</syncope.version>
 
@@ -382,7 +378,7 @@ under the License.
     <camel.version>2.17.6</camel.version>	
 
     <slf4j.version>1.7.25</slf4j.version>
-    <opensaml.version>3.2.0</opensaml.version>
+    <opensaml.version>3.3.0</opensaml.version>
 
     <log4j.version>2.8.2</log4j.version>
     <disruptor.version>3.3.6</disruptor.version>
@@ -1767,7 +1763,28 @@ under the License.
       </plugins>
     </pluginManagement>
 
-    <plugins>     
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>1.4.1</version>
+        <executions>
+          <execution>
+            <id>enforce-maven</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requireMavenVersion>
+                  <version>3.0</version>
+                </requireMavenVersion>
+              </rules>    
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
       <plugin>
         <groupId>org.gaul</groupId>
         <artifactId>modernizer-maven-plugin</artifactId>
@@ -1971,6 +1988,73 @@ under the License.
     
   </build>
 
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <version>2.9</version>
+        <configuration>
+          <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
+          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>index</report>
+              <report>project-team</report>
+              <report>issue-tracking</report>
+              <report>license</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>2.10.4</version>
+        <configuration>
+          <destDir>apidocs/2.0</destDir>
+          <isOffline>false</isOffline>
+          <detectLinks>true</detectLinks>
+          <detectJavaApiLink>true</detectJavaApiLink>
+          <links>
+            <link>http://docs.oracle.com/javaee/7/api/</link>
+            <link>http://www.slf4j.org/api/</link>
+            <link>http://connid.tirasa.net/apidocs/1.4/</link>
+            <link>http://cxf.apache.org/javadoc/latest-3.1.x/</link>
+            <link>http://fasterxml.github.io/jackson-core/javadoc/2.8/</link>
+            <link>http://fasterxml.github.io/jackson-databind/javadoc/2.8/</link>
+            <link>http://fasterxml.github.io/jackson-annotations/javadoc/2.8/</link>
+            <link>http://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.8/</link>
+            <link>http://fasterxml.github.io/jackson-dataformat-yaml/javadoc/2.8/</link>
+            <link>http://fasterxml.github.io/jackson-datatype-joda/javadoc/2.8/</link>
+            <link>http://www.javadoc.io/doc/org.apache.camel/camel-core/2.17.6/</link>
+            <link>http://www.javadoc.io/doc/org.apache.camel/camel-spring/2.17.6/</link>
+            <link>https://ci.apache.org/projects/wicket/apidocs/7.x/</link>
+            <link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
+            <link>https://commons.apache.org/proper/commons-io/javadocs/api-2.5/</link>
+            <link>https://commons.apache.org/proper/commons-jexl/apidocs/</link>
+            <link>https://commons.apache.org/proper/commons-collections/javadocs/api-release/</link>
+            <link>http://docs.spring.io/spring/docs/4.3.x/javadoc-api/</link>
+            <link>http://docs.spring.io/spring-security/site/docs/4.2.x/apidocs/</link>
+            <link>http://activiti.org/javadocs/</link>
+            <link>http://www.flowable.org/docs/javadocs/</link>
+            <link>https://build.shibboleth.net/nexus/service/local/repositories/releases/archive/org/opensaml/opensaml-saml-api/3.3.0/opensaml-saml-api-3.3.0-javadoc.jar/!/index.html</link>
+            <link>https://build.shibboleth.net/nexus/service/local/repositories/releases/archive/org/opensaml/opensaml-core/3.3.0/opensaml-core-3.3.0-javadoc.jar/!/index.html</link>
+          </links>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>aggregate</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+    </plugins>
+  </reporting>
+
   <profiles>
 
     <profile>
@@ -2150,59 +2234,6 @@ under the License.
             <configuration>
               <locales>en</locales>
               <generateProjectInfo>false</generateProjectInfo>
-              <reportPlugins>
-                <plugin>
-                  <groupId>org.apache.maven.plugins</groupId>
-                  <artifactId>maven-project-info-reports-plugin</artifactId>
-                  <version>2.9</version>
-                  <configuration>
-                    <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
-                    <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
-                  </configuration>
-                  <reports>
-                    <report>index</report>
-                    <report>project-team</report>
-                    <report>issue-tracking</report>
-                    <report>license</report>
-                  </reports>
-                </plugin>
-                <plugin>
-                  <groupId>org.apache.maven.plugins</groupId>
-                  <artifactId>maven-javadoc-plugin</artifactId>
-                  <version>2.10.4</version>
-                  <configuration>
-                    <destDir>apidocs/2.0</destDir>
-                    <isOffline>false</isOffline>
-                    <detectLinks>true</detectLinks>
-                    <detectJavaApiLink>true</detectJavaApiLink>
-                    <links>
-                      <link>http://docs.oracle.com/javaee/7/api/</link>
-                      <link>http://www.slf4j.org/api/</link>
-                      <link>http://connid.tirasa.net/apidocs/1.4/</link>
-                      <link>http://cxf.apache.org/javadoc/latest-3.1.x/</link>
-                      <link>http://fasterxml.github.io/jackson-core/javadoc/2.8/</link>
-                      <link>http://fasterxml.github.io/jackson-databind/javadoc/2.8/</link>
-                      <link>http://fasterxml.github.io/jackson-annotations/javadoc/2.8/</link>
-                      <link>http://fasterxml.github.io/jackson-dataformat-xml/javadoc/2.8/</link>
-                      <link>http://fasterxml.github.io/jackson-dataformat-yaml/javadoc/2.8/</link>
-                      <link>http://fasterxml.github.io/jackson-datatype-joda/javadoc/2.8/</link>
-                      <link>http://www.javadoc.io/doc/org.apache.camel/camel-core/2.17.5</link>
-                      <link>http://www.javadoc.io/doc/org.apache.camel/camel-spring/2.17.5</link>
-                      <link>https://ci.apache.org/projects/wicket/apidocs/7.x/</link>
-                      <link>https://commons.apache.org/proper/commons-lang/javadocs/api-release/</link>
-                      <link>https://commons.apache.org/proper/commons-io/javadocs/api-2.5/</link>
-                      <link>https://commons.apache.org/proper/commons-jexl/apidocs/</link>
-                      <link>https://commons.apache.org/proper/commons-collections/javadocs/</link>
-                      <link>http://docs.spring.io/spring/docs/4.3.x/javadoc-api/</link>
-                      <link>http://docs.spring.io/spring-security/site/docs/4.2.x/apidocs/</link>
-                      <link>http://activiti.org/javadocs/</link>
-                    </links>
-                  </configuration>
-                  <reports>
-                    <report>aggregate</report>
-                  </reports>
-                </plugin>
-              </reportPlugins>
             </configuration>
           </plugin>
           


[20/50] [abbrv] syncope git commit: [SYNCOPE-1058] datetime picker shown only if format contains time

Posted by il...@apache.org.
[SYNCOPE-1058] datetime picker shown only if format contains time


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

Branch: refs/heads/SYNCOPE-808
Commit: 09cd4e7e04057ed42ca94e1e3213a72a3f854be5
Parents: 9b87a2e
Author: Andrea Patricelli <an...@apache.org>
Authored: Thu Apr 13 13:11:53 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Thu Apr 13 14:16:05 2017 +0200

----------------------------------------------------------------------
 .../console/panels/ParametersDetailsPanel.java  | 10 ++--
 .../app/js/directives/dynamicPlainAttribute.js  | 17 +++---
 .../app/views/dynamicPlainAttribute.html        | 58 ++++++++++++++------
 3 files changed, 55 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/09cd4e7e/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
index 0affc22..18e1be3 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
@@ -18,9 +18,11 @@
  */
 package org.apache.syncope.client.console.panels;
 
+import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.commons.SchemaUtils;
 import org.apache.syncope.client.console.rest.SchemaRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
@@ -81,14 +83,14 @@ public class ParametersDetailsPanel extends Panel {
         final FieldPanel panel;
         switch (schemaTO.getType()) {
             case Date:
-                final String dataPattern = schemaTO.getConversionPattern() == null
+                final String datePattern = schemaTO.getConversionPattern() == null
                         ? SyncopeConstants.DEFAULT_DATE_PATTERN
                         : schemaTO.getConversionPattern();
 
-                if (dataPattern.contains("H")) {
-                    panel = new AjaxDateTimeFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern);
+                if (StringUtils.containsIgnoreCase(datePattern, "H")) {
+                    panel = new AjaxDateTimeFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), datePattern);
                 } else {
-                    panel = new AjaxDateFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern);
+                    panel = new AjaxDateFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), datePattern);
                 }
                 break;
             case Boolean:

http://git-wip-us.apache.org/repos/asf/syncope/blob/09cd4e7e/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js b/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
index f67b926..8ccaa02 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/directives/dynamicPlainAttribute.js
@@ -100,19 +100,20 @@ angular.module('self')
                     $scope.isDate = function (x) {
                       return x instanceof Date;
                     };
-
-                    var dateInMs = $scope.user.plainAttrs[schema.key].values[index];
-                    var temporaryDate = new Date(dateInMs * 1);
-                    $scope.selectedDate = temporaryDate;
                     $scope.languageid = $rootScope.languages.selectedLanguage.id;
-                    $scope.languageFormat = $rootScope.languages.selectedLanguage.format;
+                    $scope.isDateOnly = schema.conversionPattern.indexOf("H") === -1
+                            && schema.conversionPattern.indexOf("h") === -1;
+                    $scope.languageFormat = $scope.isDateOnly
+                            ? $rootScope.languages.selectedLanguage.format.replace(" HH:mm", "")
+                            : $rootScope.languages.selectedLanguage.format;
                     $scope.languageCulture = $rootScope.languages.selectedLanguage.culture;
+                    // read date in milliseconds
+                    $scope.selectedDate = new Date($scope.user.plainAttrs[schema.key].values[index] * 1);
 
                     $scope.bindDateToModel = function (selectedDate, extendedDate) {
                       if (selectedDate) {
-                        var tmpdate = new Date(extendedDate);
-                        var milliseconds = tmpdate.getTime();
-                        $scope.user.plainAttrs[schema.key].values[index] = milliseconds;
+                        // save date in milliseconds
+                        $scope.user.plainAttrs[schema.key].values[index] = new Date(extendedDate).getTime();
                       }
                     };
                     break;

http://git-wip-us.apache.org/repos/asf/syncope/blob/09cd4e7e/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttribute.html
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttribute.html b/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttribute.html
index b3b5822..e7b5bcc 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttribute.html
+++ b/client/enduser/src/main/resources/META-INF/resources/app/views/dynamicPlainAttribute.html
@@ -20,7 +20,9 @@ under the License.
   <input ng-switch-when="String" class="form-control" type="text"
          ng-model="user.plainAttrs[schema.key].values[index]"
          ng-required="{{schema.mandatoryCondition}}" validate="true"
-         ng-disabled="schema.readonly || customReadonly(schema.key)" ng-init="initAttribute(schema, index)" name="{{schema.key}}"/>
+         ng-disabled="schema.readonly || customReadonly(schema.key)"
+         ng-init="initAttribute(schema, index)"
+         name="{{schema.key}}"/>
 
   <div ng-switch-when="Encrypted" class="input-group input-group-sm">
     <span class="input-group-btn" ng-disabled="schema.readonly || customReadonly(schema.key)">  
@@ -73,27 +75,46 @@ under the License.
            ng-required="{{schema.mandatoryCondition}}"
            ng-disabled="schema.readonly || customReadonly(schema.key)"
            ng-init="initAttribute(schema, index)" />
-    </div>
+</div>
 
-    <input ng-switch-when="Long" class="form-control" type="number" ng-model="user.plainAttrs[schema.key].values[index]" 
-           ng-required="{{schema.mandatoryCondition}}" validate="true"
-           ng-init="initAttribute(schema, index)" name="{{schema.key}}"/>
+<input ng-switch-when="Long" class="form-control"
+           type="number"
+           ng-model="user.plainAttrs[schema.key].values[index]" 
+           ng-required="{{schema.mandatoryCondition}}"
+           ng-disabled="schema.readonly || customReadonly(schema.key)"
+           validate="true"
+           ng-init="initAttribute(schema, index)"
+           name="{{schema.key}}"/>
 
-    <input ng-switch-when="Double" class="form-control" type="number" ng-model="user.plainAttrs[schema.key].values[index]"
+<input ng-switch-when="Double" class="form-control" type="number" ng-model="user.plainAttrs[schema.key].values[index]"
            ng-required="{{schema.mandatoryCondition}}" validate="true"
+           ng-disabled="schema.readonly || customReadonly(schema.key)"
            ng-init="initAttribute(schema, index)" name="{{schema.key}}"/>
 
-    <div ng-switch-when="Date" id="date">
-      <input type="text" class="dateTimePicker"
-             id="dateTimePicker"
-             kendo-date-time-picker
-             ng-model="extendedDate"
-             ng-required="{{schema.mandatoryCondition}}" close-text="Close"
-             ng-init="initAttribute(schema, index)"
-             ng-change="bindDateToModel(selectedDate, extendedDate)"
-             ng-disabled="schema.readonly || customReadonly(schema.key)"
-             k-ng-model="selectedDate"
-             data-k-format=languageFormat 
+<div ng-switch-when="Date" id="date">
+<input type="text" class="dateTimePicker"
+       id="dateTimePicker"
+       kendo-date-time-picker
+       ng-show="!isDateOnly"
+       ng-model="extendedDate"
+       ng-required="{{schema.mandatoryCondition}}" close-text="Close"
+       ng-init="initAttribute(schema, index)"
+       ng-change="bindDateToModel(selectedDate, extendedDate)"
+ng-disabled="schema.readonly || customReadonly(schema.key)"
+k-ng-model="selectedDate"
+data-k-format="languageFormat"
+/>
+<input type="text" class="datePicker"
+       id="datePicker"
+       kendo-date-picker
+       ng-show="isDateOnly"
+       ng-model="extendedDate"
+       ng-required="{{schema.mandatoryCondition}}" close-text="Close"
+       ng-init="initAttribute(schema, index)"
+       ng-change="bindDateToModel(selectedDate, extendedDate)"
+       ng-disabled="schema.readonly || customReadonly(schema.key)"
+       k-ng-model="selectedDate"
+       data-k-format="languageFormat"
              />
     </div>
 
@@ -120,7 +141,8 @@ under the License.
     <input ng-switch-default class="form-control" type="text"
            ng-model="user.plainAttrs[schema.key].values[index]"
            ng-required="{{schema.mandatoryCondition}}" 
-           ng-disabled="schema.readonly || customReadonly(schema.key)" ng-init="initAttribute(schema, index)"/>
+           ng-disabled="schema.readonly || customReadonly(schema.key)"
+           ng-init="initAttribute(schema, index)"/>
   </div>
 
 


[35/50] [abbrv] syncope git commit: [maven-release-plugin] prepare for next development iteration

Posted by il...@apache.org.
[maven-release-plugin] prepare for next development iteration


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

Branch: refs/heads/SYNCOPE-808
Commit: c0e07956356184e3fdbb63603bb4f1b8a2ef0081
Parents: 2fd689f
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 21:02:56 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 21:02:56 2017 +0200

----------------------------------------------------------------------
 archetype/pom.xml                                                | 2 +-
 client/cli/pom.xml                                               | 2 +-
 client/console/pom.xml                                           | 2 +-
 client/enduser/pom.xml                                           | 2 +-
 client/lib/pom.xml                                               | 2 +-
 client/pom.xml                                                   | 2 +-
 common/lib/pom.xml                                               | 2 +-
 common/pom.xml                                                   | 2 +-
 common/rest-api/pom.xml                                          | 2 +-
 core/logic/pom.xml                                               | 2 +-
 core/migration/pom.xml                                           | 2 +-
 core/persistence-api/pom.xml                                     | 2 +-
 core/persistence-jpa/pom.xml                                     | 2 +-
 core/pom.xml                                                     | 2 +-
 core/provisioning-api/pom.xml                                    | 2 +-
 core/provisioning-java/pom.xml                                   | 2 +-
 core/rest-cxf/pom.xml                                            | 2 +-
 core/spring/pom.xml                                              | 2 +-
 core/workflow-activiti/pom.xml                                   | 2 +-
 core/workflow-api/pom.xml                                        | 2 +-
 core/workflow-flowable/pom.xml                                   | 2 +-
 core/workflow-java/pom.xml                                       | 2 +-
 deb/console/pom.xml                                              | 2 +-
 deb/core/pom.xml                                                 | 2 +-
 deb/enduser/pom.xml                                              | 2 +-
 deb/pom.xml                                                      | 2 +-
 ext/camel/client-console/pom.xml                                 | 2 +-
 ext/camel/common-lib/pom.xml                                     | 2 +-
 ext/camel/logic/pom.xml                                          | 2 +-
 ext/camel/persistence-api/pom.xml                                | 2 +-
 ext/camel/persistence-jpa/pom.xml                                | 2 +-
 ext/camel/pom.xml                                                | 2 +-
 ext/camel/provisioning-api/pom.xml                               | 2 +-
 ext/camel/provisioning-camel/pom.xml                             | 2 +-
 ext/camel/rest-api/pom.xml                                       | 2 +-
 ext/camel/rest-cxf/pom.xml                                       | 2 +-
 ext/pom.xml                                                      | 2 +-
 ext/saml2sp/agent/pom.xml                                        | 2 +-
 ext/saml2sp/client-console/pom.xml                               | 2 +-
 ext/saml2sp/client-enduser/pom.xml                               | 2 +-
 ext/saml2sp/common-lib/pom.xml                                   | 2 +-
 ext/saml2sp/logic/pom.xml                                        | 2 +-
 ext/saml2sp/persistence-api/pom.xml                              | 2 +-
 ext/saml2sp/persistence-jpa/pom.xml                              | 2 +-
 ext/saml2sp/pom.xml                                              | 2 +-
 ext/saml2sp/provisioning-api/pom.xml                             | 2 +-
 ext/saml2sp/provisioning-java/pom.xml                            | 2 +-
 ext/saml2sp/rest-api/pom.xml                                     | 2 +-
 ext/saml2sp/rest-cxf/pom.xml                                     | 2 +-
 ext/swagger-ui/pom.xml                                           | 2 +-
 fit/build-tools/pom.xml                                          | 2 +-
 fit/console-reference/pom.xml                                    | 2 +-
 fit/core-reference/pom.xml                                       | 2 +-
 fit/enduser-reference/pom.xml                                    | 2 +-
 fit/pom.xml                                                      | 2 +-
 .../bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml        | 2 +-
 ide/eclipse/pom.xml                                              | 2 +-
 ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml   | 2 +-
 ide/pom.xml                                                      | 2 +-
 installer/pom.xml                                                | 2 +-
 pom.xml                                                          | 4 ++--
 standalone/pom.xml                                               | 2 +-
 62 files changed, 63 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/archetype/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/pom.xml b/archetype/pom.xml
index a5fdc14..d691f03 100644
--- a/archetype/pom.xml
+++ b/archetype/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Archetype</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/client/cli/pom.xml
----------------------------------------------------------------------
diff --git a/client/cli/pom.xml b/client/cli/pom.xml
index bfe48a9..a8d9b61 100644
--- a/client/cli/pom.xml
+++ b/client/cli/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client CLI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/client/console/pom.xml
----------------------------------------------------------------------
diff --git a/client/console/pom.xml b/client/console/pom.xml
index ff75615..e4ff9f7 100644
--- a/client/console/pom.xml
+++ b/client/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/client/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml
index 10da00d..220f859 100644
--- a/client/enduser/pom.xml
+++ b/client/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
     
   <name>Apache Syncope Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/client/lib/pom.xml
----------------------------------------------------------------------
diff --git a/client/lib/pom.xml b/client/lib/pom.xml
index bdae59a..0256774 100644
--- a/client/lib/pom.xml
+++ b/client/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index 9c8e88b..ffefa2f 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/common/lib/pom.xml
----------------------------------------------------------------------
diff --git a/common/lib/pom.xml b/common/lib/pom.xml
index 28aa542..f6650ff 100644
--- a/common/lib/pom.xml
+++ b/common/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/common/pom.xml
----------------------------------------------------------------------
diff --git a/common/pom.xml b/common/pom.xml
index 6c372c7..363ae27 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Common</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/common/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml
index d169a52..8a86458 100644
--- a/common/rest-api/pom.xml
+++ b/common/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Common REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/logic/pom.xml
----------------------------------------------------------------------
diff --git a/core/logic/pom.xml b/core/logic/pom.xml
index 355acf4..967e9d7 100644
--- a/core/logic/pom.xml
+++ b/core/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/migration/pom.xml
----------------------------------------------------------------------
diff --git a/core/migration/pom.xml b/core/migration/pom.xml
index 00f5a62..de160e4 100644
--- a/core/migration/pom.xml
+++ b/core/migration/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Migration</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-api/pom.xml b/core/persistence-api/pom.xml
index 2543033..4f9984a 100644
--- a/core/persistence-api/pom.xml
+++ b/core/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml
index 02c7530..b97cca3 100644
--- a/core/persistence-jpa/pom.xml
+++ b/core/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index a252a28..b4c8541 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-api/pom.xml b/core/provisioning-api/pom.xml
index 1c85f06..ede504e 100644
--- a/core/provisioning-api/pom.xml
+++ b/core/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml
index 542a0ad..11fc9c7 100644
--- a/core/provisioning-java/pom.xml
+++ b/core/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml
index 2afea73..7ccd6d1 100644
--- a/core/rest-cxf/pom.xml
+++ b/core/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/spring/pom.xml
----------------------------------------------------------------------
diff --git a/core/spring/pom.xml b/core/spring/pom.xml
index dff3f6e..4fa0675 100644
--- a/core/spring/pom.xml
+++ b/core/spring/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Spring</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/workflow-activiti/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/pom.xml b/core/workflow-activiti/pom.xml
index 52ba44d..11ed455 100644
--- a/core/workflow-activiti/pom.xml
+++ b/core/workflow-activiti/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Activiti</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/workflow-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-api/pom.xml b/core/workflow-api/pom.xml
index 57d75f1..8f629e2 100644
--- a/core/workflow-api/pom.xml
+++ b/core/workflow-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/workflow-flowable/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/pom.xml b/core/workflow-flowable/pom.xml
index bc695b2..8122d9e 100644
--- a/core/workflow-flowable/pom.xml
+++ b/core/workflow-flowable/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Flowable</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/core/workflow-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-java/pom.xml b/core/workflow-java/pom.xml
index b5f4a2e..8d3fa25 100644
--- a/core/workflow-java/pom.xml
+++ b/core/workflow-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/deb/console/pom.xml
----------------------------------------------------------------------
diff --git a/deb/console/pom.xml b/deb/console/pom.xml
index f2bcdc6..45c2bf3 100644
--- a/deb/console/pom.xml
+++ b/deb/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/deb/core/pom.xml
----------------------------------------------------------------------
diff --git a/deb/core/pom.xml b/deb/core/pom.xml
index b064927..d8507b1 100644
--- a/deb/core/pom.xml
+++ b/deb/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
index dcd889f..b81e825 100644
--- a/deb/enduser/pom.xml
+++ b/deb/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/deb/pom.xml
----------------------------------------------------------------------
diff --git a/deb/pom.xml b/deb/pom.xml
index a40a90b..c9641f5 100644
--- a/deb/pom.xml
+++ b/deb/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/pom.xml b/ext/camel/client-console/pom.xml
index 269f493..1ac72f5 100644
--- a/ext/camel/client-console/pom.xml
+++ b/ext/camel/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/common-lib/pom.xml b/ext/camel/common-lib/pom.xml
index 6dcaa61..6140157 100644
--- a/ext/camel/common-lib/pom.xml
+++ b/ext/camel/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml
index 2420f2f..950c704 100644
--- a/ext/camel/logic/pom.xml
+++ b/ext/camel/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-api/pom.xml b/ext/camel/persistence-api/pom.xml
index 0bd4929..3a44c2f 100644
--- a/ext/camel/persistence-api/pom.xml
+++ b/ext/camel/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-jpa/pom.xml b/ext/camel/persistence-jpa/pom.xml
index 8ac8d60..065749d 100644
--- a/ext/camel/persistence-jpa/pom.xml
+++ b/ext/camel/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/pom.xml b/ext/camel/pom.xml
index a713352..590e95c 100644
--- a/ext/camel/pom.xml
+++ b/ext/camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-api/pom.xml b/ext/camel/provisioning-api/pom.xml
index 90957c9..ee6c11c 100644
--- a/ext/camel/provisioning-api/pom.xml
+++ b/ext/camel/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/provisioning-camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/pom.xml b/ext/camel/provisioning-camel/pom.xml
index 4755628..04c0724 100644
--- a/ext/camel/provisioning-camel/pom.xml
+++ b/ext/camel/provisioning-camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-api/pom.xml b/ext/camel/rest-api/pom.xml
index c3c993f..59e828c 100644
--- a/ext/camel/rest-api/pom.xml
+++ b/ext/camel/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/camel/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml
index 52a73a2..ea71278 100644
--- a/ext/camel/rest-cxf/pom.xml
+++ b/ext/camel/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pom.xml b/ext/pom.xml
index 10297d7..591194f 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/agent/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/pom.xml b/ext/saml2sp/agent/pom.xml
index 606be20..e33de80 100644
--- a/ext/saml2sp/agent/pom.xml
+++ b/ext/saml2sp/agent/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Agent</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/pom.xml b/ext/saml2sp/client-console/pom.xml
index b801d43..227ccc5 100644
--- a/ext/saml2sp/client-console/pom.xml
+++ b/ext/saml2sp/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/client-enduser/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-enduser/pom.xml b/ext/saml2sp/client-enduser/pom.xml
index c0c1cb0..6997f98 100644
--- a/ext/saml2sp/client-enduser/pom.xml
+++ b/ext/saml2sp/client-enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/pom.xml b/ext/saml2sp/common-lib/pom.xml
index 7039f5c..1f965dc 100644
--- a/ext/saml2sp/common-lib/pom.xml
+++ b/ext/saml2sp/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/pom.xml b/ext/saml2sp/logic/pom.xml
index b82be74..81a2817 100644
--- a/ext/saml2sp/logic/pom.xml
+++ b/ext/saml2sp/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-api/pom.xml b/ext/saml2sp/persistence-api/pom.xml
index 108681e..2949c14 100644
--- a/ext/saml2sp/persistence-api/pom.xml
+++ b/ext/saml2sp/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-jpa/pom.xml b/ext/saml2sp/persistence-jpa/pom.xml
index 2aac44a..0a8e705 100644
--- a/ext/saml2sp/persistence-jpa/pom.xml
+++ b/ext/saml2sp/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/pom.xml b/ext/saml2sp/pom.xml
index c0457fc..975fd4f 100644
--- a/ext/saml2sp/pom.xml
+++ b/ext/saml2sp/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-api/pom.xml b/ext/saml2sp/provisioning-api/pom.xml
index 9a8e2fa..bf22907 100644
--- a/ext/saml2sp/provisioning-api/pom.xml
+++ b/ext/saml2sp/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/pom.xml b/ext/saml2sp/provisioning-java/pom.xml
index 752f155..7305104 100644
--- a/ext/saml2sp/provisioning-java/pom.xml
+++ b/ext/saml2sp/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-api/pom.xml b/ext/saml2sp/rest-api/pom.xml
index 287ed8f..6002c63 100644
--- a/ext/saml2sp/rest-api/pom.xml
+++ b/ext/saml2sp/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/saml2sp/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-cxf/pom.xml b/ext/saml2sp/rest-cxf/pom.xml
index f6700fe..3a56e9e 100644
--- a/ext/saml2sp/rest-cxf/pom.xml
+++ b/ext/saml2sp/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ext/swagger-ui/pom.xml
----------------------------------------------------------------------
diff --git a/ext/swagger-ui/pom.xml b/ext/swagger-ui/pom.xml
index d75cbab..807fe87 100644
--- a/ext/swagger-ui/pom.xml
+++ b/ext/swagger-ui/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Swagger UI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/fit/build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml
index 18e052b..44ab09f 100644
--- a/fit/build-tools/pom.xml
+++ b/fit/build-tools/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Build Tools</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index 6746e57..6332b30 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Console Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/fit/core-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 1004590..0b620a9 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Core Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/fit/enduser-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml
index 1e5bcce..439b49b 100644
--- a/fit/enduser-reference/pom.xml
+++ b/fit/enduser-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Enduser Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/fit/pom.xml
----------------------------------------------------------------------
diff --git a/fit/pom.xml b/fit/pom.xml
index 26ef182..268a524 100644
--- a/fit/pom.xml
+++ b/fit/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
index a05e349..57c5af7 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ide/eclipse/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/pom.xml b/ide/eclipse/pom.xml
index 9032e61..0dfeb4d 100644
--- a/ide/eclipse/pom.xml
+++ b/ide/eclipse/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ide</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope IDE Eclipse</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
index 3913397..1ae2617 100644
--- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
+++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/ide/pom.xml
----------------------------------------------------------------------
diff --git a/ide/pom.xml b/ide/pom.xml
index f16d5e8..dbd135f 100644
--- a/ide/pom.xml
+++ b/ide/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope IDE</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/installer/pom.xml
----------------------------------------------------------------------
diff --git a/installer/pom.xml b/installer/pom.xml
index 2ed15e8..97db2f6 100644
--- a/installer/pom.xml
+++ b/installer/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Installer</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index be4aee8..aa54589 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@ under the License.
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>
-  <version>2.0.3</version>
+  <version>2.0.4-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <parent>
@@ -52,7 +52,7 @@ under the License.
     <connection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</developerConnection>
     <url>https://git-wip-us.apache.org/repos/asf?p=syncope.git</url>
-    <tag>syncope-2.0.3</tag>
+    <tag>HEAD</tag>
   </scm>
 
   <issueManagement>

http://git-wip-us.apache.org/repos/asf/syncope/blob/c0e07956/standalone/pom.xml
----------------------------------------------------------------------
diff --git a/standalone/pom.xml b/standalone/pom.xml
index 097fd57..102608a 100644
--- a/standalone/pom.xml
+++ b/standalone/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Standalone Distribution</name>


[46/50] [abbrv] syncope git commit: Antrun plugin to add LICENSE and PlUGIN to nbm archive

Posted by il...@apache.org.
Antrun plugin to add LICENSE and PlUGIN to nbm archive


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

Branch: refs/heads/SYNCOPE-808
Commit: aa761093c1f2a2faac67edf43511c111156d26c2
Parents: 238bf75
Author: Tushar <tu...@gmail.com>
Authored: Mon Jan 9 18:07:06 2017 +0530
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:52:45 2017 +0200

----------------------------------------------------------------------
 ide/netbeans/legal/META-INF/LICENSE             | 896 +++++++++++++++++++
 ide/netbeans/legal/META-INF/NOTICE              |  80 ++
 ide/netbeans/pom.xml                            |  28 +
 .../src/main/resources/META-INF/LICENSE         | 896 -------------------
 ide/netbeans/src/main/resources/META-INF/NOTICE |  80 --
 pom.xml                                         |   7 +
 6 files changed, 1011 insertions(+), 976 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/aa761093/ide/netbeans/legal/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/ide/netbeans/legal/META-INF/LICENSE b/ide/netbeans/legal/META-INF/LICENSE
new file mode 100644
index 0000000..f34bfd3
--- /dev/null
+++ b/ide/netbeans/legal/META-INF/LICENSE
@@ -0,0 +1,896 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+==
+
+For Jackson (http://wiki.fasterxml.com/JacksonHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For JAX-B (http://jaxb.java.net/):
+This is licensed under the CDDL 1.0:
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Sun Microsystems, Inc. is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R. $
+252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
+
+==
+
+For javax.annotation-api (https://jcp.org/en/jsr/detail?id=250):
+This is licensed under the CDDL 1.0, see above.
+
+==
+
+For javax.ws.rs-api (https://jax-rs-spec.java.net/):
+This is licensed under the CDDL 1.0, see above.
+
+==
+
+For Joda Time (http://www.joda.org/joda-time/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For StAX2 API (http://wiki.fasterxml.com/WoodstoxStax2):
+This is licensed under the BSD license:
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this 
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, 
+this list of conditions and the following disclaimer in the documentation 
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors 
+may be used to endorse or promote products derived from this software without 
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==
+
+For Woodstox (http://wiki.fasterxml.com/WoodstoxHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For Simple Logging Facade for Java - SLF4J (http://www.slf4j.org/):
+This is licensed under the MIT license:
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+ 
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+ 
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+==
+
+For Jsoup (https://jsoup.org/):
+This is licensed under the MIT license, see above.
+
+==
+
+For Eclipse Equinox (http://projects.eclipse.org/projects/rt.equinox):
+This is licensed under the EPL 1.0:
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+   distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+    i) changes to the Program, and
+   ii) additions to the Program;
+
+   where such changes and/or additions to the Program originate from and are
+   distributed by that particular Contributor. A Contribution 'originates'
+   from a Contributor if it was added to the Program by such Contributor
+   itself or anyone acting on such Contributor's behalf. Contributions do not
+   include additions to the Program which: (i) are separate modules of
+   software distributed in conjunction with the Program under their own
+   license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+  a) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free copyright license to
+     reproduce, prepare derivative works of, publicly display, publicly
+     perform, distribute and sublicense the Contribution of such Contributor,
+     if any, and such derivative works, in source code and object code form.
+  b) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free patent license under
+     Licensed Patents to make, use, sell, offer to sell, import and otherwise
+     transfer the Contribution of such Contributor, if any, in source code and
+     object code form. This patent license shall apply to the combination of
+     the Contribution and the Program if, at the time the Contribution is
+     added by the Contributor, such addition of the Contribution causes such
+     combination to be covered by the Licensed Patents. The patent license
+     shall not apply to any other combinations which include the Contribution.
+     No hardware per se is licensed hereunder.
+  c) Recipient understands that although each Contributor grants the licenses
+     to its Contributions set forth herein, no assurances are provided by any
+     Contributor that the Program does not infringe the patent or other
+     intellectual property rights of any other entity. Each Contributor
+     disclaims any liability to Recipient for claims brought by any other
+     entity based on infringement of intellectual property rights or
+     otherwise. As a condition to exercising the rights and licenses granted
+     hereunder, each Recipient hereby assumes sole responsibility to secure
+     any other intellectual property rights needed, if any. For example, if a
+     third party patent license is required to allow Recipient to distribute
+     the Program, it is Recipient's responsibility to acquire that license
+     before distributing the Program.
+  d) Each Contributor represents that to its knowledge it has sufficient
+     copyright rights in its Contribution, if any, to grant the copyright
+     license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+  a) it complies with the terms and conditions of this Agreement; and
+  b) its license agreement:
+      i) effectively disclaims on behalf of all Contributors all warranties
+         and conditions, express and implied, including warranties or
+         conditions of title and non-infringement, and implied warranties or
+         conditions of merchantability and fitness for a particular purpose;
+     ii) effectively excludes on behalf of all Contributors all liability for
+         damages, including direct, indirect, special, incidental and
+         consequential damages, such as lost profits;
+    iii) states that any provisions which differ from this Agreement are
+         offered by that Contributor alone and not by any other party; and
+     iv) states that source code for the Program is available from such
+         Contributor, and informs licensees how to obtain it in a reasonable
+         manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+  a) it must be made available under this Agreement; and
+  b) a copy of this Agreement must be included with each copy of the Program.
+     Contributors may not remove or alter any copyright notices contained
+     within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore,
+if a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits and
+other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such Commercial
+Contributor in connection with its distribution of the Program in a commercial
+product offering. The obligations in this section do not apply to any claims
+or Losses relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must:
+a) promptly notify the Commercial Contributor in writing of such claim, and
+b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such claim at
+its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers
+warranties related to Product X, those performance claims and warranties are
+such Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using
+and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the
+risks and costs of program errors, compliance with applicable laws, damage to
+or loss of data, programs or equipment, and unavailability or interruption of
+operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by the
+parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted
+under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue
+and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to
+time. No one other than the Agreement Steward has the right to modify this
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as the Agreement
+Steward to a suitable separate entity. Each new version of the Agreement will
+be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in the
+Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
+
+==
+
+For Eclipse e4 (https://www.eclipse.org/e4/):
+This is licensed under the EPL 1.0, see above.
+
+==
+
+For Eclipse EMF (https://projects.eclipse.org/projects/modeling.emf.emf):
+This is licensed under the EPL 1.0, see above.
+
+==
+
+For Eclipse SWT (https://projects.eclipse.org/projects/eclipse.platform.swt):
+This is licensed under the EPL 1.0, see above.

http://git-wip-us.apache.org/repos/asf/syncope/blob/aa761093/ide/netbeans/legal/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/ide/netbeans/legal/META-INF/NOTICE b/ide/netbeans/legal/META-INF/NOTICE
new file mode 100644
index 0000000..34ffa8c
--- /dev/null
+++ b/ide/netbeans/legal/META-INF/NOTICE
@@ -0,0 +1,80 @@
+Apache Syncope
+Copyright 2012-2016 The Apache Software Foundation
+
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+The following copyright notice(s) were affixed to portions of this code
+with which this file is now or was at one time distributed.
+
+==
+
+This product includes software developed by the Jackson project.
+
+==
+
+This product includes software developed by the JAXB project.
+Copyright (c) 2013-2016 The JAXB project.
+
+==
+
+This product includs software developed by Oracle.
+Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved.
+
+==
+
+This product includes software developed by the JAX-RS project.
+Copyright (c) 2014, Oracle Corporation and/or its affiliates. All rights reserved.
+
+==
+
+This product includes software developed by the Joda Time project.
+Copyright (c) 2002-2016 Joda.org. All Rights Reserved.
+
+==
+
+This product includes software developed by the Stax 2 Extension API Project.
+
+==
+
+This product includes software developed by the Woodstox Project.
+
+==
+
+This products includes software developed by the Simple Logging Facade for Java (SLF4J) project.
+Copyright (c) 2004-2016 QOS.ch.
+
+==
+
+This product includes software developed by the Web Services Description Language for Java project.
+Copyright (c) Dice.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Eclipse Equinox project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Eclipse e4 project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Eclipse EMF project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved
+
+==
+
+This product includes software developed by the Eclipse SWT project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Jsoup project.
+Copyright (c) 2009 - 2016 Jonathan Hedley (jonathan@hedley.net)

http://git-wip-us.apache.org/repos/asf/syncope/blob/aa761093/ide/netbeans/pom.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/pom.xml b/ide/netbeans/pom.xml
index 1afbb88..c594e04 100644
--- a/ide/netbeans/pom.xml
+++ b/ide/netbeans/pom.xml
@@ -47,6 +47,12 @@ under the License.
                 <extensions>true</extensions>
                 <configuration>
                     <useOSGiDependencies>false</useOSGiDependencies>
+                    <nbmResources>
+                        <nbmResource>
+                            <directory>src/main/resources/META-INF</directory>
+                            <targetPath>../META-INF</targetPath>
+                        </nbmResource>
+                    </nbmResources>
                 </configuration>
             </plugin>
             <plugin>
@@ -58,6 +64,28 @@ under the License.
                     </archive>
                 </configuration>
             </plugin>
+            <plugin>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.7</version>
+                <executions>
+                  <execution>
+                    <phase>package</phase>
+                    <configuration>
+                      <target>
+                        <move file="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.nbm"
+                            tofile="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.zip" />
+                        <zip update="true" basedir="legal/" 
+                            destfile="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.zip" />
+                        <move file="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.zip"
+                            tofile="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.nbm" />
+                      </target>
+                    </configuration>
+                    <goals>
+                      <goal>run</goal>
+                    </goals>
+                  </execution>
+                </executions>
+              </plugin>
         </plugins>
     </build>
 


[50/50] [abbrv] syncope git commit: Several pom fixes, proper LICENSE and NOTICE, package reorganization, checkstyle setup

Posted by il...@apache.org.
Several pom fixes, proper LICENSE and NOTICE, package reorganization, checkstyle setup


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

Branch: refs/heads/SYNCOPE-808
Commit: 06fd9e371ad4ea0e34fa11961330f757da6d3384
Parents: aa76109
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Mon Jan 9 18:32:44 2017 +0100
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:53:27 2017 +0200

----------------------------------------------------------------------
 ide/netbeans/LICENSE                            | 677 ++++++++++++++
 ide/netbeans/NOTICE                             |  50 ++
 ide/netbeans/legal/META-INF/LICENSE             | 896 -------------------
 ide/netbeans/legal/META-INF/NOTICE              |  80 --
 ide/netbeans/nb-configuration.xml               |  20 +-
 ide/netbeans/pom.xml                            | 330 ++++---
 .../syncope/ide/netbeans/PluginConstants.java   |  43 +
 .../syncope/ide/netbeans/ResourceConnector.java |  77 ++
 .../syncope/ide/netbeans/UserProperties.java    |  79 ++
 .../service/MailTemplateManagerService.java     |  68 ++
 .../service/ReportTemplateManagerService.java   |  68 ++
 .../view/ResourceExplorerTopComponent.form      |  68 ++
 .../view/ResourceExplorerTopComponent.java      | 546 +++++++++++
 .../ide/netbeans/view/ServerDetailsView.form    | 161 ++++
 .../ide/netbeans/view/ServerDetailsView.java    | 183 ++++
 .../plugin/connector/ResourceConnector.java     |  76 --
 .../plugin/constants/PluginConstants.java       |  33 -
 .../netbeans/plugin/entity/UserProperties.java  |  78 --
 .../service/MailTemplateManagerService.java     |  68 --
 .../service/ReportTemplateManagerService.java   |  68 --
 .../view/ResourceExplorerTopComponent.form      |  68 --
 .../view/ResourceExplorerTopComponent.java      | 553 ------------
 .../netbeans/plugin/view/ServerDetailsView.form | 161 ----
 .../netbeans/plugin/view/ServerDetailsView.java | 218 -----
 .../resources/org/apache/syncope/checkstyle.xml | 223 -----
 .../syncope/ide/netbeans/view/Bundle.properties |  28 +
 .../org/apache/syncope/java-formatter.xml       | 309 -------
 .../netbeans/plugin/view/Bundle.properties      |  28 -
 pom.xml                                         | 211 ++---
 .../resources/org/apache/syncope/checkstyle.xml |   5 +-
 30 files changed, 2354 insertions(+), 3119 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/LICENSE
----------------------------------------------------------------------
diff --git a/ide/netbeans/LICENSE b/ide/netbeans/LICENSE
new file mode 100644
index 0000000..876156c
--- /dev/null
+++ b/ide/netbeans/LICENSE
@@ -0,0 +1,677 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+==
+
+For Jackson (http://wiki.fasterxml.com/JacksonHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For JAX-B (http://jaxb.java.net/):
+This is licensed under the CDDL 1.0:
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Sun Microsystems, Inc. is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R. $
+252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
+
+==
+
+For javax.annotation-api (https://jcp.org/en/jsr/detail?id=250):
+This is licensed under the CDDL 1.0, see above.
+
+==
+
+For Bean Validation API (http://beanvalidation.org/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For javax.ws.rs-api (https://jax-rs-spec.java.net/):
+This is licensed under the CDDL 1.0, see above.
+
+==
+
+For Joda Time (http://www.joda.org/joda-time/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For StAX2 API (http://wiki.fasterxml.com/WoodstoxStax2):
+This is licensed under the BSD license:
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this 
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, 
+this list of conditions and the following disclaimer in the documentation 
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors 
+may be used to endorse or promote products derived from this software without 
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==
+
+For Woodstox (http://wiki.fasterxml.com/WoodstoxHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For ASM (http://asm.ow2.org/):
+This is licensed under the BSD license, see above.
+
+==
+
+For Simple Logging Facade for Java - SLF4J (http://www.slf4j.org/):
+This is licensed under the MIT license:
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+ 
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+ 
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/NOTICE
----------------------------------------------------------------------
diff --git a/ide/netbeans/NOTICE b/ide/netbeans/NOTICE
new file mode 100644
index 0000000..83f23f3
--- /dev/null
+++ b/ide/netbeans/NOTICE
@@ -0,0 +1,50 @@
+Apache Syncope
+Copyright 2012-2017 The Apache Software Foundation
+
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+The following copyright notice(s) were affixed to portions of this code
+with which this file is now or was at one time distributed.
+
+==
+
+This product includes software developed by the Jackson project.
+
+==
+
+This product includes software developed by the JAXB project.
+Copyright (c) 2013-2016 The JAXB project.
+
+==
+
+This product includs software developed by Oracle.
+Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved.
+
+==
+
+This product includes software developed by the Bean Validation Project (http://beanvalidation.org).
+Copyright (c) Red Hat, Inc., Emmanuel Bernard
+
+==
+
+This product includes software developed by the JAX-RS project.
+Copyright (c) 2014, Oracle Corporation and/or its affiliates. All rights reserved.
+
+==
+
+This product includes software developed by the Joda Time project.
+Copyright (c) 2002-2016 Joda.org. All Rights Reserved.
+
+==
+
+This product includes software developed by the Stax 2 Extension API Project.
+
+==
+
+This product includes software developed by the Woodstox Project.
+
+==
+
+This products includes software developed by the Simple Logging Facade for Java (SLF4J) project.
+Copyright (c) 2004-2016 QOS.ch.

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/legal/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/ide/netbeans/legal/META-INF/LICENSE b/ide/netbeans/legal/META-INF/LICENSE
deleted file mode 100644
index f34bfd3..0000000
--- a/ide/netbeans/legal/META-INF/LICENSE
+++ /dev/null
@@ -1,896 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
-
-==
-
-For Jackson (http://wiki.fasterxml.com/JacksonHome):
-This is licensed under the AL 2.0, see above.
-
-==
-
-For JAX-B (http://jaxb.java.net/):
-This is licensed under the CDDL 1.0:
-
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-1. Definitions.
-
-1.1. "Contributor" means each individual or entity that
-creates or contributes to the creation of Modifications.
-
-1.2. "Contributor Version" means the combination of the
-Original Software, prior Modifications used by a
-Contributor (if any), and the Modifications made by that
-particular Contributor.
-
-1.3. "Covered Software" means (a) the Original Software, or
-(b) Modifications, or (c) the combination of files
-containing Original Software with files containing
-Modifications, in each case including portions thereof.
-
-1.4. "Executable" means the Covered Software in any form
-other than Source Code.
-
-1.5. "Initial Developer" means the individual or entity
-that first makes Original Software available under this
-License.
-
-1.6. "Larger Work" means a work which combines Covered
-Software or portions thereof with code not governed by the
-terms of this License.
-
-1.7. "License" means this document.
-
-1.8. "Licensable" means having the right to grant, to the
-maximum extent possible, whether at the time of the initial
-grant or subsequently acquired, any and all of the rights
-conveyed herein.
-
-1.9. "Modifications" means the Source Code and Executable
-form of any of the following:
-
-A. Any file that results from an addition to,
-deletion from or modification of the contents of a
-file containing Original Software or previous
-Modifications;
-
-B. Any new file that contains any part of the
-Original Software or previous Modification; or
-
-C. Any new file that is contributed or otherwise made
-available under the terms of this License.
-
-1.10. "Original Software" means the Source Code and
-Executable form of computer software code that is
-originally released under this License.
-
-1.11. "Patent Claims" means any patent claim(s), now owned
-or hereafter acquired, including without limitation,
-method, process, and apparatus claims, in any patent
-Licensable by grantor.
-
-1.12. "Source Code" means (a) the common form of computer
-software code in which modifications are made and (b)
-associated documentation included in or with such code.
-
-1.13. "You" (or "Your") means an individual or a legal
-entity exercising rights under, and complying with all of
-the terms of, this License. For legal entities, "You"
-includes any entity which controls, is controlled by, or is
-under common control with You. For purposes of this
-definition, "control" means (a) the power, direct or
-indirect, to cause the direction or management of such
-entity, whether by contract or otherwise, or (b) ownership
-of more than fifty percent (50%) of the outstanding shares
-or beneficial ownership of such entity.
-
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and
-subject to third party intellectual property claims, the
-Initial Developer hereby grants You a world-wide,
-royalty-free, non-exclusive license:
-
-(a) under intellectual property rights (other than
-patent or trademark) Licensable by Initial Developer,
-to use, reproduce, modify, display, perform,
-sublicense and distribute the Original Software (or
-portions thereof), with or without Modifications,
-and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making,
-using or selling of Original Software, to make, have
-made, use, practice, sell, and offer for sale, and/or
-otherwise dispose of the Original Software (or
-portions thereof).
-
-(c) The licenses granted in Sections 2.1(a) and (b)
-are effective on the date Initial Developer first
-distributes or otherwise makes the Original Software
-available to a third party under the terms of this
-License.
-
-(d) Notwithstanding Section 2.1(b) above, no patent
-license is granted: (1) for code that You delete from
-the Original Software, or (2) for infringements
-caused by: (i) the modification of the Original
-Software, or (ii) the combination of the Original
-Software with other software or devices.
-
-2.2. Contributor Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and
-subject to third party intellectual property claims, each
-Contributor hereby grants You a world-wide, royalty-free,
-non-exclusive license:
-
-(a) under intellectual property rights (other than
-patent or trademark) Licensable by Contributor to
-use, reproduce, modify, display, perform, sublicense
-and distribute the Modifications created by such
-Contributor (or portions thereof), either on an
-unmodified basis, with other Modifications, as
-Covered Software and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making,
-using, or selling of Modifications made by that
-Contributor either alone and/or in combination with
-its Contributor Version (or portions of such
-combination), to make, use, sell, offer for sale,
-have made, and/or otherwise dispose of: (1)
-Modifications made by that Contributor (or portions
-thereof); and (2) the combination of Modifications
-made by that Contributor with its Contributor Version
-(or portions of such combination).
-
-(c) The licenses granted in Sections 2.2(a) and
-2.2(b) are effective on the date Contributor first
-distributes or otherwise makes the Modifications
-available to a third party.
-
-(d) Notwithstanding Section 2.2(b) above, no patent
-license is granted: (1) for any code that Contributor
-has deleted from the Contributor Version; (2) for
-infringements caused by: (i) third party
-modifications of Contributor Version, or (ii) the
-combination of Modifications made by that Contributor
-with other software (except as part of the
-Contributor Version) or other devices; or (3) under
-Patent Claims infringed by Covered Software in the
-absence of Modifications made by that Contributor.
-
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-
-Any Covered Software that You distribute or otherwise make
-available in Executable form must also be made available in
-Source Code form and that Source Code form must be
-distributed only under the terms of this License. You must
-include a copy of this License with every copy of the
-Source Code form of the Covered Software You distribute or
-otherwise make available. You must inform recipients of any
-such Covered Software in Executable form as to how they can
-obtain such Covered Software in Source Code form in a
-reasonable manner on or through a medium customarily used
-for software exchange.
-
-3.2. Modifications.
-
-The Modifications that You create or to which You
-contribute are governed by the terms of this License. You
-represent that You believe Your Modifications are Your
-original creation(s) and/or You have sufficient rights to
-grant the rights conveyed by this License.
-
-3.3. Required Notices.
-
-You must include a notice in each of Your Modifications
-that identifies You as the Contributor of the Modification.
-You may not remove or alter any copyright, patent or
-trademark notices contained within the Covered Software, or
-any notices of licensing or any descriptive text giving
-attribution to any Contributor or the Initial Developer.
-
-3.4. Application of Additional Terms.
-
-You may not offer or impose any terms on any Covered
-Software in Source Code form that alters or restricts the
-applicable version of this License or the recipients'
-rights hereunder. You may choose to offer, and to charge a
-fee for, warranty, support, indemnity or liability
-obligations to one or more recipients of Covered Software.
-However, you may do so only on Your own behalf, and not on
-behalf of the Initial Developer or any Contributor. You
-must make it absolutely clear that any such warranty,
-support, indemnity or liability obligation is offered by
-You alone, and You hereby agree to indemnify the Initial
-Developer and every Contributor for any liability incurred
-by the Initial Developer or such Contributor as a result of
-warranty, support, indemnity or liability terms You offer.
-
-3.5. Distribution of Executable Versions.
-
-You may distribute the Executable form of the Covered
-Software under the terms of this License or under the terms
-of a license of Your choice, which may contain terms
-different from this License, provided that You are in
-compliance with the terms of this License and that the
-license for the Executable form does not attempt to limit
-or alter the recipient's rights in the Source Code form
-from the rights set forth in this License. If You
-distribute the Covered Software in Executable form under a
-different license, You must make it absolutely clear that
-any terms which differ from this License are offered by You
-alone, not by the Initial Developer or Contributor. You
-hereby agree to indemnify the Initial Developer and every
-Contributor for any liability incurred by the Initial
-Developer or such Contributor as a result of any such terms
-You offer.
-
-3.6. Larger Works.
-
-You may create a Larger Work by combining Covered Software
-with other code not governed by the terms of this License
-and distribute the Larger Work as a single product. In such
-a case, You must make sure the requirements of this License
-are fulfilled for the Covered Software.
-
-4. Versions of the License.
-
-4.1. New Versions.
-
-Sun Microsystems, Inc. is the initial license steward and
-may publish revised and/or new versions of this License
-from time to time. Each version will be given a
-distinguishing version number. Except as provided in
-Section 4.3, no one other than the license steward has the
-right to modify this License.
-
-4.2. Effect of New Versions.
-
-You may always continue to use, distribute or otherwise
-make the Covered Software available under the terms of the
-version of the License under which You originally received
-the Covered Software. If the Initial Developer includes a
-notice in the Original Software prohibiting it from being
-distributed or otherwise made available under any
-subsequent version of the License, You must distribute and
-make the Covered Software available under the terms of the
-version of the License under which You originally received
-the Covered Software. Otherwise, You may also choose to
-use, distribute or otherwise make the Covered Software
-available under the terms of any subsequent version of the
-License published by the license steward.
-
-4.3. Modified Versions.
-
-When You are an Initial Developer and You want to create a
-new license for Your Original Software, You may create and
-use a modified version of this License if You: (a) rename
-the license and remove any references to the name of the
-license steward (except to note that the license differs
-from this License); and (b) otherwise make it clear that
-the license contains terms which differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
-BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
-SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
-PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
-COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
-INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
-ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
-WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
-ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
-DISCLAIMER.
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will
-terminate automatically if You fail to comply with terms
-herein and fail to cure such breach within 30 days of
-becoming aware of the breach. Provisions which, by their
-nature, must remain in effect beyond the termination of
-this License shall survive.
-
-6.2. If You assert a patent infringement claim (excluding
-declaratory judgment actions) against Initial Developer or
-a Contributor (the Initial Developer or Contributor against
-whom You assert such claim is referred to as "Participant")
-alleging that the Participant Software (meaning the
-Contributor Version where the Participant is a Contributor
-or the Original Software where the Participant is the
-Initial Developer) directly or indirectly infringes any
-patent, then any and all rights granted directly or
-indirectly to You by such Participant, the Initial
-Developer (if the Initial Developer is not the Participant)
-and all Contributors under Sections 2.1 and/or 2.2 of this
-License shall, upon 60 days notice from Participant
-terminate prospectively and automatically at the expiration
-of such 60 day notice period, unless if within such 60 day
-period You withdraw Your claim with respect to the
-Participant Software against such Participant either
-unilaterally or pursuant to a written agreement with
-Participant.
-
-6.3. In the event of termination under Sections 6.1 or 6.2
-above, all end user licenses that have been validly granted
-by You or any distributor hereunder prior to termination
-(excluding licenses granted to You by any distributor)
-shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
-INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
-COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
-LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
-CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
-LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
-STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
-INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
-INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
-APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
-NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
-CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
-APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a "commercial item," as that term is
-defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
-computer software" (as that term is defined at 48 C.F.R. $
-252.227-7014(a)(1)) and "commercial computer software
-documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
-1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
-through 227.7202-4 (June 1995), all U.S. Government End Users
-acquire Covered Software with only those rights set forth herein.
-This U.S. Government Rights clause is in lieu of, and supersedes,
-any other FAR, DFAR, or other clause or provision that addresses
-Government rights in computer software under this License.
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject
-matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the
-extent necessary to make it enforceable. This License shall be
-governed by the law of the jurisdiction specified in a notice
-contained within the Original Software (except to the extent
-applicable law, if any, provides otherwise), excluding such
-jurisdiction's conflict-of-law provisions. Any litigation
-relating to this License shall be subject to the jurisdiction of
-the courts located in the jurisdiction and venue specified in a
-notice contained within the Original Software, with the losing
-party responsible for costs, including, without limitation, court
-costs and reasonable attorneys' fees and expenses. The
-application of the United Nations Convention on Contracts for the
-International Sale of Goods is expressly excluded. Any law or
-regulation which provides that the language of a contract shall
-be construed against the drafter shall not apply to this License.
-You agree that You alone are responsible for compliance with the
-United States export administration regulations (and the export
-control laws and regulation of any other countries) when You use,
-distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is
-responsible for claims and damages arising, directly or
-indirectly, out of its utilization of rights under this License
-and You agree to work with Initial Developer and Contributors to
-distribute such responsibility on an equitable basis. Nothing
-herein is intended or shall be deemed to constitute any admission
-of liability.
-
-==
-
-For javax.annotation-api (https://jcp.org/en/jsr/detail?id=250):
-This is licensed under the CDDL 1.0, see above.
-
-==
-
-For javax.ws.rs-api (https://jax-rs-spec.java.net/):
-This is licensed under the CDDL 1.0, see above.
-
-==
-
-For Joda Time (http://www.joda.org/joda-time/):
-This is licensed under the AL 2.0, see above.
-
-==
-
-For StAX2 API (http://wiki.fasterxml.com/WoodstoxStax2):
-This is licensed under the BSD license:
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this 
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, 
-this list of conditions and the following disclaimer in the documentation 
-and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors 
-may be used to endorse or promote products derived from this software without 
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-==
-
-For Woodstox (http://wiki.fasterxml.com/WoodstoxHome):
-This is licensed under the AL 2.0, see above.
-
-==
-
-For Simple Logging Facade for Java - SLF4J (http://www.slf4j.org/):
-This is licensed under the MIT license:
-
- Permission is hereby granted, free  of charge, to any person obtaining
- a  copy  of this  software  and  associated  documentation files  (the
- "Software"), to  deal in  the Software without  restriction, including
- without limitation  the rights to  use, copy, modify,  merge, publish,
- distribute,  sublicense, and/or sell  copies of  the Software,  and to
- permit persons to whom the Software  is furnished to do so, subject to
- the following conditions:
- 
- The  above  copyright  notice  and  this permission  notice  shall  be
- included in all copies or substantial portions of the Software.
- 
- THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
- EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
- MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-==
-
-For Jsoup (https://jsoup.org/):
-This is licensed under the MIT license, see above.
-
-==
-
-For Eclipse Equinox (http://projects.eclipse.org/projects/rt.equinox):
-This is licensed under the EPL 1.0:
-
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-   distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-    i) changes to the Program, and
-   ii) additions to the Program;
-
-   where such changes and/or additions to the Program originate from and are
-   distributed by that particular Contributor. A Contribution 'originates'
-   from a Contributor if it was added to the Program by such Contributor
-   itself or anyone acting on such Contributor's behalf. Contributions do not
-   include additions to the Program which: (i) are separate modules of
-   software distributed in conjunction with the Program under their own
-   license agreement, and (ii) are not derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this
-Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-2. GRANT OF RIGHTS
-  a) Subject to the terms of this Agreement, each Contributor hereby grants
-     Recipient a non-exclusive, worldwide, royalty-free copyright license to
-     reproduce, prepare derivative works of, publicly display, publicly
-     perform, distribute and sublicense the Contribution of such Contributor,
-     if any, and such derivative works, in source code and object code form.
-  b) Subject to the terms of this Agreement, each Contributor hereby grants
-     Recipient a non-exclusive, worldwide, royalty-free patent license under
-     Licensed Patents to make, use, sell, offer to sell, import and otherwise
-     transfer the Contribution of such Contributor, if any, in source code and
-     object code form. This patent license shall apply to the combination of
-     the Contribution and the Program if, at the time the Contribution is
-     added by the Contributor, such addition of the Contribution causes such
-     combination to be covered by the Licensed Patents. The patent license
-     shall not apply to any other combinations which include the Contribution.
-     No hardware per se is licensed hereunder.
-  c) Recipient understands that although each Contributor grants the licenses
-     to its Contributions set forth herein, no assurances are provided by any
-     Contributor that the Program does not infringe the patent or other
-     intellectual property rights of any other entity. Each Contributor
-     disclaims any liability to Recipient for claims brought by any other
-     entity based on infringement of intellectual property rights or
-     otherwise. As a condition to exercising the rights and licenses granted
-     hereunder, each Recipient hereby assumes sole responsibility to secure
-     any other intellectual property rights needed, if any. For example, if a
-     third party patent license is required to allow Recipient to distribute
-     the Program, it is Recipient's responsibility to acquire that license
-     before distributing the Program.
-  d) Each Contributor represents that to its knowledge it has sufficient
-     copyright rights in its Contribution, if any, to grant the copyright
-     license set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under
-its own license agreement, provided that:
-
-  a) it complies with the terms and conditions of this Agreement; and
-  b) its license agreement:
-      i) effectively disclaims on behalf of all Contributors all warranties
-         and conditions, express and implied, including warranties or
-         conditions of title and non-infringement, and implied warranties or
-         conditions of merchantability and fitness for a particular purpose;
-     ii) effectively excludes on behalf of all Contributors all liability for
-         damages, including direct, indirect, special, incidental and
-         consequential damages, such as lost profits;
-    iii) states that any provisions which differ from this Agreement are
-         offered by that Contributor alone and not by any other party; and
-     iv) states that source code for the Program is available from such
-         Contributor, and informs licensees how to obtain it in a reasonable
-         manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-  a) it must be made available under this Agreement; and
-  b) a copy of this Agreement must be included with each copy of the Program.
-     Contributors may not remove or alter any copyright notices contained
-     within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution,
-if
-any, in a manner that reasonably allows subsequent Recipients to identify the
-originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor who
-includes the Program in a commercial product offering should do so in a manner
-which does not create potential liability for other Contributors. Therefore,
-if a Contributor includes the Program in a commercial product offering, such
-Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses,
-damages and costs (collectively "Losses") arising from claims, lawsuits and
-other legal actions brought by a third party against the Indemnified
-Contributor to the extent caused by the acts or omissions of such Commercial
-Contributor in connection with its distribution of the Program in a commercial
-product offering. The obligations in this section do not apply to any claims
-or Losses relating to any actual or alleged intellectual property
-infringement. In order to qualify, an Indemnified Contributor must:
-a) promptly notify the Commercial Contributor in writing of such claim, and
-b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement
-negotiations. The Indemnified Contributor may participate in any such claim at
-its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If
-that Commercial Contributor then makes performance claims, or offers
-warranties related to Product X, those performance claims and warranties are
-such Commercial Contributor's responsibility alone. Under this section, the
-Commercial Contributor would have to defend claims against the other
-Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
-IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
-Recipient is solely responsible for determining the appropriateness of using
-and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the
-risks and costs of program errors, compliance with applicable laws, damage to
-or loss of data, programs or equipment, and unavailability or interruption of
-operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
-LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
-EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of the
-remainder of the terms of this Agreement, and without further action by the
-parties hereto, such provision shall be reformed to the minimum extent
-necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware)
-infringes such Recipient's patent(s), then such Recipient's rights granted
-under Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and does
-not cure such failure in a reasonable period of time after becoming aware of
-such noncompliance. If all Recipient's rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as
-reasonably practicable. However, Recipient's obligations under this Agreement
-and any licenses granted by Recipient relating to the Program shall continue
-and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in
-order to avoid inconsistency the Agreement is copyrighted and may only be
-modified in the following manner. The Agreement Steward reserves the right to
-publish new versions (including revisions) of this Agreement from time to
-time. No one other than the Agreement Steward has the right to modify this
-Agreement. The Eclipse Foundation is the initial Agreement Steward. The
-Eclipse Foundation may assign the responsibility to serve as the Agreement
-Steward to a suitable separate entity. Each new version of the Agreement will
-be given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version of the
-Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly
-stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
-licenses to the intellectual property of any Contributor under this Agreement,
-whether expressly, by implication, estoppel or otherwise. All rights in the
-Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to this
-Agreement will bring a legal action under this Agreement more than one year
-after the cause of action arose. Each party waives its rights to a jury trial in
-any resulting litigation.
-
-==
-
-For Eclipse e4 (https://www.eclipse.org/e4/):
-This is licensed under the EPL 1.0, see above.
-
-==
-
-For Eclipse EMF (https://projects.eclipse.org/projects/modeling.emf.emf):
-This is licensed under the EPL 1.0, see above.
-
-==
-
-For Eclipse SWT (https://projects.eclipse.org/projects/eclipse.platform.swt):
-This is licensed under the EPL 1.0, see above.

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/legal/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/ide/netbeans/legal/META-INF/NOTICE b/ide/netbeans/legal/META-INF/NOTICE
deleted file mode 100644
index 34ffa8c..0000000
--- a/ide/netbeans/legal/META-INF/NOTICE
+++ /dev/null
@@ -1,80 +0,0 @@
-Apache Syncope
-Copyright 2012-2016 The Apache Software Foundation
-
-This product includes software developed by:
-The Apache Software Foundation (http://www.apache.org/).
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-==
-
-This product includes software developed by the Jackson project.
-
-==
-
-This product includes software developed by the JAXB project.
-Copyright (c) 2013-2016 The JAXB project.
-
-==
-
-This product includs software developed by Oracle.
-Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved.
-
-==
-
-This product includes software developed by the JAX-RS project.
-Copyright (c) 2014, Oracle Corporation and/or its affiliates. All rights reserved.
-
-==
-
-This product includes software developed by the Joda Time project.
-Copyright (c) 2002-2016 Joda.org. All Rights Reserved.
-
-==
-
-This product includes software developed by the Stax 2 Extension API Project.
-
-==
-
-This product includes software developed by the Woodstox Project.
-
-==
-
-This products includes software developed by the Simple Logging Facade for Java (SLF4J) project.
-Copyright (c) 2004-2016 QOS.ch.
-
-==
-
-This product includes software developed by the Web Services Description Language for Java project.
-Copyright (c) Dice.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Eclipse Equinox project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Eclipse e4 project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Eclipse EMF project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved
-
-==
-
-This product includes software developed by the Eclipse SWT project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Jsoup project.
-Copyright (c) 2009 - 2016 Jonathan Hedley (jonathan@hedley.net)

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/nb-configuration.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/nb-configuration.xml b/ide/netbeans/nb-configuration.xml
index ec22826..93c2817 100644
--- a/ide/netbeans/nb-configuration.xml
+++ b/ide/netbeans/nb-configuration.xml
@@ -19,18 +19,18 @@ under the License.
 -->
 <project-shared-configuration>
     <!--
-This file contains additional configuration written by modules in the NetBeans IDE.
-The configuration is intended to be shared among all the users of project and
-therefore it is assumed to be part of version control checkout.
-Without this configuration present, some functionality in the IDE may be limited or fail altogether.
--->
+  This file contains additional configuration written by modules in the NetBeans IDE.
+  The configuration is intended to be shared among all the users of project and
+  therefore it is assumed to be part of version control checkout.
+  Without this configuration present, some functionality in the IDE may be limited or fail altogether.
+  -->
     <properties xmlns="http://www.netbeans.org/ns/maven-properties-data/1">
         <!--
-Properties that influence various parts of the IDE, especially code formatting and the like. 
-You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
-That way multiple projects can share the same settings (useful for formatting rules for example).
-Any value defined here will override the pom.xml file value but is only applicable to the current project.
--->
+    Properties that influence various parts of the IDE, especially code formatting and the like. 
+    You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
+    That way multiple projects can share the same settings (useful for formatting rules for example).
+    Any value defined here will override the pom.xml file value but is only applicable to the current project.
+    -->
         <org-netbeans-modules-javascript2-requirejs.enabled>true</org-netbeans-modules-javascript2-requirejs.enabled>
     </properties>
 </project-shared-configuration>


[05/50] [abbrv] syncope git commit: [SYNCOPE-1020] Implementation completed: now several sub-processes can be managed besides the main workflow definition; for both Activiti and Flowable

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
index 3b82340..82b9057 100644
--- a/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
+++ b/core/workflow-flowable/src/main/java/org/apache/syncope/core/workflow/flowable/FlowableUserWorkflowAdapter.java
@@ -32,7 +32,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import javax.annotation.Resource;
-import javax.ws.rs.NotFoundException;
 import org.activiti.bpmn.converter.BpmnXMLConverter;
 import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.editor.constants.ModelDataJsonConstants;
@@ -46,11 +45,13 @@ import org.activiti.engine.history.HistoricDetail;
 import org.activiti.engine.history.HistoricTaskInstance;
 import org.activiti.engine.impl.persistence.entity.HistoricFormPropertyEntity;
 import org.activiti.engine.query.Query;
+import org.activiti.engine.repository.Deployment;
 import org.activiti.engine.repository.Model;
 import org.activiti.engine.repository.ProcessDefinition;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Transformer;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -59,6 +60,7 @@ import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.to.WorkflowFormPropertyTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
@@ -68,6 +70,7 @@ import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.spring.BeanUtils;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidEntityException;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
@@ -83,14 +86,12 @@ import org.springframework.transaction.annotation.Transactional;
  */
 public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
+    protected static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
     protected static final String[] PROPERTY_IGNORE_PROPS = { "type" };
 
     public static final String WF_PROCESS_ID = "userWorkflow";
 
-    public static final String WF_PROCESS_RESOURCE = "userWorkflow.bpmn20.xml";
-
-    public static final String WF_DGRM_RESOURCE = "userWorkflow.userWorkflow.png";
-
     public static final String USER = "user";
 
     public static final String WF_EXECUTOR = "wfExecutor";
@@ -128,14 +129,14 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     @Resource(name = "adminUser")
     protected String adminUser;
 
+    @Autowired
+    protected DomainProcessEngine engine;
+
     @Override
     public boolean supportsDefinitionEdit() {
         return true;
     }
 
-    @Autowired
-    protected DomainProcessEngine engine;
-
     @Override
     public String getPrefix() {
         return "ACT_";
@@ -464,128 +465,22 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         return new WorkflowResult<>(updated.getKey(), null, performedTasks);
     }
 
-    protected ProcessDefinition getProcessDefinition() {
-        try {
-            return engine.getRepositoryService().createProcessDefinitionQuery().
-                    processDefinitionKey(FlowableUserWorkflowAdapter.WF_PROCESS_ID).latestVersion().singleResult();
-        } catch (ActivitiException e) {
-            throw new WorkflowException("While accessing process " + FlowableUserWorkflowAdapter.WF_PROCESS_ID, e);
-        }
-
-    }
-
-    protected Model getModel(final ProcessDefinition procDef) {
-        try {
-            Model model = engine.getRepositoryService().createModelQuery().
-                    deploymentId(procDef.getDeploymentId()).singleResult();
-            if (model == null) {
-                throw new NotFoundException("Could not find Model for deployment " + procDef.getDeploymentId());
-            }
-            return model;
-        } catch (Exception e) {
-            throw new WorkflowException("While accessing process " + FlowableUserWorkflowAdapter.WF_PROCESS_ID, e);
-        }
-    }
-
-    protected void exportProcessResource(final String resourceName, final OutputStream os) {
-        ProcessDefinition procDef = getProcessDefinition();
-
-        InputStream procDefIS = engine.getRepositoryService().getResourceAsStream(procDef.getDeploymentId(),
-                resourceName);
-        try {
-            IOUtils.copy(procDefIS, os);
-        } catch (IOException e) {
-            LOG.error("While exporting workflow definition {}", procDef.getKey(), e);
-        } finally {
-            IOUtils.closeQuietly(procDefIS);
-        }
-    }
-
-    protected void exportProcessModel(final OutputStream os) {
-        Model model = getModel(getProcessDefinition());
-
-        ObjectMapper objectMapper = new ObjectMapper();
-        try {
-            ObjectNode modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
-            modelNode.put(ModelDataJsonConstants.MODEL_ID, model.getId());
-            modelNode.replace(MODEL_DATA_JSON_MODEL,
-                    objectMapper.readTree(engine.getRepositoryService().getModelEditorSource(model.getId())));
-
-            os.write(modelNode.toString().getBytes());
-        } catch (IOException e) {
-            LOG.error("While exporting workflow definition {}", model.getId(), e);
-        }
-    }
-
-    @Override
-    public void exportDefinition(final WorkflowDefinitionFormat format, final OutputStream os) {
-        switch (format) {
-            case JSON:
-                exportProcessModel(os);
-                break;
-
-            case XML:
-            default:
-                exportProcessResource(WF_PROCESS_RESOURCE, os);
-        }
-    }
-
-    @Override
-    public void exportDiagram(final OutputStream os) {
-        exportProcessResource(WF_DGRM_RESOURCE, os);
-    }
-
-    @Override
-    public void importDefinition(final WorkflowDefinitionFormat format, final String definition) {
-        Model model = getModel(getProcessDefinition());
-        switch (format) {
-            case JSON:
-                JsonNode definitionNode;
-                try {
-                    definitionNode = new ObjectMapper().readTree(definition);
-                    if (definitionNode.has(MODEL_DATA_JSON_MODEL)) {
-                        definitionNode = definitionNode.get(MODEL_DATA_JSON_MODEL);
-                    }
-                    if (!definitionNode.has(BpmnJsonConverter.EDITOR_CHILD_SHAPES)) {
-                        throw new IllegalArgumentException(
-                                "Could not find JSON node " + BpmnJsonConverter.EDITOR_CHILD_SHAPES);
-                    }
-
-                    BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(definitionNode);
-                    FlowableImportUtils.fromXML(engine, new BpmnXMLConverter().convertToXML(bpmnModel));
-                } catch (Exception e) {
-                    throw new WorkflowException("While updating process "
-                            + FlowableUserWorkflowAdapter.WF_PROCESS_RESOURCE, e);
-                }
-
-                FlowableImportUtils.fromJSON(
-                        engine, definitionNode.toString().getBytes(), getProcessDefinition(), model);
-                break;
-
-            case XML:
-            default:
-                FlowableImportUtils.fromXML(engine, definition.getBytes());
-
-                FlowableImportUtils.fromJSON(engine, getProcessDefinition(), model);
-        }
-    }
-
-    protected WorkflowFormPropertyType fromFlowableFormType(final FormType flowableFormType) {
+    protected WorkflowFormPropertyType fromActivitiFormType(final FormType activitiFormType) {
         WorkflowFormPropertyType result = WorkflowFormPropertyType.String;
 
-        if ("string".equals(flowableFormType.getName())) {
+        if ("string".equals(activitiFormType.getName())) {
             result = WorkflowFormPropertyType.String;
         }
-        if ("long".equals(flowableFormType.getName())) {
+        if ("long".equals(activitiFormType.getName())) {
             result = WorkflowFormPropertyType.Long;
         }
-        if ("enum".equals(flowableFormType.getName())) {
+        if ("enum".equals(activitiFormType.getName())) {
             result = WorkflowFormPropertyType.Enum;
         }
-        if ("date".equals(flowableFormType.getName())) {
+        if ("date".equals(activitiFormType.getName())) {
             result = WorkflowFormPropertyType.Date;
         }
-        if ("boolean".equals(flowableFormType.getName())) {
+        if ("boolean".equals(activitiFormType.getName())) {
             result = WorkflowFormPropertyType.Boolean;
         }
 
@@ -680,7 +575,7 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
         for (FormProperty fProp : properties) {
             WorkflowFormPropertyTO propertyTO = new WorkflowFormPropertyTO();
             BeanUtils.copyProperties(fProp, propertyTO, PROPERTY_IGNORE_PROPS);
-            propertyTO.setType(fromFlowableFormType(fProp.getType()));
+            propertyTO.setType(fromActivitiFormType(fProp.getType()));
 
             if (propertyTO.getType() == WorkflowFormPropertyType.Date) {
                 propertyTO.setDatePattern((String) fProp.getType().getInformation("datePattern"));
@@ -782,14 +677,14 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
                 throw new ActivitiException("NULL result");
             }
         } catch (ActivitiException e) {
-            throw new NotFoundException("Flowable Task " + taskId, e);
+            throw new NotFoundException("Activiti Task " + taskId, e);
         }
 
         TaskFormData formData;
         try {
             formData = engine.getFormService().getTaskFormData(task.getId());
         } catch (ActivitiException e) {
-            throw new NotFoundException("Form for Flowable Task " + taskId, e);
+            throw new NotFoundException("Form for Activiti Task " + taskId, e);
         }
 
         if (!adminUser.equals(authUser)) {
@@ -884,4 +779,173 @@ public class FlowableUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
 
         return new WorkflowResult<>(userPatch, propByRes, postTasks);
     }
+
+    protected Model getModel(final ProcessDefinition procDef) {
+        try {
+            Model model = engine.getRepositoryService().createModelQuery().
+                    deploymentId(procDef.getDeploymentId()).singleResult();
+            if (model == null) {
+                throw new NotFoundException("Could not find Model for deployment " + procDef.getDeploymentId());
+            }
+            return model;
+        } catch (Exception e) {
+            throw new WorkflowException("While accessing process " + procDef.getKey(), e);
+        }
+    }
+
+    @Override
+    public List<WorkflowDefinitionTO> getDefinitions() {
+        try {
+            return CollectionUtils.collect(
+                    engine.getRepositoryService().createProcessDefinitionQuery().latestVersion().list(),
+                    new Transformer<ProcessDefinition, WorkflowDefinitionTO>() {
+
+                @Override
+                public WorkflowDefinitionTO transform(final ProcessDefinition procDef) {
+                    WorkflowDefinitionTO defTO = new WorkflowDefinitionTO();
+                    defTO.setKey(procDef.getKey());
+                    defTO.setName(procDef.getName());
+
+                    try {
+                        defTO.setModelId(getModel(procDef).getId());
+                    } catch (NotFoundException e) {
+                        LOG.warn("No model found for definition {}, ignoring", procDef.getDeploymentId(), e);
+                    }
+
+                    defTO.setMain(WF_PROCESS_ID.equals(procDef.getKey()));
+
+                    return defTO;
+                }
+            }, new ArrayList<WorkflowDefinitionTO>());
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While listing available process definitions", e);
+        }
+    }
+
+    protected ProcessDefinition getProcessDefinitionByKey(final String key) {
+        try {
+            return engine.getRepositoryService().createProcessDefinitionQuery().
+                    processDefinitionKey(key).latestVersion().singleResult();
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While accessing process " + key, e);
+        }
+
+    }
+
+    protected ProcessDefinition getProcessDefinitionByDeploymentId(final String deploymentId) {
+        try {
+            return engine.getRepositoryService().createProcessDefinitionQuery().
+                    deploymentId(deploymentId).latestVersion().singleResult();
+        } catch (ActivitiException e) {
+            throw new WorkflowException("While accessing deployment " + deploymentId, e);
+        }
+
+    }
+
+    protected void exportProcessModel(final String key, final OutputStream os) {
+        Model model = getModel(getProcessDefinitionByKey(key));
+
+        try {
+            ObjectNode modelNode = (ObjectNode) OBJECT_MAPPER.readTree(model.getMetaInfo());
+            modelNode.put(ModelDataJsonConstants.MODEL_ID, model.getId());
+            modelNode.replace(MODEL_DATA_JSON_MODEL,
+                    OBJECT_MAPPER.readTree(engine.getRepositoryService().getModelEditorSource(model.getId())));
+
+            os.write(modelNode.toString().getBytes());
+        } catch (IOException e) {
+            LOG.error("While exporting workflow definition {}", model.getId(), e);
+        }
+    }
+
+    protected void exportProcessResource(final String deploymentId, final String resourceName, final OutputStream os) {
+        InputStream procDefIS = engine.getRepositoryService().
+                getResourceAsStream(deploymentId, resourceName);
+        try {
+            IOUtils.copy(procDefIS, os);
+        } catch (IOException e) {
+            LOG.error("While exporting {}", resourceName, e);
+        } finally {
+            IOUtils.closeQuietly(procDefIS);
+        }
+    }
+
+    @Override
+    public void exportDefinition(final String key, final WorkflowDefinitionFormat format, final OutputStream os) {
+        switch (format) {
+            case JSON:
+                exportProcessModel(key, os);
+                break;
+
+            case XML:
+            default:
+                ProcessDefinition procDef = getProcessDefinitionByKey(key);
+                exportProcessResource(procDef.getDeploymentId(), procDef.getResourceName(), os);
+        }
+    }
+
+    @Override
+    public void exportDiagram(final String key, final OutputStream os) {
+        ProcessDefinition procDef = getProcessDefinitionByKey(key);
+        if (procDef == null) {
+            throw new NotFoundException("Workflow process definition for " + key);
+        }
+        exportProcessResource(procDef.getDeploymentId(), procDef.getDiagramResourceName(), os);
+    }
+
+    @Override
+    public void importDefinition(final String key, final WorkflowDefinitionFormat format, final String definition) {
+        ProcessDefinition procDef = getProcessDefinitionByKey(key);
+        String resourceName = procDef == null ? key + ".bpmn20.xml" : procDef.getResourceName();
+        Deployment deployment;
+        switch (format) {
+            case JSON:
+                JsonNode definitionNode;
+                try {
+                    definitionNode = OBJECT_MAPPER.readTree(definition);
+                    if (definitionNode.has(MODEL_DATA_JSON_MODEL)) {
+                        definitionNode = definitionNode.get(MODEL_DATA_JSON_MODEL);
+                    }
+                    if (!definitionNode.has(BpmnJsonConverter.EDITOR_CHILD_SHAPES)) {
+                        throw new IllegalArgumentException(
+                                "Could not find JSON node " + BpmnJsonConverter.EDITOR_CHILD_SHAPES);
+                    }
+
+                    BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(definitionNode);
+                    deployment = FlowableDeployUtils.deployDefinition(
+                            engine,
+                            resourceName,
+                            new BpmnXMLConverter().convertToXML(bpmnModel));
+                } catch (Exception e) {
+                    throw new WorkflowException("While creating or updating process " + key, e);
+                }
+                break;
+
+            case XML:
+            default:
+                deployment = FlowableDeployUtils.deployDefinition(
+                        engine,
+                        resourceName,
+                        definition.getBytes());
+        }
+
+        procDef = getProcessDefinitionByDeploymentId(deployment.getId());
+        if (!key.equals(procDef.getKey())) {
+            throw new WorkflowException("Mismatching key: expected " + key + ", found " + procDef.getKey());
+        }
+        FlowableDeployUtils.deployModel(engine, procDef);
+    }
+
+    @Override
+    public void deleteDefinition(final String key) {
+        ProcessDefinition procDef = getProcessDefinitionByKey(key);
+        if (WF_PROCESS_ID.equals(procDef.getKey())) {
+            throw new WorkflowException("Cannot delete the main process " + WF_PROCESS_ID);
+        }
+
+        try {
+            engine.getRepositoryService().deleteDeployment(procDef.getDeploymentId());
+        } catch (Exception e) {
+            throw new WorkflowException("While deleting " + key, e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractAnyObjectWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractAnyObjectWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractAnyObjectWorkflowAdapter.java
index 34f1a0c..df35de5 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractAnyObjectWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractAnyObjectWorkflowAdapter.java
@@ -25,12 +25,14 @@ import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
 import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
+import org.apache.syncope.core.workflow.api.AnyObjectWorkflowDefinitionAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = { Throwable.class })
-public abstract class AbstractAnyObjectWorkflowAdapter implements AnyObjectWorkflowAdapter {
+public abstract class AbstractAnyObjectWorkflowAdapter
+        implements AnyObjectWorkflowAdapter, AnyObjectWorkflowDefinitionAdapter {
 
     @Autowired
     protected AnyObjectDataBinder dataBinder;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractGroupWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractGroupWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractGroupWorkflowAdapter.java
index 952edb2..7b1fd3e 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractGroupWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractGroupWorkflowAdapter.java
@@ -25,12 +25,13 @@ import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
+import org.apache.syncope.core.workflow.api.GroupWorkflowDefinitionAdapter;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = { Throwable.class })
-public abstract class AbstractGroupWorkflowAdapter implements GroupWorkflowAdapter {
+public abstract class AbstractGroupWorkflowAdapter implements GroupWorkflowAdapter, GroupWorkflowDefinitionAdapter {
 
     @Autowired
     protected GroupDataBinder dataBinder;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
index 546d03b..48c6d60 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/AbstractUserWorkflowAdapter.java
@@ -27,6 +27,7 @@ import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.WorkflowResult;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
 import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
+import org.apache.syncope.core.workflow.api.UserWorkflowDefinitionAdapter;
 import org.identityconnectors.common.Base64;
 import org.identityconnectors.common.security.EncryptorFactory;
 import org.slf4j.Logger;
@@ -36,7 +37,7 @@ import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = { Throwable.class })
-public abstract class AbstractUserWorkflowAdapter implements UserWorkflowAdapter {
+public abstract class AbstractUserWorkflowAdapter implements UserWorkflowAdapter, UserWorkflowDefinitionAdapter {
 
     protected static final Logger LOG = LoggerFactory.getLogger(UserWorkflowAdapter.class);
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
index 90bf7e0..0a866f6 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultAnyObjectWorkflowAdapter.java
@@ -23,6 +23,7 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.syncope.common.lib.patch.AnyObjectPatch;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
@@ -73,37 +74,47 @@ public class DefaultAnyObjectWorkflowAdapter extends AbstractAnyObjectWorkflowAd
     }
 
     @Override
-    public void exportDefinition(final WorkflowDefinitionFormat format, final OutputStream os) {
+    public List<WorkflowFormTO> getForms() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public WorkflowFormTO getForm(final String workflowId) {
+        return null;
+    }
+
+    @Override
+    public WorkflowFormTO claimForm(final String taskId) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public void exportDiagram(final OutputStream os) {
+    public WorkflowResult<AnyObjectPatch> submitForm(final WorkflowFormTO form) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public void importDefinition(final WorkflowDefinitionFormat format, final String definition) {
+    public List<WorkflowDefinitionTO> getDefinitions() {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public List<WorkflowFormTO> getForms() {
-        return Collections.emptyList();
+    public void exportDefinition(final String key, final WorkflowDefinitionFormat format, final OutputStream os) {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowFormTO getForm(final String workflowId) {
-        return null;
+    public void exportDiagram(final String key, final OutputStream os) {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowFormTO claimForm(final String taskId) {
+    public void importDefinition(final String key, final WorkflowDefinitionFormat format, final String definition) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowResult<AnyObjectPatch> submitForm(final WorkflowFormTO form) {
+    public void deleteDefinition(final String key) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
index 6036700..6763138 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultGroupWorkflowAdapter.java
@@ -23,6 +23,7 @@ import java.util.Collections;
 import java.util.List;
 import org.apache.syncope.common.lib.patch.GroupPatch;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
@@ -73,38 +74,47 @@ public class DefaultGroupWorkflowAdapter extends AbstractGroupWorkflowAdapter {
     }
 
     @Override
-    public void exportDefinition(final WorkflowDefinitionFormat format, final OutputStream os) {
-        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
+    public List<WorkflowFormTO> getForms() {
+        return Collections.emptyList();
     }
 
     @Override
-    public void exportDiagram(final OutputStream os) {
+    public WorkflowFormTO getForm(final String workflowId) {
+        return null;
+    }
+
+    @Override
+    public WorkflowFormTO claimForm(final String taskId) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public void importDefinition(final WorkflowDefinitionFormat format, final String definition) {
+    public WorkflowResult<GroupPatch> submitForm(final WorkflowFormTO form) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public List<WorkflowFormTO> getForms() {
-        return Collections.emptyList();
+    public List<WorkflowDefinitionTO> getDefinitions() {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowFormTO getForm(final String workflowId) {
-        return null;
+    public void exportDefinition(final String key, final WorkflowDefinitionFormat format, final OutputStream os) {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowFormTO claimForm(final String taskId) {
+    public void exportDiagram(final String key, final OutputStream os) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowResult<GroupPatch> submitForm(final WorkflowFormTO form) {
+    public void importDefinition(final String key, final WorkflowDefinitionFormat format, final String definition) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
+    @Override
+    public void deleteDefinition(final String key) {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
----------------------------------------------------------------------
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
index f4fd4ca..d389e28 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/DefaultUserWorkflowAdapter.java
@@ -27,6 +27,7 @@ import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.patch.PasswordPatch;
 import org.apache.syncope.common.lib.patch.UserPatch;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.to.WorkflowFormTO;
 import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.common.lib.types.ResourceOperation;
@@ -178,43 +179,52 @@ public class DefaultUserWorkflowAdapter extends AbstractUserWorkflowAdapter {
     }
 
     @Override
-    public void exportDefinition(final WorkflowDefinitionFormat format, final OutputStream os) {
-        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
+    public List<WorkflowFormTO> getForms() {
+        return Collections.emptyList();
     }
 
     @Override
-    public void exportDiagram(final OutputStream os) {
+    public WorkflowFormTO getForm(final String workflowId) {
+        return null;
+    }
+
+    @Override
+    public WorkflowFormTO claimForm(final String taskId) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public void importDefinition(final WorkflowDefinitionFormat format, final String definition) {
+    public WorkflowResult<UserPatch> submitForm(final WorkflowFormTO form) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public List<WorkflowFormTO> getForms() {
-        return Collections.emptyList();
+    public WorkflowResult<String> requestCertify(final User user) {
+        throw new UnsupportedOperationException("Not supported.");
     }
 
     @Override
-    public WorkflowFormTO getForm(final String workflowId) {
-        return null;
+    public List<WorkflowDefinitionTO> getDefinitions() {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowFormTO claimForm(final String taskId) {
+    public void exportDefinition(final String key, final WorkflowDefinitionFormat format, final OutputStream os) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowResult<UserPatch> submitForm(final WorkflowFormTO form) {
+    public void exportDiagram(final String key, final OutputStream os) {
         throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
     @Override
-    public WorkflowResult<String> requestCertify(final User user) {
-        throw new UnsupportedOperationException("Not supported.");
+    public void importDefinition(final String key, final WorkflowDefinitionFormat format, final String definition) {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
     }
 
+    @Override
+    public void deleteDefinition(final String key) {
+        throw new WorkflowException(new UnsupportedOperationException("Not supported."));
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index a75d2e2..ec549e6 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -157,8 +157,8 @@ under the License.
                 </copy>
                 <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" match="ORYX.CONFIG.ROOT_PATH =.*&quot;editor/&quot;; //TODO: Remove last slash!!" replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&quot;;" byline="true" />
                 <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="new Ajax.Request(ACTIVITI.CONFIG.contextRoot + '/editor/stencilset?version=' + Date.now(), {" value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) + &quot;/activiti-modeler/stencilset.json&quot;, {" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl(modelUrl);" value="modelUrl = BASE_PATH + &quot;/workflowDefGET&quot;; ORYX.Editor.createByUrl(modelUrl);" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl = function(modelUrl){" value="modelUrl = BASE_PATH + &quot;/workflowDefGET&quot;; ORYX.Editor.createByUrl = function(modelUrl){" />                
+                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl(modelUrl);" value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl(modelUrl);" />
+                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl = function(modelUrl){" value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />                
                 <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js" token="window.location.href = &quot;./&quot;;" value="window.close();" />
                                                
                 <copy file="${basedir}/src/main/resources/url-config.js" todir="${activiti-modeler.directory}/editor-app/configuration" overwrite="true" />

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/fit/console-reference/src/main/resources/url-config.js
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/url-config.js b/fit/console-reference/src/main/resources/url-config.js
index 89a91d7..8019a6e 100644
--- a/fit/console-reference/src/main/resources/url-config.js
+++ b/fit/console-reference/src/main/resources/url-config.js
@@ -21,7 +21,7 @@ var KISBPM = KISBPM || {};
 KISBPM.URL = {
   getModel: function (modelId) {
     return window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) 
-            + "/workflowDefGET";
+            + "/workflowDefGET?modelId=" + modelId;
   },
   getStencilSet: function () {
     return window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) 
@@ -29,6 +29,6 @@ KISBPM.URL = {
   },
   putModel: function (modelId) {
     return window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) 
-            + "/workflowDefPUT";
+            + "/workflowDefPUT?modelId" + modelId;
   }
 };

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/fit/core-reference/src/test/java/org/apache/syncope/fit/core/WorkflowITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/WorkflowITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/WorkflowITCase.java
index 89f4190..529c13e 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/WorkflowITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/WorkflowITCase.java
@@ -28,52 +28,55 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import javax.ws.rs.core.Response;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
 import org.apache.commons.io.IOUtils;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.fit.AbstractITCase;
 import org.junit.Assume;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 public class WorkflowITCase extends AbstractITCase {
 
-    private void exportDefinition(final AnyTypeKind type) throws IOException {
-        Response response = workflowService.exportDefinition(type);
-        assertTrue(response.getMediaType().toString().
-                startsWith(clientFactory.getContentType().getMediaType().toString()));
-        assertTrue(response.getEntity() instanceof InputStream);
-        String definition = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
-        assertNotNull(definition);
-        assertFalse(definition.isEmpty());
-    }
+    private static String defaultUserKey = null;
 
-    @Test
-    public void exportUserDefinition() throws IOException {
+    @BeforeClass
+    public static void findDefault() {
         Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers(syncopeService));
-        exportDefinition(AnyTypeKind.USER);
-    }
+        WorkflowDefinitionTO found = IterableUtils.find(
+                workflowService.list(AnyTypeKind.USER.name()), new Predicate<WorkflowDefinitionTO>() {
 
-    @Test
-    public void getGroupDefinition() throws IOException {
-        Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForGroups(syncopeService));
-        exportDefinition(AnyTypeKind.GROUP);
+            @Override
+            public boolean evaluate(final WorkflowDefinitionTO object) {
+                return object.isMain();
+            }
+        });
+        if (found != null) {
+            defaultUserKey = found.getKey();
+        }
+        assertNotNull(defaultUserKey);
     }
 
-    private void importDefinition(final AnyTypeKind type) throws IOException {
-        Response response = workflowService.exportDefinition(type);
+    @Test
+    public void exportUserDefinition() throws IOException {
+        Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers(syncopeService));
+        Response response = workflowService.get(AnyTypeKind.USER.name(), defaultUserKey);
+        assertTrue(response.getMediaType().toString().
+                startsWith(clientFactory.getContentType().getMediaType().toString()));
+        assertTrue(response.getEntity() instanceof InputStream);
         String definition = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
-
-        workflowService.importDefinition(type, definition);
+        assertNotNull(definition);
+        assertFalse(definition.isEmpty());
     }
 
     @Test
     public void updateUserDefinition() throws IOException {
         Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForUsers(syncopeService));
-        importDefinition(AnyTypeKind.USER);
-    }
+        Response response = workflowService.get(AnyTypeKind.USER.name(), defaultUserKey);
+        String definition = IOUtils.toString((InputStream) response.getEntity(), StandardCharsets.UTF_8);
 
-    @Test
-    public void updateGroupDefinition() throws IOException {
-        Assume.assumeTrue(ActivitiDetector.isActivitiEnabledForGroups(syncopeService));
-        importDefinition(AnyTypeKind.GROUP);
+        workflowService.set(AnyTypeKind.USER.name(), defaultUserKey, definition);
     }
 }


[18/50] [abbrv] syncope git commit: Small fixes

Posted by il...@apache.org.
Small fixes


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

Branch: refs/heads/SYNCOPE-808
Commit: 911eeda8e4dcb753e599588cfa85592e3e9b5700
Parents: 8f94d1b
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Apr 13 12:35:34 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Apr 13 12:35:34 2017 +0200

----------------------------------------------------------------------
 .../enduser/util/UserRequestValidatorTest.java  | 39 ++++++++++----------
 deb/enduser/pom.xml                             |  1 -
 .../syncope/ext/saml2lsp/agent/Logout.java      |  3 --
 .../common/lib/to/SAML2ReceivedResponseTO.java  | 11 ------
 .../common/lib/types/SAML2BindingType.java      | 13 ++-----
 .../apache/syncope/core/logic/SAML2SPLogic.java | 11 +++---
 .../core/logic/saml2/SAML2IdPEntity.java        |  2 +-
 .../core/logic/saml2/SAML2ReaderWriter.java     |  5 +--
 8 files changed, 31 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java b/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
index 88c611a..70d4fd3 100644
--- a/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
+++ b/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
@@ -18,6 +18,9 @@
  */
 package org.apache.syncope.client.enduser.util;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.IOException;
@@ -27,21 +30,23 @@ import java.util.Map;
 import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.UserTO;
-import org.junit.Assert;
 import org.junit.Test;
 import org.springframework.core.io.ClassPathResource;
 
 public class UserRequestValidatorTest {
 
+    private AttrTO attrTO(String schemaKey, String... values) {
+        return new AttrTO.Builder().schema(schemaKey).values(values).build();
+    }
+
     @Test
     public void testCompliant() throws IOException {
-
         UserTO userTO = new UserTO();
         // plain
-        AttrTO firstname = buildAttrTO("firstname", "defaultFirstname");
-        AttrTO surname = buildAttrTO("surname", "surnameValue");
-        AttrTO additionalCtype = buildAttrTO("additional#ctype", "ctypeValue");
-        AttrTO notAllowed = buildAttrTO("not_allowed", "notAllowedValue");
+        AttrTO firstname = attrTO("firstname", "defaultFirstname");
+        AttrTO surname = attrTO("surname", "surnameValue");
+        AttrTO additionalCtype = attrTO("additional#ctype", "ctypeValue");
+        AttrTO notAllowed = attrTO("not_allowed", "notAllowedValue");
         userTO.getPlainAttrs().addAll(Arrays.asList(firstname, surname, notAllowed, additionalCtype));
 
         Map<String, CustomAttributesInfo> customForm = new ObjectMapper().readValue(new ClassPathResource(
@@ -49,37 +54,33 @@ public class UserRequestValidatorTest {
         });
 
         // not allowed because of presence of notAllowed attribute
-        Assert.assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
+        assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
 
         // remove notAllowed attribute and make it compliant
         userTO.getPlainAttrs().remove(notAllowed);
-        Assert.assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
+        assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
 
         // firstname must have only one defaultValue
         userTO.getPlainAttrMap().get("firstname").getValues().add("notAllowedFirstnameValue");
-        Assert.assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
-        Assert.assertTrue(UserRequestValidator.compliant(userTO, customForm, false));
+        assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
+        assertTrue(UserRequestValidator.compliant(userTO, customForm, false));
         // clean
         userTO.getPlainAttrMap().get("firstname").getValues().remove("notAllowedFirstnameValue");
 
         // derived must not be present
-        AttrTO derivedNotAllowed = buildAttrTO("derivedNotAllowed");
+        AttrTO derivedNotAllowed = attrTO("derivedNotAllowed");
         userTO.getDerAttrs().add(derivedNotAllowed);
-        Assert.assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
+        assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
         // clean 
         userTO.getDerAttrs().clear();
 
         // virtual
-        AttrTO virtualdata = buildAttrTO("virtualdata", "defaultVirtualData");
+        AttrTO virtualdata = attrTO("virtualdata", "defaultVirtualData");
         userTO.getVirAttrs().add(virtualdata);
-        Assert.assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
+        assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
 
         // with empty form is compliant by definition
-        Assert.assertTrue(UserRequestValidator.compliant(userTO, new HashMap<String, CustomAttributesInfo>(), true));
-    }
-
-    private AttrTO buildAttrTO(String schemaKey, String... values) {
-        return new AttrTO.Builder().schema(schemaKey).values(values).build();
+        assertTrue(UserRequestValidator.compliant(userTO, new HashMap<String, CustomAttributesInfo>(), true));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
index 8981f8a..770c894 100644
--- a/deb/enduser/pom.xml
+++ b/deb/enduser/pom.xml
@@ -92,7 +92,6 @@ under the License.
         <directory>${project.basedir}/../../client/enduser/src/main/resources</directory>
         <includes>
           <include>enduser.properties</include>
-          <include>enduserContext.xml</include>
           <include>customForm.json</include>
         </includes>
         <targetPath>${project.build.directory}/etc</targetPath>

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
index 3ad191c..a8fe481 100644
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
@@ -31,7 +31,6 @@ import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.lib.SSOConstants;
 import org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO;
 import org.apache.syncope.common.lib.to.SAML2RequestTO;
-import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.common.rest.api.service.SAML2SPService;
 
 @WebServlet(name = "logout", urlPatterns = { "/saml2sp/logout" })
@@ -116,7 +115,6 @@ public class Logout extends AbstractSAML2SPServlet {
             SAML2ReceivedResponseTO receivedResponse = new SAML2ReceivedResponseTO();
             receivedResponse.setSamlResponse(samlResponse);
             receivedResponse.setRelayState(relayState);
-            receivedResponse.setBindingType(SAML2BindingType.REDIRECT);
 
             doLogout(receivedResponse, request, response);
         }
@@ -128,7 +126,6 @@ public class Logout extends AbstractSAML2SPServlet {
 
         // process POST binding logout response
         SAML2ReceivedResponseTO receivedResponse = extract(request.getInputStream());
-        receivedResponse.setBindingType(SAML2BindingType.POST);
         doLogout(receivedResponse, request, response);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
index b8d82ae..3d5d9b4 100644
--- a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
@@ -21,7 +21,6 @@ package org.apache.syncope.common.lib.to;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import org.apache.syncope.common.lib.AbstractBaseBean;
-import org.apache.syncope.common.lib.types.SAML2BindingType;
 
 @XmlRootElement(name = "saml2ReceivedResponse")
 @XmlType
@@ -33,8 +32,6 @@ public class SAML2ReceivedResponseTO extends AbstractBaseBean {
 
     private String relayState;
 
-    private SAML2BindingType bindingType;
-
     public String getSamlResponse() {
         return samlResponse;
     }
@@ -51,12 +48,4 @@ public class SAML2ReceivedResponseTO extends AbstractBaseBean {
         this.relayState = relayState;
     }
 
-    public SAML2BindingType getBindingType() {
-        return bindingType;
-    }
-
-    public void setBindingType(final SAML2BindingType bindingType) {
-        this.bindingType = bindingType;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
index 04c0704..ab2959a 100644
--- a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
@@ -22,26 +22,19 @@ import javax.xml.bind.annotation.XmlEnum;
 
 @XmlEnum
 public enum SAML2BindingType {
-    POST("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", 0),
-    REDIRECT("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", 1);
+    POST("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"),
+    REDIRECT("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect");
 
     private final String uri;
 
-    private final int index;
-
-    SAML2BindingType(final String uri, final int index) {
+    SAML2BindingType(final String uri) {
         this.uri = uri;
-        this.index = index;
     }
 
     public String getUri() {
         return uri;
     }
 
-    public int getIndex() {
-        return index;
-    }
-
     public static SAML2BindingType fromUri(final String uri) {
         SAML2BindingType bindingType = null;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
index 61d272a..9835061 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
@@ -196,7 +196,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
 
             for (SAML2BindingType bindingType : SAML2BindingType.values()) {
                 AssertionConsumerService assertionConsumerService = new AssertionConsumerServiceBuilder().buildObject();
-                assertionConsumerService.setIndex(bindingType.getIndex());
+                assertionConsumerService.setIndex(bindingType.ordinal());
                 assertionConsumerService.setBinding(bindingType.getUri());
                 assertionConsumerService.setLocation(spEntityID + urlContext + "/assertion-consumer");
                 spSSODescriptor.getAssertionConsumerServices().add(assertionConsumerService);
@@ -420,8 +420,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         // 2. parse the provided SAML response
         Response samlResponse;
         try {
-            XMLObject responseObject = saml2rw.read(
-                    SAML2BindingType.POST, useDeflateEncoding, response.getSamlResponse());
+            XMLObject responseObject = saml2rw.read(useDeflateEncoding, response.getSamlResponse());
             if (!(responseObject instanceof Response)) {
                 throw new IllegalArgumentException("Expected " + Response.class.getName()
                         + ", got " + responseObject.getClass().getName());
@@ -587,7 +586,8 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         try {
             // 3. generate relay state as JWT
             Map<String, Object> claims = new HashMap<>();
-            claims.put(JWT_CLAIM_IDP_DEFLATE, idp.isUseDeflateEncoding());
+            claims.put(JWT_CLAIM_IDP_DEFLATE,
+                    idp.getBindingType() == SAML2BindingType.REDIRECT ? true : idp.isUseDeflateEncoding());
             Triple<String, String, Date> relayState =
                     accessTokenDataBinder.generateJWT(logoutRequest.getID(), JWT_RELAY_STATE_DURATION, claims);
             requestTO.setRelayState(relayState.getMiddle());
@@ -641,8 +641,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         // 3. parse the provided SAML response
         LogoutResponse logoutResponse;
         try {
-            XMLObject responseObject = saml2rw.read(
-                    response.getBindingType(), useDeflateEncoding, response.getSamlResponse());
+            XMLObject responseObject = saml2rw.read(useDeflateEncoding, response.getSamlResponse());
             if (!(responseObject instanceof LogoutResponse)) {
                 throw new IllegalArgumentException("Expected " + LogoutResponse.class.getName()
                         + ", got " + responseObject.getClass().getName());

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
index 07b4f44..dd07cdd 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
@@ -126,7 +126,7 @@ public class SAML2IdPEntity {
     }
 
     public boolean isUseDeflateEncoding() {
-        return bindingType == SAML2BindingType.REDIRECT ? true : useDeflateEncoding;
+        return useDeflateEncoding;
     }
 
     public void setUseDeflateEncoding(final boolean useDeflateEncoding) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/911eeda8/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
index 11e83cf..0698b38 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
@@ -46,7 +46,6 @@ import org.apache.cxf.rs.security.saml.DeflateEncoderDecoder;
 import org.apache.cxf.rs.security.saml.sso.SAMLProtocolResponseValidator;
 import org.apache.cxf.staxutils.StaxUtils;
 import org.apache.syncope.common.lib.SSOConstants;
-import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.core.logic.init.SAML2SPLoader;
 import org.apache.wss4j.common.crypto.Merlin;
 import org.apache.wss4j.common.ext.WSSecurityException;
@@ -126,12 +125,12 @@ public class SAML2ReaderWriter {
         transformer.transform(source, streamResult);
     }
 
-    public XMLObject read(final SAML2BindingType bindingType, final boolean useDeflateEncoding, final String response)
+    public XMLObject read(final boolean useDeflateEncoding, final String response)
             throws DataFormatException, UnsupportedEncodingException, XMLStreamException, WSSecurityException {
 
         InputStream tokenStream;
         byte[] deflatedToken = Base64.decodeBase64(response);
-        tokenStream = bindingType != SAML2BindingType.POST && useDeflateEncoding
+        tokenStream = useDeflateEncoding
                 ? new DeflateEncoderDecoder().inflateToken(deflatedToken)
                 : new ByteArrayInputStream(deflatedToken);
 


[38/50] [abbrv] syncope git commit: Fix doc link

Posted by il...@apache.org.
Fix doc link


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

Branch: refs/heads/SYNCOPE-808
Commit: 51d0bb463f2d615727a58d51bcfea1850fc0e59e
Parents: 5c89e3a
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 18 10:15:07 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:15:07 2017 +0200

----------------------------------------------------------------------
 .../systemadministration/configurationparameters.adoc              | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/51d0bb46/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
index fa70c8d..d8246f1 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/configurationparameters.adoc
@@ -43,7 +43,7 @@ processes, including <<password-reset,password reset>>;
 application) is allowed;
 * `passwordReset.securityQuestion` - whether the <<password-reset,password reset>> feature involves security questions;
 * `authentication.attributes` - the list of attributes whose values can be passed as login name for authentication,
-defaults to `username`; please note that the related <<plain,plain schemas> must impose the unique constraint, for this
+defaults to `username`; please note that the related <<plain,plain schemas>> must impose the unique constraint, for this
 mechanism to work properly;
 * `authentication.statuses` - the list of <<workflow,workflow>> statuses for which users are allowed to authenticate;
 [WARNING]


[37/50] [abbrv] syncope git commit: Various upgrades

Posted by il...@apache.org.
Various upgrades


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

Branch: refs/heads/SYNCOPE-808
Commit: 5c89e3a3dc99b0b375af3c6fdabf167a2c014cc8
Parents: 8b1cb55
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Sat Apr 15 07:42:25 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Sat Apr 15 07:42:25 2017 +0200

----------------------------------------------------------------------
 pom.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/5c89e3a3/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index aa54589..b6bdb56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -386,7 +386,7 @@ under the License.
     <commons-io.version>2.5</commons-io.version>
     <commons-email.version>1.4</commons-email.version>
     <commons-codec.version>1.10</commons-codec.version>
-    <commons-jexl.version>3.0</commons-jexl.version>
+    <commons-jexl.version>3.1</commons-jexl.version>
     <commons-lang.version>3.5</commons-lang.version>
     <commons-collection.version>4.1</commons-collection.version>
     <commons-logging.version>1.1.3</commons-logging.version>
@@ -987,7 +987,7 @@ under the License.
       <dependency>
         <groupId>org.apache.xmlgraphics</groupId>
         <artifactId>fop</artifactId>
-        <version>2.1</version>
+        <version>2.2</version>
         <exclusions>
           <exclusion>
             <groupId>xalan</groupId>
@@ -1667,7 +1667,7 @@ under the License.
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.19.1</version>
+          <version>2.20</version>
           <configuration>
             <redirectTestOutputToFile>true</redirectTestOutputToFile>
             <encoding>utf-8</encoding>
@@ -1678,7 +1678,7 @@ under the License.
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-failsafe-plugin</artifactId>
-          <version>2.19.1</version>
+          <version>2.20</version>
           <configuration>
             <redirectTestOutputToFile>true</redirectTestOutputToFile>
             <encoding>utf-8</encoding>
@@ -2125,7 +2125,7 @@ under the License.
               <dependency>
                 <groupId>org.asciidoctor</groupId>
                 <artifactId>asciidoctorj-pdf</artifactId>
-                <version>1.5.0-alpha.14</version>
+                <version>1.5.0-alpha.15</version>
               </dependency>
               <dependency>
                 <groupId>org.asciidoctor</groupId>


[14/50] [abbrv] syncope git commit: [SYNCOPE-1061] Both POST and Redirect binding profiles are now supported; if both are available for a given IdP, the one to be used is configurable, with POST predefined

Posted by il...@apache.org.
[SYNCOPE-1061] Both POST and Redirect binding profiles are now supported; if both are available for a given IdP, the one to be used is configurable, with POST predefined


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

Branch: refs/heads/SYNCOPE-808
Commit: 8be5d4d347990681cb89c881f51208e7251b9d77
Parents: b292d3c
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Wed Apr 12 17:03:46 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Wed Apr 12 17:03:46 2017 +0200

----------------------------------------------------------------------
 .../saml2lsp/agent/AbstractSAML2SPServlet.java  |  94 ++++++++++
 .../ext/saml2lsp/agent/AssertionConsumer.java   |   9 +-
 .../syncope/ext/saml2lsp/agent/Login.java       |   2 +-
 .../syncope/ext/saml2lsp/agent/Logout.java      |  99 +++++++----
 .../syncope/ext/saml2lsp/agent/Metadata.java    |   2 +-
 .../ext/saml2lsp/agent/SAML2PostBinding.java    |  51 ------
 .../console/panels/SAML2IdPsDirectoryPanel.java |   2 +
 .../console/wizards/SAML2IdPWizardBuilder.java  |   9 +
 .../panels/SAML2IdPsDirectoryPanel.properties   |   1 +
 .../SAML2IdPsDirectoryPanel_it.properties       |   1 +
 .../SAML2IdPsDirectoryPanel_pt_BR.properties    |   1 +
 .../SAML2IdPsDirectoryPanel_ru.properties       |   1 +
 .../apache/syncope/common/lib/SSOConstants.java |  36 ++++
 .../syncope/common/lib/to/SAML2IdPTO.java       |  11 ++
 .../common/lib/to/SAML2ReceivedResponseTO.java  |  62 +++++++
 .../syncope/common/lib/to/SAML2RequestTO.java   |  31 ++++
 .../common/lib/types/SAML2BindingType.java      |  56 ++++++
 .../syncope/core/logic/SAML2IdPLogic.java       |  49 ++++--
 .../apache/syncope/core/logic/SAML2SPLogic.java | 171 +++++++++----------
 .../syncope/core/logic/init/SAML2SPLoader.java  |   5 -
 .../syncope/core/logic/saml2/SAML2IdPCache.java |  16 +-
 .../logic/saml2/SAML2IdPCallbackHandler.java    |  45 -----
 .../core/logic/saml2/SAML2IdPEntity.java        |  23 ++-
 .../core/logic/saml2/SAML2ReaderWriter.java     | 106 ++++++++++--
 .../syncope/core/logic/saml2/SAML2Signer.java   |  98 -----------
 .../core/logic/saml2/SAMLSPCallbackHandler.java |  45 +++++
 ext/saml2sp/persistence-api/pom.xml             |   5 +
 .../core/persistence/api/entity/SAML2IdP.java   |   5 +
 .../persistence/jpa/entity/JPASAML2IdP.java     |  14 ++
 .../java/data/SAML2IdPDataBinderImpl.java       |   2 +
 .../common/rest/api/service/SAML2SPService.java |  16 +-
 .../rest/cxf/service/SAML2SPServiceImpl.java    |  16 +-
 .../org/apache/syncope/fit/SAML2SPDetector.java |   2 +-
 .../apache/syncope/fit/core/SAML2ITCase.java    |   2 +-
 34 files changed, 701 insertions(+), 387 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
new file mode 100644
index 0000000..bd295e3
--- /dev/null
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
@@ -0,0 +1,94 @@
+/*
+ * 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.ext.saml2lsp.agent;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.UriBuilder;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.jaxrs.utils.JAXRSUtils;
+import org.apache.syncope.common.lib.SSOConstants;
+import org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO;
+import org.apache.syncope.common.lib.to.SAML2RequestTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AbstractSAML2SPServlet extends HttpServlet {
+
+    private static final long serialVersionUID = 7969539245875799817L;
+
+    protected static final Logger LOG = LoggerFactory.getLogger(AbstractSAML2SPServlet.class);
+
+    protected void prepare(final HttpServletResponse response, final SAML2RequestTO requestTO) throws IOException {
+        response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store");
+        response.setHeader("Pragma", "no-cache");
+        switch (requestTO.getBindingType()) {
+            case REDIRECT:
+                UriBuilder ub = UriBuilder.fromUri(requestTO.getIdpServiceAddress());
+                ub.queryParam(SSOConstants.SAML_REQUEST, requestTO.getContent());
+                ub.queryParam(SSOConstants.RELAY_STATE, requestTO.getRelayState());
+                ub.queryParam(SSOConstants.SIG_ALG, requestTO.getSignAlg());
+                ub.queryParam(SSOConstants.SIGNATURE, requestTO.getSignature());
+
+                response.setStatus(HttpServletResponse.SC_SEE_OTHER);
+                response.setHeader("Location", ub.build().toASCIIString());
+                break;
+
+            case POST:
+            default:
+                response.setContentType(MediaType.TEXT_HTML);
+                response.getWriter().write(""
+                        + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
+                        + " <body onLoad=\"document.forms[0].submit();\">"
+                        + "  <form action=\"" + requestTO.getIdpServiceAddress() + "\" method=\"POST\">"
+                        + "   <input type=\"hidden\" name=\"" + SSOConstants.SAML_REQUEST + "\""
+                        + "          value=\"" + requestTO.getContent() + "\"/>"
+                        + "   <input type=\"hidden\" name=\"" + SSOConstants.RELAY_STATE + "\""
+                        + "          value=\"" + requestTO.getRelayState() + "\"/>"
+                        + "   <input type=\"submit\" style=\"visibility: hidden;\"/>"
+                        + "  </form>"
+                        + " </body>"
+                        + "</html>");
+        }
+    }
+
+    protected SAML2ReceivedResponseTO extract(final InputStream response) throws IOException {
+        String strForm = IOUtils.toString(response);
+        MultivaluedMap<String, String> params = JAXRSUtils.getStructuredParams(strForm, "&", false, false);
+
+        String samlResponse = URLDecoder.decode(
+                params.getFirst(SSOConstants.SAML_RESPONSE), StandardCharsets.UTF_8.name());
+        LOG.debug("Received SAML Response: {}", samlResponse);
+
+        String relayState = params.getFirst(SSOConstants.RELAY_STATE);
+        LOG.debug("Received Relay State: {}", relayState);
+
+        SAML2ReceivedResponseTO receivedResponseTO = new SAML2ReceivedResponseTO();
+        receivedResponseTO.setSamlResponse(samlResponse);
+        receivedResponseTO.setRelayState(relayState);
+        return receivedResponseTO;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AssertionConsumer.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AssertionConsumer.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AssertionConsumer.java
index 00a853e..6407b4d 100644
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AssertionConsumer.java
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AssertionConsumer.java
@@ -23,22 +23,17 @@ import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.to.SAML2LoginResponseTO;
 import org.apache.syncope.common.rest.api.service.SAML2SPService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 @WebServlet(name = "assertionConsumer", urlPatterns = { "/saml2sp/assertion-consumer" })
-public class AssertionConsumer extends HttpServlet {
+public class AssertionConsumer extends AbstractSAML2SPServlet {
 
     private static final long serialVersionUID = 968480296813639041L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(AssertionConsumer.class);
-
     @Override
     protected void doPost(final HttpServletRequest request, final HttpServletResponse response)
             throws ServletException, IOException {
@@ -47,7 +42,7 @@ public class AssertionConsumer extends HttpServlet {
                 getAttribute(Constants.SYNCOPE_ANONYMOUS_CLIENT);
         try {
             SAML2LoginResponseTO responseTO = anonymous.getService(SAML2SPService.class).
-                    validateLoginResponse(request.getInputStream());
+                    validateLoginResponse(extract(request.getInputStream()));
 
             request.getSession(true).setAttribute(Constants.SAML2SPJWT, responseTO.getAccessToken());
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Login.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Login.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Login.java
index a675ca7..e206ff7 100644
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Login.java
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Login.java
@@ -31,7 +31,7 @@ import org.apache.syncope.common.lib.to.SAML2RequestTO;
 import org.apache.syncope.common.rest.api.service.SAML2SPService;
 
 @WebServlet(name = "login", urlPatterns = { "/saml2sp/login" })
-public class Login extends SAML2PostBinding {
+public class Login extends AbstractSAML2SPServlet {
 
     private static final long serialVersionUID = 968480296813639041L;
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
index df4c5e5..3ad191c 100644
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Logout.java
@@ -28,17 +28,21 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.SSOConstants;
+import org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO;
 import org.apache.syncope.common.lib.to.SAML2RequestTO;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.common.rest.api.service.SAML2SPService;
 
 @WebServlet(name = "logout", urlPatterns = { "/saml2sp/logout" })
-public class Logout extends SAML2PostBinding {
+public class Logout extends AbstractSAML2SPServlet {
 
     private static final long serialVersionUID = 3010286040376932117L;
 
-    @Override
-    protected void doGet(final HttpServletRequest request, final HttpServletResponse response)
-            throws ServletException, IOException {
+    private void doLogout(
+            final SAML2ReceivedResponseTO receivedResponse,
+            final HttpServletRequest request,
+            final HttpServletResponse response) throws ServletException, IOException {
 
         SyncopeClientFactoryBean clientFactory = (SyncopeClientFactoryBean) request.getServletContext().
                 getAttribute(Constants.SYNCOPE_CLIENT_FACTORY);
@@ -49,12 +53,17 @@ public class Logout extends SAML2PostBinding {
             }
 
             SyncopeClient client = clientFactory.create(accessToken);
-            SAML2RequestTO requestTO = client.getService(SAML2SPService.class).createLogoutRequest(
-                    StringUtils.substringBefore(request.getRequestURL().toString(), "/saml2sp"));
+            client.getService(SAML2SPService.class).validateLogoutResponse(receivedResponse);
 
-            prepare(response, requestTO);
+            String successURL = getServletContext().getInitParameter(Constants.CONTEXT_PARAM_LOGOUT_SUCCESS_URL);
+            if (successURL == null) {
+                request.getRequestDispatcher("logoutSuccess.jsp").forward(request, response);
+            } else {
+                response.sendRedirect(successURL);
+            }
+            request.getSession().removeAttribute(Constants.SAML2SPJWT);
         } catch (Exception e) {
-            LOG.error("While preparing logout request to IdP", e);
+            LOG.error("While processing authentication response from IdP", e);
 
             String errorURL = getServletContext().getInitParameter(Constants.CONTEXT_PARAM_LOGOUT_ERROR_URL);
             if (errorURL == null) {
@@ -70,41 +79,57 @@ public class Logout extends SAML2PostBinding {
     }
 
     @Override
-    protected void doPost(final HttpServletRequest request, final HttpServletResponse response)
+    protected void doGet(final HttpServletRequest request, final HttpServletResponse response)
             throws ServletException, IOException {
 
-        SyncopeClientFactoryBean clientFactory = (SyncopeClientFactoryBean) request.getServletContext().
-                getAttribute(Constants.SYNCOPE_CLIENT_FACTORY);
-        try {
-            String accessToken = (String) request.getSession().getAttribute(Constants.SAML2SPJWT);
-            if (StringUtils.isBlank(accessToken)) {
-                throw new IllegalArgumentException("No access token found ");
+        String samlResponse = request.getParameter(SSOConstants.SAML_RESPONSE);
+        String relayState = request.getParameter(SSOConstants.RELAY_STATE);
+        if (samlResponse == null) { // prepare logout response
+            SyncopeClientFactoryBean clientFactory = (SyncopeClientFactoryBean) request.getServletContext().
+                    getAttribute(Constants.SYNCOPE_CLIENT_FACTORY);
+            try {
+                String accessToken = (String) request.getSession().getAttribute(Constants.SAML2SPJWT);
+                if (StringUtils.isBlank(accessToken)) {
+                    throw new IllegalArgumentException("No access token found ");
+                }
+
+                SyncopeClient client = clientFactory.create(accessToken);
+                SAML2RequestTO requestTO = client.getService(SAML2SPService.class).createLogoutRequest(
+                        StringUtils.substringBefore(request.getRequestURL().toString(), "/saml2sp"));
+
+                prepare(response, requestTO);
+            } catch (Exception e) {
+                LOG.error("While preparing logout request to IdP", e);
+
+                String errorURL = getServletContext().getInitParameter(Constants.CONTEXT_PARAM_LOGOUT_ERROR_URL);
+                if (errorURL == null) {
+                    request.setAttribute("exception", e);
+                    request.getRequestDispatcher("logoutError.jsp").forward(request, response);
+
+                    e.printStackTrace(response.getWriter());
+                } else {
+                    response.sendRedirect(errorURL + "?errorMessage="
+                            + URLEncoder.encode(e.getMessage(), StandardCharsets.UTF_8.name()));
+                }
             }
+        } else { // process REDIRECT binding logout response
+            SAML2ReceivedResponseTO receivedResponse = new SAML2ReceivedResponseTO();
+            receivedResponse.setSamlResponse(samlResponse);
+            receivedResponse.setRelayState(relayState);
+            receivedResponse.setBindingType(SAML2BindingType.REDIRECT);
 
-            SyncopeClient client = clientFactory.create(accessToken);
-            client.getService(SAML2SPService.class).validateLogoutResponse(request.getInputStream());
-
-            String successURL = getServletContext().getInitParameter(Constants.CONTEXT_PARAM_LOGOUT_SUCCESS_URL);
-            if (successURL == null) {
-                request.getRequestDispatcher("logoutSuccess.jsp").forward(request, response);
-            } else {
-                response.sendRedirect(successURL);
-            }
-            request.getSession().removeAttribute(Constants.SAML2SPJWT);
-        } catch (Exception e) {
-            LOG.error("While processing authentication response from IdP", e);
+            doLogout(receivedResponse, request, response);
+        }
+    }
 
-            String errorURL = getServletContext().getInitParameter(Constants.CONTEXT_PARAM_LOGOUT_ERROR_URL);
-            if (errorURL == null) {
-                request.setAttribute("exception", e);
-                request.getRequestDispatcher("logoutError.jsp").forward(request, response);
+    @Override
+    protected void doPost(final HttpServletRequest request, final HttpServletResponse response)
+            throws ServletException, IOException {
 
-                e.printStackTrace(response.getWriter());
-            } else {
-                response.sendRedirect(errorURL + "?errorMessage="
-                        + URLEncoder.encode(e.getMessage(), StandardCharsets.UTF_8.name()));
-            }
-        }
+        // process POST binding logout response
+        SAML2ReceivedResponseTO receivedResponse = extract(request.getInputStream());
+        receivedResponse.setBindingType(SAML2BindingType.POST);
+        doLogout(receivedResponse, request, response);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Metadata.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Metadata.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Metadata.java
index aaa3df6..73229f7 100644
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Metadata.java
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/Metadata.java
@@ -47,7 +47,7 @@ public class Metadata extends HttpServlet {
         SAML2SPService service = anonymous.getService(SAML2SPService.class);
         WebClient.client(service).accept(MediaType.APPLICATION_XML_TYPE).type(MediaType.APPLICATION_XML_TYPE);
         Response metadataResponse = service.getMetadata(
-                StringUtils.substringBefore(request.getRequestURL().toString(), "/saml2sp"));
+                StringUtils.substringBefore(request.getRequestURL().toString(), "/saml2sp"), "saml2sp");
 
         response.setContentType(metadataResponse.getMediaType().toString());
         IOUtils.copy((InputStream) metadataResponse.getEntity(), response.getOutputStream());

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/SAML2PostBinding.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/SAML2PostBinding.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/SAML2PostBinding.java
deleted file mode 100644
index 0868841..0000000
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/SAML2PostBinding.java
+++ /dev/null
@@ -1,51 +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.ext.saml2lsp.agent;
-
-import java.io.IOException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletResponse;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import org.apache.syncope.common.lib.to.SAML2RequestTO;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class SAML2PostBinding extends HttpServlet {
-
-    private static final long serialVersionUID = 7969539245875799817L;
-
-    protected static final Logger LOG = LoggerFactory.getLogger(SAML2PostBinding.class);
-
-    protected void prepare(final HttpServletResponse response, final SAML2RequestTO requestTO) throws IOException {
-        response.setContentType(MediaType.TEXT_HTML);
-        response.setHeader(HttpHeaders.CACHE_CONTROL, "no-cache, no-store");
-        response.setHeader("Pragma", "no-cache");
-        response.getWriter().write(""
-                + "<html xmlns=\"http://www.w3.org/1999/xhtml\">"
-                + "  <body onLoad=\"document.forms[0].submit();\">"
-                + "    <form action=\"" + requestTO.getIdpServiceAddress() + "\" method=\"POST\">"
-                + "      <input type=\"hidden\" name=\"SAMLRequest\" value=\"" + requestTO.getContent() + "\"/>"
-                + "      <input type=\"hidden\" name=\"RelayState\" value=\"" + requestTO.getRelayState() + "\"/>"
-                + "      <input type=\"submit\" style=\"visibility: hidden;\"/>"
-                + "    </form>"
-                + "  </body>"
-                + "</html>");
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
index 2b3dd70..be93d28 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.java
@@ -140,6 +140,8 @@ public class SAML2IdPsDirectoryPanel extends DirectoryPanel<
         columns.add(new PropertyColumn<SAML2IdPTO, String>(new ResourceModel("entityID"), "entityID", "entityID"));
         columns.add(new BooleanPropertyColumn<SAML2IdPTO>(
                 new ResourceModel("useDeflateEncoding"), "useDeflateEncoding", "useDeflateEncoding"));
+        columns.add(new PropertyColumn<SAML2IdPTO, String>(
+                new ResourceModel("bindingType"), "bindingType", "bindingType"));
         columns.add(new BooleanPropertyColumn<SAML2IdPTO>(
                 new ResourceModel("logoutSupported"), "logoutSupported", "logoutSupported"));
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
index 333c00e..d824807 100644
--- a/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
+++ b/ext/saml2sp/client-console/src/main/java/org/apache/syncope/client/console/wizards/SAML2IdPWizardBuilder.java
@@ -20,6 +20,7 @@ package org.apache.syncope.client.console.wizards;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
@@ -27,12 +28,14 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.console.panels.SAML2IdPsDirectoryPanel;
 import org.apache.syncope.client.console.rest.SAML2IdPsRestClient;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
 import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel;
 import org.apache.syncope.client.console.wizards.resources.JEXLTransformersTogglePanel;
 import org.apache.syncope.client.console.wizards.resources.MappingItemTransformersTogglePanel;
 import org.apache.syncope.common.lib.to.MappingItemTO;
 import org.apache.syncope.common.lib.to.SAML2IdPTO;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.wicket.Component;
 import org.apache.wicket.PageReference;
 import org.apache.wicket.extensions.wizard.WizardModel;
@@ -95,6 +98,12 @@ public class SAML2IdPWizardBuilder extends AjaxWizardBuilder<SAML2IdPTO> {
                     "field", "useDeflateEncoding", new PropertyModel<Boolean>(idpTO, "useDeflateEncoding"), false);
             fields.add(useDeflateEncoding);
 
+            AjaxDropDownChoicePanel<SAML2BindingType> bindingType =
+                    new AjaxDropDownChoicePanel<>("field", "bindingType",
+                            new PropertyModel<SAML2BindingType>(idpTO, "bindingType"), false);
+            bindingType.setChoices(Arrays.asList(SAML2BindingType.values()));
+            fields.add(bindingType);
+
             add(new ListView<Component>("fields", fields) {
 
                 private static final long serialVersionUID = -9180479401817023838L;

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
index e1ecb17..8c5125d 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel.properties
@@ -19,3 +19,4 @@ useDeflateEncoding=Deflate Encoding
 logoutSupported=Logout supported
 any.edit=Edit ${entityID}
 connObjectKeyValidation=There must be exactly one Remote Key
+bindingType=Binding

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
index 3fa90a9..d0ee370 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_it.properties
@@ -19,3 +19,4 @@ useDeflateEncoding=Deflate Encoding
 logoutSupported=Logout supportato
 any.edit=Modifica ${entityID}
 connObjectKeyValidation=Deve essere definito esattamente una Chiave remota
+bindingType=Binding

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
index 9bb0b82..87a0c40 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_pt_BR.properties
@@ -19,3 +19,4 @@ useDeflateEncoding=Deflate Encoding
 logoutSupported=Logout supported
 any.edit=Alterar ${entityID}
 connObjectKeyValidation=Precisa ser exatamente um Remote Key
+bindingType=Binding

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
index ba85289..479faea 100644
--- a/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
+++ b/ext/saml2sp/client-console/src/main/resources/org/apache/syncope/client/console/panels/SAML2IdPsDirectoryPanel_ru.properties
@@ -19,3 +19,4 @@ useDeflateEncoding=Deflate Encoding
 logoutSupported=Logout supported
 any.edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c ${entityID}
 connObjectKeyValidation=\u0422\u0430\u043c \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0440\u043e\u0432\u043d\u043e \u043e\u0434\u0438\u043d \u0434\u0438\u0441\u0442\u0430\u043d\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430
+bindingType=Binding

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/SSOConstants.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/SSOConstants.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/SSOConstants.java
new file mode 100644
index 0000000..2390dde
--- /dev/null
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/SSOConstants.java
@@ -0,0 +1,36 @@
+/*
+ * 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.common.lib;
+
+public final class SSOConstants {
+
+    public static final String SAML_REQUEST = "SAMLRequest";
+
+    public static final String SAML_RESPONSE = "SAMLResponse";
+
+    public static final String RELAY_STATE = "RelayState";
+
+    public static final String SIG_ALG = "SigAlg";
+
+    public static final String SIGNATURE = "Signature";
+
+    private SSOConstants() {
+        // private constructor for static utility class
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
index d22dfcd..109af15 100644
--- a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2IdPTO.java
@@ -29,6 +29,7 @@ import javax.xml.bind.annotation.XmlType;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.syncope.common.lib.AbstractBaseBean;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 
 @XmlRootElement(name = "saml2idp")
 @XmlType
@@ -46,6 +47,8 @@ public class SAML2IdPTO extends AbstractBaseBean implements EntityTO {
 
     private boolean useDeflateEncoding;
 
+    private SAML2BindingType bindingType;
+
     private boolean logoutSupported;
 
     private final List<MappingItemTO> mappingItems = new ArrayList<>();
@@ -93,6 +96,14 @@ public class SAML2IdPTO extends AbstractBaseBean implements EntityTO {
         this.useDeflateEncoding = useDeflateEncoding;
     }
 
+    public SAML2BindingType getBindingType() {
+        return bindingType;
+    }
+
+    public void setBindingType(final SAML2BindingType bindingType) {
+        this.bindingType = bindingType;
+    }
+
     public boolean isLogoutSupported() {
         return logoutSupported;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
new file mode 100644
index 0000000..b8d82ae
--- /dev/null
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2ReceivedResponseTO.java
@@ -0,0 +1,62 @@
+/*
+ * 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.common.lib.to;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+import org.apache.syncope.common.lib.AbstractBaseBean;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
+
+@XmlRootElement(name = "saml2ReceivedResponse")
+@XmlType
+public class SAML2ReceivedResponseTO extends AbstractBaseBean {
+
+    private static final long serialVersionUID = 6102419133516694822L;
+
+    private String samlResponse;
+
+    private String relayState;
+
+    private SAML2BindingType bindingType;
+
+    public String getSamlResponse() {
+        return samlResponse;
+    }
+
+    public void setSamlResponse(final String samlResponse) {
+        this.samlResponse = samlResponse;
+    }
+
+    public String getRelayState() {
+        return relayState;
+    }
+
+    public void setRelayState(final String relayState) {
+        this.relayState = relayState;
+    }
+
+    public SAML2BindingType getBindingType() {
+        return bindingType;
+    }
+
+    public void setBindingType(final SAML2BindingType bindingType) {
+        this.bindingType = bindingType;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2RequestTO.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2RequestTO.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2RequestTO.java
index 136b58e..143a1b3 100644
--- a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2RequestTO.java
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/to/SAML2RequestTO.java
@@ -21,6 +21,7 @@ package org.apache.syncope.common.lib.to;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 import org.apache.syncope.common.lib.AbstractBaseBean;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 
 @XmlRootElement(name = "saml2request")
 @XmlType
@@ -30,10 +31,16 @@ public class SAML2RequestTO extends AbstractBaseBean {
 
     private String idpServiceAddress;
 
+    private SAML2BindingType bindingType;
+
     private String content;
 
     private String relayState;
 
+    private String signAlg;
+
+    private String signature;
+
     public String getIdpServiceAddress() {
         return idpServiceAddress;
     }
@@ -42,6 +49,14 @@ public class SAML2RequestTO extends AbstractBaseBean {
         this.idpServiceAddress = idpServiceAddress;
     }
 
+    public SAML2BindingType getBindingType() {
+        return bindingType;
+    }
+
+    public void setBindingType(final SAML2BindingType bindingType) {
+        this.bindingType = bindingType;
+    }
+
     public String getContent() {
         return content;
     }
@@ -58,4 +73,20 @@ public class SAML2RequestTO extends AbstractBaseBean {
         this.relayState = relayState;
     }
 
+    public String getSignAlg() {
+        return signAlg;
+    }
+
+    public void setSignAlg(final String signAlg) {
+        this.signAlg = signAlg;
+    }
+
+    public String getSignature() {
+        return signature;
+    }
+
+    public void setSignature(final String signature) {
+        this.signature = signature;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
new file mode 100644
index 0000000..04c0704
--- /dev/null
+++ b/ext/saml2sp/common-lib/src/main/java/org/apache/syncope/common/lib/types/SAML2BindingType.java
@@ -0,0 +1,56 @@
+/*
+ * 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.common.lib.types;
+
+import javax.xml.bind.annotation.XmlEnum;
+
+@XmlEnum
+public enum SAML2BindingType {
+    POST("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST", 0),
+    REDIRECT("urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect", 1);
+
+    private final String uri;
+
+    private final int index;
+
+    SAML2BindingType(final String uri, final int index) {
+        this.uri = uri;
+        this.index = index;
+    }
+
+    public String getUri() {
+        return uri;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public static SAML2BindingType fromUri(final String uri) {
+        SAML2BindingType bindingType = null;
+
+        for (SAML2BindingType value : values()) {
+            if (value.getUri().equals(uri)) {
+                bindingType = value;
+            }
+        }
+
+        return bindingType;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
index 7c8417e..95094e9 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2IdPLogic.java
@@ -33,6 +33,7 @@ import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.MappingItemTO;
 import org.apache.syncope.common.lib.to.SAML2IdPTO;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.common.lib.types.SAML2SPEntitlement;
 import org.apache.syncope.core.logic.saml2.SAML2ReaderWriter;
 import org.apache.syncope.core.logic.saml2.SAML2IdPCache;
@@ -81,7 +82,8 @@ public class SAML2IdPLogic extends AbstractSAML2Logic<SAML2IdPTO> {
 
         idpTO.setLogoutSupported(idpEntity == null
                 ? false
-                : idpEntity.getSLOLocation(SAMLConstants.SAML2_POST_BINDING_URI) != null);
+                : idpEntity.getSLOLocation(SAML2BindingType.POST) != null
+                || idpEntity.getSLOLocation(SAML2BindingType.REDIRECT) != null);
         return idpTO;
     }
 
@@ -146,17 +148,27 @@ public class SAML2IdPLogic extends AbstractSAML2Logic<SAML2IdPTO> {
             idpTO.setEntityID(idpEntityDescriptor.getEntityID());
             idpTO.setName(idpEntityDescriptor.getEntityID());
             idpTO.setUseDeflateEncoding(false);
+
             try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
                 saml2rw.write(new OutputStreamWriter(baos), idpEntityDescriptor, false);
                 idpTO.setMetadata(Base64.encodeBase64String(baos.toByteArray()));
             }
+
             MappingItemTO connObjectKeyItem = new MappingItemTO();
             connObjectKeyItem.setIntAttrName("username");
             connObjectKeyItem.setExtAttrName("NameID");
             idpTO.setConnObjectKeyItem(connObjectKeyItem);
-            result.add(idpTO);
 
-            cache.put(idpEntityDescriptor, connObjectKeyItem, false);
+            SAML2IdPEntity idp = cache.put(idpEntityDescriptor, connObjectKeyItem, false, SAML2BindingType.POST);
+            if (idp.getSSOLocation(SAML2BindingType.POST) != null) {
+                idpTO.setBindingType(SAML2BindingType.POST);
+            } else if (idp.getSSOLocation(SAML2BindingType.REDIRECT) != null) {
+                idpTO.setBindingType(SAML2BindingType.REDIRECT);
+            } else {
+                throw new IllegalArgumentException("Not POST nor REDIRECT artifacts supported by " + idp.getId());
+            }
+
+            result.add(idpTO);
         }
 
         return result;
@@ -177,9 +189,9 @@ public class SAML2IdPLogic extends AbstractSAML2Logic<SAML2IdPTO> {
             throw e;
         } catch (Exception e) {
             LOG.error("Unexpected error while importing IdP metadata", e);
-            SyncopeClientException ex = SyncopeClientException.build(ClientExceptionType.InvalidEntity);
-            ex.getElements().add(e.getMessage());
-            throw ex;
+            SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidEntity);
+            sce.getElements().add(e.getMessage());
+            throw sce;
         }
 
         return imported;
@@ -194,13 +206,28 @@ public class SAML2IdPLogic extends AbstractSAML2Logic<SAML2IdPTO> {
             throw new NotFoundException("SAML 2.0 IdP '" + saml2IdpTO.getKey() + "'");
         }
 
-        saml2Idp = idpDAO.save(binder.update(saml2Idp, saml2IdpTO));
-
         SAML2IdPEntity idpEntity = cache.get(saml2Idp.getEntityID());
-        if (idpEntity != null) {
-            idpEntity.setUseDeflateEncoding(saml2Idp.isUseDeflateEncoding());
-            idpEntity.setConnObjectKeyItem(binder.getIdPTO(saml2Idp).getConnObjectKeyItem());
+        if (idpEntity == null) {
+            try {
+                idpEntity = cache.put(saml2Idp);
+            } catch (Exception e) {
+                LOG.error("Unexpected error while updating {}", saml2Idp.getEntityID(), e);
+                SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidEntity);
+                sce.getElements().add(e.getMessage());
+                throw sce;
+            }
         }
+        if (idpEntity.getSSOLocation(saml2IdpTO.getBindingType()) == null) {
+            SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.InvalidEntity);
+            sce.getElements().add(saml2IdpTO.getBindingType() + " not supported by " + saml2Idp.getEntityID());
+            throw sce;
+        }
+
+        saml2Idp = idpDAO.save(binder.update(saml2Idp, saml2IdpTO));
+
+        idpEntity.setUseDeflateEncoding(saml2Idp.isUseDeflateEncoding());
+        idpEntity.setBindingType(saml2Idp.getBindingType());
+        idpEntity.setConnObjectKeyItem(binder.getIdPTO(saml2Idp).getConnObjectKeyItem());
     }
 
     @PreAuthorize("hasRole('" + SAML2SPEntitlement.IDP_DELETE + "')")

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
index 527d58c..61d272a 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/SAML2SPLogic.java
@@ -20,12 +20,10 @@ package org.apache.syncope.core.logic;
 
 import com.fasterxml.uuid.Generators;
 import com.fasterxml.uuid.impl.RandomBasedGenerator;
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.lang.reflect.Method;
-import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -33,29 +31,25 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import javax.ws.rs.core.MultivaluedMap;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.commons.lang3.tuple.Triple;
-import org.apache.cxf.helpers.IOUtils;
-import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.rs.security.jose.jws.JwsJwtCompactConsumer;
 import org.apache.cxf.rs.security.jose.jws.JwsSignatureVerifier;
-import org.apache.cxf.rs.security.saml.sso.SSOConstants;
 import org.apache.syncope.common.lib.AbstractBaseBean;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.SAML2RequestTO;
 import org.apache.syncope.common.lib.to.SAML2LoginResponseTO;
 import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.syncope.core.logic.saml2.SAML2ReaderWriter;
 import org.apache.syncope.core.logic.saml2.SAML2IdPCache;
 import org.apache.syncope.core.logic.saml2.SAML2IdPEntity;
-import org.apache.syncope.core.logic.saml2.SAML2Signer;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.ParsingValidationException;
 import org.apache.syncope.core.persistence.api.dao.AccessTokenDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
@@ -171,11 +165,8 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
     @Autowired
     private SAML2ReaderWriter saml2rw;
 
-    @Autowired
-    private SAML2Signer saml2Signer;
-
     @PreAuthorize("hasRole('" + StandardEntitlement.ANONYMOUS + "')")
-    public void getMetadata(final String spEntityID, final OutputStream os) {
+    public void getMetadata(final String spEntityID, final String urlContext, final OutputStream os) {
         check();
 
         try {
@@ -185,6 +176,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
             SPSSODescriptor spSSODescriptor = new SPSSODescriptorBuilder().buildObject();
             spSSODescriptor.setWantAssertionsSigned(true);
             spSSODescriptor.setAuthnRequestsSigned(true);
+            spSSODescriptor.addSupportedProtocol(SAMLConstants.SAML20P_NS);
 
             X509KeyInfoGeneratorFactory keyInfoGeneratorFactory = new X509KeyInfoGeneratorFactory();
             keyInfoGeneratorFactory.setEmitEntityCertificate(true);
@@ -195,12 +187,6 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
             keyDescriptor.setKeyInfo(keyInfoGenerator.generate(loader.getCredential()));
             spSSODescriptor.getKeyDescriptors().add(keyDescriptor);
 
-            SingleLogoutService singleLogoutService = new SingleLogoutServiceBuilder().buildObject();
-            singleLogoutService.setBinding(SAMLConstants.SAML2_POST_BINDING_URI);
-            singleLogoutService.setLocation(spEntityID + "saml2sp/logout");
-            singleLogoutService.setResponseLocation(spEntityID + "saml2sp/logout");
-            spSSODescriptor.getSingleLogoutServices().add(singleLogoutService);
-
             NameIDFormat nameIDFormat = new NameIDFormatBuilder().buildObject();
             nameIDFormat.setFormat(NameIDType.PERSISTENT);
             spSSODescriptor.getNameIDFormats().add(nameIDFormat);
@@ -208,13 +194,20 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
             nameIDFormat.setFormat(NameIDType.TRANSIENT);
             spSSODescriptor.getNameIDFormats().add(nameIDFormat);
 
-            AssertionConsumerService assertionConsumerService = new AssertionConsumerServiceBuilder().buildObject();
-            assertionConsumerService.setIndex(0);
-            assertionConsumerService.setBinding(SAMLConstants.SAML2_POST_BINDING_URI);
-            assertionConsumerService.setLocation(spEntityID + "saml2sp/assertion-consumer");
-
-            spSSODescriptor.getAssertionConsumerServices().add(assertionConsumerService);
-            spSSODescriptor.addSupportedProtocol(SAMLConstants.SAML20P_NS);
+            for (SAML2BindingType bindingType : SAML2BindingType.values()) {
+                AssertionConsumerService assertionConsumerService = new AssertionConsumerServiceBuilder().buildObject();
+                assertionConsumerService.setIndex(bindingType.getIndex());
+                assertionConsumerService.setBinding(bindingType.getUri());
+                assertionConsumerService.setLocation(spEntityID + urlContext + "/assertion-consumer");
+                spSSODescriptor.getAssertionConsumerServices().add(assertionConsumerService);
+                spEntityDescriptor.getRoleDescriptors().add(spSSODescriptor);
+
+                SingleLogoutService singleLogoutService = new SingleLogoutServiceBuilder().buildObject();
+                singleLogoutService.setBinding(bindingType.getUri());
+                singleLogoutService.setLocation(spEntityID + urlContext + "/logout");
+                singleLogoutService.setResponseLocation(spEntityID + urlContext + "/logout");
+                spSSODescriptor.getSingleLogoutServices().add(singleLogoutService);
+            }
 
             spEntityDescriptor.getRoleDescriptors().add(spSSODescriptor);
 
@@ -270,7 +263,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
                     : "SAML 2.0 IdP '" + idpEntityID + "'");
         }
 
-        if (idp.getSSOLocation(SAMLConstants.SAML2_POST_BINDING_URI) == null) {
+        if (idp.getSSOLocation(idp.getBindingType()) == null) {
             throw new IllegalArgumentException("No SingleSignOnService available for " + idp.getId());
         }
 
@@ -297,29 +290,44 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
 
         AuthnRequest authnRequest = new AuthnRequestBuilder().buildObject();
         authnRequest.setID("_" + UUID_GENERATOR.generate().toString());
-        authnRequest.setAssertionConsumerServiceURL(spEntityID + "saml2sp/assertion-consumer");
         authnRequest.setForceAuthn(false);
         authnRequest.setIsPassive(false);
         authnRequest.setVersion(SAMLVersion.VERSION_20);
-        authnRequest.setProtocolBinding(SAMLConstants.SAML2_POST_BINDING_URI);
+        authnRequest.setProtocolBinding(idp.getBindingType().getUri());
         authnRequest.setIssueInstant(new DateTime());
         authnRequest.setIssuer(issuer);
         authnRequest.setNameIDPolicy(nameIDPolicy);
         authnRequest.setRequestedAuthnContext(requestedAuthnContext);
-        authnRequest.setDestination(idp.getSSOLocation(SAMLConstants.SAML2_POST_BINDING_URI).getLocation());
+        authnRequest.setDestination(idp.getSSOLocation(idp.getBindingType()).getLocation());
 
         SAML2RequestTO requestTO = new SAML2RequestTO();
         requestTO.setIdpServiceAddress(authnRequest.getDestination());
+        requestTO.setBindingType(idp.getBindingType());
         try {
-            // 3. sign and encode AuthnRequest
-            requestTO.setContent(saml2Signer.signAndEncode(authnRequest, idp.isUseDeflateEncoding()));
-
-            // 4. generate relay state as JWT
+            // 3. generate relay state as JWT
             Map<String, Object> claims = new HashMap<>();
             claims.put(JWT_CLAIM_IDP_DEFLATE, idp.isUseDeflateEncoding());
             Triple<String, String, Date> relayState =
                     accessTokenDataBinder.generateJWT(authnRequest.getID(), JWT_RELAY_STATE_DURATION, claims);
-            requestTO.setRelayState(relayState.getMiddle());
+
+            // 4. sign and encode AuthnRequest
+            switch (idp.getBindingType()) {
+                case REDIRECT:
+                    requestTO.setRelayState(URLEncoder.encode(relayState.getMiddle(), StandardCharsets.UTF_8.name()));
+                    requestTO.setContent(URLEncoder.encode(
+                            saml2rw.encode(authnRequest, true), StandardCharsets.UTF_8.name()));
+                    requestTO.setSignAlg(URLEncoder.encode(saml2rw.getSigAlgo(), StandardCharsets.UTF_8.name()));
+                    requestTO.setSignature(URLEncoder.encode(
+                            saml2rw.sign(requestTO.getContent(), requestTO.getRelayState()),
+                            StandardCharsets.UTF_8.name()));
+                    break;
+
+                case POST:
+                default:
+                    requestTO.setRelayState(relayState.getMiddle());
+                    saml2rw.sign(authnRequest);
+                    requestTO.setContent(saml2rw.encode(authnRequest, idp.isUseDeflateEncoding()));
+            }
         } catch (Exception e) {
             LOG.error("While generating AuthnRequest", e);
             SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Unknown);
@@ -397,47 +405,23 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         return result;
     }
 
-    private Pair<String, String> extract(final InputStream response) throws IOException {
-        String strForm = IOUtils.toString(response);
-        MultivaluedMap<String, String> params = JAXRSUtils.getStructuredParams(strForm, "&", false, false);
-
-        String samlResponse = URLDecoder.decode(
-                params.getFirst(SSOConstants.SAML_RESPONSE), StandardCharsets.UTF_8.name());
-        LOG.debug("Received SAML Response: {}", samlResponse);
-
-        String relayState = params.getFirst(SSOConstants.RELAY_STATE);
-        LOG.debug("Received Relay State: {}", relayState);
-
-        return Pair.of(samlResponse, relayState);
-    }
-
     @PreAuthorize("hasRole('" + StandardEntitlement.ANONYMOUS + "')")
-    public SAML2LoginResponseTO validateLoginResponse(final InputStream response) {
+    public SAML2LoginResponseTO validateLoginResponse(final SAML2ReceivedResponseTO response) {
         check();
 
-        // 1. extract raw SAML response and relay state
-        Pair<String, String> extracted;
-        try {
-            extracted = extract(response);
-        } catch (Exception e) {
-            LOG.error("While reading AuthnResponse", e);
-            SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Unknown);
-            sce.getElements().add(e.getMessage());
-            throw sce;
-        }
-
-        // 2. first checks for the provided relay state
-        JwsJwtCompactConsumer relayState = new JwsJwtCompactConsumer(extracted.getRight());
+        // 1. first checks for the provided relay state
+        JwsJwtCompactConsumer relayState = new JwsJwtCompactConsumer(response.getRelayState());
         if (!relayState.verifySignatureWith(jwsSignatureCerifier)) {
             throw new IllegalArgumentException("Invalid signature found in Relay State");
         }
         Boolean useDeflateEncoding = Boolean.valueOf(
                 relayState.getJwtClaims().getClaim(JWT_CLAIM_IDP_DEFLATE).toString());
 
-        // 3. parse the provided SAML response
+        // 2. parse the provided SAML response
         Response samlResponse;
         try {
-            XMLObject responseObject = saml2rw.read(true, useDeflateEncoding, extracted.getLeft());
+            XMLObject responseObject = saml2rw.read(
+                    SAML2BindingType.POST, useDeflateEncoding, response.getSamlResponse());
             if (!(responseObject instanceof Response)) {
                 throw new IllegalArgumentException("Expected " + Response.class.getName()
                         + ", got " + responseObject.getClass().getName());
@@ -450,18 +434,18 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
             throw sce;
         }
 
-        // 4. further checks:
-        //   4a. the SAML Reponse's InResponseTo
+        // 3. further checks:
+        //   3a. the SAML Reponse's InResponseTo
         if (!relayState.getJwtClaims().getSubject().equals(samlResponse.getInResponseTo())) {
             throw new IllegalArgumentException("Unmatching request ID: " + samlResponse.getInResponseTo());
         }
-        //   4b. the SAML Response status
+        //   3b. the SAML Response status
         if (!StatusCode.SUCCESS.equals(samlResponse.getStatus().getStatusCode().getValue())) {
             throw new BadCredentialsException("The SAML IdP replied with "
                     + samlResponse.getStatus().getStatusCode().getValue());
         }
 
-        // 5. validate the SAML response and, if needed, decrypt the provided assertion(s)
+        // 4. validate the SAML response and, if needed, decrypt the provided assertion(s)
         SAML2IdPEntity idp = getIdP(samlResponse.getIssuer().getValue());
         if (idp.getConnObjectKeyItem() == null) {
             throw new IllegalArgumentException("No mapping provided for SAML 2.0 IdP '" + idp.getId() + "'");
@@ -475,10 +459,10 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
             throw sce;
         }
 
-        // 6. prepare the result: find matching user (if any) and return the received attributes
+        // 5. prepare the result: find matching user (if any) and return the received attributes
         SAML2LoginResponseTO responseTO = new SAML2LoginResponseTO();
         responseTO.setIdp(idp.getId());
-        responseTO.setSloSupported(idp.getSLOLocation(SAMLConstants.SAML2_POST_BINDING_URI) != null);
+        responseTO.setSloSupported(idp.getSLOLocation(idp.getBindingType()) != null);
 
         NameID nameID = null;
         String keyValue = null;
@@ -541,7 +525,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         responseTO.setUsername(userDAO.find(matchingUsers.get(0)).getUsername());
 
         responseTO.setNameID(nameID.getValue());
-        // 7. generate JWT for further access
+        // 6. generate JWT for further access
         Map<String, Object> claims = new HashMap<>();
         claims.put(JWT_CLAIM_IDP_ENTITYID, idp.getId());
         claims.put(JWT_CLAIM_NAMEID_FORMAT, nameID.getFormat());
@@ -571,14 +555,14 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         if (idp == null) {
             throw new NotFoundException("SAML 2.0 IdP '" + idpEntityID + "'");
         }
-        if (idp.getSLOLocation(SAMLConstants.SAML2_POST_BINDING_URI) == null) {
+        if (idp.getSLOLocation(idp.getBindingType()) == null) {
             throw new IllegalArgumentException("No SingleLogoutService available for " + idp.getId());
         }
 
         // 3. create LogoutRequest
         LogoutRequest logoutRequest = new LogoutRequestBuilder().buildObject();
         logoutRequest.setID("_" + UUID_GENERATOR.generate().toString());
-        logoutRequest.setDestination(idp.getSLOLocation(SAMLConstants.SAML2_POST_BINDING_URI).getLocation());
+        logoutRequest.setDestination(idp.getSLOLocation(idp.getBindingType()).getLocation());
 
         DateTime now = new DateTime();
         logoutRequest.setIssueInstant(now);
@@ -599,16 +583,28 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
 
         SAML2RequestTO requestTO = new SAML2RequestTO();
         requestTO.setIdpServiceAddress(logoutRequest.getDestination());
+        requestTO.setBindingType(idp.getBindingType());
         try {
-            // 3. sign and encode LogoutRequest
-            requestTO.setContent(saml2Signer.signAndEncode(logoutRequest, idp.isUseDeflateEncoding()));
-
-            // 4. generate relay state as JWT
+            // 3. generate relay state as JWT
             Map<String, Object> claims = new HashMap<>();
             claims.put(JWT_CLAIM_IDP_DEFLATE, idp.isUseDeflateEncoding());
             Triple<String, String, Date> relayState =
                     accessTokenDataBinder.generateJWT(logoutRequest.getID(), JWT_RELAY_STATE_DURATION, claims);
             requestTO.setRelayState(relayState.getMiddle());
+
+            // 4. sign and encode AuthnRequest
+            switch (idp.getBindingType()) {
+                case REDIRECT:
+                    requestTO.setContent(saml2rw.encode(logoutRequest, true));
+                    requestTO.setSignAlg(saml2rw.getSigAlgo());
+                    requestTO.setSignature(saml2rw.sign(requestTO.getContent(), requestTO.getRelayState()));
+                    break;
+
+                case POST:
+                default:
+                    saml2rw.sign(logoutRequest);
+                    requestTO.setContent(saml2rw.encode(logoutRequest, idp.isUseDeflateEncoding()));
+            }
         } catch (Exception e) {
             LOG.error("While generating LogoutRequest", e);
             SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Unknown);
@@ -620,7 +616,7 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
     }
 
     @PreAuthorize("isAuthenticated() and not(hasRole('" + StandardEntitlement.ANONYMOUS + "'))")
-    public void validateLogoutResponse(final String accessToken, final InputStream response) {
+    public void validateLogoutResponse(final String accessToken, final SAML2ReceivedResponseTO response) {
         check();
 
         // 1. fetch the current JWT used for Syncope authentication
@@ -630,21 +626,11 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         }
 
         // 2. extract raw SAML response and relay state
-        Pair<String, String> extracted;
-        try {
-            extracted = extract(response);
-        } catch (Exception e) {
-            LOG.error("While reading LogoutResponse", e);
-            SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.Unknown);
-            sce.getElements().add(e.getMessage());
-            throw sce;
-        }
-
         JwsJwtCompactConsumer relayState = null;
         Boolean useDeflateEncoding = false;
-        if (StringUtils.isNotBlank(extracted.getRight())) {
+        if (StringUtils.isNotBlank(response.getRelayState())) {
             // first checks for the provided relay state, if available
-            relayState = new JwsJwtCompactConsumer(extracted.getRight());
+            relayState = new JwsJwtCompactConsumer(response.getRelayState());
             if (!relayState.verifySignatureWith(jwsSignatureCerifier)) {
                 throw new IllegalArgumentException("Invalid signature found in Relay State");
             }
@@ -655,7 +641,8 @@ public class SAML2SPLogic extends AbstractSAML2Logic<AbstractBaseBean> {
         // 3. parse the provided SAML response
         LogoutResponse logoutResponse;
         try {
-            XMLObject responseObject = saml2rw.read(true, useDeflateEncoding, extracted.getLeft());
+            XMLObject responseObject = saml2rw.read(
+                    response.getBindingType(), useDeflateEncoding, response.getSamlResponse());
             if (!(responseObject instanceof LogoutResponse)) {
                 throw new IllegalArgumentException("Expected " + LogoutResponse.class.getName()
                         + ", got " + responseObject.getClass().getName());

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
index c4f4507..f9a5eec 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SPLoader.java
@@ -31,7 +31,6 @@ import org.apache.syncope.core.persistence.api.SyncopeLoader;
 import org.apache.syncope.core.provisioning.api.EntitlementsHolder;
 import org.apache.syncope.common.lib.types.SAML2SPEntitlement;
 import org.apache.syncope.core.logic.saml2.SAML2ReaderWriter;
-import org.apache.syncope.core.logic.saml2.SAML2Signer;
 import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.apache.syncope.core.spring.ResourceWithFallbackLoader;
 import org.apache.wss4j.common.saml.OpenSAMLUtil;
@@ -64,9 +63,6 @@ public class SAML2SPLoader implements SyncopeLoader {
     @Autowired
     private SAML2ReaderWriter saml2rw;
 
-    @Autowired
-    private SAML2Signer signer;
-
     private boolean inited;
 
     private KeyStore keystore;
@@ -138,7 +134,6 @@ public class SAML2SPLoader implements SyncopeLoader {
             LOG.debug("SAML 2.0 Service Provider certificate loaded");
 
             saml2rw.init();
-            signer.init();
 
             inited = true;
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCache.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCache.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCache.java
index 21e185d..a5ab6c3 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCache.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCache.java
@@ -29,6 +29,7 @@ import java.util.HashMap;
 import java.util.Map;
 import net.shibboleth.utilities.java.support.xml.XMLParserException;
 import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.core.logic.init.SAML2SPLoader;
 import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
 import org.apache.syncope.core.provisioning.api.data.SAML2IdPDataBinder;
@@ -66,11 +67,14 @@ public class SAML2IdPCache {
     public SAML2IdPEntity put(
             final EntityDescriptor entityDescriptor,
             final MappingItemTO connObjectKeyItem,
-            final boolean useDeflateEncoding)
+            final boolean useDeflateEncoding,
+            final SAML2BindingType bindingType)
             throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException {
 
-        return cache.put(entityDescriptor.getEntityID(),
-                new SAML2IdPEntity(entityDescriptor, connObjectKeyItem, useDeflateEncoding, loader.getKeyPass()));
+        SAML2IdPEntity idp = new SAML2IdPEntity(
+                entityDescriptor, connObjectKeyItem, useDeflateEncoding, bindingType, loader.getKeyPass());
+        cache.put(entityDescriptor.getEntityID(), idp);
+        return idp;
     }
 
     @Transactional(readOnly = true)
@@ -81,7 +85,11 @@ public class SAML2IdPCache {
         Element element = OpenSAMLUtil.getParserPool().parse(
                 new InputStreamReader(new ByteArrayInputStream(idp.getMetadata()))).getDocumentElement();
         EntityDescriptor entityDescriptor = (EntityDescriptor) OpenSAMLUtil.fromDom(element);
-        return put(entityDescriptor, binder.getIdPTO(idp).getConnObjectKeyItem(), idp.isUseDeflateEncoding());
+        return put(
+                entityDescriptor,
+                binder.getIdPTO(idp).getConnObjectKeyItem(),
+                idp.isUseDeflateEncoding(),
+                idp.getBindingType());
     }
 
     public SAML2IdPEntity remove(final String entityID) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCallbackHandler.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCallbackHandler.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCallbackHandler.java
deleted file mode 100644
index 17cf6f0..0000000
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPCallbackHandler.java
+++ /dev/null
@@ -1,45 +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.core.logic.saml2;
-
-import java.io.IOException;
-import javax.security.auth.callback.Callback;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.callback.UnsupportedCallbackException;
-import org.apache.wss4j.common.ext.WSPasswordCallback;
-
-public class SAML2IdPCallbackHandler implements CallbackHandler {
-
-    private final String keyPass;
-
-    public SAML2IdPCallbackHandler(final String keyPass) {
-        this.keyPass = keyPass;
-    }
-
-    @Override
-    public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException {
-        for (Callback callback : callbacks) {
-            if (callback instanceof WSPasswordCallback) {
-                WSPasswordCallback wspc = (WSPasswordCallback) callback;
-                wspc.setPassword(keyPass);
-            }
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
index 35eacaf..07b4f44 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2IdPEntity.java
@@ -32,6 +32,7 @@ import java.util.List;
 import java.util.Map;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.opensaml.saml.common.xml.SAMLConstants;
 import org.opensaml.saml.saml2.metadata.Endpoint;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
@@ -52,6 +53,8 @@ public class SAML2IdPEntity {
 
     private boolean useDeflateEncoding;
 
+    private SAML2BindingType bindingType;
+
     private MappingItemTO connObjectKeyItem;
 
     private final Map<String, Endpoint> ssoBindings = new HashMap<>();
@@ -66,12 +69,14 @@ public class SAML2IdPEntity {
             final EntityDescriptor entityDescriptor,
             final MappingItemTO connObjectKeyItem,
             final boolean useDeflateEncoding,
+            final SAML2BindingType bindingType,
             final String keyPass)
             throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException {
 
         this.id = entityDescriptor.getEntityID();
         this.connObjectKeyItem = connObjectKeyItem;
         this.useDeflateEncoding = useDeflateEncoding;
+        this.bindingType = bindingType;
 
         IDPSSODescriptor idpdescriptor = entityDescriptor.getIDPSSODescriptor(SAMLConstants.SAML20P_NS);
 
@@ -121,13 +126,21 @@ public class SAML2IdPEntity {
     }
 
     public boolean isUseDeflateEncoding() {
-        return useDeflateEncoding;
+        return bindingType == SAML2BindingType.REDIRECT ? true : useDeflateEncoding;
     }
 
     public void setUseDeflateEncoding(final boolean useDeflateEncoding) {
         this.useDeflateEncoding = useDeflateEncoding;
     }
 
+    public SAML2BindingType getBindingType() {
+        return bindingType;
+    }
+
+    public void setBindingType(final SAML2BindingType bindingType) {
+        this.bindingType = bindingType;
+    }
+
     public MappingItemTO getConnObjectKeyItem() {
         return connObjectKeyItem;
     }
@@ -136,12 +149,12 @@ public class SAML2IdPEntity {
         this.connObjectKeyItem = connObjectKeyItem;
     }
 
-    public Endpoint getSSOLocation(final String binding) {
-        return ssoBindings.get(binding);
+    public Endpoint getSSOLocation(final SAML2BindingType bindingType) {
+        return ssoBindings.get(bindingType.getUri());
     }
 
-    public Endpoint getSLOLocation(final String binding) {
-        return sloBindings.get(binding);
+    public Endpoint getSLOLocation(final SAML2BindingType bindingType) {
+        return sloBindings.get(bindingType.getUri());
     }
 
     public boolean supportsNameIDFormat(final String nameIDFormat) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
index baa3882..11e83cf 100644
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2ReaderWriter.java
@@ -19,14 +19,19 @@
 package org.apache.syncope.core.logic.saml2;
 
 import java.io.ByteArrayInputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.StringWriter;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
-import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;
+import java.security.InvalidKeyException;
 import java.security.KeyStore;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.SignatureException;
 import java.util.zip.DataFormatException;
 import javax.xml.XMLConstants;
 import javax.xml.stream.XMLStreamException;
@@ -40,12 +45,20 @@ import org.apache.commons.codec.binary.Base64;
 import org.apache.cxf.rs.security.saml.DeflateEncoderDecoder;
 import org.apache.cxf.rs.security.saml.sso.SAMLProtocolResponseValidator;
 import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.syncope.common.lib.SSOConstants;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.core.logic.init.SAML2SPLoader;
 import org.apache.wss4j.common.crypto.Merlin;
 import org.apache.wss4j.common.ext.WSSecurityException;
 import org.apache.wss4j.common.saml.OpenSAMLUtil;
 import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.common.SignableSAMLObject;
+import org.opensaml.saml.saml2.core.RequestAbstractType;
 import org.opensaml.saml.saml2.core.Response;
+import org.opensaml.security.SecurityException;
+import org.opensaml.xmlsec.keyinfo.KeyInfoGenerator;
+import org.opensaml.xmlsec.keyinfo.impl.X509KeyInfoGeneratorFactory;
+import org.opensaml.xmlsec.signature.support.SignatureConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -71,15 +84,37 @@ public class SAML2ReaderWriter {
     @Autowired
     private SAML2SPLoader loader;
 
+    private KeyInfoGenerator keyInfoGenerator;
+
+    private String sigAlgo;
+
+    private String jceSigAlgo;
+
     private SAMLProtocolResponseValidator protocolValidator;
 
-    private SAML2IdPCallbackHandler callbackHandler;
+    private SAMLSPCallbackHandler callbackHandler;
 
     public void init() {
+        X509KeyInfoGeneratorFactory keyInfoGeneratorFactory = new X509KeyInfoGeneratorFactory();
+        keyInfoGeneratorFactory.setEmitEntityCertificate(true);
+        keyInfoGenerator = keyInfoGeneratorFactory.newInstance();
+
+        sigAlgo = SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1;
+        jceSigAlgo = "SHA1withRSA";
+        String pubKeyAlgo = loader.getCredential().getPublicKey().getAlgorithm();
+        if (pubKeyAlgo.equalsIgnoreCase("DSA")) {
+            sigAlgo = SignatureConstants.ALGO_ID_SIGNATURE_DSA_SHA1;
+            jceSigAlgo = "SHA1withDSA";
+        }
+
         protocolValidator = new SAMLProtocolResponseValidator();
         protocolValidator.setKeyInfoMustBeAvailable(true);
 
-        callbackHandler = new SAML2IdPCallbackHandler(loader.getKeyPass());
+        callbackHandler = new SAMLSPCallbackHandler(loader.getKeyPass());
+    }
+
+    public String getSigAlgo() {
+        return sigAlgo;
     }
 
     public void write(final Writer writer, final XMLObject object, final boolean signObject)
@@ -91,18 +126,12 @@ public class SAML2ReaderWriter {
         transformer.transform(source, streamResult);
     }
 
-    public XMLObject read(final boolean postBinding, final boolean useDeflateEncoding, final String response)
+    public XMLObject read(final SAML2BindingType bindingType, final boolean useDeflateEncoding, final String response)
             throws DataFormatException, UnsupportedEncodingException, XMLStreamException, WSSecurityException {
 
-        String decodedResponse = response;
-        // URL Decoding only applies for the redirect binding
-        if (!postBinding) {
-            decodedResponse = URLDecoder.decode(response, StandardCharsets.UTF_8.name());
-        }
-
         InputStream tokenStream;
-        byte[] deflatedToken = Base64.decodeBase64(decodedResponse);
-        tokenStream = !postBinding && useDeflateEncoding
+        byte[] deflatedToken = Base64.decodeBase64(response);
+        tokenStream = bindingType != SAML2BindingType.POST && useDeflateEncoding
                 ? new DeflateEncoderDecoder().inflateToken(deflatedToken)
                 : new ByteArrayInputStream(deflatedToken);
 
@@ -125,6 +154,58 @@ public class SAML2ReaderWriter {
         return responseObject;
     }
 
+    public void sign(final RequestAbstractType request) throws SecurityException {
+        org.opensaml.xmlsec.signature.Signature signature = OpenSAMLUtil.buildSignature();
+        signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
+        signature.setSignatureAlgorithm(sigAlgo);
+        signature.setSigningCredential(loader.getCredential());
+        signature.setKeyInfo(keyInfoGenerator.generate(loader.getCredential()));
+
+        SignableSAMLObject signableObject = (SignableSAMLObject) request;
+        signableObject.setSignature(signature);
+        signableObject.releaseDOM();
+        signableObject.releaseChildrenDOM(true);
+    }
+
+    public String sign(final String request, final String relayState)
+            throws NoSuchAlgorithmException, WSSecurityException, InvalidKeyException, UnsupportedEncodingException,
+            SignatureException {
+
+        Merlin crypto = new Merlin();
+        crypto.setKeyStore(loader.getKeyStore());
+        PrivateKey privateKey = crypto.getPrivateKey(loader.getCredential().getPublicKey(), callbackHandler);
+
+        java.security.Signature signature = java.security.Signature.getInstance(jceSigAlgo);
+        signature.initSign(privateKey);
+
+        String requestToSign =
+                SSOConstants.SAML_REQUEST + "=" + request + "&"
+                + SSOConstants.RELAY_STATE + "=" + relayState + "&"
+                + SSOConstants.SIG_ALG + "=" + URLEncoder.encode(sigAlgo, StandardCharsets.UTF_8.name());
+        signature.update(requestToSign.getBytes(StandardCharsets.UTF_8));
+        return Base64.encodeBase64String(signature.sign());
+    }
+
+    public String encode(final RequestAbstractType request, final boolean useDeflateEncoding)
+            throws WSSecurityException, TransformerException, IOException {
+
+        StringWriter writer = new StringWriter();
+        write(writer, request, true);
+        writer.close();
+
+        String requestMessage = writer.toString();
+        byte[] deflatedBytes;
+        // not correct according to the spec but required by some IdPs.
+        if (useDeflateEncoding) {
+            deflatedBytes = new DeflateEncoderDecoder().
+                    deflateToken(requestMessage.getBytes(StandardCharsets.UTF_8));
+        } else {
+            deflatedBytes = requestMessage.getBytes(StandardCharsets.UTF_8);
+        }
+
+        return Base64.encodeBase64String(deflatedBytes);
+    }
+
     public void validate(final Response samlResponse, final KeyStore idpTrustStore) throws WSSecurityException {
         // validate the SAML response and, if needed, decrypt the provided assertion(s)
         Merlin crypto = new Merlin();
@@ -145,5 +226,4 @@ public class SAML2ReaderWriter {
             }
         }
     }
-
 }


[21/50] [abbrv] syncope git commit: removed unused import

Posted by il...@apache.org.
removed unused import


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

Branch: refs/heads/SYNCOPE-808
Commit: b70280327282b17dcc65bbad9ec419180713d576
Parents: 09cd4e7
Author: Andrea Patricelli <an...@apache.org>
Authored: Thu Apr 13 14:29:47 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Thu Apr 13 14:29:47 2017 +0200

----------------------------------------------------------------------
 .../syncope/client/console/panels/ParametersDetailsPanel.java       | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b7028032/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
index 18e1be3..14f9abe 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java
@@ -18,7 +18,6 @@
  */
 package org.apache.syncope.client.console.panels;
 
-import java.text.SimpleDateFormat;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;


[36/50] [abbrv] syncope git commit: Updating Eclipse files for next development iteration

Posted by il...@apache.org.
Updating Eclipse files for next development iteration


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

Branch: refs/heads/SYNCOPE-808
Commit: 8b1cb556bbecb93f78ec3aa188eec04d0ed2a907
Parents: c0e0795
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Sat Apr 15 07:27:14 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Sat Apr 15 07:27:14 2017 +0200

----------------------------------------------------------------------
 .../org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF     | 2 +-
 .../org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF      | 2 +-
 ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/pom.xml   | 2 +-
 .../releng/org.apache.syncope.ide.eclipse.site/category.xml        | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/8b1cb556/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
index d9276d3..5b80b04 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Apache Syncope Eclipse Plugin
 Bundle-SymbolicName: org.apache.syncope.ide.eclipse.plugin;singleton:=true
-Bundle-Version: 2.0.3
+Bundle-Version: 2.0.4.qualifier
 Bundle-Activator: org.apache.syncope.ide.eclipse.plugin.Activator
 Require-Bundle: org.eclipse.ui,
       org.eclipse.core.runtime,

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b1cb556/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
index 1808fe6..bc6dfcc 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: org.apache.syncope.ide.eclipse.tests
 Bundle-SymbolicName: org.apache.syncope.ide.eclipse.tests;singleton:=true
-Bundle-Version: 2.0.3
+Bundle-Version: 2.0.4.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: 
 Bundle-RequiredExecutionEnvironment: J2SE-1.5

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b1cb556/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/pom.xml
index b54c4d0..9b4d072 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/pom.xml
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3-SNAPSHOT</version>
+    <version>2.0.4-SNAPSHOT</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/8b1cb556/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
index fa8218f..f45cdd9 100644
--- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
+++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
@@ -18,7 +18,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 <site>
-   <bundle id="org.apache.syncope.ide.eclipse.plugin" version="2.0.3">
+   <bundle id="org.apache.syncope.ide.eclipse.plugin" version="2.0.4.qualifier">
       <category name="apachesyncope"/>
    </bundle>
    <category-def name="apachesyncope" label="Apache Syncope">


[04/50] [abbrv] syncope git commit: Upgrading MariaDB driver - compatibility re-verified

Posted by il...@apache.org.
Upgrading MariaDB driver - compatibility re-verified


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

Branch: refs/heads/SYNCOPE-808
Commit: 08972491928262b33bbd6cfc3dfd2b2c4d3803bf
Parents: be1eb72
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 11 09:49:54 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 11 09:49:54 2017 +0200

----------------------------------------------------------------------
 fit/core-reference/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/08972491/fit/core-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 50e4742..2ea5e3a 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -496,7 +496,7 @@ under the License.
         <dependency>
           <groupId>org.mariadb.jdbc</groupId>
           <artifactId>mariadb-java-client</artifactId>
-          <version>1.4.6</version>
+          <version>1.5.9</version>
           <scope>test</scope>
         </dependency>
       </dependencies>


[34/50] [abbrv] syncope git commit: [maven-release-plugin] prepare release syncope-2.0.3

Posted by il...@apache.org.
[maven-release-plugin] prepare release syncope-2.0.3


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

Branch: refs/heads/SYNCOPE-808
Commit: 2fd689f7dddc030c845c360903dbb73baac22020
Parents: 362c6ab
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 21:02:34 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 21:02:34 2017 +0200

----------------------------------------------------------------------
 archetype/pom.xml                                                | 2 +-
 client/cli/pom.xml                                               | 2 +-
 client/console/pom.xml                                           | 2 +-
 client/enduser/pom.xml                                           | 2 +-
 client/lib/pom.xml                                               | 2 +-
 client/pom.xml                                                   | 2 +-
 common/lib/pom.xml                                               | 2 +-
 common/pom.xml                                                   | 2 +-
 common/rest-api/pom.xml                                          | 2 +-
 core/logic/pom.xml                                               | 2 +-
 core/migration/pom.xml                                           | 2 +-
 core/persistence-api/pom.xml                                     | 2 +-
 core/persistence-jpa/pom.xml                                     | 2 +-
 core/pom.xml                                                     | 2 +-
 core/provisioning-api/pom.xml                                    | 2 +-
 core/provisioning-java/pom.xml                                   | 2 +-
 core/rest-cxf/pom.xml                                            | 2 +-
 core/spring/pom.xml                                              | 2 +-
 core/workflow-activiti/pom.xml                                   | 2 +-
 core/workflow-api/pom.xml                                        | 2 +-
 core/workflow-flowable/pom.xml                                   | 2 +-
 core/workflow-java/pom.xml                                       | 2 +-
 deb/console/pom.xml                                              | 2 +-
 deb/core/pom.xml                                                 | 2 +-
 deb/enduser/pom.xml                                              | 2 +-
 deb/pom.xml                                                      | 2 +-
 ext/camel/client-console/pom.xml                                 | 2 +-
 ext/camel/common-lib/pom.xml                                     | 2 +-
 ext/camel/logic/pom.xml                                          | 2 +-
 ext/camel/persistence-api/pom.xml                                | 2 +-
 ext/camel/persistence-jpa/pom.xml                                | 2 +-
 ext/camel/pom.xml                                                | 2 +-
 ext/camel/provisioning-api/pom.xml                               | 2 +-
 ext/camel/provisioning-camel/pom.xml                             | 2 +-
 ext/camel/rest-api/pom.xml                                       | 2 +-
 ext/camel/rest-cxf/pom.xml                                       | 2 +-
 ext/pom.xml                                                      | 2 +-
 ext/saml2sp/agent/pom.xml                                        | 2 +-
 ext/saml2sp/client-console/pom.xml                               | 2 +-
 ext/saml2sp/client-enduser/pom.xml                               | 2 +-
 ext/saml2sp/common-lib/pom.xml                                   | 2 +-
 ext/saml2sp/logic/pom.xml                                        | 2 +-
 ext/saml2sp/persistence-api/pom.xml                              | 2 +-
 ext/saml2sp/persistence-jpa/pom.xml                              | 2 +-
 ext/saml2sp/pom.xml                                              | 2 +-
 ext/saml2sp/provisioning-api/pom.xml                             | 2 +-
 ext/saml2sp/provisioning-java/pom.xml                            | 2 +-
 ext/saml2sp/rest-api/pom.xml                                     | 2 +-
 ext/saml2sp/rest-cxf/pom.xml                                     | 2 +-
 ext/swagger-ui/pom.xml                                           | 2 +-
 fit/build-tools/pom.xml                                          | 2 +-
 fit/console-reference/pom.xml                                    | 2 +-
 fit/core-reference/pom.xml                                       | 2 +-
 fit/enduser-reference/pom.xml                                    | 2 +-
 fit/pom.xml                                                      | 2 +-
 .../bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml        | 2 +-
 ide/eclipse/pom.xml                                              | 2 +-
 ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml   | 2 +-
 ide/pom.xml                                                      | 2 +-
 installer/pom.xml                                                | 2 +-
 pom.xml                                                          | 4 ++--
 standalone/pom.xml                                               | 2 +-
 62 files changed, 63 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/archetype/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/pom.xml b/archetype/pom.xml
index d691f03..a5fdc14 100644
--- a/archetype/pom.xml
+++ b/archetype/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Archetype</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/client/cli/pom.xml
----------------------------------------------------------------------
diff --git a/client/cli/pom.xml b/client/cli/pom.xml
index a8d9b61..bfe48a9 100644
--- a/client/cli/pom.xml
+++ b/client/cli/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client CLI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/client/console/pom.xml
----------------------------------------------------------------------
diff --git a/client/console/pom.xml b/client/console/pom.xml
index e4ff9f7..ff75615 100644
--- a/client/console/pom.xml
+++ b/client/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/client/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml
index 220f859..10da00d 100644
--- a/client/enduser/pom.xml
+++ b/client/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
     
   <name>Apache Syncope Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/client/lib/pom.xml
----------------------------------------------------------------------
diff --git a/client/lib/pom.xml b/client/lib/pom.xml
index 0256774..bdae59a 100644
--- a/client/lib/pom.xml
+++ b/client/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index ffefa2f..9c8e88b 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Client</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/common/lib/pom.xml
----------------------------------------------------------------------
diff --git a/common/lib/pom.xml b/common/lib/pom.xml
index f6650ff..28aa542 100644
--- a/common/lib/pom.xml
+++ b/common/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/common/pom.xml
----------------------------------------------------------------------
diff --git a/common/pom.xml b/common/pom.xml
index 363ae27..6c372c7 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Common</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/common/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml
index 8a86458..d169a52 100644
--- a/common/rest-api/pom.xml
+++ b/common/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Common REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/logic/pom.xml
----------------------------------------------------------------------
diff --git a/core/logic/pom.xml b/core/logic/pom.xml
index 967e9d7..355acf4 100644
--- a/core/logic/pom.xml
+++ b/core/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/migration/pom.xml
----------------------------------------------------------------------
diff --git a/core/migration/pom.xml b/core/migration/pom.xml
index de160e4..00f5a62 100644
--- a/core/migration/pom.xml
+++ b/core/migration/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Migration</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-api/pom.xml b/core/persistence-api/pom.xml
index 4f9984a..2543033 100644
--- a/core/persistence-api/pom.xml
+++ b/core/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml
index b97cca3..02c7530 100644
--- a/core/persistence-jpa/pom.xml
+++ b/core/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index b4c8541..a252a28 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-api/pom.xml b/core/provisioning-api/pom.xml
index ede504e..1c85f06 100644
--- a/core/provisioning-api/pom.xml
+++ b/core/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml
index 11fc9c7..542a0ad 100644
--- a/core/provisioning-java/pom.xml
+++ b/core/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml
index 7ccd6d1..2afea73 100644
--- a/core/rest-cxf/pom.xml
+++ b/core/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/spring/pom.xml
----------------------------------------------------------------------
diff --git a/core/spring/pom.xml b/core/spring/pom.xml
index 4fa0675..dff3f6e 100644
--- a/core/spring/pom.xml
+++ b/core/spring/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Spring</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/workflow-activiti/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/pom.xml b/core/workflow-activiti/pom.xml
index 11ed455..52ba44d 100644
--- a/core/workflow-activiti/pom.xml
+++ b/core/workflow-activiti/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Activiti</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/workflow-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-api/pom.xml b/core/workflow-api/pom.xml
index 8f629e2..57d75f1 100644
--- a/core/workflow-api/pom.xml
+++ b/core/workflow-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/workflow-flowable/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/pom.xml b/core/workflow-flowable/pom.xml
index 8122d9e..bc695b2 100644
--- a/core/workflow-flowable/pom.xml
+++ b/core/workflow-flowable/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Flowable</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/core/workflow-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-java/pom.xml b/core/workflow-java/pom.xml
index 8d3fa25..b5f4a2e 100644
--- a/core/workflow-java/pom.xml
+++ b/core/workflow-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/deb/console/pom.xml
----------------------------------------------------------------------
diff --git a/deb/console/pom.xml b/deb/console/pom.xml
index 45c2bf3..f2bcdc6 100644
--- a/deb/console/pom.xml
+++ b/deb/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/deb/core/pom.xml
----------------------------------------------------------------------
diff --git a/deb/core/pom.xml b/deb/core/pom.xml
index d8507b1..b064927 100644
--- a/deb/core/pom.xml
+++ b/deb/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
index b81e825..dcd889f 100644
--- a/deb/enduser/pom.xml
+++ b/deb/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/deb/pom.xml
----------------------------------------------------------------------
diff --git a/deb/pom.xml b/deb/pom.xml
index c9641f5..a40a90b 100644
--- a/deb/pom.xml
+++ b/deb/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Deb</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/pom.xml b/ext/camel/client-console/pom.xml
index 1ac72f5..269f493 100644
--- a/ext/camel/client-console/pom.xml
+++ b/ext/camel/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/common-lib/pom.xml b/ext/camel/common-lib/pom.xml
index 6140157..6dcaa61 100644
--- a/ext/camel/common-lib/pom.xml
+++ b/ext/camel/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml
index 950c704..2420f2f 100644
--- a/ext/camel/logic/pom.xml
+++ b/ext/camel/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-api/pom.xml b/ext/camel/persistence-api/pom.xml
index 3a44c2f..0bd4929 100644
--- a/ext/camel/persistence-api/pom.xml
+++ b/ext/camel/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-jpa/pom.xml b/ext/camel/persistence-jpa/pom.xml
index 065749d..8ac8d60 100644
--- a/ext/camel/persistence-jpa/pom.xml
+++ b/ext/camel/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/pom.xml b/ext/camel/pom.xml
index 590e95c..a713352 100644
--- a/ext/camel/pom.xml
+++ b/ext/camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-api/pom.xml b/ext/camel/provisioning-api/pom.xml
index ee6c11c..90957c9 100644
--- a/ext/camel/provisioning-api/pom.xml
+++ b/ext/camel/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/provisioning-camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/pom.xml b/ext/camel/provisioning-camel/pom.xml
index 04c0724..4755628 100644
--- a/ext/camel/provisioning-camel/pom.xml
+++ b/ext/camel/provisioning-camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-api/pom.xml b/ext/camel/rest-api/pom.xml
index 59e828c..c3c993f 100644
--- a/ext/camel/rest-api/pom.xml
+++ b/ext/camel/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/camel/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml
index ea71278..52a73a2 100644
--- a/ext/camel/rest-cxf/pom.xml
+++ b/ext/camel/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pom.xml b/ext/pom.xml
index 591194f..10297d7 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/agent/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/pom.xml b/ext/saml2sp/agent/pom.xml
index e33de80..606be20 100644
--- a/ext/saml2sp/agent/pom.xml
+++ b/ext/saml2sp/agent/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Agent</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/pom.xml b/ext/saml2sp/client-console/pom.xml
index 227ccc5..b801d43 100644
--- a/ext/saml2sp/client-console/pom.xml
+++ b/ext/saml2sp/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/client-enduser/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-enduser/pom.xml b/ext/saml2sp/client-enduser/pom.xml
index 6997f98..c0c1cb0 100644
--- a/ext/saml2sp/client-enduser/pom.xml
+++ b/ext/saml2sp/client-enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/pom.xml b/ext/saml2sp/common-lib/pom.xml
index 1f965dc..7039f5c 100644
--- a/ext/saml2sp/common-lib/pom.xml
+++ b/ext/saml2sp/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/pom.xml b/ext/saml2sp/logic/pom.xml
index 81a2817..b82be74 100644
--- a/ext/saml2sp/logic/pom.xml
+++ b/ext/saml2sp/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-api/pom.xml b/ext/saml2sp/persistence-api/pom.xml
index 2949c14..108681e 100644
--- a/ext/saml2sp/persistence-api/pom.xml
+++ b/ext/saml2sp/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-jpa/pom.xml b/ext/saml2sp/persistence-jpa/pom.xml
index 0a8e705..2aac44a 100644
--- a/ext/saml2sp/persistence-jpa/pom.xml
+++ b/ext/saml2sp/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/pom.xml b/ext/saml2sp/pom.xml
index 975fd4f..c0457fc 100644
--- a/ext/saml2sp/pom.xml
+++ b/ext/saml2sp/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-api/pom.xml b/ext/saml2sp/provisioning-api/pom.xml
index bf22907..9a8e2fa 100644
--- a/ext/saml2sp/provisioning-api/pom.xml
+++ b/ext/saml2sp/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/pom.xml b/ext/saml2sp/provisioning-java/pom.xml
index 7305104..752f155 100644
--- a/ext/saml2sp/provisioning-java/pom.xml
+++ b/ext/saml2sp/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-api/pom.xml b/ext/saml2sp/rest-api/pom.xml
index 6002c63..287ed8f 100644
--- a/ext/saml2sp/rest-api/pom.xml
+++ b/ext/saml2sp/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/saml2sp/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-cxf/pom.xml b/ext/saml2sp/rest-cxf/pom.xml
index 3a56e9e..f6700fe 100644
--- a/ext/saml2sp/rest-cxf/pom.xml
+++ b/ext/saml2sp/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ext/swagger-ui/pom.xml
----------------------------------------------------------------------
diff --git a/ext/swagger-ui/pom.xml b/ext/swagger-ui/pom.xml
index 807fe87..d75cbab 100644
--- a/ext/swagger-ui/pom.xml
+++ b/ext/swagger-ui/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Ext: Swagger UI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/fit/build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml
index 44ab09f..18e052b 100644
--- a/fit/build-tools/pom.xml
+++ b/fit/build-tools/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Build Tools</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index 6332b30..6746e57 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Console Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/fit/core-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 0b620a9..1004590 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Core Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/fit/enduser-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml
index 439b49b..1e5bcce 100644
--- a/fit/enduser-reference/pom.xml
+++ b/fit/enduser-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT Enduser Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/fit/pom.xml
----------------------------------------------------------------------
diff --git a/fit/pom.xml b/fit/pom.xml
index 268a524..26ef182 100644
--- a/fit/pom.xml
+++ b/fit/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope FIT</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
index 57c5af7..a05e349 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ide/eclipse/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/pom.xml b/ide/eclipse/pom.xml
index 0dfeb4d..9032e61 100644
--- a/ide/eclipse/pom.xml
+++ b/ide/eclipse/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ide</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope IDE Eclipse</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
index 1ae2617..3913397 100644
--- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
+++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/ide/pom.xml
----------------------------------------------------------------------
diff --git a/ide/pom.xml b/ide/pom.xml
index dbd135f..f16d5e8 100644
--- a/ide/pom.xml
+++ b/ide/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope IDE</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/installer/pom.xml
----------------------------------------------------------------------
diff --git a/installer/pom.xml b/installer/pom.xml
index 97db2f6..2ed15e8 100644
--- a/installer/pom.xml
+++ b/installer/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Installer</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index aa54589..be4aee8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@ under the License.
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>
-  <version>2.0.4-SNAPSHOT</version>
+  <version>2.0.3</version>
   <packaging>pom</packaging>
 
   <parent>
@@ -52,7 +52,7 @@ under the License.
     <connection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</developerConnection>
     <url>https://git-wip-us.apache.org/repos/asf?p=syncope.git</url>
-    <tag>HEAD</tag>
+    <tag>syncope-2.0.3</tag>
   </scm>
 
   <issueManagement>

http://git-wip-us.apache.org/repos/asf/syncope/blob/2fd689f7/standalone/pom.xml
----------------------------------------------------------------------
diff --git a/standalone/pom.xml b/standalone/pom.xml
index 102608a..097fd57 100644
--- a/standalone/pom.xml
+++ b/standalone/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.4-SNAPSHOT</version>
+    <version>2.0.3</version>
   </parent>
 
   <name>Apache Syncope Standalone Distribution</name>


[07/50] [abbrv] syncope git commit: [SYNCOPE-1020] Implementation completed: now several sub-processes can be managed besides the main workflow definition; for both Activiti and Flowable

Posted by il...@apache.org.
[SYNCOPE-1020] Implementation completed: now several sub-processes can be managed besides the main workflow definition; for both Activiti and Flowable


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

Branch: refs/heads/SYNCOPE-808
Commit: 7a4406185310898b95bd6c6af2ae6e20e28392d3
Parents: 0897249
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 7 08:52:49 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 11 14:14:21 2017 +0200

----------------------------------------------------------------------
 .../archetype-resources/console/pom.xml         |   6 +-
 .../self/WorkflowSyncopeOperations.java         |  11 +-
 .../client/console/commons/Constants.java       |   4 +
 .../syncope/client/console/pages/BasePage.java  |   2 +-
 .../syncope/client/console/pages/LogViewer.java |   2 -
 .../client/console/pages/ModelerPopupPage.java  |   6 +-
 .../syncope/client/console/pages/Workflow.java  |  60 +---
 .../console/panels/NewWorkflowProcess.java      |  87 +++++
 .../console/panels/WorkflowDirectoryPanel.java  | 353 +++++++++++++++++++
 .../console/panels/WorkflowTogglePanel.java     | 162 ---------
 .../resources/AbstractWorkflowResource.java     |  54 +++
 .../resources/WorkflowDefGETResource.java       |   8 +-
 .../resources/WorkflowDefPUTResource.java       |  20 +-
 .../client/console/rest/WorkflowRestClient.java |  22 +-
 .../wicket/markup/html/form/ActionLink.java     |  13 +-
 .../markup/html/form/ActionLinksPanel.java      |  38 +-
 .../markup/html/form/ImageModalPanel.java       |  58 +++
 .../syncope/client/console/pages/Workflow.html  |  17 +-
 .../client/console/pages/Workflow.properties    |   1 +
 .../client/console/pages/Workflow_it.properties |   1 +
 .../console/pages/Workflow_pt_BR.properties     |   1 +
 .../client/console/pages/Workflow_ru.properties |   1 +
 .../console/panels/ConnObjectListViewPanel.html |   2 +-
 .../console/panels/NewWorkflowProcess.html      |  32 ++
 .../console/panels/WorkflowDirectoryPanel.html  |  23 ++
 .../console/panels/WorkflowTogglePanel.html     |  50 ---
 .../client/console/panels/empty.bpmn20.xml      |  49 +++
 .../markup/html/form/ActionLinksPanel.html      |   5 +
 .../markup/html/form/ImageModalPanel.html       |  23 ++
 .../client/console/wizards/WizardMgtPanel.html  |   4 +-
 .../common/lib/to/WorkflowDefinitionTO.java     |  71 ++++
 .../common/lib/types/StandardEntitlement.java   |   8 +-
 .../rest/api/service/WorkflowService.java       |  62 +++-
 .../syncope/core/logic/WorkflowLogic.java       | 120 +++----
 .../rest/cxf/service/WorkflowServiceImpl.java   |  59 ++--
 .../activiti/ActivitiDefinitionLoader.java      |  18 +-
 .../workflow/activiti/ActivitiDeployUtils.java  |  97 +++++
 .../workflow/activiti/ActivitiImportUtils.java  |  93 -----
 .../activiti/ActivitiUserWorkflowAdapter.java   | 286 +++++++++------
 .../api/AnyObjectWorkflowDefinitionAdapter.java |  22 ++
 .../api/GroupWorkflowDefinitionAdapter.java     |  22 ++
 .../api/UserWorkflowDefinitionAdapter.java      |  22 ++
 .../core/workflow/api/WorkflowAdapter.java      |  24 --
 .../workflow/api/WorkflowDefinitionAdapter.java |  64 ++++
 .../core/workflow/api/WorkflowException.java    |   7 +-
 .../flowable/FlowableDefinitionLoader.java      |  22 +-
 .../workflow/flowable/FlowableDeployUtils.java  |  97 +++++
 .../workflow/flowable/FlowableImportUtils.java  |  93 -----
 .../flowable/FlowableUserWorkflowAdapter.java   | 310 +++++++++-------
 .../java/AbstractAnyObjectWorkflowAdapter.java  |   4 +-
 .../java/AbstractGroupWorkflowAdapter.java      |   3 +-
 .../java/AbstractUserWorkflowAdapter.java       |   3 +-
 .../java/DefaultAnyObjectWorkflowAdapter.java   |  29 +-
 .../java/DefaultGroupWorkflowAdapter.java       |  30 +-
 .../java/DefaultUserWorkflowAdapter.java        |  34 +-
 fit/console-reference/pom.xml                   |   4 +-
 .../src/main/resources/url-config.js            |   4 +-
 .../apache/syncope/fit/core/WorkflowITCase.java |  57 +--
 58 files changed, 1810 insertions(+), 970 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/archetype/src/main/resources/archetype-resources/console/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/console/pom.xml b/archetype/src/main/resources/archetype-resources/console/pom.xml
index de7130e..81fc817 100644
--- a/archetype/src/main/resources/archetype-resources/console/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/console/pom.xml
@@ -186,12 +186,10 @@ ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&q
                              value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf(&#39;/activiti-modeler&#39;)) + &quot;/activiti-modeler/stencilset.json&quot;, {"/>
                     <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
                              token="ORYX.Editor.createByUrl(modelUrl);"
-                             value="modelUrl = BASE_PATH + &quot;/workflowDefGET&quot;;
-ORYX.Editor.createByUrl(modelUrl);"/>
+                             value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl(modelUrl);" />
                     <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
                              token="ORYX.Editor.createByUrl = function(modelUrl){"
-                             value="modelUrl = BASE_PATH + &quot;/workflowDefGET&quot;;
-ORYX.Editor.createByUrl = function(modelUrl){"/>                
+                             value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />               
                     <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
                              token="window.location.href = &quot;./&quot;;"
                              value="window.close();"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/cli/src/main/java/org/apache/syncope/client/cli/commands/self/WorkflowSyncopeOperations.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/self/WorkflowSyncopeOperations.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/self/WorkflowSyncopeOperations.java
index 6d0f3b2..45025d4 100644
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/self/WorkflowSyncopeOperations.java
+++ b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/self/WorkflowSyncopeOperations.java
@@ -21,20 +21,21 @@ package org.apache.syncope.client.cli.commands.self;
 import javax.ws.rs.core.Response;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.cli.SyncopeServices;
-import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.service.WorkflowService;
 
 public class WorkflowSyncopeOperations {
 
+    private static final String DEFAULT = "userWorkflow";
+
     private final WorkflowService workflowService = SyncopeServices.get(WorkflowService.class);
 
-    public Response exportDiagram(final String anyTypeKindString) {
+    public Response exportDiagram(final String anyType) {
         WebClient.client(workflowService).accept(RESTHeaders.MEDIATYPE_IMAGE_PNG);
-        return workflowService.exportDiagram(AnyTypeKind.valueOf(anyTypeKindString));
+        return workflowService.exportDiagram(anyType, DEFAULT);
     }
 
-    public Response exportDefinition(final String anyTypeKindString) {
-        return workflowService.exportDefinition(AnyTypeKind.valueOf(anyTypeKindString));
+    public Response exportDefinition(final String anyType) {
+        return workflowService.get(anyType, DEFAULT);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
index 8b47bed..affe16e 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/commons/Constants.java
@@ -35,6 +35,8 @@ public final class Constants {
 
     public static final String MODELER_CONTEXT = "modelerContext";
 
+    public static final String MODEL_ID_PARAM = "modelId";
+
     public static final String ON_CLICK = "click";
 
     public static final String ON_CHANGE = "change";
@@ -145,6 +147,8 @@ public final class Constants {
 
     public static final String PREF_REPORT_PAGINATOR_ROWS = "report.paginator.rows";
 
+    public static final String PREF_WORKFLOW_PAGINATOR_ROWS = "workflow.paginator.rows";
+
     public static final String PAGEPARAM_CREATE = "CREATE";
 
     public static final String PAGEPARAM_CURRENT_PAGE = "_current_page";

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
index 3b6737d..d4bdfd2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/BasePage.java
@@ -172,7 +172,7 @@ public class BasePage extends WebPage implements IAjaxIndicatorAware {
         liContainer.setVisible(SyncopeConsoleSession.get().getPlatformInfo().isUserWorkflowAdapterSupportEdit());
         confULContainer.add(liContainer);
         link = BookmarkablePageLinkBuilder.build("workflow", Workflow.class);
-        MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.ENABLE, StandardEntitlement.WORKFLOW_DEF_READ);
+        MetaDataRoleAuthorizationStrategy.authorize(link, WebPage.ENABLE, StandardEntitlement.WORKFLOW_DEF_GET);
         liContainer.add(link);
 
         liContainer = new WebMarkupContainer(getLIContainerId("audit"));

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
index 820c6f9..22f2fc5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/LogViewer.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.console.pages;
 
-import static org.apache.wicket.Component.ENABLE;
-
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.commons.collections4.list.SetUniqueList;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
index 275c311..3b3ed84 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/ModelerPopupPage.java
@@ -23,6 +23,7 @@ import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.StringValue;
 
 public class ModelerPopupPage extends WebPage {
 
@@ -31,10 +32,13 @@ public class ModelerPopupPage extends WebPage {
     public ModelerPopupPage(final PageParameters parameters) {
         super(parameters);
 
+        StringValue modelId = parameters.get(Constants.MODEL_ID_PARAM);
+
         WebMarkupContainer refresh = new WebMarkupContainer("refresh");
         // properly parameterize ?modelId=5 with SYNCOPE-1020
         refresh.add(new AttributeModifier(
-                "content", "0; url=../../" + parameters.get(Constants.MODELER_CONTEXT) + "/modeler.html?modelId=5"));
+                "content", "0; url=../../" + parameters.get(Constants.MODELER_CONTEXT)
+                + "/modeler.html?modelId=" + modelId.toString()));
         add(refresh);
     }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/pages/Workflow.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/pages/Workflow.java b/client/console/src/main/java/org/apache/syncope/client/console/pages/Workflow.java
index 456e845..65aade5 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/pages/Workflow.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/pages/Workflow.java
@@ -18,71 +18,47 @@
  */
 package org.apache.syncope.client.console.pages;
 
+import org.apache.syncope.client.console.BookmarkablePageLinkBuilder;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.panels.WorkflowTogglePanel;
-import org.apache.syncope.client.console.rest.WorkflowRestClient;
+import org.apache.syncope.client.console.panels.WorkflowDirectoryPanel;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
 import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.model.Model;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.request.resource.DynamicImageResource;
-import org.apache.wicket.request.resource.IResource;
 
 public class Workflow extends BasePage {
 
     private static final long serialVersionUID = -8781434495150074529L;
 
-    private final WorkflowRestClient wfRestClient = new WorkflowRestClient();
-
     public Workflow(final PageParameters parameters) {
         super(parameters);
 
-        final boolean userWFASupportsEdit =
-                SyncopeConsoleSession.get().getPlatformInfo().isUserWorkflowAdapterSupportEdit();
+        body.add(BookmarkablePageLinkBuilder.build("dashboard", "dashboardBr", Dashboard.class));
+
+        WebMarkupContainer content = new WebMarkupContainer("content");
+        content.setOutputMarkupId(true);
+        body.add(content);
 
         WebMarkupContainer disabled = new WebMarkupContainer("disabled");
         disabled.setOutputMarkupPlaceholderTag(true);
-        body.add(disabled);
-
-        WebMarkupContainer workflowDef = new WebMarkupContainer("workflowDefContainer");
-        workflowDef.setOutputMarkupPlaceholderTag(true);
+        content.add(disabled);
 
-        Image workflowDefDiagram = new Image("workflowDefDiagram", new Model<IResource>()) {
+        WizardMgtPanel<WorkflowDefinitionTO> workflowsPanel = new WorkflowDirectoryPanel.Builder(getPageReference()) {
 
-            private static final long serialVersionUID = -8457850449086490660L;
+            private static final long serialVersionUID = -5960765294082359003L;
 
-            @Override
-            protected IResource getImageResource() {
-                return new DynamicImageResource() {
+        }.disableCheckBoxes().build("workflowsPanel");
+        workflowsPanel.setOutputMarkupPlaceholderTag(true);
+        MetaDataRoleAuthorizationStrategy.authorize(workflowsPanel, ENABLE, StandardEntitlement.WORKFLOW_DEF_LIST);
 
-                    private static final long serialVersionUID = 923201517955737928L;
+        content.add(workflowsPanel);
 
-                    @Override
-                    protected byte[] getImageData(final IResource.Attributes attributes) {
-                        return userWFASupportsEdit
-                                ? wfRestClient.getDiagram()
-                                : new byte[0];
-                    }
-                };
-            }
-        };
-        workflowDefDiagram.setOutputMarkupId(true);
-        workflowDef.add(workflowDefDiagram);
-
-        WorkflowTogglePanel togglePanel =
-                new WorkflowTogglePanel("togglePanel", getPageReference(), workflowDefDiagram);
-        togglePanel.setOutputMarkupId(true);
-        workflowDef.add(togglePanel);
-
-        if (userWFASupportsEdit) {
+        if (SyncopeConsoleSession.get().getPlatformInfo().isUserWorkflowAdapterSupportEdit()) {
             disabled.setVisible(false);
         } else {
-            workflowDef.setVisible(false);
+            workflowsPanel.setVisible(false);
         }
-
-        MetaDataRoleAuthorizationStrategy.authorize(workflowDef, ENABLE, StandardEntitlement.WORKFLOW_DEF_READ);
-        body.add(workflowDef);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/panels/NewWorkflowProcess.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/NewWorkflowProcess.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/NewWorkflowProcess.java
new file mode 100644
index 0000000..ab4bda3
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/NewWorkflowProcess.java
@@ -0,0 +1,87 @@
+/*
+ * 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.client.console.panels;
+
+import java.io.Serializable;
+import javax.ws.rs.core.MediaType;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.pdfbox.util.Charsets;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.rest.WorkflowRestClient;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.Model;
+
+public class NewWorkflowProcess extends TogglePanel<Serializable> {
+
+    private static final long serialVersionUID = -4886361549305302161L;
+
+    private final WorkflowRestClient restClient = new WorkflowRestClient();
+
+    private final Form<?> form;
+
+    public NewWorkflowProcess(final String id, final WebMarkupContainer container, final PageReference pageRef) {
+        super(id, pageRef);
+
+        form = new Form<>("form");
+        addInnerObject(form);
+
+        final TextField<String> key = new TextField<>("key", new Model<String>());
+        key.setRequired(true);
+        form.add(key);
+
+        form.add(new AjaxSubmitLink("submit", form) {
+
+            private static final long serialVersionUID = 4947613489823025052L;
+
+            @Override
+            protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                try {
+                    restClient.setDefinition(MediaType.APPLICATION_XML_TYPE, key.getModelObject(),
+                            IOUtils.toString(
+                                    getClass().getResourceAsStream("empty.bpmn20.xml"),
+                                    Charsets.UTF_8.name()).replaceAll("%KEY%", key.getModelObject()));
+
+                    key.getModel().setObject(null);
+                    SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+                    toggle(target, false);
+                    target.add(container);
+                } catch (Exception e) {
+                    LOG.error("While creating new workflow process", e);
+                    SyncopeConsoleSession.get().error(
+                            StringUtils.isBlank(e.getMessage())
+                            ? e.getClass().getName() : e.getMessage());
+                }
+                ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+            }
+
+            @Override
+            protected void onError(final AjaxRequestTarget target, final Form<?> form) {
+                ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+            }
+        });
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java
new file mode 100644
index 0000000..a6b5798
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.java
@@ -0,0 +1,353 @@
+/*
+ * 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.client.console.panels;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import javax.ws.rs.core.MediaType;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.console.SyncopeConsoleApplication;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.commons.DirectoryDataProvider;
+import org.apache.syncope.client.console.commons.SortableDataProviderComparator;
+import org.apache.syncope.client.console.pages.BasePage;
+import org.apache.syncope.client.console.pages.ModelerPopupPage;
+import org.apache.syncope.client.console.panels.WorkflowDirectoryPanel.WorkflowDefinitionDataProvider;
+import org.apache.syncope.client.console.rest.WorkflowRestClient;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.ActionColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.BooleanPropertyColumn;
+import org.apache.syncope.client.console.wicket.extensions.markup.html.repeater.data.table.KeyPropertyColumn;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.ImageModalPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
+import org.apache.syncope.client.console.wizards.AjaxWizardBuilder;
+import org.apache.syncope.client.console.wizards.WizardMgtPanel;
+import org.apache.syncope.common.lib.SyncopeClientException;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.Page;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
+import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
+import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
+import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
+import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+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.Model;
+import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.io.IOUtils;
+
+public class WorkflowDirectoryPanel extends DirectoryPanel<
+        WorkflowDefinitionTO, WorkflowDefinitionTO, WorkflowDefinitionDataProvider, WorkflowRestClient> {
+
+    private static final long serialVersionUID = 2705668831139984998L;
+
+    private final BaseModal<String> utility;
+
+    private String modelerCtx;
+
+    protected WorkflowDirectoryPanel(final String id, final Builder builder) {
+        super(id, builder);
+
+        this.addNewItemPanelBuilder(new AjaxWizardBuilder<WorkflowDefinitionTO>(new WorkflowDefinitionTO(), pageRef) {
+
+            private static final long serialVersionUID = 1633859795677053912L;
+
+            @Override
+            protected WizardModel buildModelSteps(
+                    final WorkflowDefinitionTO modelObject, final WizardModel wizardModel) {
+
+                return wizardModel;
+            }
+        }, false);
+        final NewWorkflowProcess newWorkflowProcess = new NewWorkflowProcess("newWorkflowProcess", container, pageRef);
+        addInnerObject(newWorkflowProcess);
+        AjaxLink<Void> newWorkflowProcessLink = new AjaxLink<Void>("add") {
+
+            private static final long serialVersionUID = -7978723352517770644L;
+
+            @Override
+            public void onClick(final AjaxRequestTarget target) {
+                newWorkflowProcess.toggle(target, true);
+            }
+        };
+        ((WebMarkupContainer) get("container:content")).addOrReplace(newWorkflowProcessLink);
+
+        setShowResultPage(true);
+
+        modal.size(Modal.Size.Large);
+
+        utility = new BaseModal<>("outer");
+        addOuterObject(utility);
+        utility.size(Modal.Size.Large);
+        AjaxSubmitLink xmlEditorSubmit = utility.addSubmitButton();
+        MetaDataRoleAuthorizationStrategy.authorize(xmlEditorSubmit, RENDER, StandardEntitlement.WORKFLOW_DEF_SET);
+        utility.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
+
+            private static final long serialVersionUID = 8804221891699487139L;
+
+            @Override
+            public void onClose(final AjaxRequestTarget target) {
+                utility.show(false);
+                utility.close(target);
+            }
+        });
+        initResultTable();
+
+        // Check if Activiti or Flowable Modeler directory is found
+        modelerCtx = null;
+        try {
+            if (SyncopeConsoleApplication.get().getActivitiModelerDirectory() != null) {
+                File baseDir = new File(SyncopeConsoleApplication.get().getActivitiModelerDirectory());
+                if (baseDir.exists() && baseDir.canRead() && baseDir.isDirectory()) {
+                    modelerCtx = Constants.ACTIVITI_MODELER_CONTEXT;
+                }
+            }
+
+            if (SyncopeConsoleApplication.get().getFlowableModelerDirectory() != null) {
+                File baseDir = new File(SyncopeConsoleApplication.get().getFlowableModelerDirectory());
+                if (baseDir.exists() && baseDir.canRead() && baseDir.isDirectory()) {
+                    modelerCtx = Constants.FLOWABLE_MODELER_CONTEXT;
+                }
+            }
+        } catch (Exception e) {
+            LOG.error("Could not check for Modeler directory", e);
+        }
+    }
+
+    @Override
+    protected WorkflowDefinitionDataProvider dataProvider() {
+        return new WorkflowDefinitionDataProvider(rows);
+    }
+
+    @Override
+    protected String paginatorRowsKey() {
+        return Constants.PREF_WORKFLOW_PAGINATOR_ROWS;
+    }
+
+    @Override
+    protected List<IColumn<WorkflowDefinitionTO, String>> getColumns() {
+        List<IColumn<WorkflowDefinitionTO, String>> columns = new ArrayList<>();
+
+        columns.add(new KeyPropertyColumn<WorkflowDefinitionTO>(new ResourceModel("key"), "key", "key"));
+        columns.add(new PropertyColumn<WorkflowDefinitionTO, String>(new ResourceModel("name"), "name", "name"));
+        columns.add(new BooleanPropertyColumn<WorkflowDefinitionTO>(new ResourceModel("main"), null, "main"));
+
+        columns.add(new ActionColumn<WorkflowDefinitionTO, String>(new ResourceModel("actions")) {
+
+            private static final long serialVersionUID = 906457126287899096L;
+
+            @Override
+            public ActionLinksPanel<?> getActions(final String componentId, final IModel<WorkflowDefinitionTO> model) {
+                final ActionLinksPanel.Builder<WorkflowDefinitionTO> panel = ActionLinksPanel.builder();
+
+                panel.add(new ActionLink<WorkflowDefinitionTO>() {
+
+                    private static final long serialVersionUID = 3109256773218160485L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final WorkflowDefinitionTO ignore) {
+                        modal.header(Model.of(model.getObject().getKey()));
+                        modal.setContent(new ImageModalPanel<>(
+                                modal, restClient.getDiagram(model.getObject().getKey()), pageRef));
+                        modal.show(target);
+                        target.add(modal);
+                    }
+                }, ActionLink.ActionType.VIEW, StandardEntitlement.WORKFLOW_DEF_GET);
+
+                panel.add(new ActionLink<WorkflowDefinitionTO>() {
+
+                    private static final long serialVersionUID = -184018732772021627L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final WorkflowDefinitionTO ignore) {
+                        final IModel<String> wfDefinition = new Model<>();
+                        try {
+                            wfDefinition.setObject(IOUtils.toString(restClient.getDefinition(
+                                    MediaType.APPLICATION_XML_TYPE, model.getObject().getKey())));
+                        } catch (IOException e) {
+                            LOG.error("Could not get workflow definition", e);
+                        }
+
+                        utility.header(Model.of(model.getObject().getKey()));
+                        utility.setContent(new XMLEditorPanel(utility, wfDefinition, false, pageRef) {
+
+                            private static final long serialVersionUID = -7688359318035249200L;
+
+                            @Override
+                            public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+                                if (StringUtils.isNotBlank(wfDefinition.getObject())) {
+                                    try {
+                                        restClient.setDefinition(MediaType.APPLICATION_XML_TYPE,
+                                                model.getObject().getKey(), wfDefinition.getObject());
+                                        SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+
+                                        utility.show(false);
+                                        utility.close(target);
+                                    } catch (SyncopeClientException e) {
+                                        SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage())
+                                                ? e.getClass().getName() : e.getMessage());
+                                    }
+                                    ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+                                }
+                            }
+                        });
+                        utility.show(target);
+                        target.add(utility);
+                    }
+                }, ActionLink.ActionType.EDIT, StandardEntitlement.WORKFLOW_DEF_SET);
+
+                panel.add(new ActionLink<WorkflowDefinitionTO>() {
+
+                    private static final long serialVersionUID = -184018732772021627L;
+
+                    @Override
+                    public Class<? extends Page> getPageClass() {
+                        return ModelerPopupPage.class;
+                    }
+
+                    @Override
+                    public PageParameters getPageParameters() {
+                        PageParameters parameters = new PageParameters();
+                        if (modelerCtx != null) {
+                            parameters.add(Constants.MODELER_CONTEXT, modelerCtx);
+                        }
+                        parameters.add(Constants.MODEL_ID_PARAM, model.getObject().getModelId());
+
+                        return parameters;
+                    }
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final WorkflowDefinitionTO ignore) {
+                        // do nothing
+                    }
+                }, ActionLink.ActionType.WORKFLOW_MODELER, StandardEntitlement.WORKFLOW_DEF_SET, modelerCtx != null);
+
+                panel.add(new ActionLink<WorkflowDefinitionTO>() {
+
+                    private static final long serialVersionUID = -7978723352517770644L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final WorkflowDefinitionTO ignore) {
+                        try {
+                            restClient.deleteDefinition(model.getObject().getKey());
+                            SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
+                            target.add(container);
+                        } catch (SyncopeClientException e) {
+                            LOG.error("While deleting workflow definition {}", model.getObject().getName(), e);
+                            SyncopeConsoleSession.get().error(
+                                    StringUtils.isBlank(e.getMessage()) ? e.getClass().getName() : e.getMessage());
+                        }
+                        ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
+                    }
+                }, ActionLink.ActionType.DELETE, StandardEntitlement.WORKFLOW_DEF_DELETE, !model.getObject().isMain());
+
+                return panel.build(componentId);
+            }
+
+            @Override
+            public ActionLinksPanel<WorkflowDefinitionTO> getHeader(final String componentId) {
+                final ActionLinksPanel.Builder<WorkflowDefinitionTO> panel = ActionLinksPanel.builder();
+
+                return panel.add(new ActionLink<WorkflowDefinitionTO>() {
+
+                    private static final long serialVersionUID = -184018732772021627L;
+
+                    @Override
+                    public void onClick(final AjaxRequestTarget target, final WorkflowDefinitionTO ignore) {
+                        if (target != null) {
+                            target.add(container);
+                        }
+                    }
+                }, ActionLink.ActionType.RELOAD, StandardEntitlement.WORKFLOW_DEF_LIST).build(componentId);
+            }
+        });
+
+        return columns;
+    }
+
+    @Override
+    protected Collection<ActionLink.ActionType> getBulkActions() {
+        return Collections.emptyList();
+    }
+
+    public abstract static class Builder
+            extends DirectoryPanel.Builder<WorkflowDefinitionTO, WorkflowDefinitionTO, WorkflowRestClient> {
+
+        private static final long serialVersionUID = 5088962796986706805L;
+
+        public Builder(final PageReference pageRef) {
+            super(new WorkflowRestClient(), pageRef);
+        }
+
+        @Override
+        protected WizardMgtPanel<WorkflowDefinitionTO> newInstance(final String id, final boolean wizardInModal) {
+            return new WorkflowDirectoryPanel(id, this);
+        }
+    }
+
+    protected class WorkflowDefinitionDataProvider extends DirectoryDataProvider<WorkflowDefinitionTO> {
+
+        private static final long serialVersionUID = 1764153405387687592L;
+
+        private final SortableDataProviderComparator<WorkflowDefinitionTO> comparator;
+
+        private final WorkflowRestClient restClient = new WorkflowRestClient();
+
+        public WorkflowDefinitionDataProvider(final int paginatorRows) {
+            super(paginatorRows);
+            this.comparator = new SortableDataProviderComparator<>(this);
+            setSort("main", SortOrder.DESCENDING);
+        }
+
+        @Override
+        public Iterator<WorkflowDefinitionTO> iterator(final long first, final long count) {
+            List<WorkflowDefinitionTO> result = restClient.getDefinitions();
+            Collections.sort(result, comparator);
+            return result.subList((int) first, (int) first + (int) count).iterator();
+        }
+
+        @Override
+        public long size() {
+            return restClient.getDefinitions().size();
+        }
+
+        @Override
+        public IModel<WorkflowDefinitionTO> model(final WorkflowDefinitionTO object) {
+            return new CompoundPropertyModel<>(object);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowTogglePanel.java
deleted file mode 100644
index 4b6fcbb..0000000
--- a/client/console/src/main/java/org/apache/syncope/client/console/panels/WorkflowTogglePanel.java
+++ /dev/null
@@ -1,162 +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.client.console.panels;
-
-import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.Modal;
-import java.io.File;
-import java.io.IOException;
-import javax.ws.rs.core.MediaType;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.console.SyncopeConsoleApplication;
-import org.apache.syncope.client.console.SyncopeConsoleSession;
-import org.apache.syncope.client.console.commons.Constants;
-import org.apache.syncope.client.console.pages.ModelerPopupPage;
-import org.apache.syncope.client.console.pages.BasePage;
-import org.apache.syncope.client.console.rest.WorkflowRestClient;
-import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
-import org.apache.syncope.client.console.wicket.markup.html.form.XMLEditorPanel;
-import org.apache.syncope.client.console.wicket.markup.html.link.VeilPopupSettings;
-import org.apache.syncope.common.lib.SyncopeClientException;
-import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.wicket.PageReference;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.markup.html.AjaxLink;
-import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
-import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
-import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.util.io.IOUtils;
-
-public class WorkflowTogglePanel extends TogglePanel<String> {
-
-    private static final long serialVersionUID = -2025535531121434056L;
-
-    private final WebMarkupContainer container;
-
-    protected final BaseModal<String> modal;
-
-    public WorkflowTogglePanel(final String id, final PageReference pageRef, final Image workflowDefDiagram) {
-        super(id, pageRef);
-        modal = new BaseModal<>("outer");
-        addOuterObject(modal);
-        modal.size(Modal.Size.Large);
-
-        container = new WebMarkupContainer("container");
-        container.setOutputMarkupPlaceholderTag(true);
-        addInnerObject(container);
-
-        // Check if Activiti or Flowable Modeler directory is found
-        String modelerContext = null;
-        try {
-            if (SyncopeConsoleApplication.get().getActivitiModelerDirectory() != null) {
-                File baseDir = new File(SyncopeConsoleApplication.get().getActivitiModelerDirectory());
-                if (baseDir.exists() && baseDir.canRead() && baseDir.isDirectory()) {
-                    modelerContext = Constants.ACTIVITI_MODELER_CONTEXT;
-                }
-            }
-
-            if (SyncopeConsoleApplication.get().getFlowableModelerDirectory() != null) {
-                File baseDir = new File(SyncopeConsoleApplication.get().getFlowableModelerDirectory());
-                if (baseDir.exists() && baseDir.canRead() && baseDir.isDirectory()) {
-                    modelerContext = Constants.FLOWABLE_MODELER_CONTEXT;
-                }
-            }
-        } catch (Exception e) {
-            LOG.error("Could not check for Modeler directory", e);
-        }
-
-        PageParameters parameters = new PageParameters();
-        if (modelerContext != null) {
-            parameters.add(Constants.MODELER_CONTEXT, modelerContext);
-        }
-        BookmarkablePageLink<Void> workflowModeler =
-                new BookmarkablePageLink<>("workflowModeler", ModelerPopupPage.class, parameters);
-        workflowModeler.setPopupSettings(new VeilPopupSettings().setHeight(600).setWidth(800));
-        MetaDataRoleAuthorizationStrategy.authorize(workflowModeler, ENABLE, StandardEntitlement.WORKFLOW_DEF_READ);
-        container.add(workflowModeler);
-        workflowModeler.setEnabled(modelerContext != null);
-
-        AjaxSubmitLink xmlEditorSubmit = modal.addSubmitButton();
-        MetaDataRoleAuthorizationStrategy.authorize(xmlEditorSubmit, RENDER, StandardEntitlement.WORKFLOW_DEF_UPDATE);
-        modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
-
-            private static final long serialVersionUID = 8804221891699487139L;
-
-            @Override
-            public void onClose(final AjaxRequestTarget target) {
-                modal.show(false);
-                modal.close(target);
-                target.add(workflowDefDiagram);
-            }
-        });
-
-        AjaxLink<Void> xmlEditor = new AjaxLink<Void>("xmlEditor") {
-
-            private static final long serialVersionUID = -1964967067512351526L;
-
-            private final WorkflowRestClient restClient = new WorkflowRestClient();
-
-            @Override
-            public void onClick(final AjaxRequestTarget target) {
-                final IModel<String> wfDefinition = new Model<>();
-                try {
-                    wfDefinition.setObject(IOUtils.toString(restClient.getDefinition(MediaType.APPLICATION_XML_TYPE)));
-                } catch (IOException e) {
-                    LOG.error("Could not get workflow definition", e);
-                }
-
-                target.add(modal.setContent(new XMLEditorPanel(modal, wfDefinition, false, pageRef) {
-
-                    private static final long serialVersionUID = 5488080606102212554L;
-
-                    @Override
-                    public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
-                        if (StringUtils.isNotBlank(wfDefinition.getObject())) {
-                            try {
-                                restClient.updateDefinition(MediaType.APPLICATION_XML_TYPE, wfDefinition.getObject());
-                                SyncopeConsoleSession.get().info(getString(Constants.OPERATION_SUCCEEDED));
-
-                                modal.show(false);
-                                modal.close(target);
-                            } catch (SyncopeClientException e) {
-                                SyncopeConsoleSession.get().error(StringUtils.isBlank(e.getMessage()) ? e.getClass().
-                                        getName() : e.
-                                                getMessage());
-                            }
-                            ((BasePage) pageRef.getPage()).getNotificationPanel().refresh(target);
-                        }
-                    }
-                }));
-
-                modal.header(new ResourceModel("xmlEditorTitle"));
-                modal.show(true);
-            }
-        };
-        MetaDataRoleAuthorizationStrategy.authorize(xmlEditor, RENDER, StandardEntitlement.WORKFLOW_DEF_READ);
-        container.add(xmlEditor);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java b/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
new file mode 100644
index 0000000..53bc669
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
@@ -0,0 +1,54 @@
+/*
+ * 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.client.console.resources;
+
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.rest.WorkflowRestClient;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
+import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.wicket.util.string.StringValue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+abstract class AbstractWorkflowResource extends AbstractResource {
+
+    private static final long serialVersionUID = 5163553843196539019L;
+
+    protected static final Logger LOG = LoggerFactory.getLogger(AbstractWorkflowResource.class);
+
+    protected final WorkflowRestClient restClient = new WorkflowRestClient();
+
+    protected WorkflowDefinitionTO getWorkflowDefinition(final Attributes attributes) {
+        final StringValue modelId =
+                attributes.getRequest().getQueryParameters().getParameterValue(Constants.MODEL_ID_PARAM);
+
+        WorkflowDefinitionTO workflowDefinition = modelId == null ? null
+                : IterableUtils.find(restClient.getDefinitions(), new Predicate<WorkflowDefinitionTO>() {
+
+                    @Override
+                    public boolean evaluate(final WorkflowDefinitionTO object) {
+                        return modelId.toString().equals(object.getModelId());
+                    }
+                });
+
+        return workflowDefinition;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
index ab89c0a..2c14d35 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefGETResource.java
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import javax.ws.rs.core.MediaType;
 import org.apache.syncope.client.console.rest.WorkflowRestClient;
-import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.wicket.util.io.IOUtils;
 
 /**
@@ -30,12 +30,14 @@ import org.apache.wicket.util.io.IOUtils;
  *
  * @see org.apache.syncope.common.rest.api.service.WorkflowService#exportDefinition
  */
-public class WorkflowDefGETResource extends AbstractResource {
+public class WorkflowDefGETResource extends AbstractWorkflowResource {
 
     private static final long serialVersionUID = 4637304868056148970L;
 
     @Override
     protected ResourceResponse newResourceResponse(final Attributes attributes) {
+        final WorkflowDefinitionTO toGet = getWorkflowDefinition(attributes);
+
         ResourceResponse response = new ResourceResponse();
         response.disableCaching();
         response.setContentType(MediaType.APPLICATION_JSON);
@@ -45,7 +47,7 @@ public class WorkflowDefGETResource extends AbstractResource {
             @Override
             public void writeData(final Attributes attributes) throws IOException {
                 IOUtils.copy(
-                        new WorkflowRestClient().getDefinition(MediaType.APPLICATION_JSON_TYPE),
+                        new WorkflowRestClient().getDefinition(MediaType.APPLICATION_JSON_TYPE, toGet.getKey()),
                         attributes.getResponse().getOutputStream());
             }
         });

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
index eb6b982..bd34711 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/resources/WorkflowDefPUTResource.java
@@ -23,25 +23,18 @@ import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.cxf.common.util.UrlUtils;
-import org.apache.syncope.client.console.rest.WorkflowRestClient;
-import org.apache.wicket.request.resource.AbstractResource;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.wicket.util.io.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Mirror REST resource for putting user workflow definition in JSON (used by Activiti / Flowable Modeler).
  *
  * @see org.apache.syncope.common.rest.api.service.WorkflowService#importDefinition
  */
-public class WorkflowDefPUTResource extends AbstractResource {
+public class WorkflowDefPUTResource extends AbstractWorkflowResource {
 
     private static final long serialVersionUID = 2964542005207297944L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(WorkflowDefPUTResource.class);
-
-    private final WorkflowRestClient restClient = new WorkflowRestClient();
-
     @Override
     protected ResourceResponse newResourceResponse(final Attributes attributes) {
         String definition = null;
@@ -58,14 +51,17 @@ public class WorkflowDefPUTResource extends AbstractResource {
         } catch (IOException e) {
             LOG.error("Could not extract workflow definition", e);
         }
-        if (definition == null) {
+
+        WorkflowDefinitionTO toSet = getWorkflowDefinition(attributes);
+
+        if (definition == null || toSet == null) {
             return new ResourceResponse().setStatusCode(Response.Status.BAD_REQUEST.getStatusCode()).
                     setError(Response.Status.BAD_REQUEST.getStatusCode(),
-                            "Could not extract workflow definition");
+                            "Could not extract workflow model id and / or definition");
         }
 
         try {
-            restClient.updateDefinition(MediaType.APPLICATION_JSON_TYPE, definition);
+            restClient.setDefinition(MediaType.APPLICATION_JSON_TYPE, toSet.getKey(), definition);
             return new ResourceResponse().setStatusCode(Response.Status.NO_CONTENT.getStatusCode());
         } catch (Exception e) {
             LOG.error("While updating workflow definition", e);

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/rest/WorkflowRestClient.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/rest/WorkflowRestClient.java b/client/console/src/main/java/org/apache/syncope/client/console/rest/WorkflowRestClient.java
index 8d9c424..14711a4 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/rest/WorkflowRestClient.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/rest/WorkflowRestClient.java
@@ -19,11 +19,13 @@
 package org.apache.syncope.client.console.rest;
 
 import java.io.InputStream;
+import java.util.List;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.common.lib.to.WorkflowDefinitionTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.service.WorkflowService;
@@ -36,16 +38,20 @@ public class WorkflowRestClient extends BaseRestClient {
         return SyncopeConsoleSession.get().getService(mediaType, WorkflowService.class);
     }
 
-    public InputStream getDefinition(final MediaType mediaType) {
-        Response response = getService(mediaType).exportDefinition(AnyTypeKind.USER);
+    public List<WorkflowDefinitionTO> getDefinitions() {
+        return getService(WorkflowService.class).list(AnyTypeKind.USER.name());
+    }
+
+    public InputStream getDefinition(final MediaType mediaType, final String key) {
+        Response response = getService(mediaType).get(AnyTypeKind.USER.name(), key);
 
         return (InputStream) response.getEntity();
     }
 
-    public byte[] getDiagram() {
+    public byte[] getDiagram(final String key) {
         WorkflowService service = getService(WorkflowService.class);
         WebClient.client(service).accept(RESTHeaders.MEDIATYPE_IMAGE_PNG);
-        Response response = service.exportDiagram(AnyTypeKind.USER);
+        Response response = service.exportDiagram(AnyTypeKind.USER.name(), key);
 
         byte[] diagram;
         try {
@@ -57,7 +63,11 @@ public class WorkflowRestClient extends BaseRestClient {
         return diagram;
     }
 
-    public void updateDefinition(final MediaType mediaType, final String definition) {
-        getService(mediaType).importDefinition(AnyTypeKind.USER, definition);
+    public void setDefinition(final MediaType mediaType, final String key, final String definition) {
+        getService(mediaType).set(AnyTypeKind.USER.name(), key, definition);
+    }
+
+    public void deleteDefinition(final String key) {
+        getService(WorkflowService.class).delete(AnyTypeKind.USER.name(), key);
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
index 2fef62f..c4c5bf7 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLink.java
@@ -19,7 +19,9 @@
 package org.apache.syncope.client.console.wicket.markup.html.form;
 
 import java.io.Serializable;
+import org.apache.wicket.Page;
 import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 public abstract class ActionLink<T extends Serializable> implements Serializable {
 
@@ -91,7 +93,8 @@ public abstract class ActionLink<T extends Serializable> implements Serializable
         PROPAGATION_TASKS("read"),
         NOTIFICATION_TASKS("read"),
         ZOOM_IN("zoomin"),
-        ZOOM_OUT("zoomout");
+        ZOOM_OUT("zoomout"),
+        WORKFLOW_MODELER("workflowModeler");
 
         private final String actionId;
 
@@ -126,6 +129,14 @@ public abstract class ActionLink<T extends Serializable> implements Serializable
         return true;
     }
 
+    public Class<? extends Page> getPageClass() {
+        return null;
+    }
+
+    public PageParameters getPageParameters() {
+        return null;
+    }
+
     public final ActionLink<T> disable() {
         this.enabled = false;
         return this;

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
index 9e2bd0c..c9a632d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.java
@@ -24,9 +24,11 @@ import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Triple;
+import org.apache.syncope.client.console.wicket.markup.html.link.VeilPopupSettings;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.authroles.authorization.strategies.role.metadata.MetaDataRoleAuthorizationStrategy;
 import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxLink;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
 import org.apache.wicket.markup.html.panel.Fragment;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.model.IModel;
@@ -103,6 +105,7 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
         super.add(new Fragment("panelNotificationTasks", "emptyFragment", this));
         super.add(new Fragment("panelZoomIn", "emptyFragment", this));
         super.add(new Fragment("panelZoomOut", "emptyFragment", this));
+        super.add(new Fragment("panelWorkflowModeler", "emptyFragment", this));
     }
 
     public ActionLinksPanel<T> add(
@@ -945,19 +948,19 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                 fragment.addOrReplace(
                         new IndicatingOnConfirmAjaxLink<Void>("unassignLink", "confirmUnassign", enabled) {
 
-                    private static final long serialVersionUID = -6957616042924610294L;
+                            private static final long serialVersionUID = -6957616042924610294L;
 
-                    @Override
-                    public void onClick(final AjaxRequestTarget target) {
-                        link.onClick(target, model.getObject());
-                    }
+                            @Override
+                            public void onClick(final AjaxRequestTarget target) {
+                                link.onClick(target, model.getObject());
+                            }
 
-                    @Override
-                    public String getAjaxIndicatorMarkupId() {
-                        return disableIndicator || !link.isIndicatorEnabled()
-                                ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
-                    }
-                }.setVisible(link.isEnabled(model.getObject())));
+                            @Override
+                            public String getAjaxIndicatorMarkupId() {
+                                return disableIndicator || !link.isIndicatorEnabled()
+                                        ? StringUtils.EMPTY : super.getAjaxIndicatorMarkupId();
+                            }
+                        }.setVisible(link.isEnabled(model.getObject())));
                 break;
 
             case ASSIGN:
@@ -1140,6 +1143,15 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                 }.setVisible(link.isEnabled(model.getObject())));
                 break;
 
+            case WORKFLOW_MODELER:
+                fragment = new Fragment("panelWorkflowModeler", "fragmentWorkflowModeler", this);
+
+                fragment.addOrReplace(new BookmarkablePageLink<>(
+                        "workflowModelerLink", link.getPageClass(), link.getPageParameters()).
+                        setPopupSettings(new VeilPopupSettings().setHeight(600).setWidth(800)).
+                        setVisible(link.isEnabled(model.getObject())));
+                break;
+
             default:
             // do nothing
         }
@@ -1336,6 +1348,10 @@ public final class ActionLinksPanel<T extends Serializable> extends Panel {
                 super.addOrReplace(new Fragment("panelZoomOut", "emptyFragment", this));
                 break;
 
+            case WORKFLOW_MODELER:
+                super.addOrReplace(new Fragment("panelWorkflowModelert", "emptyFragment", this));
+                break;
+
             default:
             // do nothing
         }

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.java
new file mode 100644
index 0000000..cf9c108
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.java
@@ -0,0 +1,58 @@
+/*
+ * 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.client.console.wicket.markup.html.form;
+
+import java.io.Serializable;
+import org.apache.syncope.client.console.panels.AbstractModalPanel;
+import org.apache.syncope.client.console.wicket.markup.html.bootstrap.dialog.BaseModal;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.DynamicImageResource;
+import org.apache.wicket.request.resource.IResource;
+
+public class ImageModalPanel<T extends Serializable> extends AbstractModalPanel<T> {
+
+    private static final long serialVersionUID = 5044632306261219075L;
+
+    public ImageModalPanel(final BaseModal<T> modal, final byte[] content, final PageReference pageRef) {
+        super(modal, pageRef);
+
+        Image image = new Image("image", new Model<IResource>()) {
+
+            private static final long serialVersionUID = -8457850449086490660L;
+
+            @Override
+            protected IResource getImageResource() {
+                return new DynamicImageResource() {
+
+                    private static final long serialVersionUID = 923201517955737928L;
+
+                    @Override
+                    protected byte[] getImageData(final IResource.Attributes attributes) {
+                        return content;
+                    }
+                };
+            }
+        };
+        image.setOutputMarkupId(true);
+        add(image);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
index 656bb9a..723c46a 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.html
@@ -20,17 +20,18 @@ under the License.
   <wicket:extend>
     <section class="content-header">
       <h1>&nbsp;</h1>
+      <ol class="breadcrumb">
+        <li><a wicket:id="dashboardBr"><i class="fa fa-dashboard"></i> <wicket:message key="dashboard"/></a></li>
+        <li class="active"><wicket:message key="configuration"/></li>
+        <li class="active"><wicket:message key="workflow"/></li>
+      </ol>
     </section>
 
-    <section class="content">
-      <div>
-        <span wicket:id="disabled"><i><wicket:message key="disabled"/></i></span>
-        <span wicket:id="workflowDefContainer">
-          <img wicket:id="workflowDefDiagram" style="width: 100%;"/>
-          <span wicket:id="togglePanel"/>
-        </span>
+    <section class="content" wicket:id="content">
+      <span wicket:id="disabled"><i><wicket:message key="disabled"/></i></span>
+      <div class="box">
+        <div class="box-body" wicket:id="workflowsPanel"/>
       </div>
     </section>
-
   </wicket:extend>
 </html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.properties
index 9ad5cd1..da1e1ce 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow.properties
@@ -16,3 +16,4 @@
 # under the License.
 disabled=Edit the workflow definition is not supported by the configured Workflow Adapter.
 xmlEditorTitle=Workflow XML Editor
+main=Main

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_it.properties
index c4e373b..d3faf2b 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_it.properties
@@ -16,3 +16,4 @@
 # under the License.
 disabled=Il Workflow Adapter corrent non consente la modifica della definizione del workflow.
 xmlEditorTitle=Workflow XML Editor
+main=Principale

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_pt_BR.properties
index 9ad5cd1..da1e1ce 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_pt_BR.properties
@@ -16,3 +16,4 @@
 # under the License.
 disabled=Edit the workflow definition is not supported by the configured Workflow Adapter.
 xmlEditorTitle=Workflow XML Editor
+main=Main

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_ru.properties
index 2994bef..5b53981 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/pages/Workflow_ru.properties
@@ -19,3 +19,4 @@
 disabled=Edit the workflow definition is not supported by the configured Workflow Adapter.
 # xmlEditorTitle=XML \u00d1\u0080\u00d0\u00b5\u00d0\u00b4\u00d0\u00b0\u00d0\u00ba\u00d1\u0082\u00d0\u00be\u00d1\u0080 \u00d0\u00bf\u00d1\u0080\u00d0\u00be\u00d1\u0086\u00d0\u00b5\u00d1\u0081\u00d1\u0081\u00d0\u00b0 \u00d1\u0081\u00d0\u00be\u00d0\u00b3\u00d0\u00bb\u00d0\u00b0\u00d1\u0081\u00d0\u00be\u00d0\u00b2\u00d0\u00b0\u00d0\u00bd\u00d0\u00b8\u00d1\u008f
 xmlEditorTitle=XML \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044f
+main=Main

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.html
index d700143..d0dad1e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnObjectListViewPanel.html
@@ -20,7 +20,7 @@ under the License.
   <wicket:panel>
     <span wicket:id="objs"/>
     <div wicket:id="arrows">
-      <a haref="#" class="btn btn-primary btn-circle btn-lg pull-right" wicket:id="next"><i class="fa fa-chevron-right"></i></a>
+      <a href="#" class="btn btn-primary btn-circle btn-lg pull-right" wicket:id="next"><i class="fa fa-chevron-right"></i></a>
     </div>
   </wicket:panel>
 </html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/panels/NewWorkflowProcess.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/NewWorkflowProcess.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/NewWorkflowProcess.html
new file mode 100644
index 0000000..6197d5a
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/NewWorkflowProcess.html
@@ -0,0 +1,32 @@
+<!--
+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>
+    <div id="startAtContainer">
+      <form wicket:id="form">
+        <div class="input-group">
+          <input wicket:id="key"/>
+          <div class="input-group-addon">
+            <a wicket:id="submit"><i class="fa fa-file-o" alt="new" title="new"></i></a>
+          </div>
+        </div>
+      </form>
+    </div>
+  </wicket:extend>
+</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.html
new file mode 100644
index 0000000..d170041
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowDirectoryPanel.html
@@ -0,0 +1,23 @@
+<!--
+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>
+    <span wicket:id="newWorkflowProcess"/>
+  </wicket:extend>
+</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowTogglePanel.html
deleted file mode 100644
index 0ca7f70..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/WorkflowTogglePanel.html
+++ /dev/null
@@ -1,50 +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:head>
-    <script type="text/javascript">
-      $(document).ready(function () {
-        $("div.inactive-topology-menu").toggle("slow");
-        $("div.inactive-topology-menu").attr("class", "topology-menu active-topology-menu");
-      });
-    </script>
-
-    <style type="text/css">
-      div.topology-menu {
-        top: 65px !important;
-      }
-
-      div.topology-menu div.header {
-        display: none !important;
-      }
-    </style>
-  </wicket:head>
-  <wicket:extend>
-    <div wicket:id="container">
-      <ul class="menu">
-        <wicket:enclosure child="workflowModeler">
-          <li><a href="#" wicket:id="workflowModeler"><i class="fa fa-file-image-o"></i>Workflow Modeler</a></li>
-        </wicket:enclosure>
-        <wicket:enclosure child="xmlEditor">
-          <li><a href="#" wicket:id="xmlEditor"><i class="fa fa-file-text-o"></i>XML editor</a></li>
-        </wicket:enclosure>
-      </ul>
-    </div>
-  </wicket:extend>
-</html>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/panels/empty.bpmn20.xml
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/empty.bpmn20.xml b/client/console/src/main/resources/org/apache/syncope/client/console/panels/empty.bpmn20.xml
new file mode 100644
index 0000000..7e9e7ea
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/empty.bpmn20.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" 
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
+             xmlns:activiti="http://activiti.org/bpmn" 
+             xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" 
+             xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" 
+             xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" 
+             typeLanguage="http://www.w3.org/2001/XMLSchema" 
+             expressionLanguage="http://www.w3.org/1999/XPath" 
+             targetNamespace="http://activiti.org/bpmn20">
+
+  <process id="%KEY%" name="%KEY%" isExecutable="true">
+    <startEvent id="startevent1" name="Start"></startEvent>
+    <endEvent id="endevent1" name="End"></endEvent>
+    <sequenceFlow id="flow1" sourceRef="startevent1" targetRef="endevent1"></sequenceFlow>
+  </process>
+  <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
+    <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
+      <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
+        <omgdc:Bounds height="35.0" width="35.0" x="180.0" y="110.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
+        <omgdc:Bounds height="35.0" width="35.0" x="460.0" y="110.0"></omgdc:Bounds>
+      </bpmndi:BPMNShape>
+      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
+        <omgdi:waypoint x="215.0" y="127.0"></omgdi:waypoint>
+        <omgdi:waypoint x="460.0" y="127.0"></omgdi:waypoint>
+      </bpmndi:BPMNEdge>
+    </bpmndi:BPMNPlane>
+  </bpmndi:BPMNDiagram>
+</definitions>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
index c4ab06e..65a7eb7 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ActionLinksPanel.html
@@ -63,6 +63,7 @@ under the License.
     <span wicket:id="panelNotificationTasks">[plus]</span>
     <span wicket:id="panelDeprovisionMembers">[plus]</span>
     <span wicket:id="panelProvisionMembers">[plus]</span>
+    <span wicket:id="panelWorkflowModeler">[plus]</span>
     <span wicket:id="panelDelete">[plus]</span>
     <span wicket:id="panelSelect">[select]</span>
     <span wicket:id="panelClose">[close]</span>
@@ -287,6 +288,10 @@ under the License.
       <a href="#" wicket:id="zoomOutLink" class="btn"><i class="fa fa-search-minus" alt="zoom out icon" title="Zoom Out"></i></a>
     </wicket:fragment>
 
+    <wicket:fragment wicket:id="fragmentWorkflowModeler">
+      <a wicket:id="workflowModelerLink" class="btn"><i class="fa fa-picture-o" alt="picture icon" title="Workflow Modeler"></i></a>
+    </wicket:fragment>
+
     <wicket:fragment wicket:id="emptyFragment">
     </wicket:fragment>
   </wicket:panel>

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.html
new file mode 100644
index 0000000..eca8d93
--- /dev/null
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/ImageModalPanel.html
@@ -0,0 +1,23 @@
+<!--
+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:panel>
+    <img wicket:id="image" style="width: 100%;"/>
+  </wicket:panel>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/7a440618/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
index 0a0d409..80736d2 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/wizards/WizardMgtPanel.html
@@ -43,10 +43,10 @@ under the License.
 
       <wicket:enclosure child="add">
         <div class="modal-footer" style="text-align: right">
-          <a haref="#"  class="btn btn-default btn-circle btn-lg pull-left" wicket:id="exit">
+          <a href="#"  class="btn btn-default btn-circle btn-lg pull-left" wicket:id="exit">
             <i class="fa fa-sign-out"></i>
           </a>
-          <a haref="#"  class="btn btn-primary btn-circle btn-lg" wicket:id="add">
+          <a href="#"  class="btn btn-primary btn-circle btn-lg" wicket:id="add">
             <i class="glyphicon glyphicon-plus"></i>
           </a>
         </div>


[02/50] [abbrv] syncope git commit: Upgrading Jackson, LOG4J, AngularJS

Posted by il...@apache.org.
Upgrading Jackson, LOG4J, AngularJS


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

Branch: refs/heads/SYNCOPE-808
Commit: 7ce0a559979878dbbf7979c1eb624ca82846c345
Parents: 23fdc91
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Mon Apr 10 08:19:25 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Mon Apr 10 08:19:25 2017 +0200

----------------------------------------------------------------------
 pom.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/7ce0a559/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 557faa0..f9a10d9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -359,7 +359,7 @@ under the License.
 
     <cxf.version>3.1.10</cxf.version>
 
-    <jackson.version>2.8.7</jackson.version>
+    <jackson.version>2.8.8</jackson.version>
 
     <spring.version>4.3.7.RELEASE</spring.version>
     <spring-security.version>4.2.2.RELEASE</spring-security.version>
@@ -384,7 +384,7 @@ under the License.
     <slf4j.version>1.7.25</slf4j.version>
     <opensaml.version>3.2.0</opensaml.version>
 
-    <log4j.version>2.8.1</log4j.version>
+    <log4j.version>2.8.2</log4j.version>
     <disruptor.version>3.3.6</disruptor.version>
 
     <commons-io.version>2.5</commons-io.version>
@@ -429,7 +429,7 @@ under the License.
     <wicket-bootstrap.version>0.10.11</wicket-bootstrap.version>
     <wicket-chartjs.version>7.0.1</wicket-chartjs.version>
 
-    <angular.version>1.6.3</angular.version>
+    <angular.version>1.6.4</angular.version>
     <angular-ui-router.version>0.3.2</angular-ui-router.version>
     <angular-ui-bootstrap.version>1.3.3</angular-ui-bootstrap.version>
     <angular-ui-select.version>0.19.6</angular-ui-select.version>


[12/50] [abbrv] syncope git commit: [SYNCOPE-1064] improved security to avoid JS hacking and exploitation, added relative tests and moved form customization server side

Posted by il...@apache.org.
[SYNCOPE-1064] improved security to avoid JS hacking and exploitation, added relative tests and moved form customization server side


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

Branch: refs/heads/SYNCOPE-808
Commit: b292d3c08680046a859ab0a3a7e1ff21c7a5f0e6
Parents: dcc1266
Author: Andrea Patricelli <an...@apache.org>
Authored: Wed Apr 12 11:21:56 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Wed Apr 12 12:12:57 2017 +0200

----------------------------------------------------------------------
 archetype/pom.xml                               |   2 +
 .../archetype-resources/enduser/pom.xml         |   4 +
 client/enduser/pom.xml                          |   8 +
 .../enduser/SyncopeEnduserApplication.java      | 101 ++++++++++
 .../client/enduser/SyncopeEnduserConstants.java |   2 +
 .../client/enduser/SyncopeEnduserSession.java   |  15 ++
 .../enduser/adapters/PlatformInfoAdapter.java   |   6 +-
 .../client/enduser/model/CustomAttribute.java   |  62 ++++++
 .../enduser/model/CustomAttributesInfo.java     |   8 +-
 .../enduser/model/PlatformInfoRequest.java      |  11 +
 .../enduser/resources/BaseUserSelfResource.java |  14 ++
 .../client/enduser/resources/InfoResource.java  |  12 +-
 .../enduser/resources/SchemaResource.java       |  14 +-
 .../resources/UserSelfCreateResource.java       | 200 ++++++++++---------
 .../enduser/resources/UserSelfReadResource.java |  40 +++-
 .../resources/UserSelfUpdateResource.java       | 188 +++++++++--------
 .../enduser/util/UserRequestValidator.java      |  86 ++++++++
 .../resources/app/configuration/customForm.json |   1 -
 .../resources/META-INF/resources/app/js/app.js  |  15 +-
 .../app/js/controllers/UserController.js        |   2 +-
 .../app/js/services/configurationService.js     |  41 ----
 .../resources/app/js/services/schemaService.js  |  12 +-
 .../enduser/src/main/resources/customForm.json  |   1 +
 .../enduser/util/UserRequestValidatorTest.java  |  85 ++++++++
 .../enduser/src/test/resources/customForm.json  |  47 +++++
 deb/enduser/pom.xml                             |   1 +
 deb/enduser/src/deb/control/conffiles           |   1 +
 .../src/main/resources/customForm.json          |   1 +
 .../src/test/resources/customForm.json          |   1 +
 29 files changed, 711 insertions(+), 270 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/archetype/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/pom.xml b/archetype/pom.xml
index 1e0088e..8ecc078 100644
--- a/archetype/pom.xml
+++ b/archetype/pom.xml
@@ -258,6 +258,7 @@ under the License.
         <targetPath>${project.build.outputDirectory}/archetype-resources/enduser/src/main/resources</targetPath>
         <includes>
           <include>enduser.properties</include>
+          <include>customForm.json</include>
         </includes>
       </resource>
       <resource>
@@ -284,6 +285,7 @@ under the License.
         <includes>
           <include>enduser.properties</include>
           <include>saml2sp-agent.properties</include>
+          <include>customForm.json</include>
         </includes>
       </resource>
       <resource>

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/archetype/src/main/resources/archetype-resources/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/enduser/pom.xml b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
index 803a4ea..4a4edab 100644
--- a/archetype/src/main/resources/archetype-resources/enduser/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
@@ -246,6 +246,10 @@ under the License.
                     <copy file="${project.build.directory}/test-classes/enduser.properties" 
                           todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
                           overwrite="true"/>
+                    
+                    <copy file="${project.build.directory}/test-classes/customForm" 
+                                todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
+                                overwrite="true"/>
                   </target>
                 </configuration>
                 <goals>

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml
index d544cd3..48f4f04 100644
--- a/client/enduser/pom.xml
+++ b/client/enduser/pom.xml
@@ -182,6 +182,14 @@ under the License.
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
     </dependency>
+    
+    <!-- TEST -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    
   </dependencies>
   
   <build>

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
index cfed2c5..fc0d730 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
@@ -18,16 +18,28 @@
  */
 package org.apache.syncope.client.enduser;
 
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
 import org.apache.syncope.client.enduser.pages.HomePage;
 import java.util.Properties;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.monitor.FileAlterationListener;
+import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
+import org.apache.commons.io.monitor.FileAlterationMonitor;
+import org.apache.commons.io.monitor.FileAlterationObserver;
 import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.client.enduser.annotations.Resource;
 import org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup;
 import org.apache.syncope.client.enduser.init.EnduserInitializer;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.client.enduser.resources.CaptchaResource;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.syncope.common.lib.SyncopeConstants;
@@ -52,6 +64,8 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
 
     private static final String ENDUSER_PROPERTIES = "enduser.properties";
 
+    private static final String CUSTOM_FORM_FILE = "customForm.json";
+
     public static SyncopeEnduserApplication get() {
         return (SyncopeEnduserApplication) WebApplication.get();
     }
@@ -76,6 +90,10 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
 
     private SyncopeClientFactoryBean clientFactory;
 
+    private Map<String, CustomAttributesInfo> customForm;
+
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+
     @Override
     protected void init() {
         super.init();
@@ -131,6 +149,80 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
                 setContentType(SyncopeClientFactoryBean.ContentType.JSON).
                 setUseCompression(BooleanUtils.toBoolean(useGZIPCompression));
 
+        // read customForm.json
+        try (InputStream is = getClass().getResourceAsStream("/" + CUSTOM_FORM_FILE)) {
+            customForm = MAPPER.readValue(is,
+                    new TypeReference<HashMap<String, CustomAttributesInfo>>() {
+            });
+            File enduserDir = new File(props.getProperty("enduser.directory"));
+            boolean existsEnduserDir = enduserDir.exists() && enduserDir.canRead() && enduserDir.isDirectory();
+            if (existsEnduserDir) {
+                File customFormFile = FileUtils.getFile(enduserDir, CUSTOM_FORM_FILE);
+                if (customFormFile.exists() && customFormFile.canRead() && customFormFile.isFile()) {
+                    customForm = MAPPER.readValue(FileUtils.openInputStream(customFormFile),
+                            new TypeReference<HashMap<String, CustomAttributesInfo>>() {
+                    });
+                }
+            }
+            FileAlterationObserver observer = existsEnduserDir
+                    ? new FileAlterationObserver(enduserDir, new FileFilter() {
+
+                        @Override
+                        public boolean accept(final File pathname) {
+                            return StringUtils.contains(pathname.getPath(), CUSTOM_FORM_FILE);
+                        }
+                    })
+                    : new FileAlterationObserver(getClass().getResource("/" + CUSTOM_FORM_FILE).getFile(),
+                            new FileFilter() {
+
+                        @Override
+                        public boolean accept(final File pathname) {
+                            return StringUtils.contains(pathname.getPath(), CUSTOM_FORM_FILE);
+                        }
+                    });
+
+            FileAlterationMonitor monitor = new FileAlterationMonitor(5000);
+
+            FileAlterationListener listener = new FileAlterationListenerAdaptor() {
+
+                @Override
+                public void onFileChange(final File file) {
+                    try {
+                        LOG.trace("{} has changed. Reloading form customization configuration.", CUSTOM_FORM_FILE);
+                        customForm = MAPPER.readValue(FileUtils.openInputStream(file),
+                                new TypeReference<HashMap<String, CustomAttributesInfo>>() {
+                        });
+                    } catch (IOException e) {
+                        e.printStackTrace(System.err);
+                    }
+                }
+
+                @Override
+                public void onFileCreate(final File file) {
+                    try {
+                        LOG.trace("{} has been created. Loading form customization configuration.", CUSTOM_FORM_FILE);
+                        customForm = MAPPER.readValue(FileUtils.openInputStream(file),
+                                new TypeReference<HashMap<String, CustomAttributesInfo>>() {
+                        });
+                    } catch (IOException e) {
+                        e.printStackTrace(System.err);
+                    }
+                }
+
+                @Override
+                public void onFileDelete(final File file) {
+                    LOG.trace("{} has been deleted. Resetting form customization configuration.", CUSTOM_FORM_FILE);
+                    customForm = null;
+                }
+            };
+
+            observer.addListener(listener);
+            monitor.addObserver(observer);
+            monitor.start();
+        } catch (Exception e) {
+            throw new WicketRuntimeException("Could not read " + CUSTOM_FORM_FILE, e);
+        }
+
         // mount resources
         ClassPathScanImplementationLookup classPathScanImplementationLookup =
                 (ClassPathScanImplementationLookup) getServletContext().
@@ -221,4 +313,13 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
         return xsrfEnabled;
     }
 
+    public Map<String, CustomAttributesInfo> getCustomForm() {
+        return customForm;
+    }
+
+    public void setCustomForm(final Map<String, CustomAttributesInfo> customForm) {
+        this.customForm.clear();
+        this.customForm.putAll(customForm);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserConstants.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserConstants.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserConstants.java
index 4600166..0a683a9 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserConstants.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserConstants.java
@@ -26,6 +26,8 @@ public final class SyncopeEnduserConstants {
 
     public static final String XSRF_HEADER_NAME = "X-XSRF-TOKEN";
 
+    public static final String MEMBERSHIP_ATTR_SEPARATOR = "#";
+
     private SyncopeEnduserConstants() {
         // private constructor for utility class
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
index 168656c..8268ef5 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.enduser;
 
 import java.security.AccessControlException;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -28,6 +29,7 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
 import org.apache.syncope.client.lib.SyncopeClient;
 import org.apache.syncope.common.lib.info.PlatformInfo;
@@ -66,6 +68,8 @@ public class SyncopeEnduserSession extends WebSession {
 
     private final CookieUtils cookieUtils;
 
+    private final Map<String, CustomAttributesInfo> customForm;
+
     private boolean xsrfTokenGenerated = false;
 
     public static SyncopeEnduserSession get() {
@@ -92,6 +96,7 @@ public class SyncopeEnduserSession extends WebSession {
                 return object.getType() == AttrSchemaType.Date;
             }
         });
+        customForm = new HashMap<>();
     }
 
     private void afterAuthentication() {
@@ -197,4 +202,14 @@ public class SyncopeEnduserSession extends WebSession {
     public void setXsrfTokenGenerated(final boolean xsrfTokenGenerated) {
         this.xsrfTokenGenerated = xsrfTokenGenerated;
     }
+
+    public Map<String, CustomAttributesInfo> getCustomForm() {
+        return customForm;
+    }
+
+    public void setCustomForm(final Map<String, CustomAttributesInfo> customForm) {
+        this.customForm.clear();
+        this.customForm.putAll(customForm);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/adapters/PlatformInfoAdapter.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/adapters/PlatformInfoAdapter.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/adapters/PlatformInfoAdapter.java
index 5ed11be..a961576 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/adapters/PlatformInfoAdapter.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/adapters/PlatformInfoAdapter.java
@@ -18,19 +18,23 @@
  */
 package org.apache.syncope.client.enduser.adapters;
 
+import java.util.Map;
 import org.apache.syncope.client.enduser.SyncopeEnduserApplication;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.client.enduser.model.PlatformInfoRequest;
 import org.apache.syncope.common.lib.info.PlatformInfo;
 
 public final class PlatformInfoAdapter {
 
-    public static PlatformInfoRequest toPlatformInfoRequest(final PlatformInfo platformInfo) {
+    public static PlatformInfoRequest toPlatformInfoRequest(final PlatformInfo platformInfo,
+            final Map<String, CustomAttributesInfo> customForm) {
         PlatformInfoRequest request = new PlatformInfoRequest();
         request.setPwdResetAllowed(platformInfo.isPwdResetAllowed());
         request.setSelfRegAllowed(platformInfo.isSelfRegAllowed());
         request.setPwdResetRequiringSecurityQuestions(platformInfo.isPwdResetRequiringSecurityQuestions());
         request.setVersion(platformInfo.getVersion());
         request.setCaptchaEnabled(SyncopeEnduserApplication.get().isCaptchaEnabled());
+        request.setCustomForm(customForm);
 
         return request;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttribute.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttribute.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttribute.java
new file mode 100644
index 0000000..80d65f6
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttribute.java
@@ -0,0 +1,62 @@
+/*
+ * 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.client.enduser.model;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class CustomAttribute implements Serializable {
+
+    private static final long serialVersionUID = 4910266842123376686L;
+
+    private Boolean readonly;
+
+    private List<String> defaultValues = new ArrayList<>();
+
+    public CustomAttribute() {
+    }
+
+    public Boolean getReadonly() {
+        return readonly;
+    }
+
+    public void setReadonly(final Boolean readonly) {
+        this.readonly = readonly;
+    }
+
+    public List<String> getDefaultValues() {
+        return defaultValues;
+    }
+
+    public void setDefaultValues(final List<String> defaultValues) {
+        this.defaultValues = defaultValues;
+    }
+
+    public CustomAttribute readonly(final Boolean value) {
+        this.readonly = value;
+        return this;
+    }
+
+    public CustomAttribute defaultValues(final List<String> value) {
+        this.defaultValues = value;
+        return this;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttributesInfo.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttributesInfo.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttributesInfo.java
index 61d08f1..a62a6bb 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttributesInfo.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/CustomAttributesInfo.java
@@ -28,7 +28,7 @@ public class CustomAttributesInfo implements Serializable {
 
     private Boolean show = Boolean.TRUE;
 
-    private Map<String, ?> attributes = new LinkedHashMap<>();
+    private Map<String, CustomAttribute> attributes = new LinkedHashMap<>();
 
     public CustomAttributesInfo() {
     }
@@ -41,11 +41,11 @@ public class CustomAttributesInfo implements Serializable {
         this.show = show;
     }
 
-    public Map<String, ?> getAttributes() {
+    public Map<String, CustomAttribute> getAttributes() {
         return attributes;
     }
 
-    public void setAttributes(final Map<String, ?> attributes) {
+    public void setAttributes(final Map<String, CustomAttribute> attributes) {
         this.attributes = attributes;
     }
 
@@ -54,7 +54,7 @@ public class CustomAttributesInfo implements Serializable {
         return this;
     }
 
-    public CustomAttributesInfo attributes(final Map<String, ?> value) {
+    public CustomAttributesInfo attributes(final Map<String, CustomAttribute> value) {
         this.attributes = value;
         return this;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/PlatformInfoRequest.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/PlatformInfoRequest.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/PlatformInfoRequest.java
index b95706c..a75ae53 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/PlatformInfoRequest.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/model/PlatformInfoRequest.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.client.enduser.model;
 
 import java.io.Serializable;
+import java.util.Map;
 
 public class PlatformInfoRequest implements Serializable {
 
@@ -34,6 +35,8 @@ public class PlatformInfoRequest implements Serializable {
 
     private boolean captchaEnabled;
 
+    private Map<String, CustomAttributesInfo> customForm;
+
     public PlatformInfoRequest() {
     }
 
@@ -77,4 +80,12 @@ public class PlatformInfoRequest implements Serializable {
         this.captchaEnabled = captchaEnabled;
     }
 
+    public Map<String, CustomAttributesInfo> getCustomForm() {
+        return customForm;
+    }
+
+    public void setCustomForm(final Map<String, CustomAttributesInfo> customForm) {
+        this.customForm = customForm;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
index 6071642..a3e73e8 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
@@ -18,6 +18,8 @@
  */
 package org.apache.syncope.client.enduser.resources;
 
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.List;
@@ -63,5 +65,17 @@ public abstract class BaseUserSelfResource extends BaseResource {
             dateAttr.getValues().addAll(formattedValues);
         }
     }
+    
+    protected void buildResponse(final ResourceResponse response, final int statusCode, final String message) {
+        response.setTextEncoding(StandardCharsets.UTF_8.name());
+        response.setStatusCode(statusCode);
+        response.setWriteCallback(new WriteCallback() {
+
+            @Override
+            public void writeData(final Attributes attributes) throws IOException {
+                attributes.getResponse().write(message);
+            }
+        });
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
index bd4d30f..c96fa2a 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/InfoResource.java
@@ -18,15 +18,21 @@
  */
 package org.apache.syncope.client.enduser.resources;
 
+import static org.apache.syncope.client.enduser.resources.BaseResource.MAPPER;
+
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.enduser.SyncopeEnduserApplication;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.adapters.PlatformInfoAdapter;
 import org.apache.syncope.client.enduser.annotations.Resource;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.client.enduser.util.SaltGenerator;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.util.cookies.CookieUtils;
@@ -57,10 +63,14 @@ public class InfoResource extends BaseResource {
 
                 @Override
                 public void writeData(final IResource.Attributes attributes) throws IOException {
+                    Map<String, CustomAttributesInfo> customForm = SyncopeEnduserApplication.get().getCustomForm();
                     attributes.getResponse().write(
                             MAPPER.writeValueAsString(
                                     PlatformInfoAdapter.toPlatformInfoRequest(
-                                            SyncopeEnduserSession.get().getPlatformInfo())));
+                                            SyncopeEnduserSession.get().getPlatformInfo(),
+                                            customForm == null
+                                                    ? new HashMap<String, CustomAttributesInfo>()
+                                                    : customForm)));
                 }
             });
             response.setStatusCode(Response.Status.OK.getStatusCode());

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
index 169d1b4..5edd4b0 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/SchemaResource.java
@@ -20,13 +20,11 @@ package org.apache.syncope.client.enduser.resources;
 
 import static org.apache.syncope.client.enduser.resources.BaseResource.MAPPER;
 
-import com.fasterxml.jackson.core.type.TypeReference;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
@@ -36,8 +34,11 @@ import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.client.enduser.SyncopeEnduserApplication;
+import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
+import org.apache.syncope.client.enduser.model.CustomAttribute;
 import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.client.enduser.model.SchemaResponse;
 import org.apache.syncope.common.lib.to.AbstractSchemaTO;
@@ -103,9 +104,8 @@ public class SchemaResource extends BaseResource {
                 }
             }
 
-            Map<String, CustomAttributesInfo> customForm = MAPPER.readValue(request.getReader().readLine(),
-                    new TypeReference<HashMap<String, CustomAttributesInfo>>() {
-            });
+            // USER from customization, if empty or null ignore it, use it to filter attributes otherwise
+            Map<String, CustomAttributesInfo> customForm = SyncopeEnduserApplication.get().getCustomForm();
 
             SchemaService schemaService = SyncopeEnduserSession.get().getService(SchemaService.class);
             final List<AbstractSchemaTO> plainSchemas = classes.isEmpty()
@@ -176,7 +176,7 @@ public class SchemaResource extends BaseResource {
     }
 
     private List<AbstractSchemaTO> customizeSchemas(final List<AbstractSchemaTO> schemaTOs, final String groupParam,
-            final Map<String, ?> customForm) {
+            final Map<String, CustomAttribute> customForm) {
 
         if (customForm.isEmpty()) {
             return schemaTOs;
@@ -211,7 +211,7 @@ public class SchemaResource extends BaseResource {
     }
 
     private String compositeSchemaKey(final String prefix, final String schemaKey) {
-        return prefix + "#" + schemaKey;
+        return prefix + SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR + schemaKey;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
index fbb2e33..b7775b1 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
@@ -20,8 +20,6 @@ package org.apache.syncope.client.enduser.resources;
 
 import static org.apache.syncope.client.enduser.resources.BaseResource.LOG;
 
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -34,6 +32,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
+import org.apache.syncope.client.enduser.util.UserRequestValidator;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
@@ -83,113 +82,118 @@ public class UserSelfCreateResource extends BaseUserSelfResource {
             }
 
             if (isSelfRegistrationAllowed() && userTO != null) {
-
-                // 1. membership attributes management
-                Set<AttrTO> membAttrs = new HashSet<>();
-                for (AttrTO attr : userTO.getPlainAttrs()) {
-                    if (attr.getSchema().contains("#")) {
-                        final String[] simpleAttrs = attr.getSchema().split("#");
-                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                                new Predicate<MembershipTO>() {
-
-                            @Override
-                            public boolean evaluate(final MembershipTO item) {
-                                return simpleAttrs[0].equals(item.getGroupName());
+                LOG.debug("User self registration request for [{}]", userTO.getUsername());
+                LOG.trace("Request is [{}]", userTO);
+
+                // check if request is compliant with customization form rules
+                if (UserRequestValidator.compliant(userTO, SyncopeEnduserSession.get().getCustomForm(), true)) {
+
+                    // 1. membership attributes management
+                    Set<AttrTO> membAttrs = new HashSet<>();
+                    for (AttrTO attr : userTO.getPlainAttrs()) {
+                        if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
+                            final String[] simpleAttrs = attr.getSchema().split(
+                                    SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                            MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
+                                    new Predicate<MembershipTO>() {
+
+                                @Override
+                                public boolean evaluate(final MembershipTO item) {
+                                    return simpleAttrs[0].equals(item.getGroupName());
+                                }
+                            });
+                            if (membership == null) {
+                                membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                                userTO.getMemberships().add(membership);
                             }
-                        });
-                        if (membership == null) {
-                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                            userTO.getMemberships().add(membership);
-                        }
 
-                        AttrTO clone = SerializationUtils.clone(attr);
-                        clone.setSchema(simpleAttrs[1]);
-                        membership.getPlainAttrs().add(clone);
-                        membAttrs.add(attr);
+                            AttrTO clone = SerializationUtils.clone(attr);
+                            clone.setSchema(simpleAttrs[1]);
+                            membership.getPlainAttrs().add(clone);
+                            membAttrs.add(attr);
+                        }
                     }
-                }
-                userTO.getPlainAttrs().removeAll(membAttrs);
-
-                // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
-                Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
-                for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                    millisToDate(userPlainAttrMap, plainSchema);
-                    for (MembershipTO membership : userTO.getMemberships()) {
-                        millisToDate(membership.getPlainAttrMap(), plainSchema);
+                    userTO.getPlainAttrs().removeAll(membAttrs);
+
+                    // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
+                    Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
+                    for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
+                        millisToDate(userPlainAttrMap, plainSchema);
+                        for (MembershipTO membership : userTO.getMemberships()) {
+                            millisToDate(membership.getPlainAttrMap(), plainSchema);
+                        }
                     }
-                }
-
-                membAttrs.clear();
-                for (AttrTO attr : userTO.getDerAttrs()) {
-                    if (attr.getSchema().contains("#")) {
-                        final String[] simpleAttrs = attr.getSchema().split("#");
-                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                                new Predicate<MembershipTO>() {
 
-                            @Override
-                            public boolean evaluate(final MembershipTO item) {
-                                return simpleAttrs[0].equals(item.getGroupName());
+                    membAttrs.clear();
+                    for (AttrTO attr : userTO.getDerAttrs()) {
+                        if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
+                            final String[] simpleAttrs = attr.getSchema().split(
+                                    SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                            MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
+                                    new Predicate<MembershipTO>() {
+
+                                @Override
+                                public boolean evaluate(final MembershipTO item) {
+                                    return simpleAttrs[0].equals(item.getGroupName());
+                                }
+                            });
+                            if (membership == null) {
+                                membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                                userTO.getMemberships().add(membership);
                             }
-                        });
-                        if (membership == null) {
-                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                            userTO.getMemberships().add(membership);
-                        }
 
-                        AttrTO clone = SerializationUtils.clone(attr);
-                        clone.setSchema(simpleAttrs[1]);
-                        membership.getDerAttrs().add(clone);
-                        membAttrs.add(attr);
+                            AttrTO clone = SerializationUtils.clone(attr);
+                            clone.setSchema(simpleAttrs[1]);
+                            membership.getDerAttrs().add(clone);
+                            membAttrs.add(attr);
+                        }
                     }
-                }
-                userTO.getDerAttrs().removeAll(membAttrs);
-
-                membAttrs.clear();
-                for (AttrTO attr : userTO.getVirAttrs()) {
-                    if (attr.getSchema().contains("#")) {
-                        final String[] simpleAttrs = attr.getSchema().split("#");
-                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                                new Predicate<MembershipTO>() {
-
-                            @Override
-                            public boolean evaluate(final MembershipTO item) {
-                                return simpleAttrs[0].equals(item.getGroupName());
+                    userTO.getDerAttrs().removeAll(membAttrs);
+
+                    membAttrs.clear();
+                    for (AttrTO attr : userTO.getVirAttrs()) {
+                        if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
+                            final String[] simpleAttrs = attr.getSchema().split(
+                                    SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                            MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
+                                    new Predicate<MembershipTO>() {
+
+                                @Override
+                                public boolean evaluate(final MembershipTO item) {
+                                    return simpleAttrs[0].equals(item.getGroupName());
+                                }
+                            });
+                            if (membership == null) {
+                                membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                                userTO.getMemberships().add(membership);
                             }
-                        });
-                        if (membership == null) {
-                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                            userTO.getMemberships().add(membership);
-                        }
 
-                        AttrTO clone = SerializationUtils.clone(attr);
-                        clone.setSchema(simpleAttrs[1]);
-                        membership.getVirAttrs().add(clone);
-                        membAttrs.add(attr);
+                            AttrTO clone = SerializationUtils.clone(attr);
+                            clone.setSchema(simpleAttrs[1]);
+                            membership.getVirAttrs().add(clone);
+                            membAttrs.add(attr);
+                        }
                     }
+                    userTO.getVirAttrs().removeAll(membAttrs);
+
+                    LOG.debug("Received user self registration request for user: [{}]", userTO.getUsername());
+                    LOG.trace("Received user self registration request is: [{}]", userTO);
+
+                    // adapt request and create user
+                    final Response res = SyncopeEnduserSession.get().getService(UserSelfService.class).create(userTO,
+                            true);
+
+                    buildResponse(response, res.getStatus(),
+                            Response.Status.Family.SUCCESSFUL.equals(res.getStatusInfo().getFamily())
+                            ? "User[ " + userTO.getUsername() + "] successfully created"
+                            : "ErrorMessage{{ " + res.getStatusInfo().getReasonPhrase() + " }}");
+                } else {
+                    LOG.warn(
+                            "Incoming create request [{}] is not compliant with form customization rules. "
+                            + "Create NOT allowed", userTO.getUsername());
+                    buildResponse(response, Response.Status.OK.getStatusCode(),
+                            "User: " + userTO.getUsername() + " successfully created");
                 }
-                userTO.getVirAttrs().removeAll(membAttrs);
-
-                LOG.debug("Received user self registration request for user: [{}]", userTO.getUsername());
-                LOG.trace("Received user self registration request is: [{}]", userTO);
-
-                // adapt request and create user
-                final Response res = SyncopeEnduserSession.get().getService(UserSelfService.class).create(userTO, true);
-
-                response.setTextEncoding(StandardCharsets.UTF_8.name());
-
-                response.setWriteCallback(new WriteCallback() {
-
-                    @Override
-                    public void writeData(final Attributes attributes) throws IOException {
-                        attributes.getResponse().write(res.getStatusInfo().getFamily().equals(
-                                Response.Status.Family.SUCCESSFUL)
-                                        ? new StringBuilder().append("User: ").append(userTO.getUsername()).
-                                                append(" successfully created")
-                                        : new StringBuilder().append("ErrorMessage{{ ").
-                                                append(res.getStatusInfo().getReasonPhrase()).append(" }}"));
-                    }
-                });
-                response.setStatusCode(res.getStatus());
             } else {
                 response.setError(Response.Status.FORBIDDEN.getStatusCode(), new StringBuilder().
                         append("ErrorMessage{{").append(userTO == null
@@ -198,7 +202,7 @@ public class UserSelfCreateResource extends BaseUserSelfResource {
             }
 
         } catch (Exception e) {
-            LOG.error("Could not create userTO", e);
+            LOG.error("Unable to create userTO", e);
             response.setError(Response.Status.BAD_REQUEST.getStatusCode(),
                     new StringBuilder().
                             append("ErrorMessage{{ ").

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
index 056e757..81ffcd1 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
@@ -18,19 +18,29 @@
  */
 package org.apache.syncope.client.enduser.resources;
 
+import static org.apache.syncope.client.enduser.resources.BaseResource.MAPPER;
+
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Map;
+import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.enduser.SyncopeEnduserApplication;
+import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
+import org.apache.syncope.client.enduser.model.CustomAttribute;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
 import org.apache.syncope.common.lib.to.PlainSchemaTO;
 import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.types.SchemaType;
 import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.IResource;
 
@@ -68,22 +78,35 @@ public class UserSelfReadResource extends BaseUserSelfResource {
             for (MembershipTO membership : userTO.getMemberships()) {
                 String groupName = membership.getGroupName();
                 for (AttrTO attr : membership.getPlainAttrs()) {
-                    attr.setSchema(groupName.concat("#").concat(attr.getSchema()));
+                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).concat(attr.
+                            getSchema()));
                     userTO.getPlainAttrs().add(attr);
                 }
                 membership.getPlainAttrs().clear();
                 for (AttrTO attr : membership.getDerAttrs()) {
-                    attr.setSchema(groupName.concat("#").concat(attr.getSchema()));
+                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).concat(attr.
+                            getSchema()));
                     userTO.getDerAttrs().add(attr);
                 }
                 membership.getDerAttrs().clear();
                 for (AttrTO attr : membership.getVirAttrs()) {
-                    attr.setSchema(groupName.concat("#").concat(attr.getSchema()));
+                    attr.setSchema(groupName.concat(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR).concat(attr.
+                            getSchema()));
                     userTO.getVirAttrs().add(attr);
                 }
                 membership.getVirAttrs().clear();
             }
+            // USER from customization, if empty or null ignore it, use it to filter attributes otherwise
+            Map<String, CustomAttributesInfo> customForm = SyncopeEnduserApplication.get().getCustomForm();
 
+            if (customForm != null && !customForm.isEmpty()) {
+                // filter PLAIN attributes
+                customizeAttrs(userTO.getPlainAttrs(), customForm.get(SchemaType.PLAIN.name()).getAttributes());
+                // filter DERIVED attributes
+                customizeAttrs(userTO.getDerAttrs(), customForm.get(SchemaType.DERIVED.name()).getAttributes());
+                // filter VIRTUAL attributes
+                customizeAttrs(userTO.getVirAttrs(), customForm.get(SchemaType.VIRTUAL.name()).getAttributes());
+            }
             final String selfTOJson = MAPPER.writeValueAsString(userTO);
             response.setContentType(MediaType.APPLICATION_JSON);
             response.setTextEncoding(StandardCharsets.UTF_8.name());
@@ -107,4 +130,15 @@ public class UserSelfReadResource extends BaseUserSelfResource {
         return response;
     }
 
+    private void customizeAttrs(final Set<AttrTO> attrs,
+            final Map<String, CustomAttribute> customForm) {
+
+        CollectionUtils.filter(attrs, new Predicate<AttrTO>() {
+
+            @Override
+            public boolean evaluate(final AttrTO attr) {
+                return customForm.containsKey(attr.getSchema());
+            }
+        });
+    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index bc1a9fd..828f323 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -18,8 +18,6 @@
  */
 package org.apache.syncope.client.enduser.resources;
 
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -32,6 +30,7 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
+import org.apache.syncope.client.enduser.util.UserRequestValidator;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.to.AttrTO;
 import org.apache.syncope.common.lib.to.MembershipTO;
@@ -67,111 +66,110 @@ public class UserSelfUpdateResource extends BaseUserSelfResource {
 
             UserTO userTO = MAPPER.readValue(request.getReader().readLine(), UserTO.class);
 
-            // 1. membership attributes management
-            Set<AttrTO> membAttrs = new HashSet<>();
-            for (AttrTO attr : userTO.getPlainAttrs()) {
-                if (attr.getSchema().contains("#")) {
-                    final String[] compositeSchemaKey = attr.getSchema().split("#");
-                    MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                            new Predicate<MembershipTO>() {
-
-                        @Override
-                        public boolean evaluate(final MembershipTO item) {
-                            return compositeSchemaKey[0].equals(item.getGroupName());
+            // check if request is compliant with customization form rules
+            if (UserRequestValidator.compliant(userTO, SyncopeEnduserSession.get().getCustomForm(), false)) {
+                // 1. membership attributes management
+                Set<AttrTO> membAttrs = new HashSet<>();
+                for (AttrTO attr : userTO.getPlainAttrs()) {
+                    if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
+                        final String[] compositeSchemaKey = attr.getSchema().split(
+                                SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
+                                new Predicate<MembershipTO>() {
+
+                            @Override
+                            public boolean evaluate(final MembershipTO item) {
+                                return compositeSchemaKey[0].equals(item.getGroupName());
+                            }
+                        });
+                        if (membership == null) {
+                            membership = new MembershipTO.Builder().group(null, compositeSchemaKey[0]).build();
+                            userTO.getMemberships().add(membership);
                         }
-                    });
-                    if (membership == null) {
-                        membership = new MembershipTO.Builder().group(null, compositeSchemaKey[0]).build();
-                        userTO.getMemberships().add(membership);
+                        AttrTO clone = SerializationUtils.clone(attr);
+                        clone.setSchema(compositeSchemaKey[1]);
+                        membership.getPlainAttrs().add(clone);
+                        membAttrs.add(attr);
                     }
-                    AttrTO clone = SerializationUtils.clone(attr);
-                    clone.setSchema(compositeSchemaKey[1]);
-                    membership.getPlainAttrs().add(clone);
-                    membAttrs.add(attr);
                 }
-            }
-            userTO.getPlainAttrs().removeAll(membAttrs);
-
-            // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
-            Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
-            for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                millisToDate(userPlainAttrMap, plainSchema);
-                for (MembershipTO membership : userTO.getMemberships()) {
-                    millisToDate(membership.getPlainAttrMap(), plainSchema);
+                userTO.getPlainAttrs().removeAll(membAttrs);
+
+                // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
+                Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
+                for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
+                    millisToDate(userPlainAttrMap, plainSchema);
+                    for (MembershipTO membership : userTO.getMemberships()) {
+                        millisToDate(membership.getPlainAttrMap(), plainSchema);
+                    }
                 }
-            }
 
-            membAttrs.clear();
-            for (AttrTO attr : userTO.getDerAttrs()) {
-                if (attr.getSchema().contains("#")) {
-                    final String[] simpleAttrs = attr.getSchema().split("#");
-                    MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                            new Predicate<MembershipTO>() {
-
-                        @Override
-                        public boolean evaluate(final MembershipTO item) {
-                            return simpleAttrs[0].equals(item.getGroupName());
+                membAttrs.clear();
+                for (AttrTO attr : userTO.getDerAttrs()) {
+                    if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
+                        final String[] simpleAttrs = attr.getSchema().split(
+                                SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
+                                new Predicate<MembershipTO>() {
+
+                            @Override
+                            public boolean evaluate(final MembershipTO item) {
+                                return simpleAttrs[0].equals(item.getGroupName());
+                            }
+                        });
+                        if (membership == null) {
+                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                            userTO.getMemberships().add(membership);
                         }
-                    });
-                    if (membership == null) {
-                        membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                        userTO.getMemberships().add(membership);
+                        AttrTO clone = SerializationUtils.clone(attr);
+                        clone.setSchema(simpleAttrs[1]);
+                        membership.getDerAttrs().add(clone);
+                        membAttrs.add(attr);
                     }
-                    AttrTO clone = SerializationUtils.clone(attr);
-                    clone.setSchema(simpleAttrs[1]);
-                    membership.getDerAttrs().add(clone);
-                    membAttrs.add(attr);
                 }
-            }
-            userTO.getDerAttrs().removeAll(membAttrs);
-
-            membAttrs.clear();
-            for (AttrTO attr : userTO.getVirAttrs()) {
-                if (attr.getSchema().contains("#")) {
-                    final String[] simpleAttrs = attr.getSchema().split("#");
-                    MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
-                            new Predicate<MembershipTO>() {
-
-                        @Override
-                        public boolean evaluate(final MembershipTO item) {
-                            return simpleAttrs[0].equals(item.getGroupName());
-                        }
-                    });
-                    if (membership == null) {
-                        membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
-                        userTO.getMemberships().add(membership);
+                userTO.getDerAttrs().removeAll(membAttrs);
+
+                membAttrs.clear();
+                for (AttrTO attr : userTO.getVirAttrs()) {
+                    if (attr.getSchema().contains(SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR)) {
+                        final String[] simpleAttrs = attr.getSchema().split(
+                                SyncopeEnduserConstants.MEMBERSHIP_ATTR_SEPARATOR);
+                        MembershipTO membership = IterableUtils.find(userTO.getMemberships(),
+                                new Predicate<MembershipTO>() {
+
+                            @Override
+                            public boolean evaluate(final MembershipTO item) {
+                                return simpleAttrs[0].equals(item.getGroupName());
+                            }
+                        });
+                        if (membership == null) {
+                            membership = new MembershipTO.Builder().group(null, simpleAttrs[0]).build();
+                            userTO.getMemberships().add(membership);
 
+                        }
+                        AttrTO clone = SerializationUtils.clone(attr);
+                        clone.setSchema(simpleAttrs[1]);
+                        membership.getVirAttrs().add(clone);
+                        membAttrs.add(attr);
                     }
-                    AttrTO clone = SerializationUtils.clone(attr);
-                    clone.setSchema(simpleAttrs[1]);
-                    membership.getVirAttrs().add(clone);
-                    membAttrs.add(attr);
                 }
+                userTO.getVirAttrs().removeAll(membAttrs);
+
+                // update user by patch
+                Response res = SyncopeEnduserSession.get().
+                        getService(userTO.getETagValue(), UserSelfService.class).update(AnyOperations.diff(userTO,
+                        SyncopeEnduserSession.get().getSelfTO(), true));
+
+                buildResponse(response, res.getStatus(), res.getStatusInfo().getFamily().equals(
+                        Response.Status.Family.SUCCESSFUL)
+                                ? "User [" + userTO.getUsername() + "] successfully updated"
+                                : "ErrorMessage{{ " + res.getStatusInfo().getReasonPhrase() + " }}");
+            } else {
+                LOG.warn(
+                        "Incoming update request [{}] is not compliant with form customization rules."
+                        + " Update NOT allowed", userTO.getUsername());
+                buildResponse(response, Response.Status.OK.getStatusCode(),
+                        "User: " + userTO.getUsername() + " successfully created");
             }
-            userTO.getVirAttrs().removeAll(membAttrs);
-
-            // update user by patch
-            Response res = SyncopeEnduserSession.get().
-                    getService(userTO.getETagValue(), UserSelfService.class).update(AnyOperations.diff(userTO,
-                    SyncopeEnduserSession.get().getSelfTO(), true));
-
-            final String responseMessage = res.getStatusInfo().getFamily().equals(Response.Status.Family.SUCCESSFUL)
-                    ? new StringBuilder().
-                            append("User").append(userTO.getUsername()).append(" successfully updated").toString()
-                    : new StringBuilder().
-                            append("ErrorMessage{{ ").append(res.getStatusInfo().getReasonPhrase()).append(" }}").
-                            toString();
-
-            response.setTextEncoding(StandardCharsets.UTF_8.name());
-            response.setWriteCallback(new WriteCallback() {
-
-                @Override
-                public void writeData(final Attributes attributes) throws IOException {
-                    attributes.getResponse().write(responseMessage);
-                }
-            });
-
-            response.setStatusCode(res.getStatus());
         } catch (final Exception e) {
             LOG.error("Error while updating user", e);
             response.setError(Response.Status.BAD_REQUEST.getStatusCode(),

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
new file mode 100644
index 0000000..350ae17
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/util/UserRequestValidator.java
@@ -0,0 +1,86 @@
+/*
+ * 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.client.enduser.util;
+
+import java.util.Map;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.client.enduser.model.CustomAttribute;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.lib.types.SchemaType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class UserRequestValidator {
+
+    private static final Logger LOG = LoggerFactory.getLogger(UserRequestValidator.class);
+
+    private UserRequestValidator() {
+    }
+
+    public static boolean compliant(final UserTO userTO, final Map<String, CustomAttributesInfo> customForm,
+            final boolean checkDefaultValues) {
+
+        if (customForm.isEmpty()) {
+            return true;
+        }
+
+        return validateAttributes(userTO.getPlainAttrMap(), customForm.get(SchemaType.PLAIN.name()), checkDefaultValues)
+                && validateAttributes(userTO.getDerAttrMap(), customForm.get(SchemaType.DERIVED.name()),
+                        checkDefaultValues)
+                && validateAttributes(userTO.getVirAttrMap(), customForm.get(SchemaType.VIRTUAL.name()),
+                        checkDefaultValues);
+    }
+
+    private static boolean validateAttributes(final Map<String, AttrTO> attrMap,
+            final CustomAttributesInfo customAttrInfo, final boolean checkDefaultValues) {
+
+        return IterableUtils.matchesAll(attrMap.entrySet(), new Predicate<Map.Entry<String, AttrTO>>() {
+
+            @Override
+            public boolean evaluate(final Map.Entry<String, AttrTO> entry) {
+                String schemaKey = entry.getKey();
+                AttrTO attrTO = entry.getValue();
+                CustomAttribute customAttr = customAttrInfo.getAttributes().get(schemaKey);
+                boolean compliant = customAttr != null && (!checkDefaultValues || isValid(attrTO, customAttr));
+                if (!compliant) {
+                    LOG.trace("Attribute [{}] or its values [{}] are not allowed by form customization rules",
+                            attrTO.getSchema(), attrTO.getValues());
+                }
+                return compliant;
+            }
+        });
+
+    }
+
+    private static boolean isValid(final AttrTO attrTO, final CustomAttribute customAttribute) {
+        return customAttribute.getReadonly()
+                ? IterableUtils.matchesAll(attrTO.getValues(), new Predicate<String>() {
+
+                    @Override
+                    public boolean evaluate(final String object) {
+                        return customAttribute.getDefaultValues().contains(object);
+                    }
+                })
+                : true;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json b/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
deleted file mode 100644
index 0967ef4..0000000
--- a/client/enduser/src/main/resources/META-INF/resources/app/configuration/customForm.json
+++ /dev/null
@@ -1 +0,0 @@
-{}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/app.js b/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
index cfe7a09..6bc7b8a 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/app.js
@@ -332,8 +332,7 @@ app.run(['$rootScope', '$location', '$state', 'AuthService',
     };
   }]);
 app.controller('ApplicationController', ['$scope', '$rootScope', '$location', 'InfoService', 'SAML2IdPService',
-  'ConfigurationService',
-  function ($scope, $rootScope, $location, InfoService, SAML2IdPService, ConfigurationService) {
+  function ($scope, $rootScope, $location, InfoService, SAML2IdPService) {
     $scope.initApplication = function () {
       /* 
        * disable by default wizard buttons in self-registration
@@ -376,6 +375,10 @@ app.controller('ApplicationController', ['$scope', '$rootScope', '$location', 'I
                 $rootScope.version = response.version;
                 $rootScope.pwdResetRequiringSecurityQuestions = response.pwdResetRequiringSecurityQuestions;
                 $rootScope.captchaEnabled = response.captchaEnabled;
+                /* 
+                 * USER form customization JSON
+                 */
+                $rootScope.customForm = response.customForm;
               },
               function (response) {
                 console.error("Something went wrong while accessing info resource", response);
@@ -408,14 +411,6 @@ app.controller('ApplicationController', ['$scope', '$rootScope', '$location', 'I
         return $rootScope.version;
       };
       /* 
-       * USER Attributes form customization
-       */
-      ConfigurationService.get("customForm.json").then(function (response) {
-        $rootScope.customForm = response;
-      }, function (e) {
-        console.warn("Unable to retrieve form customization file provided, applying default configuration.");
-      });
-      /* 
        * USER Attributes sorting strategies
        */
       $rootScope.attributesSorting = {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index ed9bc8f..d49032f 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -41,7 +41,6 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
     $scope.captchaInput = {
       value: ""
     };
-    $scope.customForm = {};
 
     $scope.initUser = function () {
       $scope.dynamicForm = {
@@ -401,6 +400,7 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
 
     $scope.saveUser = function (user) {
       var wrappedUser = UserUtil.getWrappedUser(user);
+      wrappedUser.plainAttrs.push({"schema":"cazzzz","values":["cazzzz"]});
       if ($scope.createMode) {
         UserSelfService.create(wrappedUser, $scope.captchaInput.value).then(function (response) {
           console.debug("User " + $scope.user.username + " SUCCESSFULLY_CREATED");

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/resources/META-INF/resources/app/js/services/configurationService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/configurationService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/configurationService.js
deleted file mode 100644
index 25ee9f2..0000000
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/configurationService.js
+++ /dev/null
@@ -1,41 +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.
- */
-
-'use strict';
-
-angular.module('self')
-        .factory('ConfigurationService', ['$q', '$http',
-          function ($q, $http) {
-
-            var configuration = {};
-
-            configuration.get = function (filename) {
-              return  $http.get("/syncope-enduser/app/configuration/" + filename, {cache: false})
-                      .then(function (response) {
-                        return response.data;
-                      }, function (response) {
-                        console.error("Unable to retrieve " + filename);
-                        return $q.reject(response.data);
-                      });
-            };
-
-            return configuration;
-          }]);
-
-

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js b/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js
index 1918bb3..be214fc 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/services/schemaService.js
@@ -25,11 +25,9 @@ angular.module('self')
 
             var schemaService = {};
 
-            schemaService.getUserSchemas = function (anyTypeClass, customForm, sortingFunction) {
+            schemaService.getUserSchemas = function (anyTypeClass, sortingFunction) {
               var classParam = anyTypeClass ? "?anyTypeClass=" + encodeURI(anyTypeClass) : "";
-              var body = customForm ? customForm : {};
-
-              return  $http.post("/syncope-enduser/api/schemas" + classParam, body)
+              return  $http.get("/syncope-enduser/api/schemas" + classParam)
                       .then(function (response) {
                         var schemas = response.data;
                         if (sortingFunction) {
@@ -44,11 +42,9 @@ angular.module('self')
                       });
             };
 
-            schemaService.getTypeExtSchemas = function (group, customForm) {
+            schemaService.getTypeExtSchemas = function (group) {
               var param = group ? "?group=" + encodeURI(group) : "";
-              var body = customForm ? customForm : {};
-
-              return  $http.post("/syncope-enduser/api/schemas" + param, body)
+              return  $http.get("/syncope-enduser/api/schemas" + param)
                       .then(function (response) {
                         return response.data;
                       }, function (response) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/main/resources/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/customForm.json b/client/enduser/src/main/resources/customForm.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/client/enduser/src/main/resources/customForm.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java b/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
new file mode 100644
index 0000000..88c611a
--- /dev/null
+++ b/client/enduser/src/test/java/org/apache/syncope/client/enduser/util/UserRequestValidatorTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.client.enduser.util;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.syncope.client.enduser.model.CustomAttributesInfo;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.UserTO;
+import org.junit.Assert;
+import org.junit.Test;
+import org.springframework.core.io.ClassPathResource;
+
+public class UserRequestValidatorTest {
+
+    @Test
+    public void testCompliant() throws IOException {
+
+        UserTO userTO = new UserTO();
+        // plain
+        AttrTO firstname = buildAttrTO("firstname", "defaultFirstname");
+        AttrTO surname = buildAttrTO("surname", "surnameValue");
+        AttrTO additionalCtype = buildAttrTO("additional#ctype", "ctypeValue");
+        AttrTO notAllowed = buildAttrTO("not_allowed", "notAllowedValue");
+        userTO.getPlainAttrs().addAll(Arrays.asList(firstname, surname, notAllowed, additionalCtype));
+
+        Map<String, CustomAttributesInfo> customForm = new ObjectMapper().readValue(new ClassPathResource(
+                "customForm.json").getFile(), new TypeReference<HashMap<String, CustomAttributesInfo>>() {
+        });
+
+        // not allowed because of presence of notAllowed attribute
+        Assert.assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
+
+        // remove notAllowed attribute and make it compliant
+        userTO.getPlainAttrs().remove(notAllowed);
+        Assert.assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
+
+        // firstname must have only one defaultValue
+        userTO.getPlainAttrMap().get("firstname").getValues().add("notAllowedFirstnameValue");
+        Assert.assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
+        Assert.assertTrue(UserRequestValidator.compliant(userTO, customForm, false));
+        // clean
+        userTO.getPlainAttrMap().get("firstname").getValues().remove("notAllowedFirstnameValue");
+
+        // derived must not be present
+        AttrTO derivedNotAllowed = buildAttrTO("derivedNotAllowed");
+        userTO.getDerAttrs().add(derivedNotAllowed);
+        Assert.assertFalse(UserRequestValidator.compliant(userTO, customForm, true));
+        // clean 
+        userTO.getDerAttrs().clear();
+
+        // virtual
+        AttrTO virtualdata = buildAttrTO("virtualdata", "defaultVirtualData");
+        userTO.getVirAttrs().add(virtualdata);
+        Assert.assertTrue(UserRequestValidator.compliant(userTO, customForm, true));
+
+        // with empty form is compliant by definition
+        Assert.assertTrue(UserRequestValidator.compliant(userTO, new HashMap<String, CustomAttributesInfo>(), true));
+    }
+
+    private AttrTO buildAttrTO(String schemaKey, String... values) {
+        return new AttrTO.Builder().schema(schemaKey).values(values).build();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/client/enduser/src/test/resources/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/resources/customForm.json b/client/enduser/src/test/resources/customForm.json
new file mode 100644
index 0000000..0a8b4d3
--- /dev/null
+++ b/client/enduser/src/test/resources/customForm.json
@@ -0,0 +1,47 @@
+{
+  "PLAIN": 
+          {
+            "show": true,
+            "attributes": {
+              "firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname"]
+              },
+              "surname": {
+                "readonly": false,
+                "defaultValues": []
+              },
+              "fullname": {
+                "readonly": false
+              },
+              "loginDate": {
+                "readonly": false
+              },
+              "additional#loginDate": {
+                "readonly": false
+              },
+              "additional#ctype": {
+                "readonly": false,
+                "defaultValues": ["ctypeDefault"]
+              },
+              "additional#cool": {
+                "readonly": false,
+                "defaultValues": ["true"]
+              }
+            }
+          },
+  "DERIVED":
+          {
+            "show": false
+          },
+  "VIRTUAL": 
+          {
+            "show": true,
+            "attributes": {
+              "virtualdata": {
+                "readonly": true,
+                "defaultValues": ["defaultVirtualData"]
+              }
+            }
+          }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
index ab75f01..8981f8a 100644
--- a/deb/enduser/pom.xml
+++ b/deb/enduser/pom.xml
@@ -93,6 +93,7 @@ under the License.
         <includes>
           <include>enduser.properties</include>
           <include>enduserContext.xml</include>
+          <include>customForm.json</include>
         </includes>
         <targetPath>${project.build.directory}/etc</targetPath>
         <filtering>true</filtering>

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/deb/enduser/src/deb/control/conffiles
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/conffiles b/deb/enduser/src/deb/control/conffiles
index 23cf86e..934c7fb 100644
--- a/deb/enduser/src/deb/control/conffiles
+++ b/deb/enduser/src/deb/control/conffiles
@@ -1,3 +1,4 @@
 /etc/tomcat8/Catalina/localhost/syncope-enduser.xml
 /etc/apache-syncope/enduser.properties
+/etc/apache-syncope/customForm.json
 /etc/apache-syncope/saml2sp-agent.properties

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/fit/enduser-reference/src/main/resources/customForm.json
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/main/resources/customForm.json b/fit/enduser-reference/src/main/resources/customForm.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/fit/enduser-reference/src/main/resources/customForm.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/b292d3c0/fit/enduser-reference/src/test/resources/customForm.json
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/test/resources/customForm.json b/fit/enduser-reference/src/test/resources/customForm.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/fit/enduser-reference/src/test/resources/customForm.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file


[39/50] [abbrv] syncope git commit: Fixing after BATIK-1185

Posted by il...@apache.org.
Fixing after BATIK-1185


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

Branch: refs/heads/SYNCOPE-808
Commit: 904be1a0e62759ac64638fd468fd484d6d2065d2
Parents: 51d0bb4
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 18 10:29:09 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 18 10:29:09 2017 +0200

----------------------------------------------------------------------
 core/logic/pom.xml |  8 ++++++++
 pom.xml            | 12 +++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/904be1a0/core/logic/pom.xml
----------------------------------------------------------------------
diff --git a/core/logic/pom.xml b/core/logic/pom.xml
index 967e9d7..cac3540 100644
--- a/core/logic/pom.xml
+++ b/core/logic/pom.xml
@@ -79,6 +79,14 @@ under the License.
       <groupId>org.apache.xmlgraphics</groupId>
       <artifactId>fop</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.xmlgraphics</groupId>
+      <artifactId>batik-i18n</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.xmlgraphics</groupId>
+      <artifactId>batik-constants</artifactId>
+    </dependency>
 
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>

http://git-wip-us.apache.org/repos/asf/syncope/blob/904be1a0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b6bdb56..cfa0ba0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -995,7 +995,17 @@ under the License.
           </exclusion>
         </exclusions>
       </dependency>
-            
+      <dependency>
+        <groupId>org.apache.xmlgraphics</groupId>
+        <artifactId>batik-i18n</artifactId>
+        <version>1.9</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.xmlgraphics</groupId>
+        <artifactId>batik-constants</artifactId>
+        <version>1.9</version>
+      </dependency>
+
       <!-- Activiti -->
       <dependency>
         <groupId>org.activiti</groupId>


[10/50] [abbrv] syncope git commit: [SYNCOPE-1055] Adding ref to Flowable in the docs

Posted by il...@apache.org.
[SYNCOPE-1055] Adding ref to Flowable in the docs


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

Branch: refs/heads/SYNCOPE-808
Commit: 10d53d2bda9bab857f08a04aa9dc0e8991ee2ee9
Parents: 610345a
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 11 15:53:18 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 11 15:53:18 2017 +0200

----------------------------------------------------------------------
 src/main/asciidoc/getting-started/introduction.adoc     |  5 +++--
 src/main/asciidoc/getting-started/obtain.adoc           |  2 +-
 .../asciidoc/reference-guide/concepts/workflow.adoc     | 12 ++++++++++--
 3 files changed, 14 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/10d53d2b/src/main/asciidoc/getting-started/introduction.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/getting-started/introduction.adoc b/src/main/asciidoc/getting-started/introduction.adoc
index 8fafc8f..a9f3c66 100644
--- a/src/main/asciidoc/getting-started/introduction.adoc
+++ b/src/main/asciidoc/getting-started/introduction.adoc
@@ -116,8 +116,9 @@ point for defining and enforcing the consistency and transformations between int
 all-Java implementation can be extended for this purpose. In addition, an http://camel.apache.org/[Apache Camel^]-based 
 implementation is also available as an extension, which brings all the power of runtime changes and adaptation.
  * *_Workflow_*  is one of the pluggable aspects of Apache Syncope: this lets every deployment choose the preferred engine
-from a provided list - including the one based on http://www.activiti.org/[Activiti BPM^], the reference open source 
-http://www.bpmn.org/[BPMN 2.0^] implementation - or define new, custom ones. 
+from a provided list - including one based on http://www.activiti.org/[Activiti BPM^] and another based on
+http://www.flowable.org/[Flowable^], the reference open source http://www.bpmn.org/[BPMN 2.0^] implementations - or
+define new, custom ones. 
  * *_Persistence_* manages all data (users, groups, attributes, resources, ...) at a high level 
 using a standard https://en.wikipedia.org/wiki/Java_Persistence_API[JPA 2.0^] approach. The data is persisted to an underlying 
 database, referred to as *_Internal Storage_*. Consistency is ensured via the comprehensive

http://git-wip-us.apache.org/repos/asf/syncope/blob/10d53d2b/src/main/asciidoc/getting-started/obtain.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/getting-started/obtain.adoc b/src/main/asciidoc/getting-started/obtain.adoc
index 60f7235..2f76821 100644
--- a/src/main/asciidoc/getting-started/obtain.adoc
+++ b/src/main/asciidoc/getting-started/obtain.adoc
@@ -407,7 +407,7 @@ mvn -P all clean install
 then, from the `enduser` subdirectory, execute:
 
 [source,bash]
-mvn -P embedded
+mvn -P embedded,all
 
 ===== Paths and Components
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/10d53d2b/src/main/asciidoc/reference-guide/concepts/workflow.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/concepts/workflow.adoc b/src/main/asciidoc/reference-guide/concepts/workflow.adoc
index 712b59e..ea0e28d 100644
--- a/src/main/asciidoc/reference-guide/concepts/workflow.adoc
+++ b/src/main/asciidoc/reference-guide/concepts/workflow.adoc
@@ -77,8 +77,8 @@ https://camunda.org/[Camunda^] or http://jbpm.jboss.org/[jBPM^].
 
 ==== Activiti User Workflow Adapter
 
-An advanced adapter is provided for Users, based on http://www.activiti.org/[Activiti BPM^], the reference open source 
-http://www.bpmn.org/[BPMN 2.0^] implementation.
+An advanced adapter is provided for Users, based on http://www.activiti.org/[Activiti BPM^], one of reference open
+source http://www.bpmn.org/[BPMN 2.0^] implementations.
 
 The
 ifeval::["{snapshotOrRelease}" == "release"]
@@ -229,3 +229,11 @@ The delegated administrator for approving recertifications can be configured by
           activiti:candidateUser="${user.lastRecertificator}">
 ----
 ====
+
+==== Flowable User Workflow Adapter
+
+Starting with Apache Syncope 2.0.3, another advanced adapter is provided for Users, based on
+http://www.flowable.org/[Flowable^], one of reference open source http://www.bpmn.org/[BPMN 2.0^] implementations.
+
+Since Flowable was http://www.flowable.org/blog/2016/10/12/flowable-and-activiti.html[forked from Activiti BPM^],
+everything stated <<activiti-user-workflow-adapter,above>> about Activiti BPM can be applied.


[49/50] [abbrv] syncope git commit: Several pom fixes, proper LICENSE and NOTICE, package reorganization, checkstyle setup

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/pom.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/pom.xml b/ide/netbeans/pom.xml
index c594e04..abaa216 100644
--- a/ide/netbeans/pom.xml
+++ b/ide/netbeans/pom.xml
@@ -16,157 +16,191 @@ specific language governing permissions and limitations
 under the License.
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-      <groupId>org.apache.syncope</groupId>
-      <artifactId>syncope-ide</artifactId>
-      <version>2.0.2-SNAPSHOT</version>
-    </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.syncope</groupId>
+    <artifactId>syncope-ide</artifactId>
+    <version>2.0.4-SNAPSHOT</version>
+  </parent>
 
-    <name>Apache Syncope IDE Netbeans</name>
-    <description>Apache Syncope IDE Netbeans</description>
-    <groupId>org.apache.syncope.ide</groupId>
-    <artifactId>syncope-ide-netbeans</artifactId>
+  <name>Apache Syncope IDE Netbeans</name>
+  <description>Apache Syncope IDE Netbeans</description>
+  <groupId>org.apache.syncope.ide</groupId>
+  <artifactId>syncope-ide-netbeans</artifactId>
 
-    <packaging>nbm</packaging>
+  <packaging>nbm</packaging>
 
-    <properties>
-      <rootpom.basedir>${basedir}/../..</rootpom.basedir>
-    </properties>
+  <properties>
+    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
+  </properties>
 
-    <build>
-        <resources>
-            <resource>
-                <directory>src/main/resources/META-INF/</directory>
-            </resource>
-        </resources>
+  <dependencies>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-netbeans-api-annotations-common</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-windows</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-util</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-util-ui</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-util-lookup</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-awt</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-netbeans-modules-settings</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.syncope.common</groupId>
+      <artifactId>syncope-common-lib</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.syncope.client</groupId>
+      <artifactId>syncope-client-lib</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-io</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-nodes</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-text</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-filesystems</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-openide-loaders</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-netbeans-core-multiview</artifactId>
+      <type>jar</type>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-netbeans-modules-editor-lib2</artifactId>
+      <type>jar</type>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-netbeans-api-progress</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.api</groupId>
+      <artifactId>org-netbeans-api-progress-nb</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.netbeans.external</groupId>
+      <artifactId>asm-all-5.0.1</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>nbm-maven-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <useOSGiDependencies>false</useOSGiDependencies>
+        </configuration>
+      </plugin>
+      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
+          </archive>
+        </configuration>
+      </plugin>
+             
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-antrun-plugin</artifactId>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <configuration>
+              <target>
+                <zip update="true" destfile="${project.build.directory}/syncope-ide-netbeans-${project.version}.nbm">
+                  <zipfileset dir="${basedir}" prefix="META-INF" includes="LICENSE,NOTICE"/>
+                </zip>
+              </target>
+            </configuration>
+            <goals>
+              <goal>run</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+             
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+      </plugin>
+    </plugins>
+    
+    <resources>
+      <resource>
+        <directory>${basedir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>LICENSE</include>
+          <include>NOTICE</include>
+        </includes>
+      </resource>
+    </resources>
+  </build>
+  
+  <profiles>
+    <profile>
+      <id>apache-release</id>
+
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>nbm-maven-plugin</artifactId>
-                <extensions>true</extensions>
-                <configuration>
-                    <useOSGiDependencies>false</useOSGiDependencies>
-                    <nbmResources>
-                        <nbmResource>
-                            <directory>src/main/resources/META-INF</directory>
-                            <targetPath>../META-INF</targetPath>
-                        </nbmResource>
-                    </nbmResources>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
-                    </archive>
-                </configuration>
-            </plugin>
-            <plugin>
-                <artifactId>maven-antrun-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                  <execution>
-                    <phase>package</phase>
-                    <configuration>
-                      <target>
-                        <move file="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.nbm"
-                            tofile="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.zip" />
-                        <zip update="true" basedir="legal/" 
-                            destfile="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.zip" />
-                        <move file="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.zip"
-                            tofile="./target/syncope-ide-netbeans-2.0.2-SNAPSHOT.nbm" />
-                      </target>
-                    </configuration>
-                    <goals>
-                      <goal>run</goal>
-                    </goals>
-                  </execution>
-                </executions>
-              </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-deploy-plugin</artifactId>
+            <configuration>
+              <skip>true</skip>
+            </configuration>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-source-plugin</artifactId>
+            <inherited>false</inherited>
+            <configuration>
+              <skipSource>true</skipSource>
+            </configuration>
+          </plugin>
         </plugins>
-    </build>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-api-annotations-common</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-windows</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-util</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-util-ui</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-util-lookup</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-awt</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-modules-settings</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.syncope.common</groupId>
-            <artifactId>syncope-common-lib</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.syncope.client</groupId>
-            <artifactId>syncope-client-lib</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-nodes</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-text</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-filesystems</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-openide-loaders</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-core-multiview</artifactId>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-modules-editor-lib2</artifactId>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-api-progress</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.netbeans.api</groupId>
-            <artifactId>org-netbeans-api-progress-nb</artifactId>
-        </dependency>
-    </dependencies>
-</project>
\ No newline at end of file
+      </build>
+    </profile>
+  </profiles>
+</project>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java
new file mode 100644
index 0000000..676d9a9
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/PluginConstants.java
@@ -0,0 +1,43 @@
+/*
+ * 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.ide.netbeans;
+
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+
+public final class PluginConstants {
+
+    public static final String MAIL_TEMPLATE = "Mail Template";
+
+    public static final String REPORT_XSLTS = "Report XSLTs";
+
+    public static final String[] MAIL_TEMPLATE_FORMATS = {
+        MailTemplateFormat.HTML.name(), MailTemplateFormat.TEXT.name() };
+
+    public static final String[] REPORT_TEMPLATE_FORMATS = {
+        ReportTemplateFormat.HTML.name(), ReportTemplateFormat.CSV.name(), ReportTemplateFormat.FO.name() };
+
+    public static final String DISPLAY_NAME = "Apache Syncope";
+
+    public static final String TOOL_TIP_TEXT = "This is a Apache Syncope window";
+
+    private PluginConstants() {
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/ResourceConnector.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/ResourceConnector.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/ResourceConnector.java
new file mode 100644
index 0000000..133fa8c
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/ResourceConnector.java
@@ -0,0 +1,77 @@
+/*
+ * 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.ide.netbeans;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import org.apache.syncope.ide.netbeans.service.MailTemplateManagerService;
+import org.apache.syncope.ide.netbeans.service.ReportTemplateManagerService;
+
+public final class ResourceConnector {
+
+    private static MailTemplateManagerService MAIL_TEMPLATE_MANAGER_SERVICE;
+
+    private static ReportTemplateManagerService REPORT_TEMPLATE_MANAGER_SERVICE;
+
+    private static final Object MAIL_TEMPLATE_MONITOR = new Object();
+
+    private static final Object REPORT_TEMPLATE_MONITOR = new Object();
+
+    private ResourceConnector() {
+    }
+
+    public static MailTemplateManagerService getMailTemplateManagerService() throws IOException {
+        synchronized (MAIL_TEMPLATE_MONITOR) {
+            if (MAIL_TEMPLATE_MANAGER_SERVICE == null) {
+                UserProperties userProperties = getUserProperties();
+                MAIL_TEMPLATE_MANAGER_SERVICE = new MailTemplateManagerService(
+                        userProperties.getUrl(), userProperties.getUserName(),
+                        userProperties.getPassword());
+            }
+        }
+        return MAIL_TEMPLATE_MANAGER_SERVICE;
+    }
+
+    public static ReportTemplateManagerService getReportTemplateManagerService() throws IOException {
+        synchronized (REPORT_TEMPLATE_MONITOR) {
+            if (REPORT_TEMPLATE_MANAGER_SERVICE == null) {
+                UserProperties userProperties = getUserProperties();
+                REPORT_TEMPLATE_MANAGER_SERVICE = new ReportTemplateManagerService(
+                        userProperties.getUrl(), userProperties.getUserName(),
+                        userProperties.getPassword());
+            }
+        }
+        return REPORT_TEMPLATE_MANAGER_SERVICE;
+    }
+
+    private static UserProperties getUserProperties() throws FileNotFoundException, IOException {
+        File file = new File("UserData.txt");
+        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
+        String url = bufferedReader.readLine();
+        String userName = bufferedReader.readLine();
+        String password = bufferedReader.readLine();
+
+        UserProperties userProperties = new UserProperties(url, userName, password);
+        return userProperties;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/UserProperties.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/UserProperties.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/UserProperties.java
new file mode 100644
index 0000000..fdff30a
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/UserProperties.java
@@ -0,0 +1,79 @@
+/*
+ * 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.ide.netbeans;
+
+public class UserProperties {
+
+    private String url;
+
+    private String userName;
+
+    private String password;
+
+    public UserProperties() {
+    }
+
+    public UserProperties(final String url, final String userName, final String password) {
+        this.url = url;
+        this.userName = userName;
+        this.password = password;
+    }
+
+    /**
+     * @return the userName
+     */
+    public String getUserName() {
+        return userName;
+    }
+
+    /**
+     * @return the password
+     */
+    public String getPassword() {
+        return password;
+    }
+
+    /**
+     * @return the url
+     */
+    public String getUrl() {
+        return url;
+    }
+
+    /**
+     * @param url the url to set
+     */
+    public void setUrl(final String url) {
+        this.url = url;
+    }
+
+    /**
+     * @param userName the userName to set
+     */
+    public void setUserName(final String userName) {
+        this.userName = userName;
+    }
+
+    /**
+     * @param password the password to set
+     */
+    public void setPassword(final String password) {
+        this.password = password;
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/MailTemplateManagerService.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/MailTemplateManagerService.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/MailTemplateManagerService.java
new file mode 100644
index 0000000..f524f1f
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/MailTemplateManagerService.java
@@ -0,0 +1,68 @@
+/*
+ * 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.ide.netbeans.service;
+
+import java.io.InputStream;
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.to.MailTemplateTO;
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.rest.api.service.MailTemplateService;
+
+public class MailTemplateManagerService {
+
+    private final MailTemplateService service;
+
+    public MailTemplateManagerService(final String url, final String userName, final String password) {
+        SyncopeClient syncopeClient = new SyncopeClientFactoryBean().setAddress(url).create(userName, password);
+        service = syncopeClient.getService(MailTemplateService.class);
+    }
+
+    public List<MailTemplateTO> list() {
+        return service.list();
+    }
+
+    public boolean create(final MailTemplateTO mailTemplateTO) {
+        return Response.Status.CREATED.getStatusCode() == service.create(mailTemplateTO).getStatus();
+    }
+
+    public MailTemplateTO read(final String key) {
+        return service.read(key);
+    }
+
+    public boolean delete(final String key) {
+        service.delete(key);
+        return true;
+    }
+
+    public Object getFormat(final String key, final MailTemplateFormat format) {
+        return service.getFormat(key, format).getEntity();
+    }
+
+    public void setFormat(final String key, final MailTemplateFormat format, final InputStream templateIn) {
+        service.setFormat(key, format, templateIn);
+    }
+
+    public boolean removeFormat(final String key, final MailTemplateFormat format) {
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/ReportTemplateManagerService.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/ReportTemplateManagerService.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/ReportTemplateManagerService.java
new file mode 100644
index 0000000..6c835a1
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/service/ReportTemplateManagerService.java
@@ -0,0 +1,68 @@
+/*
+ * 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.ide.netbeans.service;
+
+import java.io.InputStream;
+import java.util.List;
+import javax.ws.rs.core.Response;
+import org.apache.syncope.client.lib.SyncopeClient;
+import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+import org.apache.syncope.common.rest.api.service.ReportTemplateService;
+
+public class ReportTemplateManagerService {
+
+    private final ReportTemplateService service;
+
+    public ReportTemplateManagerService(final String url, final String userName, final String password) {
+        SyncopeClient syncopeClient = new SyncopeClientFactoryBean().setAddress(url).create(userName, password);
+        service = syncopeClient.getService(ReportTemplateService.class);
+    }
+
+    public List<ReportTemplateTO> list() {
+        return service.list();
+    }
+
+    public boolean create(final ReportTemplateTO reportTemplateTO) {
+        return Response.Status.CREATED.getStatusCode() == service.create(reportTemplateTO).getStatus();
+    }
+
+    public ReportTemplateTO read(final String key) {
+        return service.read(key);
+    }
+
+    public boolean delete(final String key) {
+        service.delete(key);
+        return true;
+    }
+
+    public Object getFormat(final String key, final ReportTemplateFormat format) {
+        return service.getFormat(key, format).getEntity();
+    }
+
+    public void setFormat(final String key, final ReportTemplateFormat format, final InputStream templateIn) {
+        service.setFormat(key, format, templateIn);
+    }
+
+    public boolean removeFormat(final String key, final ReportTemplateFormat format) {
+        return false;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.form
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.form b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.form
new file mode 100644
index 0000000..c0b7d26
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.form
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+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.
+-->
+<Form version="1.7" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jScrollPane1" alignment="0" pref="258" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jScrollPane1" alignment="0" pref="445" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+      <AuxValues>
+        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+      </AuxValues>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JTree" name="resourceExplorerTree">
+          <Properties>
+            <Property name="model" type="javax.swing.tree.TreeModel" editor="org.netbeans.modules.form.editors2.TreeModelEditor">
+              <TreeModel code=""/>
+            </Property>
+            <Property name="rootVisible" type="boolean" value="false"/>
+            <Property name="scrollsOnExpand" type="boolean" value="true"/>
+          </Properties>
+          <Events>
+            <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="resourceExplorerTreeMouseClicked"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java
new file mode 100644
index 0000000..65ac347
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ResourceExplorerTopComponent.java
@@ -0,0 +1,546 @@
+/*
+ * 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.ide.netbeans.view;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseEvent;
+import java.beans.PropertyChangeListener;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+import java.util.List;
+import javax.swing.Action;
+import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
+import javax.swing.JPopupMenu;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Document;
+import javax.swing.text.JTextComponent;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import org.apache.commons.io.IOUtils;
+import org.apache.syncope.common.lib.to.MailTemplateTO;
+import org.apache.syncope.common.lib.to.ReportTemplateTO;
+import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+import org.apache.syncope.ide.netbeans.PluginConstants;
+import org.apache.syncope.ide.netbeans.ResourceConnector;
+import org.apache.syncope.ide.netbeans.service.MailTemplateManagerService;
+import org.apache.syncope.ide.netbeans.service.ReportTemplateManagerService;
+import org.netbeans.api.editor.EditorRegistry;
+import org.netbeans.api.progress.ProgressHandle;
+import org.netbeans.api.progress.ProgressHandleFactory;
+import org.netbeans.api.settings.ConvertAsProperties;
+import org.openide.awt.ActionID;
+import org.openide.awt.ActionReference;
+import org.openide.cookies.OpenCookie;
+import org.openide.filesystems.FileObject;
+import org.openide.filesystems.FileUtil;
+import org.openide.loaders.DataObject;
+import org.openide.util.Cancellable;
+import org.openide.util.Exceptions;
+import org.openide.util.RequestProcessor;
+import org.openide.windows.TopComponent;
+
+/**
+ * Top component which displays something.
+ */
+@ConvertAsProperties(
+        dtd = "-//org.apache.syncope.ide.netbeans//ResourceExplorer//EN",
+        autostore = false
+)
+@TopComponent.Description(
+        preferredID = "ResourceExplorerTopComponent",
+        iconBase = "images/syncope.png",
+        persistenceType = TopComponent.PERSISTENCE_ALWAYS
+)
+@TopComponent.Registration(mode = "explorer", openAtStartup = false)
+@ActionID(category = "Window", id = "org.apache.syncope.ide.netbeans.ResourceExplorerTopComponent")
+@ActionReference(path = "Menu/Window")
+@TopComponent.OpenActionRegistration(
+        displayName = "Apache Syncope",
+        preferredID = "ResourceExplorerTopComponent"
+)
+public final class ResourceExplorerTopComponent extends TopComponent {
+
+    private static final long serialVersionUID = -1643737786852621861L;
+
+    private final DefaultTreeModel treeModel;
+
+    private final DefaultMutableTreeNode root;
+
+    private final DefaultMutableTreeNode mailTemplates;
+
+    private final DefaultMutableTreeNode reportXslts;
+
+    private MailTemplateManagerService mailTemplateManagerService;
+
+    private ReportTemplateManagerService reportTemplateManagerService;
+
+    private Charset encodingPattern;
+
+    public ResourceExplorerTopComponent() {
+
+        initComponents();
+        setName(PluginConstants.DISPLAY_NAME);
+        setToolTipText(PluginConstants.TOOL_TIP_TEXT);
+
+        treeModel = (DefaultTreeModel) resourceExplorerTree.getModel();
+        root = (DefaultMutableTreeNode) treeModel.getRoot();
+        DefaultMutableTreeNode visibleRoot = new DefaultMutableTreeNode(PluginConstants.DISPLAY_NAME);
+        mailTemplates = new DefaultMutableTreeNode(PluginConstants.MAIL_TEMPLATE);
+        reportXslts = new DefaultMutableTreeNode(PluginConstants.REPORT_XSLTS);
+        root.add(visibleRoot);
+        visibleRoot.add(mailTemplates);
+        visibleRoot.add(reportXslts);
+        treeModel.reload();
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The
+     * content of this method is always regenerated by the Form Editor.
+     */
+    //CHECKSTYLE:OFF
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jScrollPane1 = new javax.swing.JScrollPane();
+        resourceExplorerTree = new javax.swing.JTree();
+
+        javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root");
+        resourceExplorerTree.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1));
+        resourceExplorerTree.setRootVisible(false);
+        resourceExplorerTree.setScrollsOnExpand(true);
+        resourceExplorerTree.addMouseListener(new java.awt.event.MouseAdapter() {
+            public void mouseClicked(java.awt.event.MouseEvent evt) {
+                resourceExplorerTreeMouseClicked(evt);
+            }
+        });
+        jScrollPane1.setViewportView(resourceExplorerTree);
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+        this.setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 445, Short.MAX_VALUE)
+        );
+    }// </editor-fold>//GEN-END:initComponents
+    //CHECKSTYLE:ON
+
+    private void resourceExplorerTreeMouseClicked(final java.awt.event.MouseEvent evt) {
+        if (evt.getButton() == MouseEvent.BUTTON1 && evt.getClickCount() == 2) {
+            DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree.
+                    getLastSelectedPathComponent();
+            DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) selectedNode.getParent();
+            if (selectedNode.isLeaf()) {
+                String name = (String) selectedNode.getUserObject();
+                if (parentNode.getUserObject().equals(PluginConstants.MAIL_TEMPLATE)) {
+                    try {
+                        openMailEditor(name);
+                    } catch (IOException e) {
+                        Exceptions.printStackTrace(e);
+                    }
+                } else {
+                    try {
+                        openReportEditor(name);
+                    } catch (IOException e) {
+                        Exceptions.printStackTrace(e);
+                    }
+                }
+            }
+        } else if (evt.getButton() == MouseEvent.BUTTON3 && evt.getClickCount() == 1) {
+            DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) resourceExplorerTree.
+                    getLastSelectedPathComponent();
+            String selectedNodeName = (String) selectedNode.getUserObject();
+            if (selectedNode.isLeaf()) {
+                leafRightClickAction(evt, selectedNode);
+            } else if (selectedNodeName.equals(PluginConstants.MAIL_TEMPLATE)) {
+                folderRightClickAction(evt, mailTemplates);
+            } else if (selectedNodeName.equals(PluginConstants.REPORT_XSLTS)) {
+                folderRightClickAction(evt, reportXslts);
+            } else if (selectedNodeName.equals(PluginConstants.DISPLAY_NAME)) {
+                rootRightClickAction(evt);
+            }
+        }
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JScrollPane jScrollPane1;
+    private javax.swing.JTree resourceExplorerTree;
+    // End of variables declaration//GEN-END:variables
+
+    @Override
+    public void componentOpened() {
+        File file = new File("UserData.txt");
+        if (!file.exists()) {
+            new ServerDetailsView(null, true).setVisible(true);
+        }
+        try {
+            mailTemplateManagerService = ResourceConnector.getMailTemplateManagerService();
+            reportTemplateManagerService = ResourceConnector.getReportTemplateManagerService();
+        } catch (IOException e) {
+            JOptionPane.showMessageDialog(null, "Error Occured.", "Error", JOptionPane.ERROR_MESSAGE);
+            new ServerDetailsView(null, true).setVisible(true);
+        }
+
+        Runnable tsk = new Runnable() {
+
+            @Override
+            public void run() {
+                final ProgressHandle progr = ProgressHandleFactory.createHandle("Loading Templates", new Cancellable() {
+
+                    @Override
+                    public boolean cancel() {
+                        return true;
+                    }
+                }, new Action() {
+
+                    @Override
+                    public Object getValue(final String key) {
+                        return null;
+                    }
+
+                    @Override
+                    public void putValue(final String key, final Object value) {
+                    }
+
+                    @Override
+                    public void setEnabled(final boolean b) {
+                    }
+
+                    @Override
+                    public boolean isEnabled() {
+                        return false;
+                    }
+
+                    @Override
+                    public void addPropertyChangeListener(final PropertyChangeListener listener) {
+                    }
+
+                    @Override
+                    public void removePropertyChangeListener(final PropertyChangeListener listener) {
+                    }
+
+                    @Override
+                    public void actionPerformed(final ActionEvent e) {
+                    }
+                });
+
+                progr.start();
+                progr.progress("Loading Templates.");
+                addMailTemplates();
+                addReportXslts();
+                progr.finish();
+            }
+
+        };
+        RequestProcessor.getDefault().post(tsk);
+    }
+
+    @Override
+    public void componentClosed() {
+        // TODO add custom code on component closing
+    }
+
+    void writeProperties(final java.util.Properties p) {
+        // better to version settings since initial version as advocated at
+        // http://wiki.apidesign.org/wiki/PropertyFiles
+        p.setProperty("version", "1.0");
+        // TODO store your settings
+    }
+
+    void readProperties(final java.util.Properties p) {
+        String version = p.getProperty("version");
+        // TODO read your settings according to their version
+    }
+
+    private void addMailTemplates() {
+        List<MailTemplateTO> mailTemplateList = mailTemplateManagerService.list();
+        for (MailTemplateTO mailTemplate : mailTemplateList) {
+            this.mailTemplates.add(new DefaultMutableTreeNode(
+                    mailTemplate.getKey()));
+        }
+        treeModel.reload();
+    }
+
+    private void addReportXslts() {
+        List<ReportTemplateTO> reportTemplates = reportTemplateManagerService.list();
+        for (ReportTemplateTO reportTemplate : reportTemplates) {
+            reportXslts.add(new DefaultMutableTreeNode(
+                    reportTemplate.getKey()));
+        }
+        treeModel.reload();
+    }
+
+    private void rootRightClickAction(final MouseEvent evt) {
+        JPopupMenu menu = new JPopupMenu();
+        JMenuItem saveItem = new JMenuItem("Save");
+        JMenuItem resetConnectionItem = new JMenuItem("Reset Connection");
+        menu.add(saveItem);
+        menu.add(resetConnectionItem);
+
+        saveItem.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(final ActionEvent e) {
+                saveContent();
+            }
+        });
+
+        resetConnectionItem.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(final ActionEvent evt) {
+                File file = new File("UserData.txt");
+                try {
+                    BufferedReader bf = new BufferedReader(new FileReader(file));
+                    String host = bf.readLine();
+                    String userName = bf.readLine();
+                    String password = bf.readLine();
+                    ServerDetailsView serverDetails = new ServerDetailsView(null, true);
+                    serverDetails.setDetails(host, userName, password);
+                    serverDetails.setVisible(true);
+                } catch (IOException e) {
+                    Exceptions.printStackTrace(e);
+                }
+            }
+        });
+
+        menu.show(evt.getComponent(), evt.getX(), evt.getY());
+    }
+
+    private void folderRightClickAction(final MouseEvent evt,
+            final DefaultMutableTreeNode node) {
+        JPopupMenu menu = new JPopupMenu();
+        JMenuItem addItem = new JMenuItem("New");
+        menu.add(addItem);
+
+        addItem.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(final ActionEvent e) {
+                String name = JOptionPane.showInputDialog("Enter Name");
+                boolean added = false;
+                if (node.getUserObject().equals(PluginConstants.MAIL_TEMPLATE)) {
+                    MailTemplateTO mailTemplate = new MailTemplateTO();
+                    mailTemplate.setKey(name);
+                    added = mailTemplateManagerService.create(mailTemplate);
+                    mailTemplateManagerService.setFormat(name,
+                            MailTemplateFormat.HTML,
+                            IOUtils.toInputStream("//Enter Content here", encodingPattern));
+                    mailTemplateManagerService.setFormat(name,
+                            MailTemplateFormat.TEXT,
+                            IOUtils.toInputStream("//Enter Content here", encodingPattern));
+                    try {
+                        openMailEditor(name);
+                    } catch (IOException ex) {
+                        Exceptions.printStackTrace(ex);
+                    }
+                } else {
+                    ReportTemplateTO reportTemplate = new ReportTemplateTO();
+                    reportTemplate.setKey(name);
+                    added = reportTemplateManagerService.create(reportTemplate);
+                    reportTemplateManagerService.setFormat(name,
+                            ReportTemplateFormat.FO,
+                            IOUtils.toInputStream("//Enter content here", encodingPattern));
+                    reportTemplateManagerService.setFormat(name,
+                            ReportTemplateFormat.CSV,
+                            IOUtils.toInputStream("//Enter content here", encodingPattern));
+                    reportTemplateManagerService.setFormat(name,
+                            ReportTemplateFormat.HTML,
+                            IOUtils.toInputStream("//Enter content here", encodingPattern));
+                    try {
+                        openReportEditor(name);
+                    } catch (IOException ex) {
+                        Exceptions.printStackTrace(ex);
+                    }
+                }
+
+                if (added) {
+                    node.add(new DefaultMutableTreeNode(name));
+                    treeModel.reload(node);
+                } else {
+                    JOptionPane.showMessageDialog(
+                            null, "Error while creating new element", "Error", JOptionPane.ERROR_MESSAGE);
+                }
+            }
+        });
+
+        menu.show(evt.getComponent(), evt.getX(), evt.getY());
+    }
+
+    private void leafRightClickAction(final MouseEvent evt,
+            final DefaultMutableTreeNode node) {
+        JPopupMenu menu = new JPopupMenu();
+        JMenuItem deleteItem = new JMenuItem("Delete");
+        menu.add(deleteItem);
+
+        deleteItem.addActionListener(new ActionListener() {
+
+            @Override
+            public void actionPerformed(final ActionEvent e) {
+                int result = JOptionPane.showConfirmDialog(null, "Do you want to delete ?");
+                if (result == JOptionPane.OK_OPTION) {
+                    DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent();
+                    boolean deleted;
+                    if (parent.getUserObject().equals(PluginConstants.MAIL_TEMPLATE)) {
+                        deleted = mailTemplateManagerService.delete((String) node.getUserObject());
+                    } else {
+                        deleted = reportTemplateManagerService.delete((String) node.getUserObject());
+                    }
+                    if (deleted) {
+                        node.removeFromParent();
+                        treeModel.reload(parent);
+                    } else {
+                        JOptionPane.showMessageDialog(
+                                null, "Error while deleting new element", "Error", JOptionPane.ERROR_MESSAGE);
+                    }
+                }
+            }
+        });
+
+        menu.show(evt.getComponent(), evt.getX(), evt.getY());
+    }
+
+    private void openMailEditor(final String name) throws IOException {
+        String formatStr = (String) JOptionPane.showInputDialog(null, "Select File Format",
+                "File format", JOptionPane.QUESTION_MESSAGE, null,
+                PluginConstants.MAIL_TEMPLATE_FORMATS, MailTemplateFormat.TEXT.name());
+        MailTemplateFormat format = MailTemplateFormat.valueOf(formatStr);
+
+        String type = null;
+        InputStream is = null;
+        switch (format) {
+            case HTML:
+                type = "html";
+                is = (InputStream) mailTemplateManagerService.getFormat(name, MailTemplateFormat.HTML);
+                break;
+            case TEXT:
+                type = "txt";
+                is = (InputStream) mailTemplateManagerService.getFormat(name, MailTemplateFormat.TEXT);
+                break;
+            default:
+                break;
+        }
+        String content = IOUtils.toString(is, encodingPattern);
+
+        File directory = new File("Template/Mail");
+        if (!directory.exists()) {
+            directory.mkdirs();
+        }
+        File file = new File("Template/Mail/" + name + "." + type);
+        FileWriter fw = new FileWriter(file);
+        fw.write(content);
+        fw.flush();
+        FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile());
+        fob.setAttribute("description", "TEXT");
+        DataObject data = DataObject.find(fob);
+        data.getLookup().lookup(OpenCookie.class).open();
+    }
+
+    private void openReportEditor(final String name) throws IOException {
+        String formatStr = (String) JOptionPane.showInputDialog(null, "Select File Format",
+                "File format", JOptionPane.QUESTION_MESSAGE, null,
+                PluginConstants.REPORT_TEMPLATE_FORMATS, ReportTemplateFormat.FO.name());
+        ReportTemplateFormat format = ReportTemplateFormat.valueOf(formatStr);
+
+        String type = null;
+        InputStream is = null;
+        switch (format) {
+            case HTML:
+                type = "html";
+                is = (InputStream) reportTemplateManagerService.getFormat(name, ReportTemplateFormat.HTML);
+                break;
+            case CSV:
+                type = "csv";
+                is = (InputStream) reportTemplateManagerService.getFormat(name, ReportTemplateFormat.CSV);
+                break;
+            case FO:
+                type = "fo";
+                is = (InputStream) reportTemplateManagerService.getFormat(name, ReportTemplateFormat.FO);
+                break;
+            default:
+                break;
+        }
+        String content = IOUtils.toString(is, encodingPattern);
+
+        File directory = new File("Template/Report");
+        if (!directory.exists()) {
+            directory.mkdirs();
+        }
+        File file = new File("Template/Report/" + name + "." + type);
+        FileWriter fw = new FileWriter(file);
+        fw.write(content);
+        fw.flush();
+        FileObject fob = FileUtil.toFileObject(file.getAbsoluteFile());
+        DataObject data = DataObject.find(fob);
+        data.getLookup().lookup(OpenCookie.class).open();
+    }
+
+    private void saveContent() {
+        try {
+            JTextComponent ed = EditorRegistry.lastFocusedComponent();
+            Document document = ed.getDocument();
+            String content = document.getText(0, document.getLength());
+            String path = (String) document.getProperty(Document.TitleProperty);
+            String[] temp = path.split(File.separator);
+            String name = temp[temp.length - 1];
+            String templateType = temp[temp.length - 2];
+            temp = name.split("\\.");
+            String format = temp[1];
+            String key = temp[0];
+
+            if (templateType.equals("Mail")) {
+                if (format.equals("txt")) {
+                    mailTemplateManagerService.setFormat(key,
+                            MailTemplateFormat.TEXT,
+                            IOUtils.toInputStream(content, encodingPattern));
+                } else {
+                    mailTemplateManagerService.setFormat(key,
+                            MailTemplateFormat.HTML,
+                            IOUtils.toInputStream(content, encodingPattern));
+                }
+            } else if (format.equals("html")) {
+                reportTemplateManagerService.setFormat(key,
+                        ReportTemplateFormat.HTML,
+                        IOUtils.toInputStream(content, encodingPattern));
+            } else if (format.equals("fo")) {
+                reportTemplateManagerService.setFormat(key,
+                        ReportTemplateFormat.FO,
+                        IOUtils.toInputStream(content, encodingPattern));
+            } else {
+                reportTemplateManagerService.setFormat(key,
+                        ReportTemplateFormat.CSV,
+                        IOUtils.toInputStream(content, encodingPattern));
+            }
+        } catch (BadLocationException e) {
+            Exceptions.printStackTrace(e);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.form
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.form b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.form
new file mode 100644
index 0000000..d6ba1d7
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.form
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+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.
+-->
+<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <EmptySpace min="-2" pref="41" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="1" attributes="0">
+                          <Component id="okButton" min="-2" pref="74" max="-2" attributes="0"/>
+                          <Group type="102" attributes="0">
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
+                                  <Component id="jLabel3" alignment="0" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                                  <Component id="userNameTxt" max="32767" attributes="0"/>
+                                  <Component id="urlTxt" max="32767" attributes="0"/>
+                                  <Component id="passwordTxt" alignment="0" min="-2" pref="155" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <EmptySpace min="-2" pref="101" max="-2" attributes="0"/>
+                      <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
+                  </Group>
+              </Group>
+              <EmptySpace pref="41" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="1" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jLabel4" pref="32" max="32767" attributes="0"/>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="urlTxt" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="userNameTxt" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="passwordTxt" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="okButton" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel3">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="urlTxt">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.urlTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="userNameTxt">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.userNameTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JPasswordField" name="passwordTxt">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.passwordTxt.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JButton" name="okButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.okButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtonActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel4">
+      <Properties>
+        <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+          <ResourceString bundle="org/apache/syncope/ide/netbeans/view/Bundle.properties" key="ServerDetailsView.jLabel4.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
+        </Property>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java
new file mode 100644
index 0000000..07aedf9
--- /dev/null
+++ b/ide/netbeans/src/main/java/org/apache/syncope/ide/netbeans/view/ServerDetailsView.java
@@ -0,0 +1,183 @@
+/*
+ * 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.ide.netbeans.view;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import javax.swing.JDialog;
+import javax.swing.JOptionPane;
+
+public class ServerDetailsView extends JDialog {
+
+    private static final long serialVersionUID = -8693554903195406915L;
+
+    /**
+     * Creates new form LoginView
+     */
+    public ServerDetailsView(final java.awt.Frame parent, final boolean modal) {
+        super(parent, modal);
+        initComponents();
+        setLocationRelativeTo(this);
+    }
+
+    /**
+     * This method is called from within the constructor to initialize the form.
+     * WARNING: Do NOT modify this code. The content of this method is always
+     * regenerated by the Form Editor.
+     */
+    @SuppressWarnings("unchecked")
+    //CHECKSTYLE:OFF
+    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+    private void initComponents() {
+
+        jLabel1 = new javax.swing.JLabel();
+        jLabel2 = new javax.swing.JLabel();
+        jLabel3 = new javax.swing.JLabel();
+        urlTxt = new javax.swing.JTextField();
+        userNameTxt = new javax.swing.JTextField();
+        passwordTxt = new javax.swing.JPasswordField();
+        okButton = new javax.swing.JButton();
+        jLabel4 = new javax.swing.JLabel();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.jLabel1.text")); // NOI18N
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.jLabel2.text")); // NOI18N
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.jLabel3.text")); // NOI18N
+
+        urlTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.urlTxt.text")); // NOI18N
+
+        userNameTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.userNameTxt.text")); // NOI18N
+
+        passwordTxt.setText(org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.passwordTxt.text")); // NOI18N
+
+        org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.okButton.text")); // NOI18N
+        okButton.addActionListener(new java.awt.event.ActionListener() {
+            public void actionPerformed(java.awt.event.ActionEvent evt) {
+                okButtonActionPerformed(evt);
+            }
+        });
+
+        org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(ServerDetailsView.class, "ServerDetailsView.jLabel4.text")); // NOI18N
+
+        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(layout.createSequentialGroup()
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(layout.createSequentialGroup()
+                        .addGap(41, 41, 41)
+                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                            .addComponent(okButton, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addGroup(layout.createSequentialGroup()
+                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                                    .addComponent(jLabel1)
+                                    .addComponent(jLabel2)
+                                    .addComponent(jLabel3))
+                                .addGap(39, 39, 39)
+                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                                    .addComponent(userNameTxt)
+                                    .addComponent(urlTxt)
+                                    .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 155, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+                    .addGroup(layout.createSequentialGroup()
+                        .addGap(101, 101, 101)
+                        .addComponent(jLabel4)))
+                .addContainerGap(41, Short.MAX_VALUE))
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 32, Short.MAX_VALUE)
+                .addGap(18, 18, 18)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel1)
+                    .addComponent(urlTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(18, 18, 18)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel2)
+                    .addComponent(userNameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(18, 18, 18)
+                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel3)
+                    .addComponent(passwordTxt, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+                .addComponent(okButton)
+                .addContainerGap())
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+    //CHECKSTYLE:ON
+
+    private void okButtonActionPerformed(final java.awt.event.ActionEvent evt) {
+        String url = urlTxt.getText();
+        String userName = userNameTxt.getText();
+        String password = new String(passwordTxt.getPassword());
+        File file = new File("UserData.txt");
+        try {
+            FileWriter fileWriter = new FileWriter(file);
+            fileWriter.write(url + "\n" + userName + "\n" + password);
+            fileWriter.flush();
+            this.dispose();
+        } catch (IOException ex) {
+            JOptionPane.showMessageDialog(this, "Error while saving Data.", "Error", JOptionPane.ERROR_MESSAGE);
+        }
+    }
+
+    public void setDetails(final String host, final String userName, final String password) {
+        urlTxt.setText(host);
+        userNameTxt.setText(userName);
+        passwordTxt.setText(password);
+    }
+
+    public static void main(final String[] args) {
+        /* Create and display the dialog */
+        java.awt.EventQueue.invokeLater(new Runnable() {
+
+            @Override
+            public void run() {
+                ServerDetailsView dialog = new ServerDetailsView(new javax.swing.JFrame(), true);
+                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+
+                    @Override
+                    public void windowClosing(final java.awt.event.WindowEvent e) {
+                        System.exit(0);
+                    }
+                });
+                dialog.setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JLabel jLabel1;
+    private javax.swing.JLabel jLabel2;
+    private javax.swing.JLabel jLabel3;
+    private javax.swing.JLabel jLabel4;
+    private javax.swing.JButton okButton;
+    private javax.swing.JPasswordField passwordTxt;
+    private javax.swing.JTextField urlTxt;
+    private javax.swing.JTextField userNameTxt;
+    // End of variables declaration//GEN-END:variables
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java
deleted file mode 100644
index f9c4c13..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/connector/ResourceConnector.java
+++ /dev/null
@@ -1,76 +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.netbeans.plugin.connector;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileReader;
-import java.io.IOException;
-import org.apache.syncope.netbeans.plugin.entity.UserProperties;
-import org.apache.syncope.netbeans.plugin.service.MailTemplateManagerService;
-import org.apache.syncope.netbeans.plugin.service.ReportTemplateManagerService;
-
-public final class ResourceConnector {
-
-    private static MailTemplateManagerService MAIL_TEMPLATE_MANAGER_SERVICE;
-    private static ReportTemplateManagerService REPORT_TEMPLATE_MANAGER_SERVICE;
-
-    private static final Object MAIL_TEMPLATE_MONITOR = new Object();
-    private static final Object REPORT_TEMPLATE_MONITOR = new Object();
-
-    private ResourceConnector() {
-    }
-    
-    public static MailTemplateManagerService getMailTemplateManagerService() throws IOException {
-        synchronized (MAIL_TEMPLATE_MONITOR) {
-            if (MAIL_TEMPLATE_MANAGER_SERVICE == null) {
-                UserProperties userProperties = getUserProperties();
-                MAIL_TEMPLATE_MANAGER_SERVICE = new MailTemplateManagerService(
-                        userProperties.getUrl(), userProperties.getUserName(),
-                        userProperties.getPassword());
-            }
-        }
-        return MAIL_TEMPLATE_MANAGER_SERVICE;
-    }
-
-    public static ReportTemplateManagerService getReportTemplateManagerService() throws IOException {
-        synchronized (REPORT_TEMPLATE_MONITOR) {
-            if (REPORT_TEMPLATE_MANAGER_SERVICE == null) {
-                UserProperties userProperties = getUserProperties();
-                REPORT_TEMPLATE_MANAGER_SERVICE = new ReportTemplateManagerService(
-                        userProperties.getUrl(), userProperties.getUserName(),
-                        userProperties.getPassword());
-            }
-        }
-        return REPORT_TEMPLATE_MANAGER_SERVICE;
-    }
-
-    private static UserProperties getUserProperties() throws FileNotFoundException, IOException {
-        File file = new File("UserData.txt");
-        BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
-        String url = bufferedReader.readLine();
-        String userName = bufferedReader.readLine();
-        String password = bufferedReader.readLine();
-
-        UserProperties userProperties = new UserProperties(url, userName, password);
-        return userProperties;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java
deleted file mode 100644
index 50976d7..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/constants/PluginConstants.java
+++ /dev/null
@@ -1,33 +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.netbeans.plugin.constants;
-
-public final class PluginConstants {
-
-    public static final String MAIL_TEMPLTAE_CONSTANT = "Mail Template";
-    public static final String REPORT_XSLTS_CONSTANT = "Report XSLTs";
-    public static final String[] MAIL_TEMPLATE_FORMATS = {"TEXT", "HTML"};
-    public static final String[] REPORT_TEMPLATE_FORMATS = {"HTML", "CSV", "FO"};
-    public static final String DISPLAY_NAME = "Apache Syncope";
-    public static final String TOOL_TIP_TEXT = "This is a Apache Syncope window";
-
-    private PluginConstants() {
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java
deleted file mode 100644
index 9bb0845..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/entity/UserProperties.java
+++ /dev/null
@@ -1,78 +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.netbeans.plugin.entity;
-
-public class UserProperties {
-    
-    private String url;
-    private String userName;
-    private String password;
-
-    public UserProperties() {
-    }
-
-    public UserProperties(final String url, final String userName, 
-            final String password) {
-        this.url = url;
-        this.userName = userName;
-        this.password = password;
-    }
-
-    /**
-     * @return the userName
-     */
-    public String getUserName() {
-        return userName;
-    }
-
-    /**
-     * @return the password
-     */
-    public String getPassword() {
-        return password;
-    }
-
-    /**
-     * @return the url
-     */
-    public String getUrl() {
-        return url;
-    }
-
-    /**
-     * @param url the url to set
-     */
-    public void setUrl(final String url) {
-        this.url = url;
-    }
-
-    /**
-     * @param userName the userName to set
-     */
-    public void setUserName(final String userName) {
-        this.userName = userName;
-    }
-
-    /**
-     * @param password the password to set
-     */
-    public void setPassword(final String password) {
-        this.password = password;
-    }
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/06fd9e37/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java b/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java
deleted file mode 100644
index 953d081..0000000
--- a/ide/netbeans/src/main/java/org/apache/syncope/netbeans/plugin/service/MailTemplateManagerService.java
+++ /dev/null
@@ -1,68 +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.netbeans.plugin.service;
-
-import java.io.InputStream;
-import java.util.List;
-import javax.ws.rs.core.Response;
-import org.apache.syncope.client.lib.SyncopeClient;
-import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
-import org.apache.syncope.common.lib.to.MailTemplateTO;
-import org.apache.syncope.common.lib.types.MailTemplateFormat;
-import org.apache.syncope.common.rest.api.service.MailTemplateService;
-
-public class MailTemplateManagerService {
-
-    private MailTemplateService service;
-
-    public MailTemplateManagerService(final String url, final String userName, final String password) {
-        SyncopeClient syncopeClient = new SyncopeClientFactoryBean().setAddress(url).create(userName, password);
-        service = syncopeClient.getService(MailTemplateService.class);
-    }
-
-    public List<MailTemplateTO> list() {
-        return service.list();
-    }
-
-    public boolean create(final MailTemplateTO mailTemplateTO) {
-        return Response.Status.CREATED.getStatusCode() == service.create(mailTemplateTO).getStatus();
-    }
-
-    public MailTemplateTO read(final String key) {
-        return service.read(key);
-    }
-
-    public boolean delete(final String key) {
-        service.delete(key);
-        return true;
-    }
-
-    public Object getFormat(final String key, final MailTemplateFormat format) {
-        return service.getFormat(key, format).getEntity();
-    }
-
-    public void setFormat(final String key, final MailTemplateFormat format, final InputStream templateIn) {
-        service.setFormat(key, format, templateIn);
-    }
-
-    public boolean removeFormat(final String key, final MailTemplateFormat format) {
-        return false;
-    }
-
-}


[43/50] [abbrv] syncope git commit: Added netbeans to syncope/ide

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/resources/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/META-INF/LICENSE b/ide/netbeans/src/main/resources/META-INF/LICENSE
new file mode 100644
index 0000000..f34bfd3
--- /dev/null
+++ b/ide/netbeans/src/main/resources/META-INF/LICENSE
@@ -0,0 +1,896 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
+==
+
+For Jackson (http://wiki.fasterxml.com/JacksonHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For JAX-B (http://jaxb.java.net/):
+This is licensed under the CDDL 1.0:
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Sun Microsystems, Inc. is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R. $
+252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
+
+==
+
+For javax.annotation-api (https://jcp.org/en/jsr/detail?id=250):
+This is licensed under the CDDL 1.0, see above.
+
+==
+
+For javax.ws.rs-api (https://jax-rs-spec.java.net/):
+This is licensed under the CDDL 1.0, see above.
+
+==
+
+For Joda Time (http://www.joda.org/joda-time/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For StAX2 API (http://wiki.fasterxml.com/WoodstoxStax2):
+This is licensed under the BSD license:
+
+Redistribution and use in source and binary forms, with or without 
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this 
+list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice, 
+this list of conditions and the following disclaimer in the documentation 
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors 
+may be used to endorse or promote products derived from this software without 
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==
+
+For Woodstox (http://wiki.fasterxml.com/WoodstoxHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For Simple Logging Facade for Java - SLF4J (http://www.slf4j.org/):
+This is licensed under the MIT license:
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+ 
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+ 
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+==
+
+For Jsoup (https://jsoup.org/):
+This is licensed under the MIT license, see above.
+
+==
+
+For Eclipse Equinox (http://projects.eclipse.org/projects/rt.equinox):
+This is licensed under the EPL 1.0:
+
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+   distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+    i) changes to the Program, and
+   ii) additions to the Program;
+
+   where such changes and/or additions to the Program originate from and are
+   distributed by that particular Contributor. A Contribution 'originates'
+   from a Contributor if it was added to the Program by such Contributor
+   itself or anyone acting on such Contributor's behalf. Contributions do not
+   include additions to the Program which: (i) are separate modules of
+   software distributed in conjunction with the Program under their own
+   license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+  a) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free copyright license to
+     reproduce, prepare derivative works of, publicly display, publicly
+     perform, distribute and sublicense the Contribution of such Contributor,
+     if any, and such derivative works, in source code and object code form.
+  b) Subject to the terms of this Agreement, each Contributor hereby grants
+     Recipient a non-exclusive, worldwide, royalty-free patent license under
+     Licensed Patents to make, use, sell, offer to sell, import and otherwise
+     transfer the Contribution of such Contributor, if any, in source code and
+     object code form. This patent license shall apply to the combination of
+     the Contribution and the Program if, at the time the Contribution is
+     added by the Contributor, such addition of the Contribution causes such
+     combination to be covered by the Licensed Patents. The patent license
+     shall not apply to any other combinations which include the Contribution.
+     No hardware per se is licensed hereunder.
+  c) Recipient understands that although each Contributor grants the licenses
+     to its Contributions set forth herein, no assurances are provided by any
+     Contributor that the Program does not infringe the patent or other
+     intellectual property rights of any other entity. Each Contributor
+     disclaims any liability to Recipient for claims brought by any other
+     entity based on infringement of intellectual property rights or
+     otherwise. As a condition to exercising the rights and licenses granted
+     hereunder, each Recipient hereby assumes sole responsibility to secure
+     any other intellectual property rights needed, if any. For example, if a
+     third party patent license is required to allow Recipient to distribute
+     the Program, it is Recipient's responsibility to acquire that license
+     before distributing the Program.
+  d) Each Contributor represents that to its knowledge it has sufficient
+     copyright rights in its Contribution, if any, to grant the copyright
+     license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under
+its own license agreement, provided that:
+
+  a) it complies with the terms and conditions of this Agreement; and
+  b) its license agreement:
+      i) effectively disclaims on behalf of all Contributors all warranties
+         and conditions, express and implied, including warranties or
+         conditions of title and non-infringement, and implied warranties or
+         conditions of merchantability and fitness for a particular purpose;
+     ii) effectively excludes on behalf of all Contributors all liability for
+         damages, including direct, indirect, special, incidental and
+         consequential damages, such as lost profits;
+    iii) states that any provisions which differ from this Agreement are
+         offered by that Contributor alone and not by any other party; and
+     iv) states that source code for the Program is available from such
+         Contributor, and informs licensees how to obtain it in a reasonable
+         manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+  a) it must be made available under this Agreement; and
+  b) a copy of this Agreement must be included with each copy of the Program.
+     Contributors may not remove or alter any copyright notices contained
+     within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution,
+if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore,
+if a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits and
+other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such Commercial
+Contributor in connection with its distribution of the Program in a commercial
+product offering. The obligations in this section do not apply to any claims
+or Losses relating to any actual or alleged intellectual property
+infringement. In order to qualify, an Indemnified Contributor must:
+a) promptly notify the Commercial Contributor in writing of such claim, and
+b) allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such claim at
+its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If
+that Commercial Contributor then makes performance claims, or offers
+warranties related to Product X, those performance claims and warranties are
+such Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using
+and distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement , including but not limited to the
+risks and costs of program errors, compliance with applicable laws, damage to
+or loss of data, programs or equipment, and unavailability or interruption of
+operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
+LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of the
+remainder of the terms of this Agreement, and without further action by the
+parties hereto, such provision shall be reformed to the minimum extent
+necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program itself
+(excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted
+under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue
+and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to
+time. No one other than the Agreement Steward has the right to modify this
+Agreement. The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as the Agreement
+Steward to a suitable separate entity. Each new version of the Agreement will
+be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the
+Agreement under which it was received. In addition, after a new version of the
+Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly
+stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
+licenses to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in the
+Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
+
+==
+
+For Eclipse e4 (https://www.eclipse.org/e4/):
+This is licensed under the EPL 1.0, see above.
+
+==
+
+For Eclipse EMF (https://projects.eclipse.org/projects/modeling.emf.emf):
+This is licensed under the EPL 1.0, see above.
+
+==
+
+For Eclipse SWT (https://projects.eclipse.org/projects/eclipse.platform.swt):
+This is licensed under the EPL 1.0, see above.

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/META-INF/NOTICE b/ide/netbeans/src/main/resources/META-INF/NOTICE
new file mode 100644
index 0000000..34ffa8c
--- /dev/null
+++ b/ide/netbeans/src/main/resources/META-INF/NOTICE
@@ -0,0 +1,80 @@
+Apache Syncope
+Copyright 2012-2016 The Apache Software Foundation
+
+This product includes software developed by:
+The Apache Software Foundation (http://www.apache.org/).
+
+The following copyright notice(s) were affixed to portions of this code
+with which this file is now or was at one time distributed.
+
+==
+
+This product includes software developed by the Jackson project.
+
+==
+
+This product includes software developed by the JAXB project.
+Copyright (c) 2013-2016 The JAXB project.
+
+==
+
+This product includs software developed by Oracle.
+Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved.
+
+==
+
+This product includes software developed by the JAX-RS project.
+Copyright (c) 2014, Oracle Corporation and/or its affiliates. All rights reserved.
+
+==
+
+This product includes software developed by the Joda Time project.
+Copyright (c) 2002-2016 Joda.org. All Rights Reserved.
+
+==
+
+This product includes software developed by the Stax 2 Extension API Project.
+
+==
+
+This product includes software developed by the Woodstox Project.
+
+==
+
+This products includes software developed by the Simple Logging Facade for Java (SLF4J) project.
+Copyright (c) 2004-2016 QOS.ch.
+
+==
+
+This product includes software developed by the Web Services Description Language for Java project.
+Copyright (c) Dice.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Eclipse Equinox project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Eclipse e4 project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Eclipse EMF project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved
+
+==
+
+This product includes software developed by the Eclipse SWT project.
+Copyright (c) 2016 The Eclipse Foundation.
+All Rights Reserved.
+
+==
+
+This product includes software developed by the Jsoup project.
+Copyright (c) 2009 - 2016 Jonathan Hedley (jonathan@hedley.net)

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml b/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml
new file mode 100644
index 0000000..74e9d97
--- /dev/null
+++ b/ide/netbeans/src/main/resources/org/apache/syncope/checkstyle.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
+"http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
+<!--
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+    - the Java Language Specification at
+      http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+    - the Javadoc guidelines at
+      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+    - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
+-->
+<module name="Checker">
+    <!--
+        If you set the basedir property below, then all reported file
+        names will be relative to the specified directory. See
+        http://checkstyle.sourceforge.net/5.x/config.html#Checker
+
+      <property name="basedir" value="${basedir}"/>
+  -->
+
+  <!-- Checks that a package-info.java file exists for each package.     -->
+  <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+  <!--<module name="JavadocPackage"/>-->
+
+  <!-- Checks whether files end with a new line.                        -->
+  <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+  <module name="NewlineAtEndOfFile"/>
+
+  <!-- Checks that property files contain the same keys.         -->
+  <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+  <module name="Translation"/>
+    
+  <!-- Checks for Size Violations.                    -->
+  <!-- See http://checkstyle.sf.net/config_sizes.html -->
+  <module name="FileLength"/>
+    
+  <!-- Checks for whitespace                               -->
+  <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+  <module name="FileTabCharacter"/>
+
+  <!-- Miscellaneous other checks.                   -->
+  <!-- See http://checkstyle.sf.net/config_misc.html -->
+  <module name="RegexpSingleline">
+    <property name="format" value="\s+$"/>
+    <property name="minimum" value="0"/>
+    <property name="maximum" value="2"/>
+    <property name="message" value="Line has trailing spaces."/>
+  </module>
+
+  <module name="TreeWalker">
+
+    <property name="cacheFile" value="target/checkstyle.cache"/>
+
+    <!-- Checks for Javadoc comments.                     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+    <!--<module name="JavadocMethod">
+      <property name="scope" value="public"/>
+      <property name="allowMissingPropertyJavadoc" value="true"/>
+    </module>
+    <module name="JavadocType"/>
+    <module name="JavadocVariable">
+      <property name="scope" value="public"/>
+      <property name="ignoreNamePattern" value="LOG"/>
+    </module>
+    <module name="JavadocStyle"/>-->
+
+
+    <!-- Checks for Naming Conventions.                  -->
+    <!-- See http://checkstyle.sf.net/config_naming.html -->
+    <module name="ConstantName"/>
+    <module name="LocalFinalVariableName"/>
+    <module name="LocalVariableName"/>
+    <module name="MemberName"/>
+    <module name="MethodName"/>
+    <module name="PackageName"/>
+    <module name="ParameterName"/>
+    <module name="StaticVariableName">
+      <property name="format" value="^[A-Z][A-Z0-9_]*$"/>
+    </module>
+    <module name="TypeName"/>
+
+
+    <!-- Checks for Headers                                -->
+    <!-- See http://checkstyle.sf.net/config_header.html   -->
+    <!-- <module name="Header">                            -->
+    <!-- The follow property value demonstrates the ability     -->
+    <!-- to have access to ANT properties. In this case it uses -->
+    <!-- the ${basedir} property to allow Checkstyle to be run  -->
+    <!-- from any directory within a project. See property      -->
+    <!-- expansion,                                             -->
+    <!-- http://checkstyle.sf.net/config.html#properties        -->
+    <!-- <property                                              -->
+    <!--     name="headerFile"                                  -->
+    <!--     value="${basedir}/java.header"/>                   -->
+    <!-- </module> -->
+
+    <!-- Following interprets the header file as regular expressions. -->
+    <!-- <module name="RegexpHeader"/>                                -->
+
+
+    <!-- Checks for imports                              -->
+    <!-- See http://checkstyle.sf.net/config_import.html -->
+    <module name="AvoidStarImport"/>
+    <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
+    <module name="RedundantImport"/>
+    <module name="UnusedImports"/>
+
+
+    <!-- Checks for Size Violations.                    -->
+    <!-- See http://checkstyle.sf.net/config_sizes.html -->
+    <module name="LineLength">
+      <property name="max" value="120"/>
+      <property name="ignorePattern" value="^import"/>
+    </module>
+    <!--<module name="MethodLength"/>-->
+    <!--<module name="ParameterNumber"/>-->
+
+
+    <!-- Checks for whitespace                               -->
+    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+    <module name="EmptyForIteratorPad"/>
+    <module name="GenericWhitespace"/>
+    <module name="MethodParamPad"/>
+    <!--<module name="NoWhitespaceAfter"/>
+    <module name="NoWhitespaceBefore"/>-->
+    <module name="OperatorWrap"/>
+    <module name="ParenPad"/>
+    <module name="TypecastParenPad"/>
+    <module name="WhitespaceAfter"/>
+    <module name="WhitespaceAround"/>
+
+
+    <!-- Modifier Checks                                    -->
+    <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+    <module name="ModifierOrder"/>
+    <module name="RedundantModifier"/>
+
+
+    <!-- Checks for blocks. You know, those {}'s         -->
+    <!-- See http://checkstyle.sf.net/config_blocks.html -->
+    <module name="AvoidNestedBlocks"/>
+    <module name="EmptyBlock">
+      <property name="option" value="text"/>
+    </module>
+    <module name="LeftCurly"/>
+    <module name="NeedBraces"/>
+    <module name="RightCurly"/>
+
+
+    <!-- Checks for common coding problems               -->
+    <!-- See http://checkstyle.sf.net/config_coding.html -->
+    <!--        <module name="AvoidInlineConditionals"/>-->
+    <module name="EmptyStatement"/>
+    <module name="EqualsHashCode"/>
+    <module name="HiddenField">
+      <property name="ignoreSetter" value="true"/>
+      <property name="ignoreConstructorParameter" value="true"/>
+      <property name="tokens" value="VARIABLE_DEF"/>
+    </module>
+    <module name="IllegalInstantiation"/>
+    <module name="InnerAssignment"/>
+    <!--<module name="MagicNumber"/>-->
+    <module name="MissingSwitchDefault"/>
+    <module name="SimplifyBooleanExpression"/>
+    <module name="SimplifyBooleanReturn"/>
+
+    <!-- Checks for class design                         -->
+    <!-- See http://checkstyle.sf.net/config_design.html -->
+    <!--<module name="DesignForExtension"/>-->
+    <module name="FinalClass"/>
+    <module name="HideUtilityClassConstructor"/>
+    <!--<module name="InterfaceIsType"/>-->
+    <module name="VisibilityModifier">
+      <property name="protectedAllowed" value="true"/>
+    </module>
+
+
+    <!-- Miscellaneous other checks.                   -->
+    <!-- See http://checkstyle.sf.net/config_misc.html -->
+    <module name="ArrayTypeStyle"/>
+    <module name="FinalParameters"/>
+    <module name="TodoComment"/>
+    <module name="UpperEll"/>
+
+  </module>
+
+</module>

http://git-wip-us.apache.org/repos/asf/syncope/blob/238bf75f/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml b/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml
new file mode 100644
index 0000000..07961a6
--- /dev/null
+++ b/ide/netbeans/src/main/resources/org/apache/syncope/java-formatter.xml
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+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.
+-->
+<profiles version="12">
+  <profile kind="CodeFormatterProfile" name="Syncope" version="12">
+    <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="49"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+    <setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="120"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+    <setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+    <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="32"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+    <setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
+    <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="48"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="48"/>
+    <setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="32"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+    <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="120"/>
+    <setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="16"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="49"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+    <setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+    <setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+  </profile>
+</profiles>


[22/50] [abbrv] syncope git commit: [SYNCOPE-1061] Better check

Posted by il...@apache.org.
[SYNCOPE-1061] Better check


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

Branch: refs/heads/SYNCOPE-808
Commit: ad8e197b255f78a4147019942abe5dac71b2f46f
Parents: b702803
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Apr 13 15:53:41 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Apr 13 15:53:41 2017 +0200

----------------------------------------------------------------------
 .../syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java  | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/ad8e197b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
index bd295e3..d84bcd7 100644
--- a/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
+++ b/ext/saml2sp/agent/src/main/java/org/apache/syncope/ext/saml2lsp/agent/AbstractSAML2SPServlet.java
@@ -28,6 +28,7 @@ import javax.ws.rs.core.HttpHeaders;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
 import javax.ws.rs.core.UriBuilder;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.syncope.common.lib.SSOConstants;
@@ -79,9 +80,11 @@ public abstract class AbstractSAML2SPServlet extends HttpServlet {
         String strForm = IOUtils.toString(response);
         MultivaluedMap<String, String> params = JAXRSUtils.getStructuredParams(strForm, "&", false, false);
 
-        String samlResponse = URLDecoder.decode(
-                params.getFirst(SSOConstants.SAML_RESPONSE), StandardCharsets.UTF_8.name());
-        LOG.debug("Received SAML Response: {}", samlResponse);
+        String samlResponse = params.getFirst(SSOConstants.SAML_RESPONSE);
+        if (StringUtils.isNotBlank(samlResponse)) {
+            samlResponse = URLDecoder.decode(samlResponse, StandardCharsets.UTF_8.name());
+            LOG.debug("Received SAML Response: {}", samlResponse);
+        }
 
         String relayState = params.getFirst(SSOConstants.RELAY_STATE);
         LOG.debug("Received Relay State: {}", relayState);


[26/50] [abbrv] syncope git commit: Some cleanings

Posted by il...@apache.org.
Some cleanings


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

Branch: refs/heads/SYNCOPE-808
Commit: d76009ca6b9e13dcf95b920cf568dda770d92b81
Parents: ec44748
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 14:12:30 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 14:13:00 2017 +0200

----------------------------------------------------------------------
 .../syncope/core/logic/AbstractAnyLogic.java    |  3 +-
 .../syncope/core/logic/AnyObjectLogic.java      | 14 ++--
 .../apache/syncope/core/logic/GroupLogic.java   | 22 +++---
 .../apache/syncope/core/logic/UserLogic.java    |  8 +-
 .../persistence/jpa/dao/AbstractAnyDAO.java     | 71 +++++++++++------
 .../persistence/jpa/dao/JPAAnyObjectDAO.java    | 28 +++++--
 .../core/persistence/jpa/dao/JPAConfDAO.java    | 16 +++-
 .../jpa/dao/JPAExternalResourceDAO.java         | 81 ++++++++++++++++----
 .../core/persistence/jpa/dao/JPAGroupDAO.java   | 39 +++++++---
 .../persistence/jpa/dao/JPAPlainSchemaDAO.java  | 13 +++-
 .../core/persistence/jpa/dao/JPARoleDAO.java    | 16 +++-
 .../core/persistence/jpa/dao/JPAUserDAO.java    | 36 ++++++---
 .../persistence/jpa/dao/JPAVirSchemaDAO.java    | 14 +++-
 .../src/main/resources/domains/MasterDomain.xml |  2 +-
 .../src/test/resources/domains/TwoDomain.xml    |  4 +-
 .../java/data/AbstractAnyDataBinder.java        | 54 +++++--------
 .../src/main/resources/restCXFContext.xml       |  5 +-
 .../src/main/resources/jboss/restCXFContext.xml |  5 +-
 18 files changed, 281 insertions(+), 150 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
index f8467cd..9d57524 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AbstractAnyLogic.java
@@ -51,8 +51,7 @@ import org.apache.syncope.core.provisioning.api.LogicActions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.support.AbstractBeanDefinition;
 
-public abstract class AbstractAnyLogic<TO extends AnyTO, P extends AnyPatch>
-        extends AbstractResourceAssociator<TO> {
+public abstract class AbstractAnyLogic<TO extends AnyTO, P extends AnyPatch> extends AbstractResourceAssociator<TO> {
 
     @Autowired
     private RealmDAO realmDAO;

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
index 4a24621..efd263d 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyObjectLogic.java
@@ -31,23 +31,22 @@ import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.SyncopeClientException;
 import org.apache.syncope.common.lib.patch.AnyObjectPatch;
 import org.apache.syncope.common.lib.patch.StringPatchItem;
-import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.types.AnyEntitlement;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.PatchOperation;
-import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
+import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
-import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
-import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.entity.AnyType;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
 import org.apache.syncope.core.provisioning.api.LogicActions;
+import org.apache.syncope.core.provisioning.api.data.AnyObjectDataBinder;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
@@ -60,9 +59,6 @@ import org.springframework.transaction.annotation.Transactional;
 public class AnyObjectLogic extends AbstractAnyLogic<AnyObjectTO, AnyObjectPatch> {
 
     @Autowired
-    protected AnyObjectDAO anyObjectDAO;
-
-    @Autowired
     protected AnySearchDAO searchDAO;
 
     @Autowired

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
index 157a7d6..a460d0c 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/GroupLogic.java
@@ -37,8 +37,8 @@ import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.patch.GroupPatch;
 import org.apache.syncope.common.lib.patch.StringPatchItem;
 import org.apache.syncope.common.lib.to.ExecTO;
-import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.PropagationStatus;
 import org.apache.syncope.common.lib.to.ProvisioningResult;
 import org.apache.syncope.common.lib.to.TypeExtensionTO;
 import org.apache.syncope.common.lib.types.AnyTypeKind;
@@ -47,28 +47,28 @@ import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.JobType;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
-import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
-import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.ConfDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.TaskDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
+import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.task.SchedTask;
+import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
 import org.apache.syncope.core.provisioning.api.LogicActions;
+import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
 import org.apache.syncope.core.provisioning.api.data.TaskDataBinder;
 import org.apache.syncope.core.provisioning.api.job.JobManager;
 import org.apache.syncope.core.provisioning.api.job.JobNamer;
+import org.apache.syncope.core.provisioning.api.utils.RealmUtils;
 import org.apache.syncope.core.provisioning.java.job.GroupMemberProvisionTaskJobDelegate;
 import org.apache.syncope.core.provisioning.java.job.TaskJob;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
+import org.apache.syncope.core.spring.security.DelegatedAdministrationException;
 import org.quartz.JobDataMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.quartz.SchedulerFactoryBean;

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
index 24619f0..22e8ccf 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/UserLogic.java
@@ -43,19 +43,19 @@ import org.apache.syncope.common.lib.types.AnyTypeKind;
 import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.StandardEntitlement;
-import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.NotFoundException;
 import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
 import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
 import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.user.User;
+import org.apache.syncope.core.provisioning.api.LogicActions;
 import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
 import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
-import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.provisioning.api.LogicActions;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java
index 0eb38ac..25bfe50 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/AbstractAnyDAO.java
@@ -63,26 +63,50 @@ import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.user.UMembership;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.entity.AbstractPlainAttrValue;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> implements AnyDAO<A> {
 
-    @Autowired
-    protected PlainSchemaDAO plainSchemaDAO;
+    private PlainSchemaDAO plainSchemaDAO;
 
-    @Autowired
-    protected DerSchemaDAO derSchemaDAO;
+    private DerSchemaDAO derSchemaDAO;
 
-    @Autowired
-    protected AnySearchDAO searchDAO;
+    private AnySearchDAO searchDAO;
 
-    protected AnyUtils anyUtils;
+    private AnyUtils anyUtils;
+
+    private PlainSchemaDAO plainSchemaDAO() {
+        synchronized (this) {
+            if (plainSchemaDAO == null) {
+                plainSchemaDAO = ApplicationContextProvider.getApplicationContext().getBean(PlainSchemaDAO.class);
+            }
+        }
+        return plainSchemaDAO;
+    }
+
+    private DerSchemaDAO derSchemaDAO() {
+        synchronized (this) {
+            if (derSchemaDAO == null) {
+                derSchemaDAO = ApplicationContextProvider.getApplicationContext().getBean(DerSchemaDAO.class);
+            }
+        }
+        return derSchemaDAO;
+    }
+
+    protected AnySearchDAO searchDAO() {
+        synchronized (this) {
+            if (searchDAO == null) {
+                searchDAO = ApplicationContextProvider.getApplicationContext().getBean(AnySearchDAO.class);
+            }
+        }
+        return searchDAO;
+    }
 
     protected abstract AnyUtils init();
 
-    protected AnyUtils getAnyUtils() {
+    protected AnyUtils anyUtils() {
         synchronized (this) {
             if (anyUtils == null) {
                 anyUtils = init();
@@ -115,13 +139,13 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
     @Override
     @SuppressWarnings("unchecked")
     public A find(final String key) {
-        return (A) entityManager().find(getAnyUtils().anyClass(), key);
+        return (A) entityManager().find(anyUtils().anyClass(), key);
     }
 
     @SuppressWarnings("unchecked")
     @Override
     public A findByWorkflowId(final String workflowId) {
-        Query query = entityManager().createQuery("SELECT e FROM " + getAnyUtils().anyClass().getSimpleName()
+        Query query = entityManager().createQuery("SELECT e FROM " + anyUtils().anyClass().getSimpleName()
                 + " e WHERE e.workflowId = :workflowId", User.class);
         query.setParameter("workflowId", workflowId);
 
@@ -148,15 +172,15 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
     @Override
     @SuppressWarnings("unchecked")
     public List<A> findByAttrValue(final String schemaKey, final PlainAttrValue attrValue) {
-        PlainSchema schema = plainSchemaDAO.find(schemaKey);
+        PlainSchema schema = plainSchemaDAO().find(schemaKey);
         if (schema == null) {
             LOG.error("Invalid schema name '{}'", schemaKey);
             return Collections.<A>emptyList();
         }
 
         String entityName = schema.isUniqueConstraint()
-                ? getAnyUtils().plainAttrUniqueValueClass().getName()
-                : getAnyUtils().plainAttrValueClass().getName();
+                ? anyUtils().plainAttrUniqueValueClass().getName()
+                : anyUtils().plainAttrValueClass().getName();
         Query query = findByAttrValueQuery(entityName);
         query.setParameter("schemaKey", schemaKey);
         query.setParameter("stringValue", attrValue.getStringValue());
@@ -184,7 +208,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
 
     @Override
     public A findByAttrUniqueValue(final String schemaKey, final PlainAttrValue attrUniqueValue) {
-        PlainSchema schema = plainSchemaDAO.find(schemaKey);
+        PlainSchema schema = plainSchemaDAO().find(schemaKey);
         if (schema == null) {
             LOG.error("Invalid schema name '{}'", schemaKey);
             return null;
@@ -296,7 +320,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
             if (!used.contains(identifiers.get(i))) {
 
                 // verify schema existence and get schema type
-                PlainSchema schema = plainSchemaDAO.find(identifiers.get(i));
+                PlainSchema schema = plainSchemaDAO().find(identifiers.get(i));
                 if (schema == null) {
                     LOG.error("Invalid schema id '{}'", identifiers.get(i));
                     throw new IllegalArgumentException("Invalid schema id " + identifiers.get(i));
@@ -351,7 +375,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
 
     @Override
     public List<A> findByDerAttrValue(final String schemaKey, final String value) {
-        DerSchema schema = derSchemaDAO.find(schemaKey);
+        DerSchema schema = derSchemaDAO().find(schemaKey);
         if (schema == null) {
             LOG.error("Invalid schema name '{}'", schemaKey);
             return Collections.<A>emptyList();
@@ -368,8 +392,8 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
             }
 
             querystring.append("SELECT a.owner_id ").
-                    append("FROM ").append(getAnyUtils().plainAttrClass().getSimpleName().substring(3)).append(" a, ").
-                    append(getAnyUtils().plainAttrValueClass().getSimpleName().substring(3)).append(" v, ").
+                    append("FROM ").append(anyUtils().plainAttrClass().getSimpleName().substring(3)).append(" a, ").
+                    append(anyUtils().plainAttrValueClass().getSimpleName().substring(3)).append(" v, ").
                     append(PlainSchema.class.getSimpleName()).append(" s ").
                     append("WHERE ").append(clause);
 
@@ -394,8 +418,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
     @SuppressWarnings("unchecked")
     @Override
     public List<A> findByResource(final ExternalResource resource) {
-        Query query = entityManager().createQuery(
-                "SELECT e FROM " + getAnyUtils().anyClass().getSimpleName() + " e "
+        Query query = entityManager().createQuery("SELECT e FROM " + anyUtils().anyClass().getSimpleName() + " e "
                 + "WHERE :resource MEMBER OF e.resources");
         query.setParameter("resource", resource);
 
@@ -417,8 +440,8 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
     public List<A> findAll(final Set<String> adminRealms,
             final int page, final int itemsPerPage, final List<OrderByClause> orderBy) {
 
-        return searchDAO.search(adminRealms, getAllMatchingCond(), page, itemsPerPage, orderBy,
-                getAnyUtils().getAnyTypeKind());
+        return searchDAO().search(adminRealms, getAllMatchingCond(), page, itemsPerPage, orderBy,
+                anyUtils().getAnyTypeKind());
     }
 
     @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)
@@ -481,7 +504,7 @@ public abstract class AbstractAnyDAO<A extends Any<?>> extends AbstractDAO<A> im
 
     @Override
     public final int count(final Set<String> adminRealms) {
-        return searchDAO.count(adminRealms, getAllMatchingCond(), getAnyUtils().getAnyTypeKind());
+        return searchDAO().count(adminRealms, getAllMatchingCond(), anyUtils().getAnyTypeKind());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
index 2eae708..164f9a3 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnyObjectDAO.java
@@ -58,7 +58,7 @@ import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAARelationship
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAnyObject;
 import org.apache.syncope.core.persistence.jpa.entity.group.JPAGroup;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAURelationship;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -66,12 +66,28 @@ import org.springframework.transaction.annotation.Transactional;
 @Repository
 public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObjectDAO {
 
-    @Autowired
     private UserDAO userDAO;
 
-    @Autowired
     private GroupDAO groupDAO;
 
+    private UserDAO userDAO() {
+        synchronized (this) {
+            if (userDAO == null) {
+                userDAO = ApplicationContextProvider.getApplicationContext().getBean(UserDAO.class);
+            }
+        }
+        return userDAO;
+    }
+
+    private GroupDAO groupDAO() {
+        synchronized (this) {
+            if (groupDAO == null) {
+                groupDAO = ApplicationContextProvider.getApplicationContext().getBean(GroupDAO.class);
+            }
+        }
+        return groupDAO;
+    }
+
     @Override
     public Map<AnyType, Integer> countByType() {
         Query query = entityManager().createQuery(
@@ -182,7 +198,7 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj
     public AnyObject save(final AnyObject anyObject) {
         AnyObject merged = super.save(anyObject);
 
-        groupDAO.refreshDynMemberships(merged);
+        groupDAO().refreshDynMemberships(merged);
 
         return merged;
     }
@@ -201,7 +217,7 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj
         }
         for (URelationship relationship : findURelationships(any)) {
             relationship.getLeftEnd().getRelationships().remove(relationship);
-            userDAO.save(relationship.getLeftEnd());
+            userDAO().save(relationship.getLeftEnd());
 
             entityManager().remove(relationship);
         }
@@ -227,7 +243,7 @@ public class JPAAnyObjectDAO extends AbstractAnyDAO<AnyObject> implements AnyObj
                     ? (String) ((Object[]) key)[0]
                     : ((String) key);
 
-            Group group = groupDAO.find(actualKey);
+            Group group = groupDAO().find(actualKey);
             if (group == null) {
                 LOG.error("Could not find group with id {}, even though returned by the native query", actualKey);
             } else if (!result.contains(group)) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
index 2366016..3e4ea2c 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAConfDAO.java
@@ -29,7 +29,7 @@ import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttr;
 import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrUniqueValue;
 import org.apache.syncope.core.persistence.jpa.entity.conf.JPACPlainAttrValue;
 import org.apache.syncope.core.persistence.jpa.entity.conf.JPAConf;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -38,9 +38,17 @@ public class JPAConfDAO extends AbstractDAO<Conf> implements ConfDAO {
 
     private static final String KEY = "cd64d66f-6fff-4008-b966-a06b1cc1436d";
 
-    @Autowired
     private PlainSchemaDAO schemaDAO;
 
+    private PlainSchemaDAO schemaDAO() {
+        synchronized (this) {
+            if (schemaDAO == null) {
+                schemaDAO = ApplicationContextProvider.getApplicationContext().getBean(PlainSchemaDAO.class);
+            }
+        }
+        return schemaDAO;
+    }
+
     @Override
     public Conf get() {
         Conf instance = entityManager().find(JPAConf.class, KEY);
@@ -65,10 +73,10 @@ public class JPAConfDAO extends AbstractDAO<Conf> implements ConfDAO {
     public CPlainAttr find(final String key, final String defaultValue) {
         CPlainAttr result = find(key);
         if (result == null) {
-            PlainSchema schema = schemaDAO.find(key);
+            PlainSchema schema = schemaDAO().find(key);
             if (schema != null) {
                 JPACPlainAttr newAttr = new JPACPlainAttr();
-                newAttr.setSchema(schemaDAO.find(key));
+                newAttr.setSchema(schema);
 
                 PlainAttrValue attrValue;
                 if (newAttr.getSchema().isUniqueConstraint()) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
index 0658179..222e645 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAExternalResourceDAO.java
@@ -49,6 +49,7 @@ import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResour
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision;
 import org.apache.syncope.core.provisioning.api.ConnectorRegistry;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
@@ -57,25 +58,73 @@ import org.springframework.transaction.annotation.Transactional;
 public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implements ExternalResourceDAO {
 
     @Autowired
+    private ConnectorRegistry connRegistry;
+
     private TaskDAO taskDAO;
 
-    @Autowired
     private AnyObjectDAO anyObjectDAO;
 
-    @Autowired
     private UserDAO userDAO;
 
-    @Autowired
     private GroupDAO groupDAO;
 
-    @Autowired
     private PolicyDAO policyDAO;
 
-    @Autowired
     private VirSchemaDAO virSchemaDAO;
 
-    @Autowired
-    private ConnectorRegistry connRegistry;
+    private TaskDAO taskDAO() {
+        synchronized (this) {
+            if (taskDAO == null) {
+                taskDAO = ApplicationContextProvider.getApplicationContext().getBean(TaskDAO.class);
+            }
+        }
+        return taskDAO;
+    }
+
+    private AnyObjectDAO anyObjectDAO() {
+        synchronized (this) {
+            if (anyObjectDAO == null) {
+                anyObjectDAO = ApplicationContextProvider.getApplicationContext().getBean(AnyObjectDAO.class);
+            }
+        }
+        return anyObjectDAO;
+    }
+
+    private UserDAO userDAO() {
+        synchronized (this) {
+            if (userDAO == null) {
+                userDAO = ApplicationContextProvider.getApplicationContext().getBean(UserDAO.class);
+            }
+        }
+        return userDAO;
+    }
+
+    private GroupDAO groupDAO() {
+        synchronized (this) {
+            if (groupDAO == null) {
+                groupDAO = ApplicationContextProvider.getApplicationContext().getBean(GroupDAO.class);
+            }
+        }
+        return groupDAO;
+    }
+
+    private PolicyDAO policyDAO() {
+        synchronized (this) {
+            if (policyDAO == null) {
+                policyDAO = ApplicationContextProvider.getApplicationContext().getBean(PolicyDAO.class);
+            }
+        }
+        return policyDAO;
+    }
+
+    private VirSchemaDAO virSchemaDAO() {
+        synchronized (this) {
+            if (virSchemaDAO == null) {
+                virSchemaDAO = ApplicationContextProvider.getApplicationContext().getBean(VirSchemaDAO.class);
+            }
+        }
+        return virSchemaDAO;
+    }
 
     @Override
     public int count() {
@@ -191,20 +240,20 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem
             return;
         }
 
-        taskDAO.deleteAll(resource, TaskType.PROPAGATION);
-        taskDAO.deleteAll(resource, TaskType.PULL);
-        taskDAO.deleteAll(resource, TaskType.PUSH);
+        taskDAO().deleteAll(resource, TaskType.PROPAGATION);
+        taskDAO().deleteAll(resource, TaskType.PULL);
+        taskDAO().deleteAll(resource, TaskType.PUSH);
 
-        for (AnyObject anyObject : anyObjectDAO.findByResource(resource)) {
+        for (AnyObject anyObject : anyObjectDAO().findByResource(resource)) {
             anyObject.getResources().remove(resource);
         }
-        for (User user : userDAO.findByResource(resource)) {
+        for (User user : userDAO().findByResource(resource)) {
             user.getResources().remove(resource);
         }
-        for (Group group : groupDAO.findByResource(resource)) {
+        for (Group group : groupDAO().findByResource(resource)) {
             group.getResources().remove(resource);
         }
-        for (AccountPolicy policy : policyDAO.findByResource(resource)) {
+        for (AccountPolicy policy : policyDAO().findByResource(resource)) {
             policy.getResources().remove(resource);
         }
 
@@ -216,8 +265,8 @@ public class JPAExternalResourceDAO extends AbstractDAO<ExternalResource> implem
             provision.setMapping(null);
             provision.setResource(null);
 
-            for (VirSchema schema : virSchemaDAO.findByProvision(provision)) {
-                virSchemaDAO.delete(schema.getKey());
+            for (VirSchema schema : virSchemaDAO().findByProvision(provision)) {
+                virSchemaDAO().delete(schema.getKey());
             }
         }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
index 0bcdee2..15a9d3f 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAGroupDAO.java
@@ -58,6 +58,7 @@ import org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory;
 import org.apache.syncope.core.persistence.jpa.entity.anyobject.JPAAMembership;
 import org.apache.syncope.core.persistence.jpa.entity.group.JPATypeExtension;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUMembership;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
@@ -66,13 +67,29 @@ import org.springframework.transaction.annotation.Transactional;
 public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
 
     @Autowired
+    private PlainAttrDAO plainAttrDAO;
+
     private AnyObjectDAO anyObjectDAO;
 
-    @Autowired
     private UserDAO userDAO;
 
-    @Autowired
-    private PlainAttrDAO plainAttrDAO;
+    private UserDAO userDAO() {
+        synchronized (this) {
+            if (userDAO == null) {
+                userDAO = ApplicationContextProvider.getApplicationContext().getBean(UserDAO.class);
+            }
+        }
+        return userDAO;
+    }
+
+    private AnyObjectDAO anyObjectDAO() {
+        synchronized (this) {
+            if (anyObjectDAO == null) {
+                anyObjectDAO = ApplicationContextProvider.getApplicationContext().getBean(AnyObjectDAO.class);
+            }
+        }
+        return anyObjectDAO;
+    }
 
     @Override
     protected AnyUtils init() {
@@ -152,14 +169,14 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
     @Transactional(readOnly = true)
     @Override
     public List<Group> findOwnedByUser(final String userKey) {
-        User owner = userDAO.find(userKey);
+        User owner = userDAO().find(userKey);
         if (owner == null) {
             return Collections.<Group>emptyList();
         }
 
         StringBuilder queryString = new StringBuilder("SELECT e FROM ").append(JPAGroup.class.getSimpleName()).
                 append(" e WHERE e.userOwner=:owner ");
-        for (String groupKey : userDAO.findAllGroupKeys(owner)) {
+        for (String groupKey : userDAO().findAllGroupKeys(owner)) {
             queryString.append("OR e.groupOwner.id='").append(groupKey).append("' ");
         }
 
@@ -218,7 +235,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
 
         // refresh dynaminc memberships
         if (merged.getUDynMembership() != null) {
-            List<User> matching = searchDAO.search(
+            List<User> matching = searchDAO().search(
                     buildDynMembershipCond(merged.getUDynMembership().getFIQLCond(), merged.getRealm()),
                     AnyTypeKind.USER);
 
@@ -228,7 +245,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
             }
         }
         for (ADynGroupMembership memb : merged.getADynMemberships()) {
-            List<AnyObject> matching = searchDAO.search(
+            List<AnyObject> matching = searchDAO().search(
                     buildDynMembershipCond(memb.getFIQLCond(), merged.getRealm()),
                     AnyTypeKind.ANY_OBJECT);
 
@@ -254,7 +271,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
                 plainAttrDAO.delete(attr);
             }
 
-            anyObjectDAO.save(leftEnd);
+            anyObjectDAO().save(leftEnd);
         }
         for (UMembership membership : findUMemberships(group)) {
             User leftEnd = membership.getLeftEnd();
@@ -267,7 +284,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
                 plainAttrDAO.delete(attr);
             }
 
-            userDAO.save(leftEnd);
+            userDAO().save(leftEnd);
         }
 
         entityManager().remove(group);
@@ -288,7 +305,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
     public void refreshDynMemberships(final AnyObject anyObject) {
         for (Group group : findAll()) {
             for (ADynGroupMembership memb : group.getADynMemberships()) {
-                if (searchDAO.matches(
+                if (searchDAO().matches(
                         anyObject,
                         buildDynMembershipCond(memb.getFIQLCond(), group.getRealm()))) {
 
@@ -305,7 +322,7 @@ public class JPAGroupDAO extends AbstractAnyDAO<Group> implements GroupDAO {
     public void refreshDynMemberships(final User user) {
         for (Group group : findAll()) {
             if (group.getUDynMembership() != null) {
-                if (searchDAO.matches(
+                if (searchDAO().matches(
                         user,
                         buildDynMembershipCond(group.getUDynMembership().getFIQLCond(), group.getRealm()))) {
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
index 2e3bef5..dfc3840 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAPlainSchemaDAO.java
@@ -32,6 +32,7 @@ import org.apache.syncope.core.persistence.api.entity.PlainAttr;
 import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.jpa.entity.JPAAnyUtilsFactory;
 import org.apache.syncope.core.persistence.jpa.entity.JPAPlainSchema;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Repository;
 
@@ -41,9 +42,17 @@ public class JPAPlainSchemaDAO extends AbstractDAO<PlainSchema> implements Plain
     @Autowired
     private PlainAttrDAO plainAttrDAO;
 
-    @Autowired
     private ExternalResourceDAO resourceDAO;
 
+    private ExternalResourceDAO resourceDAO() {
+        synchronized (this) {
+            if (resourceDAO == null) {
+                resourceDAO = ApplicationContextProvider.getApplicationContext().getBean(ExternalResourceDAO.class);
+            }
+        }
+        return resourceDAO;
+    }
+
     @Override
     public PlainSchema find(final String key) {
         return entityManager().find(JPAPlainSchema.class, key);
@@ -101,7 +110,7 @@ public class JPAPlainSchemaDAO extends AbstractDAO<PlainSchema> implements Plain
                 plainAttrDAO.delete(attr.getKey(), anyUtils.plainAttrClass());
             }
 
-            resourceDAO.deleteMapping(key);
+            resourceDAO().deleteMapping(key);
         }
 
         if (schema.getAnyTypeClass() != null) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
index b636fc6..dbf4f66 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPARoleDAO.java
@@ -30,16 +30,24 @@ import org.apache.syncope.core.persistence.api.entity.Role;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.persistence.jpa.entity.JPARole;
 import org.apache.syncope.core.persistence.jpa.entity.user.JPAUser;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.stereotype.Repository;
 import org.springframework.transaction.annotation.Transactional;
 
 @Repository
 public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO {
 
-    @Autowired
     private AnySearchDAO searchDAO;
 
+    private AnySearchDAO searchDAO() {
+        synchronized (this) {
+            if (searchDAO == null) {
+                searchDAO = ApplicationContextProvider.getApplicationContext().getBean(AnySearchDAO.class);
+            }
+        }
+        return searchDAO;
+    }
+
     @Override
     public int count() {
         Query query = entityManager().createQuery(
@@ -71,7 +79,7 @@ public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO {
     public Role save(final Role role) {
         // refresh dynaminc memberships
         if (role.getDynMembership() != null) {
-            List<User> matchingUsers = searchDAO.search(
+            List<User> matchingUsers = searchDAO().search(
                     SearchCondConverter.convert(role.getDynMembership().getFIQLCond()), AnyTypeKind.USER);
 
             role.getDynMembership().getMembers().clear();
@@ -111,7 +119,7 @@ public class JPARoleDAO extends AbstractDAO<Role> implements RoleDAO {
     public void refreshDynMemberships(final User user) {
         for (Role role : findAll()) {
             if (role.getDynMembership() != null) {
-                if (searchDAO.matches(user, SearchCondConverter.convert(role.getDynMembership().getFIQLCond()))) {
+                if (searchDAO().matches(user, SearchCondConverter.convert(role.getDynMembership().getFIQLCond()))) {
                     role.getDynMembership().add(user);
                 } else {
                     role.getDynMembership().getMembers().remove(user);

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
index 3580136..3dff783 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAUserDAO.java
@@ -89,12 +89,6 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
             Pattern.compile("^" + SyncopeConstants.NAME_PATTERN, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
 
     @Autowired
-    private RealmDAO realmDAO;
-
-    @Autowired
-    private GroupDAO groupDAO;
-
-    @Autowired
     private RoleDAO roleDAO;
 
     @Autowired
@@ -109,6 +103,28 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
     @Resource(name = "anonymousUser")
     private String anonymousUser;
 
+    private RealmDAO realmDAO;
+
+    private GroupDAO groupDAO;
+
+    private RealmDAO realmDAO() {
+        synchronized (this) {
+            if (realmDAO == null) {
+                realmDAO = ApplicationContextProvider.getApplicationContext().getBean(RealmDAO.class);
+            }
+        }
+        return realmDAO;
+    }
+
+    private GroupDAO groupDAO() {
+        synchronized (this) {
+            if (groupDAO == null) {
+                groupDAO = ApplicationContextProvider.getApplicationContext().getBean(GroupDAO.class);
+            }
+        }
+        return groupDAO;
+    }
+
     @Override
     protected AnyUtils init() {
         return new JPAAnyUtilsFactory().getInstance(AnyTypeKind.USER);
@@ -244,7 +260,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
         }
 
         // add realm policies
-        for (Realm realm : realmDAO.findAncestors(user.getRealm())) {
+        for (Realm realm : realmDAO().findAncestors(user.getRealm())) {
             policy = realm.getPasswordPolicy();
             if (policy != null) {
                 policies.add(policy);
@@ -266,7 +282,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
         }
 
         // add realm policies
-        for (Realm realm : realmDAO.findAncestors(user.getRealm())) {
+        for (Realm realm : realmDAO().findAncestors(user.getRealm())) {
             AccountPolicy policy = realm.getAccountPolicy();
             if (policy != null) {
                 policies.add(policy);
@@ -415,7 +431,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
         }
 
         roleDAO.refreshDynMemberships(merged);
-        groupDAO.refreshDynMemberships(merged);
+        groupDAO().refreshDynMemberships(merged);
 
         return merged;
     }
@@ -483,7 +499,7 @@ public class JPAUserDAO extends AbstractAnyDAO<User> implements UserDAO {
                     ? (String) ((Object[]) key)[0]
                     : ((String) key);
 
-            Group group = groupDAO.find(actualKey);
+            Group group = groupDAO().find(actualKey);
             if (group == null) {
                 LOG.error("Could not find group with id {}, even though returned by the native query", actualKey);
             } else if (!result.contains(group)) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
index 4636f7d..4dfc8db 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAVirSchemaDAO.java
@@ -38,15 +38,23 @@ import org.apache.syncope.core.persistence.jpa.entity.policy.JPAPullPolicy;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAExternalResource;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMapping;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAProvision;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.spring.ApplicationContextProvider;
 import org.springframework.stereotype.Repository;
 
 @Repository
 public class JPAVirSchemaDAO extends AbstractDAO<VirSchema> implements VirSchemaDAO {
 
-    @Autowired
     private ExternalResourceDAO resourceDAO;
 
+    private ExternalResourceDAO resourceDAO() {
+        synchronized (this) {
+            if (resourceDAO == null) {
+                resourceDAO = ApplicationContextProvider.getApplicationContext().getBean(ExternalResourceDAO.class);
+            }
+        }
+        return resourceDAO;
+    }
+
     @Override
     public VirSchema find(final String key) {
         return entityManager().find(JPAVirSchema.class, key);
@@ -118,7 +126,7 @@ public class JPAVirSchemaDAO extends AbstractDAO<VirSchema> implements VirSchema
             return;
         }
 
-        resourceDAO.deleteMapping(key);
+        resourceDAO().deleteMapping(key);
 
         if (schema.getAnyTypeClass() != null) {
             schema.getAnyTypeClass().getVirSchemas().remove(schema);

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml b/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml
index f949e32..b5363e4 100644
--- a/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml
+++ b/core/persistence-jpa/src/main/resources/domains/MasterDomain.xml
@@ -43,7 +43,7 @@ under the License.
   <!-- Use JNDI datasource as default but, when not available, revert to
   local datasource, with different properties for execution and testing. 
   In any case, get all JDBC connections with a determined isolation level. -->
-  <bean id="MasterDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
+  <bean id="MasterDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" primary="true">
     <property name="jndiName" value="java:comp/env/jdbc/syncopeMasterDataSource"/>
     <property name="defaultObject" ref="localMasterDataSource"/>
   </bean>

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml b/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml
index 506c068..46e1c79 100644
--- a/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml
+++ b/core/persistence-jpa/src/test/resources/domains/TwoDomain.xml
@@ -43,7 +43,7 @@ under the License.
   <!-- Use JNDI datasource as default but, when not available, revert to
   local datasource, with different properties for execution and testing. 
   In any case, get all JDBC connections with a determined isolation level. -->
-  <bean id="TwoDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
+  <bean id="TwoDataSource" class="org.springframework.jndi.JndiObjectFactoryBean" primary="true">
     <property name="jndiName" value="java:comp/env/jdbc/syncopeTwoDataSource"/>
     <property name="defaultObject" ref="localTwoDataSource"/>
   </bean>
@@ -122,4 +122,4 @@ under the License.
   
   <tx:annotation-driven transaction-manager="TwoTransactionManager"/>
 
-</beans>
\ No newline at end of file
+</beans>

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
index 0bb5e25..160c702 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/AbstractAnyDataBinder.java
@@ -40,57 +40,54 @@ import org.apache.syncope.common.lib.types.ClientExceptionType;
 import org.apache.syncope.common.lib.types.PatchOperation;
 import org.apache.syncope.common.lib.types.ResourceOperation;
 import org.apache.syncope.core.persistence.api.attrvalue.validation.InvalidPlainAttrValueException;
-import org.apache.syncope.core.persistence.api.dao.DerSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.DerSchema;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.PlainAttr;
-import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
-import org.apache.syncope.core.persistence.api.entity.PlainSchema;
-import org.apache.syncope.core.persistence.api.entity.group.Group;
-import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.persistence.api.dao.AllowedSchemas;
-import org.apache.syncope.core.provisioning.java.utils.ConnObjectUtils;
-import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
-import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
 import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
+import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
 import org.apache.syncope.core.persistence.api.dao.NotFoundException;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
 import org.apache.syncope.core.persistence.api.dao.RelationshipTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
 import org.apache.syncope.core.persistence.api.entity.Any;
 import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
 import org.apache.syncope.core.persistence.api.entity.AnyUtils;
 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.DerSchema;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
 import org.apache.syncope.core.persistence.api.entity.GroupablePlainAttr;
+import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
 import org.apache.syncope.core.persistence.api.entity.Membership;
+import org.apache.syncope.core.persistence.api.entity.PlainAttr;
+import org.apache.syncope.core.persistence.api.entity.PlainAttrValue;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
 import org.apache.syncope.core.persistence.api.entity.Realm;
 import org.apache.syncope.core.persistence.api.entity.Relationship;
 import org.apache.syncope.core.persistence.api.entity.VirSchema;
 import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
+import org.apache.syncope.core.persistence.api.entity.group.Group;
 import org.apache.syncope.core.persistence.api.entity.resource.ExternalResource;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.api.entity.resource.Provision;
 import org.apache.syncope.core.persistence.api.entity.user.User;
 import org.apache.syncope.core.provisioning.api.DerAttrHandler;
+import org.apache.syncope.core.provisioning.api.IntAttrName;
 import org.apache.syncope.core.provisioning.api.MappingManager;
+import org.apache.syncope.core.provisioning.api.PropagationByResource;
 import org.apache.syncope.core.provisioning.api.VirAttrHandler;
+import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder;
+import org.apache.syncope.core.provisioning.api.utils.EntityUtils;
+import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
+import org.apache.syncope.core.provisioning.java.jexl.JexlUtils;
+import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.apache.syncope.core.persistence.api.entity.GroupableRelatable;
-import org.apache.syncope.core.provisioning.java.IntAttrNameParser;
-import org.apache.syncope.core.provisioning.api.IntAttrName;
-import org.apache.syncope.core.provisioning.api.data.SchemaDataBinder;
-import org.apache.syncope.core.provisioning.java.utils.MappingUtils;
 
 abstract class AbstractAnyDataBinder {
 
@@ -118,12 +115,6 @@ abstract class AbstractAnyDataBinder {
     protected PlainSchemaDAO plainSchemaDAO;
 
     @Autowired
-    protected DerSchemaDAO derSchemaDAO;
-
-    @Autowired
-    protected VirSchemaDAO virSchemaDAO;
-
-    @Autowired
     protected PlainAttrDAO plainAttrDAO;
 
     @Autowired
@@ -154,9 +145,6 @@ abstract class AbstractAnyDataBinder {
     protected VirAttrHandler virAttrHandler;
 
     @Autowired
-    protected ConnObjectUtils connObjectUtils;
-
-    @Autowired
     protected MappingManager mappingManager;
 
     @Autowired

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/core/rest-cxf/src/main/resources/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/resources/restCXFContext.xml b/core/rest-cxf/src/main/resources/restCXFContext.xml
index c918942..4701652 100644
--- a/core/rest-cxf/src/main/resources/restCXFContext.xml
+++ b/core/rest-cxf/src/main/resources/restCXFContext.xml
@@ -21,15 +21,12 @@ under the License.
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jaxrs="http://cxf.apache.org/jaxrs"
        xmlns:context="http://www.springframework.org/schema/context"
-       xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://cxf.apache.org/jaxrs
                            http://cxf.apache.org/schemas/jaxrs.xsd
                            http://www.springframework.org/schema/context
-                           http://www.springframework.org/schema/context/spring-context.xsd
-                           http://www.springframework.org/schema/aop 
-                           http://www.springframework.org/schema/aop/spring-aop.xsd">
+                           http://www.springframework.org/schema/context/spring-context.xsd">
 
   <import resource="classpath:META-INF/cxf/cxf.xml"/>
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/d76009ca/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
index f64da85..dd6c88c 100644
--- a/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
+++ b/fit/core-reference/src/main/resources/jboss/restCXFContext.xml
@@ -21,15 +21,12 @@ under the License.
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:jaxrs="http://cxf.apache.org/jaxrs"
        xmlns:context="http://www.springframework.org/schema/context"
-       xmlns:aop="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
                            http://www.springframework.org/schema/beans/spring-beans.xsd
                            http://cxf.apache.org/jaxrs
                            http://cxf.apache.org/schemas/jaxrs.xsd
                            http://www.springframework.org/schema/context
-                           http://www.springframework.org/schema/context/spring-context.xsd
-                           http://www.springframework.org/schema/aop 
-                           http://www.springframework.org/schema/aop/spring-aop.xsd">
+                           http://www.springframework.org/schema/context/spring-context.xsd">
 
   <import resource="classpath:META-INF/cxf/cxf.xml"/>
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>


[24/50] [abbrv] syncope git commit: removed enduser hacking test

Posted by il...@apache.org.
removed enduser hacking test


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

Branch: refs/heads/SYNCOPE-808
Commit: 9b0331e35eb8838208235f00df4a2e627a5ce668
Parents: 72d9c1f
Author: Andrea Patricelli <an...@apache.org>
Authored: Thu Apr 13 17:30:36 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Thu Apr 13 17:30:36 2017 +0200

----------------------------------------------------------------------
 .../META-INF/resources/app/js/controllers/UserController.js         | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/9b0331e3/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index e741524..e2c0540 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -399,7 +399,6 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
 
     $scope.saveUser = function (user) {
       var wrappedUser = UserUtil.getWrappedUser(user);
-      wrappedUser.plainAttrs.push({"schema":"cazzzz","values":["cazzzz"]});
       if ($scope.createMode) {
         UserSelfService.create(wrappedUser, $scope.captchaInput.value).then(function (response) {
           console.debug("User " + $scope.user.username + " SUCCESSFULLY_CREATED");


[16/50] [abbrv] syncope git commit: [SYNCOPE-1009] added documentation about customization of enduser form, minor code cleansing

Posted by il...@apache.org.
[SYNCOPE-1009] added documentation about customization of enduser form, minor code cleansing


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

Branch: refs/heads/SYNCOPE-808
Commit: 107e51f5bb5063a1fd2078dbf3583508980ec913
Parents: 5221e60
Author: Andrea Patricelli <an...@apache.org>
Authored: Thu Apr 13 11:02:37 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Thu Apr 13 11:02:37 2017 +0200

----------------------------------------------------------------------
 .../resources/META-INF/resources/app/index.html |   1 -
 .../app/js/controllers/UserController.js        |   1 -
 .../enduser/src/test/resources/customForm.json  |  48 +-----
 .../workingwithapachesyncope/customization.adoc | 161 ++++++++++++++++++-
 4 files changed, 159 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/107e51f5/client/enduser/src/main/resources/META-INF/resources/app/index.html
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/index.html b/client/enduser/src/main/resources/META-INF/resources/app/index.html
index 7378236..21a7984 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/index.html
+++ b/client/enduser/src/main/resources/META-INF/resources/app/index.html
@@ -99,7 +99,6 @@ under the License.
   <script src="js/services/groupService.js"></script>
   <script src="js/services/anyService.js"></script>
   <script src="js/services/saml2IdPService.js"></script>
-  <script src="js/services/configurationService.js"></script>
   <!--controllers-->
   <script src="js/controllers/HomeController.js"></script>
   <script src="js/controllers/LoginController.js"></script>

http://git-wip-us.apache.org/repos/asf/syncope/blob/107e51f5/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
index d49032f..e741524 100644
--- a/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
+++ b/client/enduser/src/main/resources/META-INF/resources/app/js/controllers/UserController.js
@@ -299,7 +299,6 @@ angular.module("self").controller("UserController", ['$scope', '$rootScope', '$l
           if ($scope.user.mustChangePassword) {
             $location.path('/mustchangepassword');
           } else {
-//            initConfiguration();
             initProperties();
           }
         }, function (e) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/107e51f5/client/enduser/src/test/resources/customForm.json
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/resources/customForm.json b/client/enduser/src/test/resources/customForm.json
index 0a8b4d3..9e26dfe 100644
--- a/client/enduser/src/test/resources/customForm.json
+++ b/client/enduser/src/test/resources/customForm.json
@@ -1,47 +1 @@
-{
-  "PLAIN": 
-          {
-            "show": true,
-            "attributes": {
-              "firstname": {
-                "readonly": true,
-                "defaultValues": ["defaultFirstname"]
-              },
-              "surname": {
-                "readonly": false,
-                "defaultValues": []
-              },
-              "fullname": {
-                "readonly": false
-              },
-              "loginDate": {
-                "readonly": false
-              },
-              "additional#loginDate": {
-                "readonly": false
-              },
-              "additional#ctype": {
-                "readonly": false,
-                "defaultValues": ["ctypeDefault"]
-              },
-              "additional#cool": {
-                "readonly": false,
-                "defaultValues": ["true"]
-              }
-            }
-          },
-  "DERIVED":
-          {
-            "show": false
-          },
-  "VIRTUAL": 
-          {
-            "show": true,
-            "attributes": {
-              "virtualdata": {
-                "readonly": true,
-                "defaultValues": ["defaultVirtualData"]
-              }
-            }
-          }
-}
\ No newline at end of file
+{}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/107e51f5/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
index 9430ccc..97e2e72 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
@@ -110,6 +110,7 @@ $ mvn clean verify \
 $ cp core/target/classes/*properties /opt/syncope/conf
 $ cp console/target/classes/*properties /opt/syncope/conf
 $ cp enduser/target/classes/*properties /opt/syncope/conf
+$ cp enduser/target/classes/customForm.json /opt/syncope/conf
 ....
 
 After downloading all of the dependencies that are needed, three WAR files will be produced:
@@ -404,10 +405,10 @@ Add the following dependencies to `enduser/pom.xml`:
 
 Copy `enduser/src/main/resources/all/saml2sp-agent.properties` to `enduser/src/main/resources/saml2sp-agent.properties`.
 
-[[customization-enduser-translations]]
-===== Translations
+[[customization-enduser-i18n]]
+===== i18n 
 
-The <<enduser-application>> comes with a native translation mechanism.
+The <<enduser-application>> comes with a native internationalization mechanism.
 
 Under the `enduser/src/main/webapp/app/languages/` directory, a sub-directory for each supported language is available;
 each language sub-directory contains two JSON files:
@@ -459,6 +460,160 @@ as
 and modify the JSON files under the new directory
 ====
 
+===== Form customization
+
+User self create/edit form could be customized in order to:
+
+* Hide/show some attributes
+* Deny/allow attribute write
+
+Under the `enduser/src/main/resources` directory you can find `customForm.json` file.
+This specifies the rules about form customization, in particular it allows to customize `PLAIN`, `DERIVED` and `VIRTUAL`
+attributes forms.
+
+[TIP]
+====
+The file provided with the archetype contains an empty json: `{}`.
+If such file is deleted or contains empty or not parseable json, customization will be simply ignored and all attributes
+will be shown.
+====
+
+Here is an example:
+
+```
+{
+  "PLAIN": 
+          {
+            "show": true,
+            "attributes": {
+              "firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname1", "defaultFirstname2"]
+              },
+              "surname": {
+                "readonly": false,
+                "defaultValues": []
+              },
+              "fullname": {
+                "readonly": false
+              },
+              "email": {
+                "readonly": false,
+                "defaultValues": ["test@apache.org"]
+              },
+              "userId": {
+                "readonly": false
+              },
+              "cool": {
+                "readonly": true,
+                "defaultValues": ["true"]
+              },
+              "additional#loginDate": {
+                "readonly": false
+              },
+              "additional#cool": {
+                "readonly": false,
+                "defaultValues": ["true"]
+              }
+            }
+          },
+  "DERIVED":
+          {
+            "show": false
+          },
+  "VIRTUAL": 
+          {
+            "show": true,
+            "attributes": {
+              "virtualdata": {
+                "readonly": true,
+                "defaultValues": ["defaultVirtualData"]
+              }
+            }
+          }
+}
+```
+As you can see the file has two main levels:
+
+* Schema type: `PLAIN`, `DERIVED`, `VIRTUAL`.
+* Attributes: list of attributes (by schema type) to be shown in the form.
+
+====== Schema type
+
+The schema type level allows to define customization of the three sub-forms available in the wizard.
+An user can specify one or each of the three sections in order to customize only what is really needed.
+Though enable/disable of schema forms can be configured also from the `app.js` file of the enduser, form customization
+json provides an attribute `show` to hide/show attributes input fields.
+If `show` is set to `false` info contained into `attributes` will be ignored and nothing is displayed in the form section.
+
+====== Attributes
+
+Attributes level contains a map of attributes to show.
+
+[TIP]
+====
+Attributes map is meant to be populated, i.e. empty `attributes` field means "do not filter at all and show all attributes".
+For example:
+```
+{
+  "PLAIN": 
+          {
+            "show": true,
+            "attributes": {}
+          }
+}
+```
+shows all attributes.
+If you want to hide all attributes please use `show` field: `show: false`.
+====
+
+As you can see from the sample json each attribute has:
+
+* A name: the name of schema from which the attribute has been generated.
+* A body: specifies if attribute should be readonly and its default values.
+
+Here is an example of attribute specification:
+
+```
+"firstname": {
+                "readonly": true,
+                "defaultValues": ["defaultFirstname","defaultFirstname2"]
+              }
+```
+In the example `firstname` is readonly and has two default values defined by a (comma separated) array of strings. 
+Default values section can be omitted if there are not default values to assign to that attribute.
+
+[CAUTION]
+====
+There are some clarifications to be made about form customization:
+
+* Default value of `show` (about schema sections) is `true`, i.e. if not specified the section is visible.
+* `readonly` field must not be confused with schema `readonly` information. In form customization `readonly` 
+means a front-end readonly, i.e. the attribute is not modifiable from the enduser, but it can be fully accessible 
+from the administration console. 
+It does not provide info about the schema, but about the specific attribute of the USER.
+* If `readonly` is not specified it is considered `false` by default.
+* `defaultValues` is an array of strings; this means that also date values should be specified as strings, in particular
+in dates must be provided into timestamp format in milliseconds (this behavior will be improved further).
+* `defaultValues` (obviously) do not averride populated fields, an attribute is filled with default values 
+only if it is empty (in create and update).
+====
+
+====== Hot deploy
+
+Form customization supports "hot deploy" feature. This means that `customForm.json` could be edited and reloaded 
+without stopping and re-starting the application server.
+Obviously to see "hot" modifications to the form you must refresh the page of the browser.
+
+[TIP]
+====
+When running Syncope into embedded mode you should edit `fit/enduser-reference/target/test-classes/customForm.json`
+file.
+
+While running, instead, Syncope in a real environment you should edit the file under `conf.directory`. Please refer to <<deployment-directories>> section. 
+====
+
+
 [[customization-extensions]]
 ==== Extensions
 


[27/50] [abbrv] syncope git commit: Updating CHANGES for release

Posted by il...@apache.org.
Updating CHANGES for release


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

Branch: refs/heads/SYNCOPE-808
Commit: 4e6378550bcfa2014dda79169992e6e87b5328f7
Parents: d76009c
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 14:44:16 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 14:44:16 2017 +0200

----------------------------------------------------------------------
 CHANGES | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/4e637855/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index e0fa5e9..a116e40 100644
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,68 @@ Apache Syncope - CHANGES
 Licensed under Apache License 2.0 - http://www.apache.org/licenses/LICENSE-2.0
 --------------------------------------------------------------------------------
 
+Release Notes - Syncope - Version 2.0.3
+================================================================================
+
+** Bug
+    * [SYNCOPE-1003] - Error when accessing notification tasks for a given user
+    * [SYNCOPE-1004] - Notification tasks generated for self read event not linked to user
+    * [SYNCOPE-1007] - NPE in Console when on an empty search term for user assignment
+    * [SYNCOPE-1008] - Maven home directory not trimmed of whitespace
+    * [SYNCOPE-1010] - Some PushActions methods not invoked even if assigned
+    * [SYNCOPE-1012] - Security answer not recognized during password reset
+    * [SYNCOPE-1013] - Password reset link generated by default notification template does not trigger Enduser UI features
+    * [SYNCOPE-1014] - The list of security questions is not refreshed after creating new one
+    * [SYNCOPE-1016] - Last change date not updated for users when attributes are updated via pull
+    * [SYNCOPE-1022] - UTF-8 characters in security questions not correctly encoded by Enduser UI
+    * [SYNCOPE-1023] - Maven projects from archetype deploy test content with 'all' profile
+    * [SYNCOPE-1024] - Enduser does not manages properly ENUM schema labels 
+    * [SYNCOPE-1025] - SYNCOPEAUDIT table not populated
+    * [SYNCOPE-1026] - Cannot remove group owner once set
+    * [SYNCOPE-1027] - Mapping errors cannot be fixed when defining provision rules for a new resource
+    * [SYNCOPE-1030] - Invalid DefaultAccountRule definition from Admin Console
+    * [SYNCOPE-1032] - Role key must be not modifiable during edit from Admin Console
+    * [SYNCOPE-1033] - NPE in Admin Console when working with Reconciliation Report
+    * [SYNCOPE-1034] - Assigned Auxiliary classes disappear in the Type Extensions panel when click on cancel
+    * [SYNCOPE-1036] - Notification icon does not refresh on new approval event
+    * [SYNCOPE-1037] - Pending approvals list is clickable
+    * [SYNCOPE-1038] - User create: finish button should remain clickable if the last step is reached
+    * [SYNCOPE-1039] - User attributes in user edit/create form are reset after validation error
+    * [SYNCOPE-1040] - Membership derived attributes cannot reference own plain attributes
+    * [SYNCOPE-1042] - Removal of all executed pull tasks via bulk action returns a missing resource exception
+    * [SYNCOPE-1043] - Improve JWT token expiration handling
+    * [SYNCOPE-1044] - By editing the provisioning rules, modal footer is not disabled
+    * [SYNCOPE-1045] - Activiti Modeler: log out from Admin Console in case of error
+    * [SYNCOPE-1046] - Console: task execution sort not working properly
+    * [SYNCOPE-1048] - Into the connector configuration page the same bundle appear more then once if different versions exist
+    * [SYNCOPE-1049] - Console returns an error if you try to explore Syncope as a remote object
+    * [SYNCOPE-1051] - It is possible to schedule task execution in the past
+    * [SYNCOPE-1052] - Enduser CAPTCHA not reloading
+    * [SYNCOPE-1057] - Type extensions cleared after group update during pull
+    * [SYNCOPE-1060] - Date in membership attribute is propagated as timestamp
+    * [SYNCOPE-1062] - Changes pulled from one resource not propagated externally
+
+** Improvement
+    * [SYNCOPE-991] - Improve user password management / resource management
+    * [SYNCOPE-1005] - Schema sorting should be done on JS side 
+    * [SYNCOPE-1009] - Enduser must provide an easy way to enable/disable visualization and sorting of USER attributes
+    * [SYNCOPE-1020] - Support for BPMN call activity
+    * [SYNCOPE-1028] - Improve usability of the modal window for provision rules
+    * [SYNCOPE-1029] - Change modal window title and button bars background
+    * [SYNCOPE-1031] - Hide key when creating / editing Security Questions from Admin Console
+    * [SYNCOPE-1050] - Allow easier extension of REST interface exposed to AngularJS
+    * [SYNCOPE-1058] - Do not show time picker and values for date-only schemas
+    * [SYNCOPE-1059] - Remove final landing page after user create/update
+    * [SYNCOPE-1061] - Support SAML 2.0 Redirect profile
+    * [SYNCOPE-1063] - Incomplete title for modal windows from Topology
+    * [SYNCOPE-1064] - Improve security of customization mechanism
+
+** New Feature
+    * [SYNCOPE-1015] - User Authentication using email
+    * [SYNCOPE-1035] - JWT-based access to REST services
+    * [SYNCOPE-1041] - SAML 2.0 Service Provider feature
+    * [SYNCOPE-1055] - Provide Flowable 5.X-based workflow adapter
+
 Release Notes - Syncope - Version 2.0.2
 ================================================================================
 


[15/50] [abbrv] syncope git commit: [SYNCOPE-1063] provides parametric properties

Posted by il...@apache.org.
[SYNCOPE-1063] provides parametric properties


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

Branch: refs/heads/SYNCOPE-808
Commit: 5221e60efa43da9e1d65c1f64dfd2b1bf20ecbd3
Parents: 8be5d4d
Author: fmartelli <fa...@gmail.com>
Authored: Wed Apr 12 17:22:44 2017 +0200
Committer: fmartelli <fa...@gmail.com>
Committed: Wed Apr 12 17:22:44 2017 +0200

----------------------------------------------------------------------
 .../client/console/topology/TopologyTogglePanel.java     | 10 ++++++----
 .../client/console/topology/TopologyTogglePanel.html     |  6 +++---
 .../console/topology/TopologyTogglePanel.properties      | 11 +++++++----
 .../console/topology/TopologyTogglePanel_it.properties   | 11 +++++++----
 .../topology/TopologyTogglePanel_pt_BR.properties        | 11 +++++++----
 .../console/topology/TopologyTogglePanel_ru.properties   | 11 +++++++----
 6 files changed, 37 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/5221e60e/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
index 74b570b..4bb1aa2 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/topology/TopologyTogglePanel.java
@@ -364,7 +364,8 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
                 ResourceTO modelObject = resourceRestClient.read(node.getKey());
                 target.add(propTaskModal.setContent(
                         new ResourceStatusModal(propTaskModal, pageRef, modelObject)));
-                propTaskModal.header(new ResourceModel("resource.provisioning.status", "Provisioning Status"));
+                propTaskModal.header(new Model<>(MessageFormat.format(getString("resource.provisioning.status"),
+                        node.getKey())));
                 propTaskModal.show(true);
             }
         };
@@ -418,7 +419,8 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
             public void onClick(final AjaxRequestTarget target) {
                 target.add(propTaskModal.setContent(
                         new PropagationTasks(propTaskModal, node.getKey(), pageRef)));
-                propTaskModal.header(new ResourceModel("task.propagation.list"));
+                propTaskModal.header(
+                        new Model<>(MessageFormat.format(getString("task.propagation.list"), node.getKey())));
                 propTaskModal.show(true);
             }
         };
@@ -432,7 +434,7 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
             @Override
             public void onClick(final AjaxRequestTarget target) {
                 target.add(schedTaskModal.setContent(new PullTasks(schedTaskModal, pageRef, node.getKey())));
-                schedTaskModal.header(new ResourceModel("task.pull.list"));
+                schedTaskModal.header(new Model<>(MessageFormat.format(getString("task.pull.list"), node.getKey())));
                 schedTaskModal.show(true);
             }
         };
@@ -446,7 +448,7 @@ public class TopologyTogglePanel extends TogglePanel<Serializable> {
             @Override
             public void onClick(final AjaxRequestTarget target) {
                 target.add(schedTaskModal.setContent(new PushTasks(schedTaskModal, pageRef, node.getKey())));
-                schedTaskModal.header(new ResourceModel("task.push.list"));
+                schedTaskModal.header(new Model<>(MessageFormat.format(getString("task.push.list"), node.getKey())));
                 schedTaskModal.show(true);
             }
         };

http://git-wip-us.apache.org/repos/asf/syncope/blob/5221e60e/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
index 28ef607..051df49 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.html
@@ -48,13 +48,13 @@ under the License.
           <li><a href="#" wicket:id="explore"><i class="fa fa-eye"></i><wicket:message key="resource.menu.explore"/></a></li>
         </wicket:enclosure>
         <wicket:enclosure child="propagation">
-          <li><a href="#" wicket:id="propagation"><i class="fa fa-arrow-right"></i><wicket:message key="task.propagation.list"/></a></li>
+          <li><a href="#" wicket:id="propagation"><i class="fa fa-arrow-right"></i><wicket:message key="resource.menu.propagation.list"/></a></li>
         </wicket:enclosure>
         <wicket:enclosure child="pull">
-          <li><a href="#" wicket:id="pull"><i class="fa fa-chevron-circle-left"></i><wicket:message key="task.pull.list"/></a></li>
+          <li><a href="#" wicket:id="pull"><i class="fa fa-chevron-circle-left"></i><wicket:message key="resource.menu.pull.list"/></a></li>
         </wicket:enclosure>
         <wicket:enclosure child="push">
-          <li><a href="#" wicket:id="push"><i class="fa fa-chevron-circle-right"></i><wicket:message key="task.push.list"/></a></li>
+          <li><a href="#" wicket:id="push"><i class="fa fa-chevron-circle-right"></i><wicket:message key="resource.menu.push.list"/></a></li>
         </wicket:enclosure>
         <wicket:enclosure child="status">
           <li><a href="#" wicket:id="status"><i class="fa fa-list-ul"></i><wicket:message key="resource.menu.provisioning.status"/></a></li>

http://git-wip-us.apache.org/repos/asf/syncope/blob/5221e60e/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.properties
index c82fc37..43df570 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel.properties
@@ -29,10 +29,13 @@ resource.menu.provision=Edit provision rules
 resource.menu.explore=Explore resource
 
 task.custom.list=Custom tasks
-task.propagation.list=Propagation tasks
-task.pull.list=Pull tasks
-task.push.list=Push tasks
+task.propagation.list=Propagation tasks {0}
+task.pull.list=Pull tasks {0}
+task.push.list=Push tasks {0}
 resource.explore.list=Explore ${key}
 connectors.reload=Reload all connectors
-resource.provisioning.status=Provisioning Status
+resource.provisioning.status=Provisioning Status {0}
 resource.menu.provisioning.status=Provisioning status
+resource.menu.push.list=Push tasks
+resource.menu.pull.list=Pull tasks
+resource.menu.propagation.list=Propagation tasks

http://git-wip-us.apache.org/repos/asf/syncope/blob/5221e60e/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_it.properties
index 4156f8b..90ed5ec 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_it.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_it.properties
@@ -29,10 +29,13 @@ resource.menu.provision=Modifica regole di provisioning
 resource.menu.explore=Esplora risorsa
 
 task.custom.list=Task personalizzati
-task.propagation.list=Task di propagazione
-task.pull.list=Pull task
-task.push.list=Push task
+task.propagation.list=Task di propagazione {0}
+task.pull.list=Pull task {0}
+task.push.list=Push task {0}
 resource.explore.list=Esplora ${key}
 connectors.reload=Ricarica tutti i connettori
-resource.provisioning.status=Stato provisioning
+resource.provisioning.status=Stato provisioning {0}
 resource.menu.provisioning.status=Stato provisioning
+resource.menu.push.list=Push tasks
+resource.menu.pull.list=Pull tasks
+resource.menu.propagation.list=Task di propagazione

http://git-wip-us.apache.org/repos/asf/syncope/blob/5221e60e/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_pt_BR.properties
index b2748c6..6f2520e 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_pt_BR.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_pt_BR.properties
@@ -29,10 +29,13 @@ resource.menu.provision=Alterar regras de provision
 resource.menu.explore=Explorar recurso
 
 task.custom.list=Custom tasks
-task.propagation.list=Propagation tasks
-task.pull.list=Pull tasks
-task.push.list=Push tasks
+task.propagation.list=Propagation tasks {0}
+task.pull.list=Pull tasks {0}
+task.push.list=Push tasks {0}
 resource.explore.list=Explorar ${key}
 connectors.reload=Reload all connectors
-resource.provisioning.status=Provisioning status
+resource.provisioning.status=Provisioning status {0}
 resource.menu.provisioning.status=Provisioning status
+resource.menu.push.list=Push tasks
+resource.menu.pull.list=Pull tasks
+resource.menu.propagation.list=Propagation tasks

http://git-wip-us.apache.org/repos/asf/syncope/blob/5221e60e/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_ru.properties
index 3097e5d..997f304 100644
--- a/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_ru.properties
+++ b/client/console/src/main/resources/org/apache/syncope/client/console/topology/TopologyTogglePanel_ru.properties
@@ -30,10 +30,13 @@ resource.menu.provision=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\
 resource.menu.explore=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0435\u0441\u0443\u0440\u0441\u0430
 
 task.custom.list=\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438
-task.propagation.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439
-task.pull.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445
-task.push.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445
+task.propagation.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 {0}
+task.pull.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 {0}
+task.push.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 {0}
 resource.explore.list=\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 ${key}
 connectors.reload=\u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440\u044b
-resource.provisioning.status=\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f
+resource.provisioning.status=\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f {0}
 resource.menu.provisioning.status=\u0421\u0442\u0430\u0442\u0443\u0441 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f
+resource.menu.push.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0434\u0430\u043d\u043d\u044b\u0445
+resource.menu.pull.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445
+resource.menu.propagation.list=\u0417\u0430\u0434\u0430\u0447\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439


[29/50] [abbrv] syncope git commit: Updating downloads site page for release

Posted by il...@apache.org.
Updating downloads site page for release


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

Branch: refs/heads/SYNCOPE-808
Commit: 27a12c5df732dde35b79852a4f98343c05a38ce6
Parents: f136ec8
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 14:45:57 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 14:45:57 2017 +0200

----------------------------------------------------------------------
 src/site/xdoc/downloads.xml | 68 ++++++++++++++++++++--------------------
 1 file changed, 34 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/27a12c5d/src/site/xdoc/downloads.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/downloads.xml b/src/site/xdoc/downloads.xml
index f541821..eac2841 100644
--- a/src/site/xdoc/downloads.xml
+++ b/src/site/xdoc/downloads.xml
@@ -48,8 +48,8 @@ under the License.
         </div>
       </div>
 
-      <subsection name="2.0.2 Jazz">
-        <p>Release date: January 27th 2017</p>
+      <subsection name="2.0.3 Jazz">
+        <p>Release date: April 14th 2017</p>
         <p>
           <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz">Release notes</a>
         </p>
@@ -63,82 +63,82 @@ under the License.
           <tbody>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/syncope-2.0.2-source-release.zip">syncope-2.0.2-source-release.zip</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/syncope-2.0.3-source-release.zip">syncope-2.0.3-source-release.zip</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-2.0.2-source-release.zip.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-2.0.2-source-release.zip.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-2.0.2-source-release.zip.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-2.0.3-source-release.zip.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-2.0.3-source-release.zip.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-2.0.3-source-release.zip.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/syncope-standalone-2.0.2-distribution.zip">syncope-standalone-2.0.2-distribution.zip</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/syncope-standalone-2.0.3-distribution.zip">syncope-standalone-2.0.3-distribution.zip</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-standalone-2.0.2-distribution.zip.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-standalone-2.0.2-distribution.zip.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-standalone-2.0.2-distribution.zip.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-standalone-2.0.3-distribution.zip.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-standalone-2.0.3-distribution.zip.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-standalone-2.0.3-distribution.zip.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/apache-syncope-2.0.2.deb">apache-syncope-2.0.2.deb</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/apache-syncope-2.0.3.deb">apache-syncope-2.0.3.deb</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-2.0.2.deb.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-2.0.2.deb.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-2.0.2.deb.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-2.0.3.deb.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-2.0.3.deb.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-2.0.3.deb.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/apache-syncope-console-2.0.2.deb">apache-syncope-console-2.0.2.deb</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/apache-syncope-console-2.0.3.deb">apache-syncope-console-2.0.3.deb</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-console-2.0.2.deb.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-console-2.0.2.deb.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-console-2.0.2.deb.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-console-2.0.3.deb.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-console-2.0.3.deb.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-console-2.0.3.deb.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/apache-syncope-enduser-2.0.2.deb">apache-syncope-enduser-2.0.2.deb</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/apache-syncope-enduser-2.0.3.deb">apache-syncope-enduser-2.0.3.deb</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-enduser-2.0.2.deb.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-enduser-2.0.2.deb.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/apache-syncope-enduser-2.0.2.deb.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-enduser-2.0.3.deb.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-enduser-2.0.3.deb.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/apache-syncope-enduser-2.0.3.deb.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/syncope-installer-2.0.2-uber.jar">syncope-installer-2.0.2.jar</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/syncope-installer-2.0.3-uber.jar">syncope-installer-2.0.3.jar</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-installer-2.0.2-uber.jar.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-installer-2.0.2-uber.jar.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-installer-2.0.2-uber.jar.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-installer-2.0.3-uber.jar.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-installer-2.0.3-uber.jar.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-installer-2.0.3-uber.jar.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/syncope-client-cli-2.0.2.zip">syncope-client-cli-2.0.2.zip</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/syncope-client-cli-2.0.3.zip">syncope-client-cli-2.0.3.zip</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-client-cli-2.0.2.zip.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-client-cli-2.0.2.zip.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/syncope-client-cli-2.0.2.zip.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-client-cli-2.0.3.zip.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-client-cli-2.0.3.zip.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/syncope-client-cli-2.0.3.zip.sha1">sha1</a>
               </td>
             </tr>
             <tr>
               <td>
-                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.2/org.apache.syncope.ide.eclipse.site-2.0.2.zip">syncope-client-cli-2.0.2.zip</a>
+                <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.3/org.apache.syncope.ide.eclipse.site-2.0.3.zip">syncope-client-cli-2.0.3.zip</a>
               </td>
               <td>
-                <a href="https://www.apache.org/dist/syncope/2.0.2/org.apache.syncope.ide.eclipse.site-2.0.2.zip.asc">asc</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/org.apache.syncope.ide.eclipse.site-2.0.2.zip.md5">md5</a> 
-                <a href="https://www.apache.org/dist/syncope/2.0.2/org.apache.syncope.ide.eclipse.site-2.0.2.zip.sha1">sha1</a>
+                <a href="https://www.apache.org/dist/syncope/2.0.3/org.apache.syncope.ide.eclipse.site-2.0.3.zip.asc">asc</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/org.apache.syncope.ide.eclipse.site-2.0.3.zip.md5">md5</a> 
+                <a href="https://www.apache.org/dist/syncope/2.0.3/org.apache.syncope.ide.eclipse.site-2.0.3.zip.sha1">sha1</a>
               </td>
             </tr>
           </tbody>


[31/50] [abbrv] syncope git commit: [maven-release-plugin] prepare for next development iteration

Posted by il...@apache.org.
[maven-release-plugin] prepare for next development iteration


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

Branch: refs/heads/SYNCOPE-808
Commit: 13d776597d04cd593f61d2895fa9e9ee5eafc607
Parents: db1c571
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 15:00:23 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 15:00:23 2017 +0200

----------------------------------------------------------------------
 archetype/pom.xml                                                | 2 +-
 client/cli/pom.xml                                               | 2 +-
 client/console/pom.xml                                           | 2 +-
 client/enduser/pom.xml                                           | 2 +-
 client/lib/pom.xml                                               | 2 +-
 client/pom.xml                                                   | 2 +-
 common/lib/pom.xml                                               | 2 +-
 common/pom.xml                                                   | 2 +-
 common/rest-api/pom.xml                                          | 2 +-
 core/logic/pom.xml                                               | 2 +-
 core/migration/pom.xml                                           | 2 +-
 core/persistence-api/pom.xml                                     | 2 +-
 core/persistence-jpa/pom.xml                                     | 2 +-
 core/pom.xml                                                     | 2 +-
 core/provisioning-api/pom.xml                                    | 2 +-
 core/provisioning-java/pom.xml                                   | 2 +-
 core/rest-cxf/pom.xml                                            | 2 +-
 core/spring/pom.xml                                              | 2 +-
 core/workflow-activiti/pom.xml                                   | 2 +-
 core/workflow-api/pom.xml                                        | 2 +-
 core/workflow-flowable/pom.xml                                   | 2 +-
 core/workflow-java/pom.xml                                       | 2 +-
 deb/console/pom.xml                                              | 2 +-
 deb/core/pom.xml                                                 | 2 +-
 deb/enduser/pom.xml                                              | 2 +-
 deb/pom.xml                                                      | 2 +-
 ext/camel/client-console/pom.xml                                 | 2 +-
 ext/camel/common-lib/pom.xml                                     | 2 +-
 ext/camel/logic/pom.xml                                          | 2 +-
 ext/camel/persistence-api/pom.xml                                | 2 +-
 ext/camel/persistence-jpa/pom.xml                                | 2 +-
 ext/camel/pom.xml                                                | 2 +-
 ext/camel/provisioning-api/pom.xml                               | 2 +-
 ext/camel/provisioning-camel/pom.xml                             | 2 +-
 ext/camel/rest-api/pom.xml                                       | 2 +-
 ext/camel/rest-cxf/pom.xml                                       | 2 +-
 ext/pom.xml                                                      | 2 +-
 ext/saml2sp/agent/pom.xml                                        | 2 +-
 ext/saml2sp/client-console/pom.xml                               | 2 +-
 ext/saml2sp/client-enduser/pom.xml                               | 2 +-
 ext/saml2sp/common-lib/pom.xml                                   | 2 +-
 ext/saml2sp/logic/pom.xml                                        | 2 +-
 ext/saml2sp/persistence-api/pom.xml                              | 2 +-
 ext/saml2sp/persistence-jpa/pom.xml                              | 2 +-
 ext/saml2sp/pom.xml                                              | 2 +-
 ext/saml2sp/provisioning-api/pom.xml                             | 2 +-
 ext/saml2sp/provisioning-java/pom.xml                            | 2 +-
 ext/saml2sp/rest-api/pom.xml                                     | 2 +-
 ext/saml2sp/rest-cxf/pom.xml                                     | 2 +-
 ext/swagger-ui/pom.xml                                           | 2 +-
 fit/build-tools/pom.xml                                          | 2 +-
 fit/console-reference/pom.xml                                    | 2 +-
 fit/core-reference/pom.xml                                       | 2 +-
 fit/enduser-reference/pom.xml                                    | 2 +-
 fit/pom.xml                                                      | 2 +-
 .../bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml        | 2 +-
 ide/eclipse/pom.xml                                              | 2 +-
 ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml   | 2 +-
 ide/pom.xml                                                      | 2 +-
 installer/pom.xml                                                | 2 +-
 pom.xml                                                          | 4 ++--
 standalone/pom.xml                                               | 2 +-
 62 files changed, 63 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/archetype/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/pom.xml b/archetype/pom.xml
index a5fdc14..d691f03 100644
--- a/archetype/pom.xml
+++ b/archetype/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Archetype</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/client/cli/pom.xml
----------------------------------------------------------------------
diff --git a/client/cli/pom.xml b/client/cli/pom.xml
index bfe48a9..a8d9b61 100644
--- a/client/cli/pom.xml
+++ b/client/cli/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client CLI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/client/console/pom.xml
----------------------------------------------------------------------
diff --git a/client/console/pom.xml b/client/console/pom.xml
index ff75615..e4ff9f7 100644
--- a/client/console/pom.xml
+++ b/client/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/client/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/client/enduser/pom.xml b/client/enduser/pom.xml
index 10da00d..220f859 100644
--- a/client/enduser/pom.xml
+++ b/client/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
     
   <name>Apache Syncope Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/client/lib/pom.xml
----------------------------------------------------------------------
diff --git a/client/lib/pom.xml b/client/lib/pom.xml
index bdae59a..0256774 100644
--- a/client/lib/pom.xml
+++ b/client/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-client</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/client/pom.xml
----------------------------------------------------------------------
diff --git a/client/pom.xml b/client/pom.xml
index 9c8e88b..ffefa2f 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Client</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/common/lib/pom.xml
----------------------------------------------------------------------
diff --git a/common/lib/pom.xml b/common/lib/pom.xml
index 28aa542..f6650ff 100644
--- a/common/lib/pom.xml
+++ b/common/lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/common/pom.xml
----------------------------------------------------------------------
diff --git a/common/pom.xml b/common/pom.xml
index 6c372c7..363ae27 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Common</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/common/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/common/rest-api/pom.xml b/common/rest-api/pom.xml
index d169a52..8a86458 100644
--- a/common/rest-api/pom.xml
+++ b/common/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-common</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Common REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/logic/pom.xml
----------------------------------------------------------------------
diff --git a/core/logic/pom.xml b/core/logic/pom.xml
index 355acf4..967e9d7 100644
--- a/core/logic/pom.xml
+++ b/core/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/migration/pom.xml
----------------------------------------------------------------------
diff --git a/core/migration/pom.xml b/core/migration/pom.xml
index 00f5a62..de160e4 100644
--- a/core/migration/pom.xml
+++ b/core/migration/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Migration</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-api/pom.xml b/core/persistence-api/pom.xml
index 2543033..4f9984a 100644
--- a/core/persistence-api/pom.xml
+++ b/core/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml
index 02c7530..b97cca3 100644
--- a/core/persistence-jpa/pom.xml
+++ b/core/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index a252a28..b4c8541 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-api/pom.xml b/core/provisioning-api/pom.xml
index 1c85f06..ede504e 100644
--- a/core/provisioning-api/pom.xml
+++ b/core/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml
index 542a0ad..11fc9c7 100644
--- a/core/provisioning-java/pom.xml
+++ b/core/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/core/rest-cxf/pom.xml b/core/rest-cxf/pom.xml
index 2afea73..7ccd6d1 100644
--- a/core/rest-cxf/pom.xml
+++ b/core/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/spring/pom.xml
----------------------------------------------------------------------
diff --git a/core/spring/pom.xml b/core/spring/pom.xml
index dff3f6e..4fa0675 100644
--- a/core/spring/pom.xml
+++ b/core/spring/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Spring</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/workflow-activiti/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-activiti/pom.xml b/core/workflow-activiti/pom.xml
index 52ba44d..11ed455 100644
--- a/core/workflow-activiti/pom.xml
+++ b/core/workflow-activiti/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Activiti</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/workflow-api/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-api/pom.xml b/core/workflow-api/pom.xml
index 57d75f1..8f629e2 100644
--- a/core/workflow-api/pom.xml
+++ b/core/workflow-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/workflow-flowable/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-flowable/pom.xml b/core/workflow-flowable/pom.xml
index bc695b2..8122d9e 100644
--- a/core/workflow-flowable/pom.xml
+++ b/core/workflow-flowable/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Flowable</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/core/workflow-java/pom.xml
----------------------------------------------------------------------
diff --git a/core/workflow-java/pom.xml b/core/workflow-java/pom.xml
index b5f4a2e..8d3fa25 100644
--- a/core/workflow-java/pom.xml
+++ b/core/workflow-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-core</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Core Workflow Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/deb/console/pom.xml
----------------------------------------------------------------------
diff --git a/deb/console/pom.xml b/deb/console/pom.xml
index f2bcdc6..45c2bf3 100644
--- a/deb/console/pom.xml
+++ b/deb/console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/deb/core/pom.xml
----------------------------------------------------------------------
diff --git a/deb/core/pom.xml b/deb/core/pom.xml
index b064927..d8507b1 100644
--- a/deb/core/pom.xml
+++ b/deb/core/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb Core</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
index dcd889f..b81e825 100644
--- a/deb/enduser/pom.xml
+++ b/deb/enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-deb</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/deb/pom.xml
----------------------------------------------------------------------
diff --git a/deb/pom.xml b/deb/pom.xml
index a40a90b..c9641f5 100644
--- a/deb/pom.xml
+++ b/deb/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Deb</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/client-console/pom.xml b/ext/camel/client-console/pom.xml
index 269f493..1ac72f5 100644
--- a/ext/camel/client-console/pom.xml
+++ b/ext/camel/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/common-lib/pom.xml b/ext/camel/common-lib/pom.xml
index 6dcaa61..6140157 100644
--- a/ext/camel/common-lib/pom.xml
+++ b/ext/camel/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/logic/pom.xml b/ext/camel/logic/pom.xml
index 2420f2f..950c704 100644
--- a/ext/camel/logic/pom.xml
+++ b/ext/camel/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-api/pom.xml b/ext/camel/persistence-api/pom.xml
index 0bd4929..3a44c2f 100644
--- a/ext/camel/persistence-api/pom.xml
+++ b/ext/camel/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/persistence-jpa/pom.xml b/ext/camel/persistence-jpa/pom.xml
index 8ac8d60..065749d 100644
--- a/ext/camel/persistence-jpa/pom.xml
+++ b/ext/camel/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/pom.xml b/ext/camel/pom.xml
index a713352..590e95c 100644
--- a/ext/camel/pom.xml
+++ b/ext/camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-api/pom.xml b/ext/camel/provisioning-api/pom.xml
index 90957c9..ee6c11c 100644
--- a/ext/camel/provisioning-api/pom.xml
+++ b/ext/camel/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/provisioning-camel/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/provisioning-camel/pom.xml b/ext/camel/provisioning-camel/pom.xml
index 4755628..04c0724 100644
--- a/ext/camel/provisioning-camel/pom.xml
+++ b/ext/camel/provisioning-camel/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel Provisioning</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-api/pom.xml b/ext/camel/rest-api/pom.xml
index c3c993f..59e828c 100644
--- a/ext/camel/rest-api/pom.xml
+++ b/ext/camel/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/camel/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/camel/rest-cxf/pom.xml b/ext/camel/rest-cxf/pom.xml
index 52a73a2..ea71278 100644
--- a/ext/camel/rest-cxf/pom.xml
+++ b/ext/camel/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-camel</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Camel REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pom.xml b/ext/pom.xml
index 10297d7..591194f 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/agent/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/agent/pom.xml b/ext/saml2sp/agent/pom.xml
index 606be20..e33de80 100644
--- a/ext/saml2sp/agent/pom.xml
+++ b/ext/saml2sp/agent/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Agent</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/client-console/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-console/pom.xml b/ext/saml2sp/client-console/pom.xml
index b801d43..227ccc5 100644
--- a/ext/saml2sp/client-console/pom.xml
+++ b/ext/saml2sp/client-console/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Console</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/client-enduser/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/client-enduser/pom.xml b/ext/saml2sp/client-enduser/pom.xml
index c0c1cb0..6997f98 100644
--- a/ext/saml2sp/client-enduser/pom.xml
+++ b/ext/saml2sp/client-enduser/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Client Enduser</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/common-lib/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/common-lib/pom.xml b/ext/saml2sp/common-lib/pom.xml
index 7039f5c..1f965dc 100644
--- a/ext/saml2sp/common-lib/pom.xml
+++ b/ext/saml2sp/common-lib/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Common Lib</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/logic/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/pom.xml b/ext/saml2sp/logic/pom.xml
index b82be74..81a2817 100644
--- a/ext/saml2sp/logic/pom.xml
+++ b/ext/saml2sp/logic/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Logic</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-api/pom.xml b/ext/saml2sp/persistence-api/pom.xml
index 108681e..2949c14 100644
--- a/ext/saml2sp/persistence-api/pom.xml
+++ b/ext/saml2sp/persistence-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-jpa/pom.xml b/ext/saml2sp/persistence-jpa/pom.xml
index 2aac44a..0a8e705 100644
--- a/ext/saml2sp/persistence-jpa/pom.xml
+++ b/ext/saml2sp/persistence-jpa/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Persistence JPA</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/pom.xml b/ext/saml2sp/pom.xml
index c0457fc..975fd4f 100644
--- a/ext/saml2sp/pom.xml
+++ b/ext/saml2sp/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/provisioning-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-api/pom.xml b/ext/saml2sp/provisioning-api/pom.xml
index 9a8e2fa..bf22907 100644
--- a/ext/saml2sp/provisioning-api/pom.xml
+++ b/ext/saml2sp/provisioning-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/provisioning-java/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/pom.xml b/ext/saml2sp/provisioning-java/pom.xml
index 752f155..7305104 100644
--- a/ext/saml2sp/provisioning-java/pom.xml
+++ b/ext/saml2sp/provisioning-java/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP Provisioning Java</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/rest-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-api/pom.xml b/ext/saml2sp/rest-api/pom.xml
index 287ed8f..6002c63 100644
--- a/ext/saml2sp/rest-api/pom.xml
+++ b/ext/saml2sp/rest-api/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST API</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/saml2sp/rest-cxf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-cxf/pom.xml b/ext/saml2sp/rest-cxf/pom.xml
index f6700fe..3a56e9e 100644
--- a/ext/saml2sp/rest-cxf/pom.xml
+++ b/ext/saml2sp/rest-cxf/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ext</groupId>
     <artifactId>syncope-ext-saml2sp</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: SAML2 SP REST CXF</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ext/swagger-ui/pom.xml
----------------------------------------------------------------------
diff --git a/ext/swagger-ui/pom.xml b/ext/swagger-ui/pom.xml
index d75cbab..807fe87 100644
--- a/ext/swagger-ui/pom.xml
+++ b/ext/swagger-ui/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ext</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Ext: Swagger UI</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/fit/build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml
index 18e052b..44ab09f 100644
--- a/fit/build-tools/pom.xml
+++ b/fit/build-tools/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Build Tools</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index 6746e57..6332b30 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Console Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/fit/core-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml
index 1004590..0b620a9 100644
--- a/fit/core-reference/pom.xml
+++ b/fit/core-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Core Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/fit/enduser-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml
index 1e5bcce..439b49b 100644
--- a/fit/enduser-reference/pom.xml
+++ b/fit/enduser-reference/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-fit</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT Enduser Reference</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/fit/pom.xml
----------------------------------------------------------------------
diff --git a/fit/pom.xml b/fit/pom.xml
index 26ef182..268a524 100644
--- a/fit/pom.xml
+++ b/fit/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope FIT</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
index a05e349..57c5af7 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ide/eclipse/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/pom.xml b/ide/eclipse/pom.xml
index 9032e61..0dfeb4d 100644
--- a/ide/eclipse/pom.xml
+++ b/ide/eclipse/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope-ide</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope IDE Eclipse</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
index 3913397..1ae2617 100644
--- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
+++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope.ide</groupId>
     <artifactId>syncope-ide-eclipse</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
     <relativePath>../../</relativePath>
   </parent>
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/ide/pom.xml
----------------------------------------------------------------------
diff --git a/ide/pom.xml b/ide/pom.xml
index f16d5e8..dbd135f 100644
--- a/ide/pom.xml
+++ b/ide/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope IDE</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/installer/pom.xml
----------------------------------------------------------------------
diff --git a/installer/pom.xml b/installer/pom.xml
index 2ed15e8..97db2f6 100644
--- a/installer/pom.xml
+++ b/installer/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Installer</name>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index be4aee8..aa54589 100644
--- a/pom.xml
+++ b/pom.xml
@@ -26,7 +26,7 @@ under the License.
 
   <groupId>org.apache.syncope</groupId>
   <artifactId>syncope</artifactId>
-  <version>2.0.3</version>
+  <version>2.0.4-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <parent>
@@ -52,7 +52,7 @@ under the License.
     <connection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</connection>
     <developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/syncope.git</developerConnection>
     <url>https://git-wip-us.apache.org/repos/asf?p=syncope.git</url>
-    <tag>syncope-2.0.3</tag>
+    <tag>HEAD</tag>
   </scm>
 
   <issueManagement>

http://git-wip-us.apache.org/repos/asf/syncope/blob/13d77659/standalone/pom.xml
----------------------------------------------------------------------
diff --git a/standalone/pom.xml b/standalone/pom.xml
index 097fd57..102608a 100644
--- a/standalone/pom.xml
+++ b/standalone/pom.xml
@@ -24,7 +24,7 @@ under the License.
   <parent>
     <groupId>org.apache.syncope</groupId>
     <artifactId>syncope</artifactId>
-    <version>2.0.3</version>
+    <version>2.0.4-SNAPSHOT</version>
   </parent>
 
   <name>Apache Syncope Standalone Distribution</name>


[28/50] [abbrv] syncope git commit: Updating Eclipse files for release

Posted by il...@apache.org.
Updating Eclipse files for release


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

Branch: refs/heads/SYNCOPE-808
Commit: f136ec8428fe9f4fb097275a4bdfd1ba4b6303de
Parents: 4e63785
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 14:44:56 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 14:44:56 2017 +0200

----------------------------------------------------------------------
 .../org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF     | 2 +-
 .../org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF      | 2 +-
 .../releng/org.apache.syncope.ide.eclipse.site/category.xml        | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/f136ec84/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
index 2e91104..d9276d3 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.plugin/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: Apache Syncope Eclipse Plugin
 Bundle-SymbolicName: org.apache.syncope.ide.eclipse.plugin;singleton:=true
-Bundle-Version: 2.0.3.qualifier
+Bundle-Version: 2.0.3
 Bundle-Activator: org.apache.syncope.ide.eclipse.plugin.Activator
 Require-Bundle: org.eclipse.ui,
       org.eclipse.core.runtime,

http://git-wip-us.apache.org/repos/asf/syncope/blob/f136ec84/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
----------------------------------------------------------------------
diff --git a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
index bc56547..1808fe6 100644
--- a/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
+++ b/ide/eclipse/bundles/org.apache.syncope.ide.eclipse.tests/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
 Bundle-ManifestVersion: 2
 Bundle-Name: org.apache.syncope.ide.eclipse.tests
 Bundle-SymbolicName: org.apache.syncope.ide.eclipse.tests;singleton:=true
-Bundle-Version: 2.0.3.qualifier
+Bundle-Version: 2.0.3
 Bundle-ActivationPolicy: lazy
 Bundle-Vendor: 
 Bundle-RequiredExecutionEnvironment: J2SE-1.5

http://git-wip-us.apache.org/repos/asf/syncope/blob/f136ec84/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
----------------------------------------------------------------------
diff --git a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
index 35e3e7e..fa8218f 100644
--- a/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
+++ b/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/category.xml
@@ -18,7 +18,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 <site>
-   <bundle id="org.apache.syncope.ide.eclipse.plugin" version="2.0.3.qualifier">
+   <bundle id="org.apache.syncope.ide.eclipse.plugin" version="2.0.3">
       <category name="apachesyncope"/>
    </bundle>
    <category-def name="apachesyncope" label="Apache Syncope">


[45/50] [abbrv] syncope git commit: Antrun plugin to add LICENSE and PlUGIN to nbm archive

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/aa761093/ide/netbeans/src/main/resources/META-INF/LICENSE
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/META-INF/LICENSE b/ide/netbeans/src/main/resources/META-INF/LICENSE
deleted file mode 100644
index f34bfd3..0000000
--- a/ide/netbeans/src/main/resources/META-INF/LICENSE
+++ /dev/null
@@ -1,896 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
-
-==
-
-For Jackson (http://wiki.fasterxml.com/JacksonHome):
-This is licensed under the AL 2.0, see above.
-
-==
-
-For JAX-B (http://jaxb.java.net/):
-This is licensed under the CDDL 1.0:
-
-COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
-
-1. Definitions.
-
-1.1. "Contributor" means each individual or entity that
-creates or contributes to the creation of Modifications.
-
-1.2. "Contributor Version" means the combination of the
-Original Software, prior Modifications used by a
-Contributor (if any), and the Modifications made by that
-particular Contributor.
-
-1.3. "Covered Software" means (a) the Original Software, or
-(b) Modifications, or (c) the combination of files
-containing Original Software with files containing
-Modifications, in each case including portions thereof.
-
-1.4. "Executable" means the Covered Software in any form
-other than Source Code.
-
-1.5. "Initial Developer" means the individual or entity
-that first makes Original Software available under this
-License.
-
-1.6. "Larger Work" means a work which combines Covered
-Software or portions thereof with code not governed by the
-terms of this License.
-
-1.7. "License" means this document.
-
-1.8. "Licensable" means having the right to grant, to the
-maximum extent possible, whether at the time of the initial
-grant or subsequently acquired, any and all of the rights
-conveyed herein.
-
-1.9. "Modifications" means the Source Code and Executable
-form of any of the following:
-
-A. Any file that results from an addition to,
-deletion from or modification of the contents of a
-file containing Original Software or previous
-Modifications;
-
-B. Any new file that contains any part of the
-Original Software or previous Modification; or
-
-C. Any new file that is contributed or otherwise made
-available under the terms of this License.
-
-1.10. "Original Software" means the Source Code and
-Executable form of computer software code that is
-originally released under this License.
-
-1.11. "Patent Claims" means any patent claim(s), now owned
-or hereafter acquired, including without limitation,
-method, process, and apparatus claims, in any patent
-Licensable by grantor.
-
-1.12. "Source Code" means (a) the common form of computer
-software code in which modifications are made and (b)
-associated documentation included in or with such code.
-
-1.13. "You" (or "Your") means an individual or a legal
-entity exercising rights under, and complying with all of
-the terms of, this License. For legal entities, "You"
-includes any entity which controls, is controlled by, or is
-under common control with You. For purposes of this
-definition, "control" means (a) the power, direct or
-indirect, to cause the direction or management of such
-entity, whether by contract or otherwise, or (b) ownership
-of more than fifty percent (50%) of the outstanding shares
-or beneficial ownership of such entity.
-
-2. License Grants.
-
-2.1. The Initial Developer Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and
-subject to third party intellectual property claims, the
-Initial Developer hereby grants You a world-wide,
-royalty-free, non-exclusive license:
-
-(a) under intellectual property rights (other than
-patent or trademark) Licensable by Initial Developer,
-to use, reproduce, modify, display, perform,
-sublicense and distribute the Original Software (or
-portions thereof), with or without Modifications,
-and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making,
-using or selling of Original Software, to make, have
-made, use, practice, sell, and offer for sale, and/or
-otherwise dispose of the Original Software (or
-portions thereof).
-
-(c) The licenses granted in Sections 2.1(a) and (b)
-are effective on the date Initial Developer first
-distributes or otherwise makes the Original Software
-available to a third party under the terms of this
-License.
-
-(d) Notwithstanding Section 2.1(b) above, no patent
-license is granted: (1) for code that You delete from
-the Original Software, or (2) for infringements
-caused by: (i) the modification of the Original
-Software, or (ii) the combination of the Original
-Software with other software or devices.
-
-2.2. Contributor Grant.
-
-Conditioned upon Your compliance with Section 3.1 below and
-subject to third party intellectual property claims, each
-Contributor hereby grants You a world-wide, royalty-free,
-non-exclusive license:
-
-(a) under intellectual property rights (other than
-patent or trademark) Licensable by Contributor to
-use, reproduce, modify, display, perform, sublicense
-and distribute the Modifications created by such
-Contributor (or portions thereof), either on an
-unmodified basis, with other Modifications, as
-Covered Software and/or as part of a Larger Work; and
-
-(b) under Patent Claims infringed by the making,
-using, or selling of Modifications made by that
-Contributor either alone and/or in combination with
-its Contributor Version (or portions of such
-combination), to make, use, sell, offer for sale,
-have made, and/or otherwise dispose of: (1)
-Modifications made by that Contributor (or portions
-thereof); and (2) the combination of Modifications
-made by that Contributor with its Contributor Version
-(or portions of such combination).
-
-(c) The licenses granted in Sections 2.2(a) and
-2.2(b) are effective on the date Contributor first
-distributes or otherwise makes the Modifications
-available to a third party.
-
-(d) Notwithstanding Section 2.2(b) above, no patent
-license is granted: (1) for any code that Contributor
-has deleted from the Contributor Version; (2) for
-infringements caused by: (i) third party
-modifications of Contributor Version, or (ii) the
-combination of Modifications made by that Contributor
-with other software (except as part of the
-Contributor Version) or other devices; or (3) under
-Patent Claims infringed by Covered Software in the
-absence of Modifications made by that Contributor.
-
-3. Distribution Obligations.
-
-3.1. Availability of Source Code.
-
-Any Covered Software that You distribute or otherwise make
-available in Executable form must also be made available in
-Source Code form and that Source Code form must be
-distributed only under the terms of this License. You must
-include a copy of this License with every copy of the
-Source Code form of the Covered Software You distribute or
-otherwise make available. You must inform recipients of any
-such Covered Software in Executable form as to how they can
-obtain such Covered Software in Source Code form in a
-reasonable manner on or through a medium customarily used
-for software exchange.
-
-3.2. Modifications.
-
-The Modifications that You create or to which You
-contribute are governed by the terms of this License. You
-represent that You believe Your Modifications are Your
-original creation(s) and/or You have sufficient rights to
-grant the rights conveyed by this License.
-
-3.3. Required Notices.
-
-You must include a notice in each of Your Modifications
-that identifies You as the Contributor of the Modification.
-You may not remove or alter any copyright, patent or
-trademark notices contained within the Covered Software, or
-any notices of licensing or any descriptive text giving
-attribution to any Contributor or the Initial Developer.
-
-3.4. Application of Additional Terms.
-
-You may not offer or impose any terms on any Covered
-Software in Source Code form that alters or restricts the
-applicable version of this License or the recipients'
-rights hereunder. You may choose to offer, and to charge a
-fee for, warranty, support, indemnity or liability
-obligations to one or more recipients of Covered Software.
-However, you may do so only on Your own behalf, and not on
-behalf of the Initial Developer or any Contributor. You
-must make it absolutely clear that any such warranty,
-support, indemnity or liability obligation is offered by
-You alone, and You hereby agree to indemnify the Initial
-Developer and every Contributor for any liability incurred
-by the Initial Developer or such Contributor as a result of
-warranty, support, indemnity or liability terms You offer.
-
-3.5. Distribution of Executable Versions.
-
-You may distribute the Executable form of the Covered
-Software under the terms of this License or under the terms
-of a license of Your choice, which may contain terms
-different from this License, provided that You are in
-compliance with the terms of this License and that the
-license for the Executable form does not attempt to limit
-or alter the recipient's rights in the Source Code form
-from the rights set forth in this License. If You
-distribute the Covered Software in Executable form under a
-different license, You must make it absolutely clear that
-any terms which differ from this License are offered by You
-alone, not by the Initial Developer or Contributor. You
-hereby agree to indemnify the Initial Developer and every
-Contributor for any liability incurred by the Initial
-Developer or such Contributor as a result of any such terms
-You offer.
-
-3.6. Larger Works.
-
-You may create a Larger Work by combining Covered Software
-with other code not governed by the terms of this License
-and distribute the Larger Work as a single product. In such
-a case, You must make sure the requirements of this License
-are fulfilled for the Covered Software.
-
-4. Versions of the License.
-
-4.1. New Versions.
-
-Sun Microsystems, Inc. is the initial license steward and
-may publish revised and/or new versions of this License
-from time to time. Each version will be given a
-distinguishing version number. Except as provided in
-Section 4.3, no one other than the license steward has the
-right to modify this License.
-
-4.2. Effect of New Versions.
-
-You may always continue to use, distribute or otherwise
-make the Covered Software available under the terms of the
-version of the License under which You originally received
-the Covered Software. If the Initial Developer includes a
-notice in the Original Software prohibiting it from being
-distributed or otherwise made available under any
-subsequent version of the License, You must distribute and
-make the Covered Software available under the terms of the
-version of the License under which You originally received
-the Covered Software. Otherwise, You may also choose to
-use, distribute or otherwise make the Covered Software
-available under the terms of any subsequent version of the
-License published by the license steward.
-
-4.3. Modified Versions.
-
-When You are an Initial Developer and You want to create a
-new license for Your Original Software, You may create and
-use a modified version of this License if You: (a) rename
-the license and remove any references to the name of the
-license steward (except to note that the license differs
-from this License); and (b) otherwise make it clear that
-the license contains terms which differ from this License.
-
-5. DISCLAIMER OF WARRANTY.
-
-COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
-BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
-SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
-PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
-COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
-INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
-ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
-WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
-ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
-DISCLAIMER.
-
-6. TERMINATION.
-
-6.1. This License and the rights granted hereunder will
-terminate automatically if You fail to comply with terms
-herein and fail to cure such breach within 30 days of
-becoming aware of the breach. Provisions which, by their
-nature, must remain in effect beyond the termination of
-this License shall survive.
-
-6.2. If You assert a patent infringement claim (excluding
-declaratory judgment actions) against Initial Developer or
-a Contributor (the Initial Developer or Contributor against
-whom You assert such claim is referred to as "Participant")
-alleging that the Participant Software (meaning the
-Contributor Version where the Participant is a Contributor
-or the Original Software where the Participant is the
-Initial Developer) directly or indirectly infringes any
-patent, then any and all rights granted directly or
-indirectly to You by such Participant, the Initial
-Developer (if the Initial Developer is not the Participant)
-and all Contributors under Sections 2.1 and/or 2.2 of this
-License shall, upon 60 days notice from Participant
-terminate prospectively and automatically at the expiration
-of such 60 day notice period, unless if within such 60 day
-period You withdraw Your claim with respect to the
-Participant Software against such Participant either
-unilaterally or pursuant to a written agreement with
-Participant.
-
-6.3. In the event of termination under Sections 6.1 or 6.2
-above, all end user licenses that have been validly granted
-by You or any distributor hereunder prior to termination
-(excluding licenses granted to You by any distributor)
-shall survive termination.
-
-7. LIMITATION OF LIABILITY.
-
-UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
-INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
-COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
-LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
-CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
-LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
-STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
-INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
-INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
-APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
-NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
-CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
-APPLY TO YOU.
-
-8. U.S. GOVERNMENT END USERS.
-
-The Covered Software is a "commercial item," as that term is
-defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
-computer software" (as that term is defined at 48 C.F.R. $
-252.227-7014(a)(1)) and "commercial computer software
-documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
-1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
-through 227.7202-4 (June 1995), all U.S. Government End Users
-acquire Covered Software with only those rights set forth herein.
-This U.S. Government Rights clause is in lieu of, and supersedes,
-any other FAR, DFAR, or other clause or provision that addresses
-Government rights in computer software under this License.
-
-9. MISCELLANEOUS.
-
-This License represents the complete agreement concerning subject
-matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the
-extent necessary to make it enforceable. This License shall be
-governed by the law of the jurisdiction specified in a notice
-contained within the Original Software (except to the extent
-applicable law, if any, provides otherwise), excluding such
-jurisdiction's conflict-of-law provisions. Any litigation
-relating to this License shall be subject to the jurisdiction of
-the courts located in the jurisdiction and venue specified in a
-notice contained within the Original Software, with the losing
-party responsible for costs, including, without limitation, court
-costs and reasonable attorneys' fees and expenses. The
-application of the United Nations Convention on Contracts for the
-International Sale of Goods is expressly excluded. Any law or
-regulation which provides that the language of a contract shall
-be construed against the drafter shall not apply to this License.
-You agree that You alone are responsible for compliance with the
-United States export administration regulations (and the export
-control laws and regulation of any other countries) when You use,
-distribute or otherwise make available any Covered Software.
-
-10. RESPONSIBILITY FOR CLAIMS.
-
-As between Initial Developer and the Contributors, each party is
-responsible for claims and damages arising, directly or
-indirectly, out of its utilization of rights under this License
-and You agree to work with Initial Developer and Contributors to
-distribute such responsibility on an equitable basis. Nothing
-herein is intended or shall be deemed to constitute any admission
-of liability.
-
-==
-
-For javax.annotation-api (https://jcp.org/en/jsr/detail?id=250):
-This is licensed under the CDDL 1.0, see above.
-
-==
-
-For javax.ws.rs-api (https://jax-rs-spec.java.net/):
-This is licensed under the CDDL 1.0, see above.
-
-==
-
-For Joda Time (http://www.joda.org/joda-time/):
-This is licensed under the AL 2.0, see above.
-
-==
-
-For StAX2 API (http://wiki.fasterxml.com/WoodstoxStax2):
-This is licensed under the BSD license:
-
-Redistribution and use in source and binary forms, with or without 
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this 
-list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice, 
-this list of conditions and the following disclaimer in the documentation 
-and/or other materials provided with the distribution.
-
-3. Neither the name of the copyright holder nor the names of its contributors 
-may be used to endorse or promote products derived from this software without 
-specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-==
-
-For Woodstox (http://wiki.fasterxml.com/WoodstoxHome):
-This is licensed under the AL 2.0, see above.
-
-==
-
-For Simple Logging Facade for Java - SLF4J (http://www.slf4j.org/):
-This is licensed under the MIT license:
-
- Permission is hereby granted, free  of charge, to any person obtaining
- a  copy  of this  software  and  associated  documentation files  (the
- "Software"), to  deal in  the Software without  restriction, including
- without limitation  the rights to  use, copy, modify,  merge, publish,
- distribute,  sublicense, and/or sell  copies of  the Software,  and to
- permit persons to whom the Software  is furnished to do so, subject to
- the following conditions:
- 
- The  above  copyright  notice  and  this permission  notice  shall  be
- included in all copies or substantial portions of the Software.
- 
- THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
- EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
- MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-==
-
-For Jsoup (https://jsoup.org/):
-This is licensed under the MIT license, see above.
-
-==
-
-For Eclipse Equinox (http://projects.eclipse.org/projects/rt.equinox):
-This is licensed under the EPL 1.0:
-
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-   distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-    i) changes to the Program, and
-   ii) additions to the Program;
-
-   where such changes and/or additions to the Program originate from and are
-   distributed by that particular Contributor. A Contribution 'originates'
-   from a Contributor if it was added to the Program by such Contributor
-   itself or anyone acting on such Contributor's behalf. Contributions do not
-   include additions to the Program which: (i) are separate modules of
-   software distributed in conjunction with the Program under their own
-   license agreement, and (ii) are not derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this
-Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-2. GRANT OF RIGHTS
-  a) Subject to the terms of this Agreement, each Contributor hereby grants
-     Recipient a non-exclusive, worldwide, royalty-free copyright license to
-     reproduce, prepare derivative works of, publicly display, publicly
-     perform, distribute and sublicense the Contribution of such Contributor,
-     if any, and such derivative works, in source code and object code form.
-  b) Subject to the terms of this Agreement, each Contributor hereby grants
-     Recipient a non-exclusive, worldwide, royalty-free patent license under
-     Licensed Patents to make, use, sell, offer to sell, import and otherwise
-     transfer the Contribution of such Contributor, if any, in source code and
-     object code form. This patent license shall apply to the combination of
-     the Contribution and the Program if, at the time the Contribution is
-     added by the Contributor, such addition of the Contribution causes such
-     combination to be covered by the Licensed Patents. The patent license
-     shall not apply to any other combinations which include the Contribution.
-     No hardware per se is licensed hereunder.
-  c) Recipient understands that although each Contributor grants the licenses
-     to its Contributions set forth herein, no assurances are provided by any
-     Contributor that the Program does not infringe the patent or other
-     intellectual property rights of any other entity. Each Contributor
-     disclaims any liability to Recipient for claims brought by any other
-     entity based on infringement of intellectual property rights or
-     otherwise. As a condition to exercising the rights and licenses granted
-     hereunder, each Recipient hereby assumes sole responsibility to secure
-     any other intellectual property rights needed, if any. For example, if a
-     third party patent license is required to allow Recipient to distribute
-     the Program, it is Recipient's responsibility to acquire that license
-     before distributing the Program.
-  d) Each Contributor represents that to its knowledge it has sufficient
-     copyright rights in its Contribution, if any, to grant the copyright
-     license set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under
-its own license agreement, provided that:
-
-  a) it complies with the terms and conditions of this Agreement; and
-  b) its license agreement:
-      i) effectively disclaims on behalf of all Contributors all warranties
-         and conditions, express and implied, including warranties or
-         conditions of title and non-infringement, and implied warranties or
-         conditions of merchantability and fitness for a particular purpose;
-     ii) effectively excludes on behalf of all Contributors all liability for
-         damages, including direct, indirect, special, incidental and
-         consequential damages, such as lost profits;
-    iii) states that any provisions which differ from this Agreement are
-         offered by that Contributor alone and not by any other party; and
-     iv) states that source code for the Program is available from such
-         Contributor, and informs licensees how to obtain it in a reasonable
-         manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-  a) it must be made available under this Agreement; and
-  b) a copy of this Agreement must be included with each copy of the Program.
-     Contributors may not remove or alter any copyright notices contained
-     within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution,
-if
-any, in a manner that reasonably allows subsequent Recipients to identify the
-originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor who
-includes the Program in a commercial product offering should do so in a manner
-which does not create potential liability for other Contributors. Therefore,
-if a Contributor includes the Program in a commercial product offering, such
-Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses,
-damages and costs (collectively "Losses") arising from claims, lawsuits and
-other legal actions brought by a third party against the Indemnified
-Contributor to the extent caused by the acts or omissions of such Commercial
-Contributor in connection with its distribution of the Program in a commercial
-product offering. The obligations in this section do not apply to any claims
-or Losses relating to any actual or alleged intellectual property
-infringement. In order to qualify, an Indemnified Contributor must:
-a) promptly notify the Commercial Contributor in writing of such claim, and
-b) allow the Commercial Contributor to control, and cooperate with the
-Commercial Contributor in, the defense and any related settlement
-negotiations. The Indemnified Contributor may participate in any such claim at
-its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If
-that Commercial Contributor then makes performance claims, or offers
-warranties related to Product X, those performance claims and warranties are
-such Commercial Contributor's responsibility alone. Under this section, the
-Commercial Contributor would have to defend claims against the other
-Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
-IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
-Recipient is solely responsible for determining the appropriateness of using
-and distributing the Program and assumes all risks associated with its
-exercise of rights under this Agreement , including but not limited to the
-risks and costs of program errors, compliance with applicable laws, damage to
-or loss of data, programs or equipment, and unavailability or interruption of
-operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION
-LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
-EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of the
-remainder of the terms of this Agreement, and without further action by the
-parties hereto, such provision shall be reformed to the minimum extent
-necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware)
-infringes such Recipient's patent(s), then such Recipient's rights granted
-under Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and does
-not cure such failure in a reasonable period of time after becoming aware of
-such noncompliance. If all Recipient's rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as
-reasonably practicable. However, Recipient's obligations under this Agreement
-and any licenses granted by Recipient relating to the Program shall continue
-and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in
-order to avoid inconsistency the Agreement is copyrighted and may only be
-modified in the following manner. The Agreement Steward reserves the right to
-publish new versions (including revisions) of this Agreement from time to
-time. No one other than the Agreement Steward has the right to modify this
-Agreement. The Eclipse Foundation is the initial Agreement Steward. The
-Eclipse Foundation may assign the responsibility to serve as the Agreement
-Steward to a suitable separate entity. Each new version of the Agreement will
-be given a distinguishing version number. The Program (including
-Contributions) may always be distributed subject to the version of the
-Agreement under which it was received. In addition, after a new version of the
-Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly
-stated in Sections 2(a) and 2(b) above, Recipient receives no rights or
-licenses to the intellectual property of any Contributor under this Agreement,
-whether expressly, by implication, estoppel or otherwise. All rights in the
-Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to this
-Agreement will bring a legal action under this Agreement more than one year
-after the cause of action arose. Each party waives its rights to a jury trial in
-any resulting litigation.
-
-==
-
-For Eclipse e4 (https://www.eclipse.org/e4/):
-This is licensed under the EPL 1.0, see above.
-
-==
-
-For Eclipse EMF (https://projects.eclipse.org/projects/modeling.emf.emf):
-This is licensed under the EPL 1.0, see above.
-
-==
-
-For Eclipse SWT (https://projects.eclipse.org/projects/eclipse.platform.swt):
-This is licensed under the EPL 1.0, see above.

http://git-wip-us.apache.org/repos/asf/syncope/blob/aa761093/ide/netbeans/src/main/resources/META-INF/NOTICE
----------------------------------------------------------------------
diff --git a/ide/netbeans/src/main/resources/META-INF/NOTICE b/ide/netbeans/src/main/resources/META-INF/NOTICE
deleted file mode 100644
index 34ffa8c..0000000
--- a/ide/netbeans/src/main/resources/META-INF/NOTICE
+++ /dev/null
@@ -1,80 +0,0 @@
-Apache Syncope
-Copyright 2012-2016 The Apache Software Foundation
-
-This product includes software developed by:
-The Apache Software Foundation (http://www.apache.org/).
-
-The following copyright notice(s) were affixed to portions of this code
-with which this file is now or was at one time distributed.
-
-==
-
-This product includes software developed by the Jackson project.
-
-==
-
-This product includes software developed by the JAXB project.
-Copyright (c) 2013-2016 The JAXB project.
-
-==
-
-This product includs software developed by Oracle.
-Copyright (c) 2012-2013 Oracle and/or its affiliates. All rights reserved.
-
-==
-
-This product includes software developed by the JAX-RS project.
-Copyright (c) 2014, Oracle Corporation and/or its affiliates. All rights reserved.
-
-==
-
-This product includes software developed by the Joda Time project.
-Copyright (c) 2002-2016 Joda.org. All Rights Reserved.
-
-==
-
-This product includes software developed by the Stax 2 Extension API Project.
-
-==
-
-This product includes software developed by the Woodstox Project.
-
-==
-
-This products includes software developed by the Simple Logging Facade for Java (SLF4J) project.
-Copyright (c) 2004-2016 QOS.ch.
-
-==
-
-This product includes software developed by the Web Services Description Language for Java project.
-Copyright (c) Dice.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Eclipse Equinox project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Eclipse e4 project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Eclipse EMF project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved
-
-==
-
-This product includes software developed by the Eclipse SWT project.
-Copyright (c) 2016 The Eclipse Foundation.
-All Rights Reserved.
-
-==
-
-This product includes software developed by the Jsoup project.
-Copyright (c) 2009 - 2016 Jonathan Hedley (jonathan@hedley.net)

http://git-wip-us.apache.org/repos/asf/syncope/blob/aa761093/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 3f39f2c..ec44eba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1872,6 +1872,13 @@ under the License.
           <artifactId>exec-maven-plugin</artifactId>
           <version>1.6.0</version>
         </plugin>
+
+        <plugin>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>nbm-maven-plugin</artifactId>
+          <version>3.13</version>
+        </plugin>
+
       </plugins>
     </pluginManagement>
 


[33/50] [abbrv] syncope git commit: Adjusting release date

Posted by il...@apache.org.
Adjusting release date


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

Branch: refs/heads/SYNCOPE-808
Commit: 362c6ab259b1aa8d5a8ab15646c8b26b8bd1e6e1
Parents: 09069e5
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Fri Apr 14 20:54:56 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Fri Apr 14 20:54:56 2017 +0200

----------------------------------------------------------------------
 src/site/xdoc/downloads.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/362c6ab2/src/site/xdoc/downloads.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/downloads.xml b/src/site/xdoc/downloads.xml
index eac2841..09b7ea2 100644
--- a/src/site/xdoc/downloads.xml
+++ b/src/site/xdoc/downloads.xml
@@ -49,7 +49,7 @@ under the License.
       </div>
 
       <subsection name="2.0.3 Jazz">
-        <p>Release date: April 14th 2017</p>
+        <p>Release date: April 15th 2017</p>
         <p>
           <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz">Release notes</a>
         </p>


[13/50] [abbrv] syncope git commit: [SYNCOPE-1061] Both POST and Redirect binding profiles are now supported; if both are available for a given IdP, the one to be used is configurable, with POST predefined

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2Signer.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2Signer.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2Signer.java
deleted file mode 100644
index cf30aa0..0000000
--- a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2Signer.java
+++ /dev/null
@@ -1,98 +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.core.logic.saml2;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.nio.charset.StandardCharsets;
-import javax.xml.transform.TransformerException;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.cxf.rs.security.saml.DeflateEncoderDecoder;
-import org.apache.syncope.core.logic.init.SAML2SPLoader;
-import org.apache.wss4j.common.ext.WSSecurityException;
-import org.apache.wss4j.common.saml.OpenSAMLUtil;
-import org.opensaml.saml.common.SignableSAMLObject;
-import org.opensaml.saml.saml2.core.RequestAbstractType;
-import org.opensaml.security.SecurityException;
-import org.opensaml.xmlsec.keyinfo.KeyInfoGenerator;
-import org.opensaml.xmlsec.keyinfo.impl.X509KeyInfoGeneratorFactory;
-import org.opensaml.xmlsec.signature.Signature;
-import org.opensaml.xmlsec.signature.support.SignatureConstants;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class SAML2Signer {
-
-    @Autowired
-    private SAML2SPLoader loader;
-
-    @Autowired
-    private SAML2ReaderWriter saml2rw;
-
-    private KeyInfoGenerator keyInfoGenerator;
-
-    private String signatureAlgorithm;
-
-    public void init() {
-        X509KeyInfoGeneratorFactory keyInfoGeneratorFactory = new X509KeyInfoGeneratorFactory();
-        keyInfoGeneratorFactory.setEmitEntityCertificate(true);
-        keyInfoGenerator = keyInfoGeneratorFactory.newInstance();
-
-        signatureAlgorithm = SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1;
-        String pubKeyAlgo = loader.getCredential().getPublicKey().getAlgorithm();
-        if (pubKeyAlgo.equalsIgnoreCase("DSA")) {
-            signatureAlgorithm = SignatureConstants.ALGO_ID_SIGNATURE_DSA_SHA1;
-        }
-    }
-
-    public String signAndEncode(final RequestAbstractType request, final boolean useDeflateEncoding)
-            throws SecurityException, WSSecurityException, TransformerException, IOException {
-
-        // 1. sign request
-        Signature signature = OpenSAMLUtil.buildSignature();
-        signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
-        signature.setSignatureAlgorithm(signatureAlgorithm);
-        signature.setSigningCredential(loader.getCredential());
-        signature.setKeyInfo(keyInfoGenerator.generate(loader.getCredential()));
-
-        SignableSAMLObject signableObject = (SignableSAMLObject) request;
-        signableObject.setSignature(signature);
-        signableObject.releaseDOM();
-        signableObject.releaseChildrenDOM(true);
-
-        // 2. serialize and encode request
-        StringWriter writer = new StringWriter();
-        saml2rw.write(writer, request, true);
-        writer.close();
-
-        String requestMessage = writer.toString();
-        byte[] deflatedBytes;
-        // not correct according to the spec but required by some IdPs.
-        if (useDeflateEncoding) {
-            deflatedBytes = new DeflateEncoderDecoder().
-                    deflateToken(requestMessage.getBytes(StandardCharsets.UTF_8));
-        } else {
-            deflatedBytes = requestMessage.getBytes(StandardCharsets.UTF_8);
-        }
-
-        return Base64.encodeBase64String(deflatedBytes);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAMLSPCallbackHandler.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAMLSPCallbackHandler.java b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAMLSPCallbackHandler.java
new file mode 100644
index 0000000..33badc4
--- /dev/null
+++ b/ext/saml2sp/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAMLSPCallbackHandler.java
@@ -0,0 +1,45 @@
+/*
+ * 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.core.logic.saml2;
+
+import java.io.IOException;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.security.auth.callback.UnsupportedCallbackException;
+import org.apache.wss4j.common.ext.WSPasswordCallback;
+
+public class SAMLSPCallbackHandler implements CallbackHandler {
+
+    private final String keyPass;
+
+    public SAMLSPCallbackHandler(final String keyPass) {
+        this.keyPass = keyPass;
+    }
+
+    @Override
+    public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+        for (Callback callback : callbacks) {
+            if (callback instanceof WSPasswordCallback) {
+                WSPasswordCallback wspc = (WSPasswordCallback) callback;
+                wspc.setPassword(keyPass);
+            }
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/persistence-api/pom.xml
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-api/pom.xml b/ext/saml2sp/persistence-api/pom.xml
index c6b104e..057d79f 100644
--- a/ext/saml2sp/persistence-api/pom.xml
+++ b/ext/saml2sp/persistence-api/pom.xml
@@ -43,6 +43,11 @@ under the License.
       <artifactId>syncope-core-persistence-api</artifactId>
       <version>${project.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.syncope.ext.saml2sp</groupId>
+      <artifactId>syncope-ext-saml2sp-common-lib</artifactId>
+      <version>${project.version}</version>
+    </dependency>
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java b/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
index a71579f..b6fc4c3 100644
--- a/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
+++ b/ext/saml2sp/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/entity/SAML2IdP.java
@@ -19,6 +19,7 @@
 package org.apache.syncope.core.persistence.api.entity;
 
 import java.util.List;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 
 public interface SAML2IdP extends Entity {
@@ -39,6 +40,10 @@ public interface SAML2IdP extends Entity {
 
     void setUseDeflateEncoding(boolean useDeflateEncoding);
 
+    SAML2BindingType getBindingType();
+
+    void setBindingType(SAML2BindingType bindingType);
+
     MappingItem getConnObjectKeyItem();
 
     void setConnObjectKeyItem(MappingItem item);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java b/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
index 879b3e5..1a41bbc 100644
--- a/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
+++ b/ext/saml2sp/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/entity/JPASAML2IdP.java
@@ -34,6 +34,7 @@ import javax.validation.constraints.Min;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.ArrayUtils;
+import org.apache.syncope.common.lib.types.SAML2BindingType;
 import org.apache.syncope.core.persistence.api.entity.SAML2IdP;
 import org.apache.syncope.core.persistence.api.entity.resource.MappingItem;
 import org.apache.syncope.core.persistence.jpa.entity.resource.JPAMappingItem;
@@ -67,6 +68,9 @@ public class JPASAML2IdP extends AbstractGeneratedKeyEntity implements SAML2IdP
     @Column(nullable = false)
     private Integer useDeflateEncoding;
 
+    @Column(nullable = false)
+    private SAML2BindingType bindingType;
+
     @Override
     public String getEntityID() {
         return entityID;
@@ -108,6 +112,16 @@ public class JPASAML2IdP extends AbstractGeneratedKeyEntity implements SAML2IdP
     }
 
     @Override
+    public SAML2BindingType getBindingType() {
+        return bindingType;
+    }
+
+    @Override
+    public void setBindingType(final SAML2BindingType bindingType) {
+        this.bindingType = bindingType;
+    }
+
+    @Override
     public boolean add(final MappingItem item) {
         checkType(item, JPAMappingItem.class);
         return mappingItems.contains((JPAMappingItem) item) || mappingItems.add((JPAMappingItem) item);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
index 351c487..5eba217 100644
--- a/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
+++ b/ext/saml2sp/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/SAML2IdPDataBinderImpl.java
@@ -172,6 +172,7 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
         idp.setName(idpTO.getName());
         idp.setMetadata(Base64.decode(idpTO.getMetadata()));
         idp.setUseDeflateEncoding(idpTO.isUseDeflateEncoding());
+        idp.setBindingType(idpTO.getBindingType());
 
         idp.getMappingItems().clear();
         AnyTypeClassTO allowedSchemas = new AnyTypeClassTO();
@@ -214,6 +215,7 @@ public class SAML2IdPDataBinderImpl implements SAML2IdPDataBinder {
         idpTO.setEntityID(idp.getEntityID());
         idpTO.setName(idp.getName());
         idpTO.setUseDeflateEncoding(idp.isUseDeflateEncoding());
+        idpTO.setBindingType(idp.getBindingType());
         idpTO.setMetadata(Base64.encode(idp.getMetadata()));
 
         populateMappingTO(idp, idpTO);

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SPService.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SPService.java b/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SPService.java
index f9c2cf4..f3d420c 100644
--- a/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SPService.java
+++ b/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2SPService.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.common.rest.api.service;
 
-import java.io.InputStream;
+import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
@@ -28,6 +28,7 @@ import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.syncope.common.lib.to.SAML2RequestTO;
 import org.apache.syncope.common.lib.to.SAML2LoginResponseTO;
+import org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO;
 
 /**
  * REST operations for the provided SAML 2.0 Service Provider.
@@ -39,11 +40,12 @@ public interface SAML2SPService extends JAXRSService {
      * Returns the XML metadata for the provided SAML 2.0 Service Provider.
      *
      * @param spEntityID SAML 2.0 SP entity ID.
+     * @param urlContext SAML 2.0 SP agent URL context
      * @return XML metadata for the provided SAML 2.0 Service Provider
      */
     @GET
     @Produces({ MediaType.APPLICATION_XML })
-    Response getMetadata(@QueryParam("spEntityID") String spEntityID);
+    Response getMetadata(@QueryParam("spEntityID") String spEntityID, @QueryParam("urlContext") String urlContext);
 
     /**
      * Generates SAML 2.0 authentication request for the IdP matching the provided entity ID.
@@ -62,13 +64,14 @@ public interface SAML2SPService extends JAXRSService {
     /**
      * Validates the received SAML 2.0 authentication response and creates JWT for the matching user, if found.
      *
-     * @param response SAML 2.0 authentication response
+     * @param response SAML response and relay state
      * @return JWT for the matching user plus attributes returned in the response
      */
     @POST
     @Path("loginResponse")
+    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-    SAML2LoginResponseTO validateLoginResponse(InputStream response);
+    SAML2LoginResponseTO validateLoginResponse(SAML2ReceivedResponseTO response);
 
     /**
      * Generates SAML 2.0 logout request for the IdP matching the requesting access token.
@@ -84,10 +87,11 @@ public interface SAML2SPService extends JAXRSService {
     /**
      * Validates the received SAML 2.0 logout response.
      *
-     * @param response SAML 2.0 logout response
+     * @param response SAML response and relay state
      */
     @POST
     @Path("logoutResponse")
+    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
     @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-    void validateLogoutResponse(InputStream response);
+    void validateLogoutResponse(SAML2ReceivedResponseTO response);
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPServiceImpl.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPServiceImpl.java b/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPServiceImpl.java
index d9d3dc6..191081f 100644
--- a/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPServiceImpl.java
+++ b/ext/saml2sp/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/service/SAML2SPServiceImpl.java
@@ -19,7 +19,6 @@
 package org.apache.syncope.core.rest.cxf.service;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.OutputStream;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
@@ -27,6 +26,7 @@ import javax.ws.rs.core.StreamingOutput;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.syncope.common.lib.to.SAML2RequestTO;
 import org.apache.syncope.common.lib.to.SAML2LoginResponseTO;
+import org.apache.syncope.common.lib.to.SAML2ReceivedResponseTO;
 import org.apache.syncope.common.rest.api.RESTHeaders;
 import org.apache.syncope.common.rest.api.service.SAML2SPService;
 import org.apache.syncope.core.logic.SAML2SPLogic;
@@ -40,12 +40,12 @@ public class SAML2SPServiceImpl extends AbstractServiceImpl implements SAML2SPSe
     private SAML2SPLogic logic;
 
     @Override
-    public Response getMetadata(final String spEntityID) {
+    public Response getMetadata(final String spEntityID, final String urlContext) {
         StreamingOutput sout = new StreamingOutput() {
 
             @Override
             public void write(final OutputStream os) throws IOException {
-                logic.getMetadata(StringUtils.appendIfMissing(spEntityID, "/"), os);
+                logic.getMetadata(StringUtils.appendIfMissing(spEntityID, "/"), urlContext, os);
             }
         };
         return Response.ok(sout).
@@ -61,8 +61,8 @@ public class SAML2SPServiceImpl extends AbstractServiceImpl implements SAML2SPSe
     }
 
     @Override
-    public SAML2LoginResponseTO validateLoginResponse(final InputStream response) {
-        return logic.validateLoginResponse(response);
+    public SAML2LoginResponseTO validateLoginResponse(final SAML2ReceivedResponseTO reponse) {
+        return logic.validateLoginResponse(reponse);
     }
 
     @Override
@@ -73,10 +73,8 @@ public class SAML2SPServiceImpl extends AbstractServiceImpl implements SAML2SPSe
     }
 
     @Override
-    public void validateLogoutResponse(final InputStream response) {
-        logic.validateLogoutResponse(
-                messageContext.getHttpHeaders().getHeaderString(RESTHeaders.TOKEN),
-                response);
+    public void validateLogoutResponse(final SAML2ReceivedResponseTO response) {
+        logic.validateLogoutResponse(messageContext.getHttpHeaders().getHeaderString(RESTHeaders.TOKEN), response);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/fit/core-reference/src/test/java/org/apache/syncope/fit/SAML2SPDetector.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/SAML2SPDetector.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/SAML2SPDetector.java
index 88c4473..52604c1 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/SAML2SPDetector.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/SAML2SPDetector.java
@@ -39,7 +39,7 @@ public class SAML2SPDetector {
                             setContentType(SyncopeClientFactoryBean.ContentType.XML).
                             create(new AnonymousAuthenticationHandler(
                                     AbstractITCase.ANONYMOUS_UNAME, AbstractITCase.ANONYMOUS_KEY)).
-                            getService(SAML2SPService.class).getMetadata("http://localhost:9080/syncope");
+                            getService(SAML2SPService.class).getMetadata("http://localhost:9080/syncope", "saml2sp");
                     ENABLED = true;
                 } catch (Exception e) {
                     // ignore

http://git-wip-us.apache.org/repos/asf/syncope/blob/8be5d4d3/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
index 5e1647b..ece9e6c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/SAML2ITCase.java
@@ -100,7 +100,7 @@ public class SAML2ITCase extends AbstractITCase {
         try {
             SAML2SPService service = anonymous.getService(SAML2SPService.class);
             WebClient.client(service).accept(MediaType.APPLICATION_XML_TYPE);
-            Response response = service.getMetadata(ADDRESS);
+            Response response = service.getMetadata(ADDRESS, "saml2sp");
             assertNotNull(response);
 
             Document responseDoc = StaxUtils.read(


[19/50] [abbrv] syncope git commit: Other small fixes

Posted by il...@apache.org.
Other small fixes


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

Branch: refs/heads/SYNCOPE-808
Commit: 9b87a2e2e9f87a148cd37d30710d9e5b622d57ba
Parents: 911eeda
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Thu Apr 13 13:47:21 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Thu Apr 13 13:47:21 2017 +0200

----------------------------------------------------------------------
 .../resources/archetype-resources/console/pom.xml |  3 ---
 .../resources/archetype-resources/enduser/pom.xml |  6 +++---
 .../resources/AbstractWorkflowResource.java       |  2 +-
 fit/console-reference/pom.xml                     | 18 +++++++++++++-----
 .../src/main/resources/url-config.js              |  2 +-
 5 files changed, 18 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/9b87a2e2/archetype/src/main/resources/archetype-resources/console/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/console/pom.xml b/archetype/src/main/resources/archetype-resources/console/pom.xml
index 81fc817..465f61c 100644
--- a/archetype/src/main/resources/archetype-resources/console/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/console/pom.xml
@@ -187,9 +187,6 @@ ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&q
                     <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
                              token="ORYX.Editor.createByUrl(modelUrl);"
                              value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl(modelUrl);" />
-                    <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
-                             token="ORYX.Editor.createByUrl = function(modelUrl){"
-                             value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />               
                     <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
                              token="window.location.href = &quot;./&quot;;"
                              value="window.close();"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/9b87a2e2/archetype/src/main/resources/archetype-resources/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/enduser/pom.xml b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
index 4a4edab..35d7aa7 100644
--- a/archetype/src/main/resources/archetype-resources/enduser/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
@@ -247,9 +247,9 @@ under the License.
                           todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
                           overwrite="true"/>
                     
-                    <copy file="${project.build.directory}/test-classes/customForm" 
-                                todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
-                                overwrite="true"/>
+                    <copy file="${project.build.directory}/test-classes/customForm..json" 
+                          todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
+                          overwrite="true"/>
                   </target>
                 </configuration>
                 <goals>

http://git-wip-us.apache.org/repos/asf/syncope/blob/9b87a2e2/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java b/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
index 53bc669..2998644 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/resources/AbstractWorkflowResource.java
@@ -40,7 +40,7 @@ abstract class AbstractWorkflowResource extends AbstractResource {
         final StringValue modelId =
                 attributes.getRequest().getQueryParameters().getParameterValue(Constants.MODEL_ID_PARAM);
 
-        WorkflowDefinitionTO workflowDefinition = modelId == null ? null
+        WorkflowDefinitionTO workflowDefinition = modelId == null || modelId.isNull() ? null
                 : IterableUtils.find(restClient.getDefinitions(), new Predicate<WorkflowDefinitionTO>() {
 
                     @Override

http://git-wip-us.apache.org/repos/asf/syncope/blob/9b87a2e2/fit/console-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml
index ec549e6..b5ae489 100644
--- a/fit/console-reference/pom.xml
+++ b/fit/console-reference/pom.xml
@@ -155,11 +155,19 @@ under the License.
                 <copy todir="${activiti-modeler.directory}/editor-app">
                   <fileset dir="${project.build.directory}/activiti-webapp-explorer2/editor-app" />                  
                 </copy>
-                <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" match="ORYX.CONFIG.ROOT_PATH =.*&quot;editor/&quot;; //TODO: Remove last slash!!" replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&quot;;" byline="true" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="new Ajax.Request(ACTIVITI.CONFIG.contextRoot + '/editor/stencilset?version=' + Date.now(), {" value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) + &quot;/activiti-modeler/stencilset.json&quot;, {" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl(modelUrl);" value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl(modelUrl);" />
-                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl = function(modelUrl){" value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />                
-                <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js" token="window.location.href = &quot;./&quot;;" value="window.close();" />
+                <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
+                               match="ORYX.CONFIG.ROOT_PATH =.*&quot;editor/&quot;; //TODO: Remove last slash!!"
+                               replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + &quot;/activiti-modeler/editor-app/editor/&quot;;"
+                               byline="true" />
+                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
+                         token="new Ajax.Request(ACTIVITI.CONFIG.contextRoot + '/editor/stencilset?version=' + Date.now(), {"
+                         value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) + &quot;/activiti-modeler/stencilset.json&quot;, {" />
+                <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
+                         token="ORYX.Editor.createByUrl = function(modelUrl){"
+                         value="modelUrl = BASE_PATH + &quot;/workflowDefGET?modelId=&quot; + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />                
+                <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
+                         token="window.location.href = &quot;./&quot;;"
+                         value="window.close();" />
                                                
                 <copy file="${basedir}/src/main/resources/url-config.js" todir="${activiti-modeler.directory}/editor-app/configuration" overwrite="true" />
                 <copy file="${basedir}/src/main/resources/save-model.html" todir="${activiti-modeler.directory}/editor-app/popups" overwrite="true" />

http://git-wip-us.apache.org/repos/asf/syncope/blob/9b87a2e2/fit/console-reference/src/main/resources/url-config.js
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/url-config.js b/fit/console-reference/src/main/resources/url-config.js
index 8019a6e..cb22a08 100644
--- a/fit/console-reference/src/main/resources/url-config.js
+++ b/fit/console-reference/src/main/resources/url-config.js
@@ -29,6 +29,6 @@ KISBPM.URL = {
   },
   putModel: function (modelId) {
     return window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) 
-            + "/workflowDefPUT?modelId" + modelId;
+            + "/workflowDefPUT?modelId=" + modelId;
   }
 };


[03/50] [abbrv] syncope git commit: [SYNCOPE-1060] missing fix about dates on membership attributes on self registration

Posted by il...@apache.org.
[SYNCOPE-1060] missing fix about dates on membership attributes on self registration


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

Branch: refs/heads/SYNCOPE-808
Commit: be1eb72ba507ea0f74c983ec52cce558fb669627
Parents: 7ce0a55
Author: Andrea Patricelli <an...@apache.org>
Authored: Fri Apr 7 17:05:37 2017 +0200
Committer: Andrea Patricelli <an...@apache.org>
Committed: Mon Apr 10 09:04:56 2017 +0200

----------------------------------------------------------------------
 .../enduser/resources/BaseUserSelfResource.java | 67 ++++++++++++++++++++
 .../resources/UserSelfCreateResource.java       | 36 ++++-------
 .../enduser/resources/UserSelfReadResource.java | 20 +-----
 .../resources/UserSelfUpdateResource.java       | 24 +------
 4 files changed, 80 insertions(+), 67 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/be1eb72b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
new file mode 100644
index 0000000..6071642
--- /dev/null
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/BaseUserSelfResource.java
@@ -0,0 +1,67 @@
+/*
+ * 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.client.enduser.resources;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.lang3.time.FastDateFormat;
+import org.apache.syncope.common.lib.to.AttrTO;
+import org.apache.syncope.common.lib.to.PlainSchemaTO;
+
+public abstract class BaseUserSelfResource extends BaseResource {
+
+    private static final long serialVersionUID = -5892402817902884085L;
+
+    protected void dateToMillis(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
+            throws ParseException {
+        if (plainAttrMap.containsKey(plainSchema.getKey())) {
+            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
+            List<String> milliValues = new ArrayList<>(dateAttr.getValues().size());
+            for (String value : dateAttr.getValues()) {
+                milliValues.add(String.valueOf(fmt.parse(value).getTime()));
+            }
+            dateAttr.getValues().clear();
+            dateAttr.getValues().addAll(milliValues);
+        }
+    }
+
+    protected void millisToDate(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
+            throws IllegalArgumentException {
+        if (plainAttrMap.containsKey(plainSchema.getKey())) {
+            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
+
+            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
+            List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
+            for (String value : dateAttr.getValues()) {
+                try {
+                    formattedValues.add(fmt.format(Long.valueOf(value)));
+                } catch (NumberFormatException e) {
+                    throw new IllegalArgumentException("Invalid format value for " + value);
+                }
+            }
+            dateAttr.getValues().clear();
+            dateAttr.getValues().addAll(formattedValues);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/be1eb72b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
index c8baa53..fbb2e33 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
@@ -22,9 +22,7 @@ import static org.apache.syncope.client.enduser.resources.BaseResource.LOG;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
@@ -33,7 +31,6 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
-import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
@@ -45,7 +42,7 @@ import org.apache.syncope.common.lib.to.UserTO;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
 
 @Resource(key = "userSelfCreate", path = "/api/self/create")
-public class UserSelfCreateResource extends BaseResource {
+public class UserSelfCreateResource extends BaseUserSelfResource {
 
     private static final long serialVersionUID = -2721621682300247583L;
 
@@ -86,28 +83,8 @@ public class UserSelfCreateResource extends BaseResource {
             }
 
             if (isSelfRegistrationAllowed() && userTO != null) {
-                Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
-
-                // millis -> Date conversion
-                for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
-                    if (userPlainAttrMap.containsKey(plainSchema.getKey())) {
-                        FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-                        AttrTO dateAttr = userPlainAttrMap.get(plainSchema.getKey());
-                        List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
-                        for (String value : dateAttr.getValues()) {
-                            try {
-                                formattedValues.add(fmt.format(Long.valueOf(value)));
-                            } catch (NumberFormatException e) {
-                                throw new IllegalArgumentException("Invalid format value for " + value);
-                            }
-                        }
-                        dateAttr.getValues().clear();
-                        dateAttr.getValues().addAll(formattedValues);
-                    }
-                }
 
-                // membership attributes management
+                // 1. membership attributes management
                 Set<AttrTO> membAttrs = new HashSet<>();
                 for (AttrTO attr : userTO.getPlainAttrs()) {
                     if (attr.getSchema().contains("#")) {
@@ -133,6 +110,15 @@ public class UserSelfCreateResource extends BaseResource {
                 }
                 userTO.getPlainAttrs().removeAll(membAttrs);
 
+                // 2. millis -> Date conversion for PLAIN attributes of USER and its MEMBERSHIPS
+                Map<String, AttrTO> userPlainAttrMap = userTO.getPlainAttrMap();
+                for (PlainSchemaTO plainSchema : SyncopeEnduserSession.get().getDatePlainSchemas()) {
+                    millisToDate(userPlainAttrMap, plainSchema);
+                    for (MembershipTO membership : userTO.getMemberships()) {
+                        millisToDate(membership.getPlainAttrMap(), plainSchema);
+                    }
+                }
+
                 membAttrs.clear();
                 for (AttrTO attr : userTO.getDerAttrs()) {
                     if (attr.getSchema().contains("#")) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/be1eb72b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
index 3d913e2..056e757 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfReadResource.java
@@ -20,15 +20,11 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.commons.lang3.SerializationUtils;
-import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
 import org.apache.syncope.common.lib.to.AttrTO;
@@ -39,7 +35,7 @@ import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.IResource;
 
 @Resource(key = "userSelfRead", path = "/api/self/read")
-public class UserSelfReadResource extends BaseResource {
+public class UserSelfReadResource extends BaseUserSelfResource {
 
     private static final long serialVersionUID = -9184809392631523912L;
 
@@ -111,18 +107,4 @@ public class UserSelfReadResource extends BaseResource {
         return response;
     }
 
-    private void dateToMillis(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
-            throws ParseException {
-        if (plainAttrMap.containsKey(plainSchema.getKey())) {
-            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
-            List<String> milliValues = new ArrayList<>(dateAttr.getValues().size());
-            for (String value : dateAttr.getValues()) {
-                milliValues.add(String.valueOf(fmt.parse(value).getTime()));
-            }
-            dateAttr.getValues().clear();
-            dateAttr.getValues().addAll(milliValues);
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/be1eb72b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
index 9934aad..bc1a9fd 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfUpdateResource.java
@@ -20,9 +20,7 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import javax.servlet.http.HttpServletRequest;
@@ -31,7 +29,6 @@ import javax.ws.rs.core.Response;
 import org.apache.commons.collections4.IterableUtils;
 import org.apache.commons.collections4.Predicate;
 import org.apache.commons.lang3.SerializationUtils;
-import org.apache.commons.lang3.time.FastDateFormat;
 import org.apache.syncope.client.enduser.SyncopeEnduserConstants;
 import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.annotations.Resource;
@@ -45,7 +42,7 @@ import org.apache.wicket.request.resource.AbstractResource;
 import org.apache.wicket.request.resource.IResource;
 
 @Resource(key = "userSelfUpdate", path = "/api/self/update")
-public class UserSelfUpdateResource extends BaseResource {
+public class UserSelfUpdateResource extends BaseUserSelfResource {
 
     private static final long serialVersionUID = -2721621682300247583L;
 
@@ -187,23 +184,4 @@ public class UserSelfUpdateResource extends BaseResource {
         return response;
     }
 
-    private void millisToDate(final Map<String, AttrTO> plainAttrMap, final PlainSchemaTO plainSchema)
-            throws IllegalArgumentException {
-        LOG.info("CONVERTING >>>>>>>>>> {}", plainSchema.getKey());
-        if (plainAttrMap.containsKey(plainSchema.getKey())) {
-            FastDateFormat fmt = FastDateFormat.getInstance(plainSchema.getConversionPattern());
-
-            AttrTO dateAttr = plainAttrMap.get(plainSchema.getKey());
-            List<String> formattedValues = new ArrayList<>(dateAttr.getValues().size());
-            for (String value : dateAttr.getValues()) {
-                try {
-                    formattedValues.add(fmt.format(Long.valueOf(value)));
-                } catch (NumberFormatException e) {
-                    throw new IllegalArgumentException("Invalid format value for " + value);
-                }
-            }
-            dateAttr.getValues().clear();
-            dateAttr.getValues().addAll(formattedValues);
-        }
-    }
 }


[09/50] [abbrv] syncope git commit: Do not disable extensions in the all Maven profile, for projects generated from archetype

Posted by il...@apache.org.
Do not disable extensions in the all Maven profile, for projects generated from archetype


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

Branch: refs/heads/SYNCOPE-808
Commit: 610345ad67714b38afffb76f1cbdb338c8bcc5ce
Parents: 1b493e3
Author: Francesco Chicchiricc� <il...@apache.org>
Authored: Tue Apr 11 15:23:31 2017 +0200
Committer: Francesco Chicchiricc� <il...@apache.org>
Committed: Tue Apr 11 15:23:31 2017 +0200

----------------------------------------------------------------------
 .../archetype-resources/enduser/pom.xml          | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/610345ad/archetype/src/main/resources/archetype-resources/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/enduser/pom.xml b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
index b37360d..803a4ea 100644
--- a/archetype/src/main/resources/archetype-resources/enduser/pom.xml
+++ b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
@@ -330,7 +330,24 @@ under the License.
         </dependency>
       </dependencies>
       
-      <build>        
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <inherited>true</inherited>
+            <executions>
+              <execution>
+                <id>disableExtensions</id>
+                <phase>none</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+
         <resources>
           <resource>
             <directory>src/main/resources</directory>