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 =.*"editor/"; //TODO: Remove last slash!!"
- replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + "/activiti-modeler/editor-app/editor/";"
- 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')) + "/activiti-modeler/stencilset.json", {" />
- <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
- token="ORYX.Editor.createByUrl = function(modelUrl){"
- value="modelUrl = BASE_PATH + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
- <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
- token="window.location.href = "./";"
- value="window.close();" />
+ <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" match="ORYX.CONFIG.ROOT_PATH =.*"editor/"; //TODO: Remove last slash!!" replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + "/activiti-modeler/editor-app/editor/";" 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')) + "/activiti-modeler/stencilset.json", {" />
+ <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl = function(modelUrl){" value="modelUrl = BASE_PATH + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
+ <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js" token="window.location.href = "./";" 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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
- </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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 =.*"editor/"; //TODO: Remove last slash!!" replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + "/activiti-modeler/editor-app/editor/";" 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')) + "/activiti-modeler/stencilset.json", {" />
- <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl(modelUrl);" value="modelUrl = BASE_PATH + "/workflowDefGET"; 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 + "/workflowDefGET"; 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 + "/workflowDefGET?modelId=" + 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 + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
<replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js" token="window.location.href = "./";" 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 + "/activiti-modeler/editor-app/editor/&q
value="new Ajax.Request(window.location.toString().substr(0, window.location.toString().indexOf('/activiti-modeler')) + "/activiti-modeler/stencilset.json", {"/>
<replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
token="ORYX.Editor.createByUrl(modelUrl);"
- value="modelUrl = BASE_PATH + "/workflowDefGET";
-ORYX.Editor.createByUrl(modelUrl);"/>
+ value="modelUrl = BASE_PATH + "/workflowDefGET?modelId=" + 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 + "/workflowDefGET";
-ORYX.Editor.createByUrl = function(modelUrl){"/>
+ value="modelUrl = BASE_PATH + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
<replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
token="window.location.href = "./";"
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> </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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, "{key}")"/>
+ </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 + "/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 + "/workflowDefGET?modelId=" + 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 + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
<replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
token="window.location.href = "./";"
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 =.*"editor/"; //TODO: Remove last slash!!" replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + "/activiti-modeler/editor-app/editor/";" 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')) + "/activiti-modeler/stencilset.json", {" />
- <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js" token="ORYX.Editor.createByUrl(modelUrl);" value="modelUrl = BASE_PATH + "/workflowDefGET?modelId=" + 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 + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
- <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js" token="window.location.href = "./";" value="window.close();" />
+ <replaceregexp file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
+ match="ORYX.CONFIG.ROOT_PATH =.*"editor/"; //TODO: Remove last slash!!"
+ replace="BASE_PATH = window.location.toString().substr(0, window.location.toString().indexOf('/wicket')); ORYX.CONFIG.ROOT_PATH = BASE_PATH + "/activiti-modeler/editor-app/editor/";"
+ 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')) + "/activiti-modeler/stencilset.json", {" />
+ <replace file="${activiti-modeler.directory}/editor-app/editor/oryx.debug.js"
+ token="ORYX.Editor.createByUrl = function(modelUrl){"
+ value="modelUrl = BASE_PATH + "/workflowDefGET?modelId=" + modelId; ORYX.Editor.createByUrl = function(modelUrl){" />
+ <replace file="${activiti-modeler.directory}/editor-app/configuration/toolbar-default-actions.js"
+ token="window.location.href = "./";"
+ 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>