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 2018/07/05 10:44:04 UTC
[1/9] syncope git commit: Site revision towards 2.1.0
Repository: syncope
Updated Branches:
refs/heads/2_0_X d8aa10159 -> 77ce29e5f
refs/heads/master dd3d4a3db -> e56dbc29d
Site revision towards 2.1.0
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/e56dbc29
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/e56dbc29
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/e56dbc29
Branch: refs/heads/master
Commit: e56dbc29dc7715c46c84e7829e37762018fa0dd0
Parents: 027b6bd
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Jul 5 11:22:56 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Jul 5 12:43:01 2018 +0200
----------------------------------------------------------------------
pom.xml | 25 +----
src/site/.htaccess | 19 ++++
src/site/xdoc/docs/index.xml | 47 +++++---
src/site/xdoc/downloads.xml | 192 ++++++++++++++++++++++-----------
src/site/xdoc/release-process.xml | 53 +++++----
5 files changed, 207 insertions(+), 129 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/e56dbc29/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c011307..3ede96b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2369,11 +2369,6 @@ under the License.
<artifactId>asciidoctorj-pdf</artifactId>
<version>1.5.0-alpha.16</version>
</dependency>
- <dependency>
- <groupId>org.asciidoctor</groupId>
- <artifactId>asciidoctorj</artifactId>
- <version>1.5.6</version>
- </dependency>
</dependencies>
<configuration>
<doctype>book</doctype>
@@ -2461,18 +2456,6 @@ under the License.
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
- <dependencies>
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity</artifactId>
- <version>1.5</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.doxia</groupId>
- <artifactId>doxia-core</artifactId>
- <version>1.7</version>
- </dependency>
- </dependencies>
<configuration>
<locales>en</locales>
<generateProjectInfo>false</generateProjectInfo>
@@ -2501,7 +2484,7 @@ under the License.
</configuration>
</execution>
<execution>
- <id>copy-docs-to-site</id>
+ <id>place-htaccess</id>
<goals>
<goal>run</goal>
</goals>
@@ -2509,11 +2492,7 @@ under the License.
<configuration>
<target>
<copy todir="${site.deploymentBaseDir}/docs">
- <fileset dir="${project.build.directory}/generated-docs/" includes="getting-started.*" />
- <fileset dir="${project.build.directory}/generated-docs/" includes="reference-guide.*" />
- </copy>
- <copy todir="${site.deploymentBaseDir}/docs/images">
- <fileset dir="${project.build.directory}/generated-docs/images" />
+ <fileset dir="${rootpom.basedir}/src/site/" includes=".htaccess"/>
</copy>
</target>
</configuration>
http://git-wip-us.apache.org/repos/asf/syncope/blob/e56dbc29/src/site/.htaccess
----------------------------------------------------------------------
diff --git a/src/site/.htaccess b/src/site/.htaccess
new file mode 100644
index 0000000..5c3d2a0
--- /dev/null
+++ b/src/site/.htaccess
@@ -0,0 +1,19 @@
+# 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.
+
+RedirectMatch getting-started(.*)$ "https://syncope.apache.org/docs/2.1/getting-started$1"
+RedirectMatch reference-guide(.*)$ "https://syncope.apache.org/docs/2.1/reference-guide$1"
http://git-wip-us.apache.org/repos/asf/syncope/blob/e56dbc29/src/site/xdoc/docs/index.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/docs/index.xml b/src/site/xdoc/docs/index.xml
index 8cc0734..9481ff7 100644
--- a/src/site/xdoc/docs/index.xml
+++ b/src/site/xdoc/docs/index.xml
@@ -51,28 +51,38 @@ under the License.
<thead>
<tr>
<th>Name</th>
- <th width="100">Stable</th>
- <th width="100">Snapshot</th>
+ <th width="100">2.1</th>
+ <th width="100">2.0</th>
+ <th width="100">dev</th>
</tr>
</thead>
<tbody>
<tr>
<td>Getting Started</td>
<td>
- <a href="getting-started.html">
+ <a href="2.1/getting-started.html">
<img src="../images/text-html.png"/>
</a>
- <a href="getting-started.pdf">
+ <a href="2.1/getting-started.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
<td>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/getting-started.html">
+ <a href="2.0/getting-started.html">
<img src="../images/text-html.png"/>
</a>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/getting-started.pdf">
+ <a href="2.0/getting-started.pdf">
+ <img src="../images/application-pdf.png"/>
+ </a>
+ </td>
+ <td>
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/getting-started.html">
+ <img src="../images/text-html.png"/>
+ </a>
+
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/getting-started.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
@@ -80,20 +90,29 @@ under the License.
<tr>
<td>Reference Guide</td>
<td>
- <a href="reference-guide.html">
+ <a href="2.1/reference-guide.html">
+ <img src="../images/text-html.png"/>
+ </a>
+
+ <a href="2.1/reference-guide.pdf">
+ <img src="../images/application-pdf.png"/>
+ </a>
+ </td>
+ <td>
+ <a href="2.0/reference-guide.html">
<img src="../images/text-html.png"/>
</a>
- <a href="reference-guide.pdf">
+ <a href="2.0/reference-guide.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
<td>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/reference-guide.html">
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/reference-guide.html">
<img src="../images/text-html.png"/>
</a>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/reference-guide.pdf">
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/reference-guide.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
@@ -123,17 +142,17 @@ under the License.
<tr>
<td>REST</td>
<td>
- <a href="../rest/2.0/index.html">2.0</a>
+ <a href="../rest/2.1/index.html">2.1</a>
- <a href="../rest/1.2/index.html">1.2</a>
+ <a href="../rest/2.0/index.html">2.0</a>
</td>
</tr>
<tr>
<td>Javadocs</td>
<td>
- <a href="../apidocs/2.0/index.html">2.0</a>
+ <a href="../apidocs/2.1/index.html">2.1</a>
- <a href="../apidocs/1.2/index.html">1.2</a>
+ <a href="../apidocs/2.0/index.html">2.0</a>
</td>
</tr>
</tbody>
http://git-wip-us.apache.org/repos/asf/syncope/blob/e56dbc29/src/site/xdoc/downloads.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/downloads.xml b/src/site/xdoc/downloads.xml
index d8e72d8..0a7e1bf 100644
--- a/src/site/xdoc/downloads.xml
+++ b/src/site/xdoc/downloads.xml
@@ -36,25 +36,26 @@ under the License.
It is good practice to <a href="#Verifying_Releases">verify the integrity</a> of the distribution files.
</p>
- <div class="alert alert-info">
- <h4>Don't know what do download? Click the buttons below to get more information.</h4>
- <br/>
- <div class="btn-group">
- <a href="docs/getting-started.html#maven-project" class="btn">Maven Project</a>
- <a href="docs/getting-started.html#standalone" class="btn">Standalone</a>
- <a href="docs/getting-started.html#debian-packages" class="btn">Debian Packages</a>
- <a href="docs/getting-started.html#gui-installer" class="btn">GUI Installer</a>
- <a href="docs/getting-started.html#docker" class="btn">Docker images</a>
- <a href="docs/getting-started.html#eclipse-ide-plugin" class="btn">Eclipse IDE Plugin</a>
- <a href="docs/getting-started.html#netbeans-ide-plugin" class="btn">Netbeans IDE Plugin</a>
- </div>
- </div>
-
- <subsection name="2.0.9 Jazz">
- <p>Release date: June 28th 2018</p>
+ <subsection name="2.1.0 Jazz">
+ <p>Release date: July XXth 2018</p>
<p>
- <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz">Release notes</a>
+ <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Fusion">Release notes</a>
</p>
+
+ <div class="alert alert-info">
+ <h4>Don't know what to download? Click the buttons below to get more information.</h4>
+ <br/>
+ <div class="btn-group">
+ <a href="docs/2.1/getting-started.html#maven-project" class="btn">Maven Project</a>
+ <a href="docs/2.1/getting-started.html#standalone" class="btn">Standalone</a>
+ <a href="docs/2.1/getting-started.html#debian-packages" class="btn">Debian Packages</a>
+ <a href="docs/2.1/getting-started.html#gui-installer" class="btn">GUI Installer</a>
+ <a href="docs/2.1/getting-started.html#docker" class="btn">Docker images</a>
+ <a href="docs/2.1/getting-started.html#eclipse-ide-plugin" class="btn">Eclipse IDE Plugin</a>
+ <a href="docs/2.1/getting-started.html#netbeans-ide-plugin" class="btn">Netbeans IDE Plugin</a>
+ </div>
+ </div>
+
<table>
<thead>
<tr>
@@ -65,93 +66,118 @@ under the License.
<tbody>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-2.0.9-source-release.zip">syncope-2.0.9-source-release.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-2.1.0-source-release.zip">syncope-2.1.0-source-release.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-2.1.0-source-release.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-2.1.0-source-release.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip">syncope-standalone-2.0.9-distribution.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-standalone-2.1.0-distribution.zip">syncope-standalone-2.1.0-distribution.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-standalone-2.1.0-distribution.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-standalone-2.1.0-distribution.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-2.0.9.deb">apache-syncope-2.0.9.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/apache-syncope-2.1.0.deb">apache-syncope-2.1.0.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-2.1.0.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-2.1.0.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-console-2.0.9.deb">apache-syncope-console-2.0.9.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/apache-syncope-console-2.1.0.deb">apache-syncope-console-2.1.0.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-console-2.1.0.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-console-2.1.0.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb">apache-syncope-enduser-2.0.9.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/apache-syncope-enduser-2.1.0.deb">apache-syncope-enduser-2.1.0.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-enduser-2.1.0.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-enduser-2.1.0.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-installer-2.0.9-uber.jar">syncope-installer-2.0.9.jar</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-installer-2.1.0-uber.jar">syncope-installer-2.1.0.jar</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-installer-2.1.0-uber.jar.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-installer-2.1.0-uber.jar.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-client-cli-2.0.9.zip">syncope-client-cli-2.0.9.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-client-cli-2.1.0.zip">syncope-client-cli-2.1.0.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-client-cli-2.1.0.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-client-cli-2.1.0.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip">org.apache.syncope.ide.eclipse.site-2.0.9.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-core-upgrade-2.1.0.zip">syncope-core-upgrade-2.1.0.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-core-upgrade-2.1.0.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-core-upgrade-2.1.0.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm">syncope-ide-netbeans-2.0.9.nbm</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/org.apache.syncope.ide.eclipse.site-2.1.0.zip">org.apache.syncope.ide.eclipse.site-2.1.0.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/org.apache.syncope.ide.eclipse.site-2.1.0.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/org.apache.syncope.ide.eclipse.site-2.1.0.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-ide-netbeans-2.1.0.nbm">syncope-ide-netbeans-2.1.0.nbm</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-ide-netbeans-2.1.0.nbm.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-ide-netbeans-2.1.0.nbm.sha1">sha1</a>
</td>
</tr>
</tbody>
</table>
</subsection>
- <subsection name="1.2.11 Intermezzo">
- <p>Release date: March 13th 2018</p>
+
+ <subsection name="2.0.9 Jazz">
+ <p>Release date: June 28th 2018</p>
<p>
- <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Intermezzo">Release notes</a>
+ <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz">Release notes</a>
</p>
+
+ <div class="alert alert-info">
+ <h4>Don't know what to download? Click the buttons below to get more information.</h4>
+ <br/>
+ <div class="btn-group">
+ <a href="docs/2.0/getting-started.html#maven-project" class="btn">Maven Project</a>
+ <a href="docs/2.0/getting-started.html#standalone" class="btn">Standalone</a>
+ <a href="docs/2.0/getting-started.html#debian-packages" class="btn">Debian Packages</a>
+ <a href="docs/2.0/getting-started.html#gui-installer" class="btn">GUI Installer</a>
+ <a href="docs/2.0/getting-started.html#docker" class="btn">Docker images</a>
+ <a href="docs/2.0/getting-started.html#eclipse-ide-plugin" class="btn">Eclipse IDE Plugin</a>
+ <a href="docs/2.0/getting-started.html#netbeans-ide-plugin" class="btn">Netbeans IDE Plugin</a>
+ </div>
+ </div>
+
<table>
<thead>
<tr>
@@ -162,47 +188,83 @@ under the License.
<tbody>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/syncope-1.2.11-source-release.zip">syncope-1.2.11-source-release.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-2.0.9-source-release.zip">syncope-2.0.9-source-release.zip</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip">syncope-standalone-2.0.9-distribution.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-1.2.11-source-release.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-1.2.11-source-release.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/syncope-standalone-1.2.11-distribution.zip">syncope-standalone-1.2.11-distribution.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-2.0.9.deb">apache-syncope-2.0.9.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-standalone-1.2.11-distribution.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-standalone-1.2.11-distribution.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/apache-syncope-1.2.11.deb">apache-syncope-1.2.11.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-console-2.0.9.deb">apache-syncope-console-2.0.9.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-1.2.11.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-1.2.11.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/apache-syncope-console-1.2.11.deb">apache-syncope-console-1.2.11.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb">apache-syncope-enduser-2.0.9.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-console-1.2.11.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-console-1.2.11.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/syncope-installer-1.2.11-uber.jar">syncope-installer-1.2.11.jar</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-installer-2.0.9-uber.jar">syncope-installer-2.0.9.jar</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-installer-1.2.11-uber.jar.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-installer-1.2.11-uber.jar.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-client-cli-2.0.9.zip">syncope-client-cli-2.0.9.zip</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip">org.apache.syncope.ide.eclipse.site-2.0.9.zip</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm">syncope-ide-netbeans-2.0.9.nbm</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.sha1">sha1</a>
</td>
</tr>
</tbody>
@@ -216,9 +278,9 @@ under the License.
<section name="Verifying Releases">
<p>When downloading from a mirror please check the SHA1 checksums as well as verifying the OpenPGP compatible
- signature available from the main Apache site.
- The <a href="https://www.apache.org/dist/syncope/KEYS">KEYS</a> file contains the public keys used for signing the
- release. It is recommended that a web of trust is used to confirm the identity of these keys.</p>
+ signature available from the main Apache site.
+ The <a href="https://www.apache.org/dist/syncope/KEYS">KEYS</a> file contains the public keys used for signing the
+ release. It is recommended that a web of trust is used to confirm the identity of these keys.</p>
<p>You can check the OpenPGP signature with GnuPG via:</p>
<source><![CDATA[gpg --import KEYS
http://git-wip-us.apache.org/repos/asf/syncope/blob/e56dbc29/src/site/xdoc/release-process.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/release-process.xml b/src/site/xdoc/release-process.xml
index 0f55acc..4f119b0 100644
--- a/src/site/xdoc/release-process.xml
+++ b/src/site/xdoc/release-process.xml
@@ -126,7 +126,6 @@ under the License.
<dd>
<p>
the working directory containing the GIT clone repository for the branch under release
- (<tt>1_2_X</tt> or <tt>2_0_X</tt>)
</p>
</dd>
<dt>
@@ -135,7 +134,6 @@ under the License.
<dd>
<p>
the working directory containing the GIT clone repository for the branch for site management
- (<tt>2_0_X</tt>)
</p>
</dd>
</dl>
@@ -281,7 +279,6 @@ cp $SYNCOPE_RELEASE_DIR/deb/core/target/apache-syncope-*.deb .
cp $SYNCOPE_RELEASE_DIR/deb/core/target/apache-syncope-*.deb.asc .
cp $SYNCOPE_RELEASE_DIR/deb/console/target/apache-syncope-console-*.deb .
cp $SYNCOPE_RELEASE_DIR/deb/console/target/apache-syncope-console-*.deb.asc .
-# only for 2_0_X
cp $SYNCOPE_RELEASE_DIR/deb/enduser/target/apache-syncope-enduser-*.deb .
cp $SYNCOPE_RELEASE_DIR/deb/enduser/target/apache-syncope-enduser-*.deb.asc .
cp $SYNCOPE_RELEASE_DIR/client/cli/target/syncope-client-cli-*.zip .
@@ -290,6 +287,9 @@ cp $SYNCOPE_RELEASE_DIR/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/t
cp $SYNCOPE_RELEASE_DIR/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/target/org.apache.syncope.ide.eclipse.site-*.zip.asc .
cp $SYNCOPE_RELEASE_DIR/ide/netbeans/target/syncope-ide-netbeans-*.nbm .
cp $SYNCOPE_RELEASE_DIR/ide/netbeans/target/syncope-ide-netbeans-*.nbm.asc .
+# only for 2_1_X
+cp $SYNCOPE_RELEASE_DIR/core/upgrade/target/syncope-core-upgrade-*.zip .
+cp $SYNCOPE_RELEASE_DIR/core/upgrade/target/syncope-core-upgrade-*.zip.asc .
for file in `find . -type f -iname '*.asc'`
do
@@ -312,12 +312,6 @@ unzip $SYNCOPE_RELEASE_DIR/target/syncope-$VERSION-source-release.zip
cd syncope-$VERSION
mvn -PskipTests,all
-# if releasing from 1_2_X
-mvn javadoc:aggregate
-cd common
-mvn -P offline-doc
-
-# else if releasing from 2_0_X
cd fit/core-reference && mvn -Pdebug,all
curl -o /tmp/index.html http://localhost:9080/syncope/index.html
sed -i 's/\/syncope\/webjars\/jquery\/2.2.4\/jquery.min.js/https:\/\/code.jquery.com\/jquery-2.2.4.min.js/' index.html
@@ -336,22 +330,32 @@ mvn -P site -Dsite.deploymentBaseUrl=file:///<absolute path to/site>/$VERSION
cd <absolute path to/site>/$VERSION
-# if releasing from 1_2_X
-cp -r <absolute path to syncope-$VERSION above>/target/site/apidocs apidocs/1.2
-cp -r <absolute path to syncope-$VERSION above>/common/target/generated/wadl/ rest/1.2
-rm -rf apidocs/2.0
-rm -rf rest/2.0
+# if releasing from 2_0_X
+mkdir -p $VERSION/rest/2.0
+mv /tmp/index.html $VERSION/rest/2.0
+mv /tmp/schema_1_syncope2.html $VERSION/rest/2.0
+mv /tmp/syncope.wadl $VERSION/rest/2.0
+cp $SYNCOPE_SITE_DIR/target/generated-docs/getting-started.* docs/2.0/
+cp $SYNCOPE_SITE_DIR/target/generated-docs/reference-guide.* docs/2.0/
+cp -r $SYNCOPE_SITE_DIR/target/generated-docs/images docs/2.0/
+cd ..
+svn add $VERSION
+svn copy apidocs/2.1 $VERSION/apidocs/
+svn copy rest/2.1 $VERSION/rest/
+
+# else if releasing from 2_1_X
+mkdir -p $VERSION/rest/2.1
+mv /tmp/index.html $VERSION/rest/2.1
+mv /tmp/schema_1_syncope2.html $VERSION/rest/2.1
+mv /tmp/syncope.wadl $VERSION/rest/2.1
+cp $SYNCOPE_SITE_DIR/target/generated-docs/getting-started.* docs/2.1/
+cp $SYNCOPE_SITE_DIR/target/generated-docs/reference-guide.* docs/2.1/
+cp -r $SYNCOPE_SITE_DIR/target/generated-docs/images docs/2.1/
cd ..
svn add $VERSION
svn copy apidocs/2.0 $VERSION/apidocs/
svn copy rest/2.0 $VERSION/rest/
-# else if releasing from 2_0_X
-cd ..
-svn add $VERSION
-svn copy apidocs/1.2 $VERSION/apidocs/
-svn copy rest/1.2 $VERSION/rest/
-
svn commit -m "Staging site for release"]]></source>
</li>
<li>
@@ -548,11 +552,6 @@ svn commit -m "Cleaning up older releases"]]></source>
wiki page based on the HTML release reports from JIRA
</li>
<li>
- (if releasing from <tt>1_2_X</tt>) Update the
- <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Create+a+new+Syncope+project">Create
- new project</a> wiki page to point to the new release artifacts
- </li>
- <li>
Update the <a href="https://issues.apache.org/jira/plugins/servlet/project-config/SYNCOPE/versions">JIRA
versions</a> page to mark the version as <strong>Released</strong>, and set the date to the date that
the release was approved. You may also need to make a new release entry for the next release.
@@ -568,8 +567,8 @@ svn rm $VERSION
svn commit -m "Promoting the staging site"]]></source>
</li>
<li>
- If releasing from 2_0_X, deploy the updated Docker images to <a href="https://hub.docker.com/">DockerHub</a> by adjusting the GIT tag
- name then running the <a href="https://builds.apache.org/job/Syncope-2_0_X-Docker">dedicated Jenkins job</a>.
+ Deploy the updated Docker images to <a href="https://hub.docker.com/">DockerHub</a> by adjusting the GIT tag
+ name then running the <a href="https://builds.apache.org/job/Syncope-Docker">dedicated Jenkins job</a>.
</li>
</ol>
</subsection>
[9/9] syncope git commit: Site revision towards 2.1.0
Posted by il...@apache.org.
Site revision towards 2.1.0
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/77ce29e5
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/77ce29e5
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/77ce29e5
Branch: refs/heads/2_0_X
Commit: 77ce29e5f7f733472171c992cbddbae72007041e
Parents: d8aa101
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Jul 5 11:22:56 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Jul 5 12:43:31 2018 +0200
----------------------------------------------------------------------
pom.xml | 25 +----
src/site/.htaccess | 19 ++++
src/site/xdoc/docs/index.xml | 47 +++++---
src/site/xdoc/downloads.xml | 192 ++++++++++++++++++++++-----------
src/site/xdoc/release-process.xml | 53 +++++----
5 files changed, 207 insertions(+), 129 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/77ce29e5/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 5ee054d..d4cf63d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2444,11 +2444,6 @@ under the License.
<artifactId>asciidoctorj-pdf</artifactId>
<version>1.5.0-alpha.16</version>
</dependency>
- <dependency>
- <groupId>org.asciidoctor</groupId>
- <artifactId>asciidoctorj</artifactId>
- <version>1.5.6</version>
- </dependency>
</dependencies>
<configuration>
<doctype>book</doctype>
@@ -2536,18 +2531,6 @@ under the License.
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
- <dependencies>
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity</artifactId>
- <version>1.5</version>
- </dependency>
- <dependency>
- <groupId>org.apache.maven.doxia</groupId>
- <artifactId>doxia-core</artifactId>
- <version>1.7</version>
- </dependency>
- </dependencies>
<configuration>
<locales>en</locales>
<generateProjectInfo>false</generateProjectInfo>
@@ -2576,7 +2559,7 @@ under the License.
</configuration>
</execution>
<execution>
- <id>copy-docs-to-site</id>
+ <id>place-htaccess</id>
<goals>
<goal>run</goal>
</goals>
@@ -2584,11 +2567,7 @@ under the License.
<configuration>
<target>
<copy todir="${site.deploymentBaseDir}/docs">
- <fileset dir="${project.build.directory}/generated-docs/" includes="getting-started.*" />
- <fileset dir="${project.build.directory}/generated-docs/" includes="reference-guide.*" />
- </copy>
- <copy todir="${site.deploymentBaseDir}/docs/images">
- <fileset dir="${project.build.directory}/generated-docs/images" />
+ <fileset dir="${rootpom.basedir}/src/site/" includes=".htaccess"/>
</copy>
</target>
</configuration>
http://git-wip-us.apache.org/repos/asf/syncope/blob/77ce29e5/src/site/.htaccess
----------------------------------------------------------------------
diff --git a/src/site/.htaccess b/src/site/.htaccess
new file mode 100644
index 0000000..5c3d2a0
--- /dev/null
+++ b/src/site/.htaccess
@@ -0,0 +1,19 @@
+# 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.
+
+RedirectMatch getting-started(.*)$ "https://syncope.apache.org/docs/2.1/getting-started$1"
+RedirectMatch reference-guide(.*)$ "https://syncope.apache.org/docs/2.1/reference-guide$1"
http://git-wip-us.apache.org/repos/asf/syncope/blob/77ce29e5/src/site/xdoc/docs/index.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/docs/index.xml b/src/site/xdoc/docs/index.xml
index 8cc0734..9481ff7 100644
--- a/src/site/xdoc/docs/index.xml
+++ b/src/site/xdoc/docs/index.xml
@@ -51,28 +51,38 @@ under the License.
<thead>
<tr>
<th>Name</th>
- <th width="100">Stable</th>
- <th width="100">Snapshot</th>
+ <th width="100">2.1</th>
+ <th width="100">2.0</th>
+ <th width="100">dev</th>
</tr>
</thead>
<tbody>
<tr>
<td>Getting Started</td>
<td>
- <a href="getting-started.html">
+ <a href="2.1/getting-started.html">
<img src="../images/text-html.png"/>
</a>
- <a href="getting-started.pdf">
+ <a href="2.1/getting-started.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
<td>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/getting-started.html">
+ <a href="2.0/getting-started.html">
<img src="../images/text-html.png"/>
</a>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/getting-started.pdf">
+ <a href="2.0/getting-started.pdf">
+ <img src="../images/application-pdf.png"/>
+ </a>
+ </td>
+ <td>
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/getting-started.html">
+ <img src="../images/text-html.png"/>
+ </a>
+
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/getting-started.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
@@ -80,20 +90,29 @@ under the License.
<tr>
<td>Reference Guide</td>
<td>
- <a href="reference-guide.html">
+ <a href="2.1/reference-guide.html">
+ <img src="../images/text-html.png"/>
+ </a>
+
+ <a href="2.1/reference-guide.pdf">
+ <img src="../images/application-pdf.png"/>
+ </a>
+ </td>
+ <td>
+ <a href="2.0/reference-guide.html">
<img src="../images/text-html.png"/>
</a>
- <a href="reference-guide.pdf">
+ <a href="2.0/reference-guide.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
<td>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/reference-guide.html">
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/reference-guide.html">
<img src="../images/text-html.png"/>
</a>
- <a href="https://ci.apache.org/projects/syncope/2_0_X/reference-guide.pdf">
+ <a href="https://ci.apache.org/projects/syncope/2_1_X/reference-guide.pdf">
<img src="../images/application-pdf.png"/>
</a>
</td>
@@ -123,17 +142,17 @@ under the License.
<tr>
<td>REST</td>
<td>
- <a href="../rest/2.0/index.html">2.0</a>
+ <a href="../rest/2.1/index.html">2.1</a>
- <a href="../rest/1.2/index.html">1.2</a>
+ <a href="../rest/2.0/index.html">2.0</a>
</td>
</tr>
<tr>
<td>Javadocs</td>
<td>
- <a href="../apidocs/2.0/index.html">2.0</a>
+ <a href="../apidocs/2.1/index.html">2.1</a>
- <a href="../apidocs/1.2/index.html">1.2</a>
+ <a href="../apidocs/2.0/index.html">2.0</a>
</td>
</tr>
</tbody>
http://git-wip-us.apache.org/repos/asf/syncope/blob/77ce29e5/src/site/xdoc/downloads.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/downloads.xml b/src/site/xdoc/downloads.xml
index d8e72d8..0a7e1bf 100644
--- a/src/site/xdoc/downloads.xml
+++ b/src/site/xdoc/downloads.xml
@@ -36,25 +36,26 @@ under the License.
It is good practice to <a href="#Verifying_Releases">verify the integrity</a> of the distribution files.
</p>
- <div class="alert alert-info">
- <h4>Don't know what do download? Click the buttons below to get more information.</h4>
- <br/>
- <div class="btn-group">
- <a href="docs/getting-started.html#maven-project" class="btn">Maven Project</a>
- <a href="docs/getting-started.html#standalone" class="btn">Standalone</a>
- <a href="docs/getting-started.html#debian-packages" class="btn">Debian Packages</a>
- <a href="docs/getting-started.html#gui-installer" class="btn">GUI Installer</a>
- <a href="docs/getting-started.html#docker" class="btn">Docker images</a>
- <a href="docs/getting-started.html#eclipse-ide-plugin" class="btn">Eclipse IDE Plugin</a>
- <a href="docs/getting-started.html#netbeans-ide-plugin" class="btn">Netbeans IDE Plugin</a>
- </div>
- </div>
-
- <subsection name="2.0.9 Jazz">
- <p>Release date: June 28th 2018</p>
+ <subsection name="2.1.0 Jazz">
+ <p>Release date: July XXth 2018</p>
<p>
- <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz">Release notes</a>
+ <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Fusion">Release notes</a>
</p>
+
+ <div class="alert alert-info">
+ <h4>Don't know what to download? Click the buttons below to get more information.</h4>
+ <br/>
+ <div class="btn-group">
+ <a href="docs/2.1/getting-started.html#maven-project" class="btn">Maven Project</a>
+ <a href="docs/2.1/getting-started.html#standalone" class="btn">Standalone</a>
+ <a href="docs/2.1/getting-started.html#debian-packages" class="btn">Debian Packages</a>
+ <a href="docs/2.1/getting-started.html#gui-installer" class="btn">GUI Installer</a>
+ <a href="docs/2.1/getting-started.html#docker" class="btn">Docker images</a>
+ <a href="docs/2.1/getting-started.html#eclipse-ide-plugin" class="btn">Eclipse IDE Plugin</a>
+ <a href="docs/2.1/getting-started.html#netbeans-ide-plugin" class="btn">Netbeans IDE Plugin</a>
+ </div>
+ </div>
+
<table>
<thead>
<tr>
@@ -65,93 +66,118 @@ under the License.
<tbody>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-2.0.9-source-release.zip">syncope-2.0.9-source-release.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-2.1.0-source-release.zip">syncope-2.1.0-source-release.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-2.1.0-source-release.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-2.1.0-source-release.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip">syncope-standalone-2.0.9-distribution.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-standalone-2.1.0-distribution.zip">syncope-standalone-2.1.0-distribution.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-standalone-2.1.0-distribution.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-standalone-2.1.0-distribution.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-2.0.9.deb">apache-syncope-2.0.9.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/apache-syncope-2.1.0.deb">apache-syncope-2.1.0.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-2.1.0.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-2.1.0.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-console-2.0.9.deb">apache-syncope-console-2.0.9.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/apache-syncope-console-2.1.0.deb">apache-syncope-console-2.1.0.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-console-2.1.0.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-console-2.1.0.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb">apache-syncope-enduser-2.0.9.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/apache-syncope-enduser-2.1.0.deb">apache-syncope-enduser-2.1.0.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-enduser-2.1.0.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/apache-syncope-enduser-2.1.0.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-installer-2.0.9-uber.jar">syncope-installer-2.0.9.jar</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-installer-2.1.0-uber.jar">syncope-installer-2.1.0.jar</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-installer-2.1.0-uber.jar.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-installer-2.1.0-uber.jar.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-client-cli-2.0.9.zip">syncope-client-cli-2.0.9.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-client-cli-2.1.0.zip">syncope-client-cli-2.1.0.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-client-cli-2.1.0.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-client-cli-2.1.0.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip">org.apache.syncope.ide.eclipse.site-2.0.9.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-core-upgrade-2.1.0.zip">syncope-core-upgrade-2.1.0.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-core-upgrade-2.1.0.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-core-upgrade-2.1.0.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm">syncope-ide-netbeans-2.0.9.nbm</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/org.apache.syncope.ide.eclipse.site-2.1.0.zip">org.apache.syncope.ide.eclipse.site-2.1.0.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/org.apache.syncope.ide.eclipse.site-2.1.0.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/org.apache.syncope.ide.eclipse.site-2.1.0.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.1.0/syncope-ide-netbeans-2.1.0.nbm">syncope-ide-netbeans-2.1.0.nbm</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-ide-netbeans-2.1.0.nbm.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.1.0/syncope-ide-netbeans-2.1.0.nbm.sha1">sha1</a>
</td>
</tr>
</tbody>
</table>
</subsection>
- <subsection name="1.2.11 Intermezzo">
- <p>Release date: March 13th 2018</p>
+
+ <subsection name="2.0.9 Jazz">
+ <p>Release date: June 28th 2018</p>
<p>
- <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Intermezzo">Release notes</a>
+ <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz">Release notes</a>
</p>
+
+ <div class="alert alert-info">
+ <h4>Don't know what to download? Click the buttons below to get more information.</h4>
+ <br/>
+ <div class="btn-group">
+ <a href="docs/2.0/getting-started.html#maven-project" class="btn">Maven Project</a>
+ <a href="docs/2.0/getting-started.html#standalone" class="btn">Standalone</a>
+ <a href="docs/2.0/getting-started.html#debian-packages" class="btn">Debian Packages</a>
+ <a href="docs/2.0/getting-started.html#gui-installer" class="btn">GUI Installer</a>
+ <a href="docs/2.0/getting-started.html#docker" class="btn">Docker images</a>
+ <a href="docs/2.0/getting-started.html#eclipse-ide-plugin" class="btn">Eclipse IDE Plugin</a>
+ <a href="docs/2.0/getting-started.html#netbeans-ide-plugin" class="btn">Netbeans IDE Plugin</a>
+ </div>
+ </div>
+
<table>
<thead>
<tr>
@@ -162,47 +188,83 @@ under the License.
<tbody>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/syncope-1.2.11-source-release.zip">syncope-1.2.11-source-release.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-2.0.9-source-release.zip">syncope-2.0.9-source-release.zip</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-2.0.9-source-release.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip">syncope-standalone-2.0.9-distribution.zip</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-1.2.11-source-release.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-1.2.11-source-release.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-standalone-2.0.9-distribution.zip.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/syncope-standalone-1.2.11-distribution.zip">syncope-standalone-1.2.11-distribution.zip</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-2.0.9.deb">apache-syncope-2.0.9.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-standalone-1.2.11-distribution.zip.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-standalone-1.2.11-distribution.zip.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-2.0.9.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/apache-syncope-1.2.11.deb">apache-syncope-1.2.11.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-console-2.0.9.deb">apache-syncope-console-2.0.9.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-1.2.11.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-1.2.11.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-console-2.0.9.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/apache-syncope-console-1.2.11.deb">apache-syncope-console-1.2.11.deb</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb">apache-syncope-enduser-2.0.9.deb</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-console-1.2.11.deb.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/apache-syncope-console-1.2.11.deb.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/apache-syncope-enduser-2.0.9.deb.sha1">sha1</a>
</td>
</tr>
<tr>
<td>
- <a href="http://www.apache.org/dyn/closer.lua/syncope/1.2.11/syncope-installer-1.2.11-uber.jar">syncope-installer-1.2.11.jar</a>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-installer-2.0.9-uber.jar">syncope-installer-2.0.9.jar</a>
</td>
<td>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-installer-1.2.11-uber.jar.asc">asc</a>
- <a href="https://www.apache.org/dist/syncope/1.2.11/syncope-installer-1.2.11-uber.jar.sha1">sha1</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-installer-2.0.9-uber.jar.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-client-cli-2.0.9.zip">syncope-client-cli-2.0.9.zip</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-client-cli-2.0.9.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip">org.apache.syncope.ide.eclipse.site-2.0.9.zip</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/org.apache.syncope.ide.eclipse.site-2.0.9.zip.sha1">sha1</a>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <a href="http://www.apache.org/dyn/closer.lua/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm">syncope-ide-netbeans-2.0.9.nbm</a>
+ </td>
+ <td>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.asc">asc</a>
+ <a href="https://www.apache.org/dist/syncope/2.0.9/syncope-ide-netbeans-2.0.9.nbm.sha1">sha1</a>
</td>
</tr>
</tbody>
@@ -216,9 +278,9 @@ under the License.
<section name="Verifying Releases">
<p>When downloading from a mirror please check the SHA1 checksums as well as verifying the OpenPGP compatible
- signature available from the main Apache site.
- The <a href="https://www.apache.org/dist/syncope/KEYS">KEYS</a> file contains the public keys used for signing the
- release. It is recommended that a web of trust is used to confirm the identity of these keys.</p>
+ signature available from the main Apache site.
+ The <a href="https://www.apache.org/dist/syncope/KEYS">KEYS</a> file contains the public keys used for signing the
+ release. It is recommended that a web of trust is used to confirm the identity of these keys.</p>
<p>You can check the OpenPGP signature with GnuPG via:</p>
<source><![CDATA[gpg --import KEYS
http://git-wip-us.apache.org/repos/asf/syncope/blob/77ce29e5/src/site/xdoc/release-process.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/release-process.xml b/src/site/xdoc/release-process.xml
index 61ece4f..83183a4 100644
--- a/src/site/xdoc/release-process.xml
+++ b/src/site/xdoc/release-process.xml
@@ -126,7 +126,6 @@ under the License.
<dd>
<p>
the working directory containing the GIT clone repository for the branch under release
- (<tt>1_2_X</tt> or <tt>2_0_X</tt>)
</p>
</dd>
<dt>
@@ -135,7 +134,6 @@ under the License.
<dd>
<p>
the working directory containing the GIT clone repository for the branch for site management
- (<tt>2_0_X</tt>)
</p>
</dd>
</dl>
@@ -281,7 +279,6 @@ cp $SYNCOPE_RELEASE_DIR/deb/core/target/apache-syncope-*.deb .
cp $SYNCOPE_RELEASE_DIR/deb/core/target/apache-syncope-*.deb.asc .
cp $SYNCOPE_RELEASE_DIR/deb/console/target/apache-syncope-console-*.deb .
cp $SYNCOPE_RELEASE_DIR/deb/console/target/apache-syncope-console-*.deb.asc .
-# only for 2_0_X
cp $SYNCOPE_RELEASE_DIR/deb/enduser/target/apache-syncope-enduser-*.deb .
cp $SYNCOPE_RELEASE_DIR/deb/enduser/target/apache-syncope-enduser-*.deb.asc .
cp $SYNCOPE_RELEASE_DIR/client/cli/target/syncope-client-cli-*.zip .
@@ -290,6 +287,9 @@ cp $SYNCOPE_RELEASE_DIR/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/t
cp $SYNCOPE_RELEASE_DIR/ide/eclipse/releng/org.apache.syncope.ide.eclipse.site/target/org.apache.syncope.ide.eclipse.site-*.zip.asc .
cp $SYNCOPE_RELEASE_DIR/ide/netbeans/target/syncope-ide-netbeans-*.nbm .
cp $SYNCOPE_RELEASE_DIR/ide/netbeans/target/syncope-ide-netbeans-*.nbm.asc .
+# only for 2_1_X
+cp $SYNCOPE_RELEASE_DIR/core/upgrade/target/syncope-core-upgrade-*.zip .
+cp $SYNCOPE_RELEASE_DIR/core/upgrade/target/syncope-core-upgrade-*.zip.asc .
for file in `find . -type f -iname '*.asc'`
do
@@ -311,12 +311,6 @@ unzip $SYNCOPE_RELEASE_DIR/target/syncope-$VERSION-source-release.zip
cd syncope-$VERSION
mvn -PskipTests,all
-# if releasing from 1_2_X
-mvn javadoc:aggregate
-cd common
-mvn -P offline-doc
-
-# else if releasing from 2_0_X
cd fit/core-reference && mvn -Pdebug,all
curl -o /tmp/index.html http://localhost:9080/syncope/index.html
sed -i 's/\/syncope\/webjars\/jquery\/2.2.4\/jquery.min.js/https:\/\/code.jquery.com\/jquery-2.2.4.min.js/' index.html
@@ -335,22 +329,32 @@ mvn -P site -Dsite.deploymentBaseUrl=file:///<absolute path to/site>/$VERSION
cd <absolute path to/site>/$VERSION
-# if releasing from 1_2_X
-cp -r <absolute path to syncope-$VERSION above>/target/site/apidocs apidocs/1.2
-cp -r <absolute path to syncope-$VERSION above>/common/target/generated/wadl/ rest/1.2
-rm -rf apidocs/2.0
-rm -rf rest/2.0
+# if releasing from 2_0_X
+mkdir -p $VERSION/rest/2.0
+mv /tmp/index.html $VERSION/rest/2.0
+mv /tmp/schema_1_syncope2.html $VERSION/rest/2.0
+mv /tmp/syncope.wadl $VERSION/rest/2.0
+cp $SYNCOPE_SITE_DIR/target/generated-docs/getting-started.* docs/2.0/
+cp $SYNCOPE_SITE_DIR/target/generated-docs/reference-guide.* docs/2.0/
+cp -r $SYNCOPE_SITE_DIR/target/generated-docs/images docs/2.0/
+cd ..
+svn add $VERSION
+svn copy apidocs/2.1 $VERSION/apidocs/
+svn copy rest/2.1 $VERSION/rest/
+
+# else if releasing from 2_1_X
+mkdir -p $VERSION/rest/2.1
+mv /tmp/index.html $VERSION/rest/2.1
+mv /tmp/schema_1_syncope2.html $VERSION/rest/2.1
+mv /tmp/syncope.wadl $VERSION/rest/2.1
+cp $SYNCOPE_SITE_DIR/target/generated-docs/getting-started.* docs/2.1/
+cp $SYNCOPE_SITE_DIR/target/generated-docs/reference-guide.* docs/2.1/
+cp -r $SYNCOPE_SITE_DIR/target/generated-docs/images docs/2.1/
cd ..
svn add $VERSION
svn copy apidocs/2.0 $VERSION/apidocs/
svn copy rest/2.0 $VERSION/rest/
-# else if releasing from 2_0_X
-cd ..
-svn add $VERSION
-svn copy apidocs/1.2 $VERSION/apidocs/
-svn copy rest/1.2 $VERSION/rest/
-
svn commit -m "Staging site for release"]]></source>
</li>
<li>
@@ -546,11 +550,6 @@ svn commit -m "Cleaning up older releases"]]></source>
wiki page based on the HTML release reports from JIRA
</li>
<li>
- (if releasing from <tt>1_2_X</tt>) Update the
- <a href="https://cwiki.apache.org/confluence/display/SYNCOPE/Create+a+new+Syncope+project">Create
- new project</a> wiki page to point to the new release artifacts
- </li>
- <li>
Update the <a href="https://issues.apache.org/jira/plugins/servlet/project-config/SYNCOPE/versions">JIRA
versions</a> page to mark the version as <strong>Released</strong>, and set the date to the date that
the release was approved. You may also need to make a new release entry for the next release.
@@ -566,8 +565,8 @@ svn rm $VERSION
svn commit -m "Promoting the staging site"]]></source>
</li>
<li>
- If releasing from 2_0_X, deploy the updated Docker images to <a href="https://hub.docker.com/">DockerHub</a> by adjusting the GIT tag
- name then running the <a href="https://builds.apache.org/job/Syncope-2_0_X-Docker">dedicated Jenkins job</a>.
+ Deploy the updated Docker images to <a href="https://hub.docker.com/">DockerHub</a> by adjusting the GIT tag
+ name then running the <a href="https://builds.apache.org/job/Syncope-Docker">dedicated Jenkins job</a>.
</li>
</ol>
</subsection>
[7/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/test/resources/content12.xml
----------------------------------------------------------------------
diff --git a/client/cli/src/test/resources/content12.xml b/client/cli/src/test/resources/content12.xml
deleted file mode 100644
index 7512c63..0000000
--- a/client/cli/src/test/resources/content12.xml
+++ /dev/null
@@ -1,1154 +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.
--->
-<dataset>
- <SyncopeConf id="1"
- creator="admin" lastModifier="admin"
- creationDate="2014-06-20 11:00:00" lastChangeDate="2014-06-20 11:00:00"/>
-
- <CSchema name="password.cipher.algorithm" type="String"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="1" owner_id="1" schema_name="password.cipher.algorithm"/>
- <CAttrValue id="1" attribute_id="1" stringValue="SHA1"/>
-
- <!-- notificationjob.cronExpression:
- + not existing: NotificationJob runs according to Notification.DEFAULT_CRON_EXP
- + provided as empty string: NotificationJob disabled
- + provided as non-empty string: NotificationJob runs according to the given value -->
- <CSchema name="notificationjob.cronExpression" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="2" owner_id="1" schema_name="notificationjob.cronExpression"/>
- <CAttrValue id="2" attribute_id="2" stringValue=""/>
-
- <CSchema name="notification.maxRetries" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="3" owner_id="1" schema_name="notification.maxRetries"/>
- <CAttrValue id="3" attribute_id="3" longValue="3"/>
-
- <CSchema name="token.length" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="4" owner_id="1" schema_name="token.length"/>
- <CAttrValue id="4" attribute_id="4" longValue="256"/>
-
- <CSchema name="token.expireTime" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="5" owner_id="1" schema_name="token.expireTime"/>
- <CAttrValue id="5" attribute_id="5" longValue="60"/>
-
- <CSchema name="selfRegistration.allowed" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="6" owner_id="1" schema_name="selfRegistration.allowed"/>
- <CAttrValue id="6" attribute_id="6" booleanValue="1"/>
-
- <CSchema name="passwordReset.allowed" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="7" owner_id="1" schema_name="passwordReset.allowed"/>
- <CAttrValue id="7" attribute_id="7" booleanValue="1"/>
-
- <CSchema name="passwordReset.securityQuestion" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="8" owner_id="1" schema_name="passwordReset.securityQuestion"/>
- <CAttrValue id="8" attribute_id="8" booleanValue="1"/>
-
- <CSchema name="authentication.statuses" type="String"
- mandatoryCondition="true" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CAttr id="9" owner_id="1" schema_name="authentication.statuses"/>
- <CAttrValue id="9" attribute_id="9" stringValue="created"/>
- <CAttrValue id="10" attribute_id="9" stringValue="active"/>
-
- <!-- Save user login date upon successful authentication -->
- <CSchema name="log.lastlogindate" type="Boolean"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
- <CAttrValue id="11" attribute_id="11" booleanValue="1"/>
-
- <CSchema name="tasks.interruptMaxRetries" type="Long"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <CAttr id="12" owner_id="1" schema_name="tasks.interruptMaxRetries"/>
- <CAttrValue id="12" attribute_id="12" longValue="20"/>
-
- <!-- For usage with admin console -->
- <CSchema name="admin.user.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CSchema name="self.user.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CSchema name="admin.role.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CSchema name="self.role.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CSchema name="admin.membership.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
- <CSchema name="self.membership.layout" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-
- <!-- sample policies -->
- <Policy DTYPE="SyncPolicy" id="1" description="global sync policy" type="GLOBAL_SYNC"
- specification='{"userJavaRule":null,"roleJavaRule":null,"conflictResolutionAction":"IGNORE","userAltSearchSchemas":[],"roleAltSearchSchemas":[]}'/>
- <Policy DTYPE="PasswordPolicy" id="2" description="global password policy" type="GLOBAL_PASSWORD"
- specification='{"historyLength":1,"maxLength":0,"minLength":8,"nonAlphanumericRequired":false,"alphanumericRequired":false,"digitRequired":false,"lowercaseRequired":false,"uppercaseRequired":false,"mustStartWithDigit":false,"mustntStartWithDigit":false,"mustEndWithDigit":false,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[],"allowNullPassword":true}'/>
- <Policy DTYPE="SyncPolicy" id="3" description="sync policy 2" type="SYNC"
- specification='{"userJavaRule":null,"roleJavaRule":null,"conflictResolutionAction":"ALL","userAltSearchSchemas":["username","firstname"],"roleAltSearchSchemas":[]}'/>
- <Policy DTYPE="PasswordPolicy" id="4" description="sample password policy" type="PASSWORD"
- specification='{"historyLength":0,"maxLength":0,"minLength":10,"nonAlphanumericRequired":false,"alphanumericRequired":false,"digitRequired":true,"lowercaseRequired":false,"uppercaseRequired":false,"mustStartWithDigit":false,"mustntStartWithDigit":false,"mustEndWithDigit":false,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[], "allowNullPassword":false}'/>
- <Policy DTYPE="AccountPolicy" id="5" description="global account policy" type="GLOBAL_ACCOUNT"
- specification='{"maxLength":0,"minLength":0,"pattern":null,"allUpperCase":false,"allLowerCase":false,"propagateSuspension":false,"permittedLoginRetries":0,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":[],"suffixesNotPermitted":[]}'/>
- <Policy DTYPE="AccountPolicy" id="6" description="sample account policy" type="ACCOUNT"
- specification='{"maxLength":0,"minLength":4,"pattern":null,"allUpperCase":false,"allLowerCase":false,"propagateSuspension":false,"permittedLoginRetries":3,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[]}'/>
- <Policy DTYPE="SyncPolicy" id="7" description="sync policy 1" type="SYNC"
- specification='{"userJavaRule":null,"roleJavaRule":null,"conflictResolutionAction":"IGNORE","userAltSearchSchemas":[],"roleAltSearchSchemas":[]}'/>
- <Policy DTYPE="PasswordPolicy" id="8" description="sample password policy" type="PASSWORD"
- specification='{"historyLength":0,"maxLength":0,"minLength":10,"nonAlphanumericRequired":true,"alphanumericRequired":false,"digitRequired":true,"lowercaseRequired":true,"uppercaseRequired":true,"mustStartWithDigit":true,"mustntStartWithDigit":false,"mustEndWithDigit":true,"mustntEndWithDigit":false,"mustStartWithNonAlpha":false,"mustStartWithAlpha":false,"mustntStartWithNonAlpha":false,"mustntStartWithAlpha":false,"mustEndWithNonAlpha":false,"mustEndWithAlpha":false,"mustntEndWithNonAlpha":false,"mustntEndWithAlpha":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[],"allowNullPassword":false}'/>
- <Policy DTYPE="SyncPolicy" id="9" description="sync policy for java rule" type="SYNC"
- specification='{"userJavaRule":null,"roleJavaRule":null,"conflictResolutionAction":"IGNORE","userAltSearchSchemas":[],"roleAltSearchSchemas":[]}'/>
-
- <SyncopeUser id="1" workflowId="4" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
- username="rossini" creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
- <SyncopeUser id="2" workflowId="6" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
- username="verdi" creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
- <SyncopeUser id="3" workflowId="8" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
- username="vivaldi" creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
- <SyncopeUser id="4" workflowId="10" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
- username="bellini" creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
- <SyncopeUser id="5" workflowId="12" status="active" password="5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8" cipherAlgorithm="SHA1"
- username="puccini" creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00" suspended="0"/>
-
- <SyncopeRole id="1" name="root"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="2" name="child" parent_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="3" name="citizen"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="4" name="employee" parent_id="3"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="5" name="secretary" parent_id="4"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="6"
- name="director" parent_id="4" userOwner_id="5"
- inheritAttrs="1" inheritDerAttrs="1" inheritVirAttrs="1"
- inheritPasswordPolicy="0" inheritAccountPolicy="0"
- passwordPolicy_id="4"
- accountPolicy_id="6"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="7"
- name="managingDirector" parent_id="6"
- inheritAttrs="1" inheritDerAttrs="1" inheritVirAttrs="1"
- inheritPasswordPolicy="1" inheritAccountPolicy="1" inheritOwner="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="8"
- name="otherchild" parent_id="1"
- inheritVirAttrs="1"
- passwordPolicy_id="4"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="9" name="roleForWorkflowApproval" parent_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="10"
- name="managingConsultant" parent_id="6"
- inheritAttrs="1" inheritDerAttrs="1" inheritVirAttrs="1"
- inheritPasswordPolicy="1" inheritAccountPolicy="1" inheritOwner="0"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="11" name="roleForWorkflowOptIn" parent_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="12" name="aRoleForPropagation" parent_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="13" name="bRoleForPropagation" parent_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <SyncopeRole id="14"
- name="artDirector" parent_id="4"
- inheritAttrs="1" inheritDerAttrs="1" inheritVirAttrs="1"
- inheritPasswordPolicy="0" inheritAccountPolicy="0"
- passwordPolicy_id="8"
- accountPolicy_id="6"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-
- <Membership id="1" syncopeUser_id="1" syncopeRole_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <Membership id="2" syncopeUser_id="2" syncopeRole_id="1"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <Membership id="3" syncopeUser_id="2" syncopeRole_id="2"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <Membership id="4" syncopeUser_id="4" syncopeRole_id="7"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <Membership id="5" syncopeUser_id="1" syncopeRole_id="8"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <Membership id="6" syncopeUser_id="2" syncopeRole_id="3"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <Membership id="7" syncopeUser_id="5" syncopeRole_id="14"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-
- <USchema name="fullname" type="String"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="1" readonly="0"/>
- <USchema name="userId" type="String"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="1" readonly="0"
- validatorClass="org.apache.syncope.core.persistence.validation.attrvalue.EmailAddressValidator"/>
- <USchema name="loginDate" type="Date"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"
- conversionPattern="yyyy-MM-dd"/>
- <USchema name="firstname" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <USchema name="surname" type="String"
- mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <USchema name="type" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <USchema name="email" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- validatorClass="org.apache.syncope.core.persistence.validation.attrvalue.EmailAddressValidator"/>
- <USchema name="activationDate" type="Date"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- conversionPattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
- <USchema name="uselessReadonly" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="1"/>
- <USchema name="cool" type="Boolean"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <USchema name="gender" type="Enum"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- enumerationValues="M;F"/>
- <USchema name="aLong" type="Long"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <USchema name="makeItDouble" type="Long"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <USchema name="obscure" type="Encrypted"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- secretKey="7abcdefghilmnopqrstuvz9#" cipherAlgorithm="SHA"/>
- <USchema name="photo" type="Binary"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- mimeType="image/jpeg"/>
-
- <UDerSchema name="csvuserid" expression="firstname + ',' + surname"/>
- <UDerSchema name="cn" expression="surname + ', ' + firstname"/>
- <UDerSchema name="noschema" expression="surname + ', ' + notfound"/>
-
- <UVirSchema name="virtualdata"/>
- <UVirSchema name="virtualPropagation"/>
-
- <RSchema name="icon" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <RSchema name="show" type="Boolean"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <RSchema name="rderived_sx" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <RSchema name="rderived_dx" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <RSchema name="title" type="String"
- mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>
-
- <RDerSchema name="rderiveddata" expression="rderived_sx + '-' + rderived_dx"/>
- <RDerSchema name="displayProperty" expression="icon + ': ' + show"/>
- <RDerSchema name="rderToBePropagated" expression="rderived_sx + '-' + rderived_dx"/>
-
- <RVirSchema name="rvirtualdata"/>
-
- <!-- rderiveddata is used to verify der schema deletion -->
- <RDerSchema name="rderivedschema" expression="rderived_sx + '-' + rderived_dx"/>
-
- <MSchema name="subscriptionDate" type="Date"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"
- conversionPattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
- <MSchema name="mderived_sx" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <MSchema name="mderived_dx" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
- <MSchema name="postalAddress" type="String"
- mandatoryCondition="false" multivalue="0" uniqueConstraint="0" readonly="0"/>
-
- <MDerSchema name="mderiveddata" expression="mderived_sx + '-' + mderived_dx"/>
- <MDerSchema name="mderToBePropagated" expression="mderived_sx + '-' + mderived_dx"/>
-
- <MVirSchema name="mvirtualdata"/>
-
- <UAttr id="99" owner_id="1" schema_name="type"/>
- <UAttrValue id="9" attribute_id="99" stringValue="G"/>
- <UAttr id="100" owner_id="1" schema_name="fullname"/>
- <UAttrUniqueValue id="10" attribute_id="100" schema_name="fullname" stringValue="Gioacchino Rossini"/>
- <UAttr id="101" owner_id="1" schema_name="firstname"/>
- <UAttrValue id="11" attribute_id="101" stringValue="Gioacchino"/>
- <UAttr id="102" owner_id="1" schema_name="surname"/>
- <UAttrValue id="12" attribute_id="102" stringValue="Rossini"/>
- <UAttr id="103" owner_id="1" schema_name="userId"/>
- <UAttrUniqueValue id="13" attribute_id="103" schema_name="userId" stringValue="rossini@apache.org"/>
- <UAttr id="104" owner_id="1" schema_name="loginDate"/>
- <UAttrValue id="14" attribute_id="104" dateValue="2009-05-26"/>
- <UAttrValue id="15" attribute_id="104" dateValue="2010-05-26 15:40:04"/>
-
- <UAttr id="105" owner_id="2" schema_name="fullname"/>
- <UAttrUniqueValue id="16" attribute_id="105" schema_name="fullname" stringValue="Giuseppe Verdi"/>
- <UAttr id="106" owner_id="2" schema_name="firstname"/>
- <UAttrValue id="17" attribute_id="106" stringValue="Giuseppe"/>
- <UAttr id="107" owner_id="2" schema_name="surname"/>
- <UAttrValue id="18" attribute_id="107" stringValue="Verdi"/>
- <UAttr id="108" owner_id="2" schema_name="userId"/>
- <UAttrUniqueValue id="19" attribute_id="108" schema_name="userId" stringValue="verdi@apache.org"/>
-
- <UAttr id="109" owner_id="3" schema_name="firstname"/>
- <UAttrValue id="20" attribute_id="109" stringValue="Antonio"/>
- <UAttr id="110" owner_id="3" schema_name="surname"/>
- <UAttrValue id="21" attribute_id="110" stringValue="Vivaldi"/>
- <UAttr id="111" owner_id="3" schema_name="fullname"/>
- <UAttrUniqueValue id="22" attribute_id="111" schema_name="fullname" stringValue="Antonio Vivaldi"/>
- <UAttr id="112" owner_id="3" schema_name="userId"/>
- <UAttrUniqueValue id="23" attribute_id="112" schema_name="userId" stringValue="vivaldi@apache.org"/>
-
- <UAttr id="113" owner_id="4" schema_name="firstname"/>
- <UAttrValue id="24" attribute_id="113" stringValue="Vincenzo"/>
- <UAttr id="114" owner_id="4" schema_name="surname"/>
- <UAttrValue id="25" attribute_id="114" stringValue="Bellini"/>
- <UAttr id="115" owner_id="4" schema_name="fullname"/>
- <UAttrUniqueValue id="26" attribute_id="115" schema_name="fullname" stringValue="Vincenzo Bellini"/>
- <UAttr id="116" owner_id="4" schema_name="userId"/>
- <UAttrUniqueValue id="27" attribute_id="116" schema_name="userId" stringValue="bellini@apache.org"/>
- <UAttr id="117" owner_id="4" schema_name="loginDate"/>
- <UAttrValue id="28" attribute_id="117" dateValue="2009-06-24"/>
- <UAttr id="118" owner_id="4" schema_name="cool"/>
- <UAttrValue id="29" attribute_id="118" booleanValue="1"/>
- <UAttr id="119" owner_id="4" schema_name="gender"/>
- <UAttrValue id="30" attribute_id="119" stringValue="M"/>
-
- <UAttr id="120" owner_id="5" schema_name="firstname"/>
- <UAttrValue id="31" attribute_id="120" stringValue="Giacomo"/>
- <UAttr id="121" owner_id="5" schema_name="surname"/>
- <UAttrValue id="32" attribute_id="121" stringValue="Puccini"/>
- <UAttr id="122" owner_id="5" schema_name="fullname"/>
- <UAttrUniqueValue id="33" attribute_id="122" schema_name="fullname" stringValue="Giacomo Puccini"/>
- <UAttr id="123" owner_id="5" schema_name="userId"/>
- <UAttrUniqueValue id="34" attribute_id="123" schema_name="userId" stringValue="puccini@apache.org"/>
-
- <UAttr id="124" owner_id="2" schema_name="email"/>
- <UAttrValue id="35" attribute_id="124" stringValue="verdi@syncope.org"/>
- <UAttr id="125" owner_id="3" schema_name="email"/>
- <UAttrValue id="36" attribute_id="125" stringValue="vivaldi@syncope.org"/>
- <UAttr id="126" owner_id="3" schema_name="type"/>
- <UAttrValue id="37" attribute_id="126" stringValue="F"/>
-
- <UVirAttr id="1000" virSchema_name="virtualdata" owner_id="3"/>
-
- <UVirSchema name="virtualReadOnly" READONLY="1"/>
-
- <UDerAttr id="100" derSchema_name="cn" owner_id="3"/>
- <UDerAttr id="101" derSchema_name="cn" owner_id="1"/>
-
- <RAttrTemplate id="600" owner_id="1" schema_name="icon"/>
- <RAttr id="600" owner_id="1" template_id="600"/>
- <RAttrValue attribute_id="600" id="40" stringValue="niceIcon"/>
-
- <RAttrTemplate id="700" owner_id="2" schema_name="icon"/>
- <RAttr id="700" owner_id="2" template_id="700"/>
- <RAttrValue attribute_id="700" id="41" stringValue="badIcon"/>
-
- <RAttrTemplate id="800" owner_id="1" schema_name="show"/>
- <RAttr id="800" owner_id="1" template_id="800"/>
- <RAttrValue attribute_id="800" id="42" booleanValue="1"/>
-
- <RAttrTemplate id="900" owner_id="6" schema_name="icon"/>
- <RAttr id="900" owner_id="6" template_id="900"/>
- <RAttrValue attribute_id="900" id="43" stringValue="icon6"/>
-
- <RAttrTemplate id="950" owner_id="4" schema_name="icon"/>
- <RAttr id="950" owner_id="4" template_id="950"/>
- <RAttrValue attribute_id="950" id="44" stringValue="icon4"/>
-
- <RAttrTemplate id="992" owner_id="1" schema_name="rderived_sx"/>
- <RAttr id="992" owner_id="1" template_id="992"/>
- <RAttrValue attribute_id="992" id="92" stringValue="sx"/>
-
- <RAttrTemplate id="993" owner_id="1" schema_name="rderived_dx"/>
- <RAttr id="993" owner_id="1" template_id="993"/>
- <RAttrValue attribute_id="993" id="93" stringValue="dx"/>
-
- <RAttrTemplate id="994" owner_id="12" schema_name="title"/>
- <RAttr id="994" owner_id="12" template_id="994"/>
- <RAttrValue attribute_id="994" id="94" stringValue="r12"/>
-
- <RAttrTemplate id="995" owner_id="13" schema_name="title"/>
- <RAttr id="995" owner_id="13" template_id="995"/>
- <RAttrValue attribute_id="995" id="95" stringValue="r13"/>
-
- <RDerAttrTemplate id="1000" owner_id="1" schema_name="rderiveddata"/>
- <RDerAttr id="1000" owner_id="1" template_id="1000"/>
-
- <RDerAttrTemplate id="1001" owner_id="1" schema_name="displayProperty"/>
- <RDerAttr id="1001" owner_id="1" template_id="1001"/>
-
- <RDerAttrTemplate id="1002" owner_id="4" schema_name="displayProperty"/>
- <RDerAttr id="1002" owner_id="4" template_id="1002"/>
-
- <RDerAttrTemplate id="1003" owner_id="1" schema_name="rderToBePropagated"/>
- <RDerAttr id="1003" owner_id="1" template_id="1003"/>
-
- <RVirAttrTemplate id="98" owner_id="4" schema_name="rvirtualdata"/>
- <RVirAttr id="98" owner_id="4" template_id="98"/>
-
- <RVirAttrTemplate id="99" owner_id="3" schema_name="rvirtualdata"/>
-
- <MAttrTemplate id="98" owner_id="1" schema_name="mderived_sx"/>
-
- <MAttrTemplate id="99" owner_id="1" schema_name="mderived_dx"/>
-
- <MAttrTemplate id="100" owner_id="7" schema_name="subscriptionDate"/>
- <MAttr id="100" owner_id="4" template_id="100"/>
- <MAttrValue attribute_id="100" id="90" dateValue="2009-05-26"/>
- <MAttrValue attribute_id="100" id="91" dateValue="2010-05-26 15:40:04"/>
-
- <MAttrTemplate id="101" owner_id="8" schema_name="subscriptionDate"/>
-
- <MAttrTemplate id="102" owner_id="1" schema_name="mderived_sx"/>
- <MAttr id="102" owner_id="1" template_id="102"/>
- <MAttrValue attribute_id="102" id="92" stringValue="sx"/>
-
- <MAttrTemplate id="103" owner_id="1" schema_name="mderived_dx"/>
- <MAttr id="103" owner_id="1" template_id="103"/>
- <MAttrValue attribute_id="103" id="93" stringValue="dx"/>
-
- <MAttrTemplate id="104" owner_id="12" schema_name="postalAddress"/>
-
- <MDerAttrTemplate id="99" owner_id="1" schema_name="mderiveddata"/>
- <MDerAttr id="99" owner_id="1" template_id="99"/>
-
- <MDerAttrTemplate id="100" owner_id="1" schema_name="mderToBePropagated"/>
-
- <MVirAttrTemplate id="99" owner_id="2" schema_name="mvirtualdata"/>
-
- <ConnInstance id="100" displayName="ConnInstance100"
- location="${connid.location}"
- bundleName="net.tirasa.connid.bundles.soap"
- connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector"
- version="${connid.soap.version}"
- jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["http://localhost:9080/wssample/services/provisioning"]},{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]}]'/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="ONE_PHASE_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="TWO_PHASES_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="TWO_PHASES_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="TWO_PHASES_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="100" capabilities="SEARCH"/>
-
- <ConnInstance id="101" displayName="H2"
- location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
- bundleName="net.tirasa.connid.bundles.db.table"
- connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector"
- version="${connid.db.table.version}"
- jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"retrievePassword","displayName":null,"helpMessage":null,"type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"cipherAlgorithm","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValu
es":null},"overridable":false,"values":["SHA1"]},{"schema":{"name":"enabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"passwordColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"jdbcDriver","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"defaultStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"table","displayName":null,"helpMessage":null,"type":"java.lang.String","required
":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test"]},{"schema":{"name":"password","displayName":null,"helpMessage":null,"type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"statusColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"jdbcUrlTemplate","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]}]'/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="AUTHENTICATE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="ONE_PHASE_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="TWO_PHASES_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="TWO_PHASES_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="TWO_PHASES_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="SEARCH"/>
- <ConnInstance_capabilities ConnInstance_id="101" capabilities="SYNC"/>
-
- <ConnInstance id="102" displayName="ConnInstance102"
- location="${connid.location}"
- bundleName="net.tirasa.connid.bundles.soap"
- connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector"
- version="${connid.soap.version}"
- connRequestTimeout="10"
- jsonConf='[{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]},{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:9080/wssample/services/provisioning"]}]'/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="ONE_PHASE_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="TWO_PHASES_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="TWO_PHASES_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="TWO_PHASES_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="102" capabilities="SEARCH"/>
-
- <ConnInstance id="103" displayName="ConnInstance103"
- location="${connid.location}"
- bundleName="net.tirasa.connid.bundles.soap"
- connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector"
- version="${connid.soap.version}"
- jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["http://localhost:9080/wssample/services/provisioning"]},{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]}]'/>
-
- <ConnInstance id="104" displayName="CSVDir"
- location="${connid.location}"
- bundleName="net.tirasa.connid.bundles.csvdir"
- connectorName="net.tirasa.connid.bundles.csvdir.CSVDirConnector"
- version="${connid.csvdir.version}"
- jsonConf='[{"schema":{"name":"fields","displayName":"fields","helpMessage":"Column names separated by comma","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id","name","surname","email","password","role","membership","status","deleted"]},{"schema":{"name":"keyColumnNames","displayName":"Key column name","helpMessage":"Name of the column used to identify user uniquely","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["name","surname"]},{"schema":{"name":"deleteColumnName","displayName":"Delete column name","helpMessage":"Name of the column used to specify users to be deleted","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["deleted"]},{"schema":{"name":"passwordColumnName","displayName":"Password column name","helpMessage":"Name of th
e column used to specify user password","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"keyseparator","displayName":"Key separator","helpMessage":"Character used to separate keys in a multi-key scenario","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[","]},{"schema":{"name":"ignoreHeader","displayName":"Ignore header","helpMessage":"Specify it first line file must be ignored","type":"java.lang.Boolean","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"fieldDelimiter","displayName":"fieldDelimiter","helpMessage":"fieldDelimiter","type":"char","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[","]},{"schema":{"name":"quotationRequired","displayName":"Value quotation required","
helpMessage":"Specify if value quotation is required","type":"java.lang.Boolean","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"statusColumn","displayName":"statusColumn","helpMessage":"Status column","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"sourcePath","displayName":"Source path","helpMessage":"Absolute path of a directory where are located CSV files to be processed","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["${test.csvdir.path}"]},{"schema":{"name":"fileMask","displayName":"File mask","helpMessage":"Regular expression describing files to be processed","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test.csv"]}]'/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="ONE_PHASE_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="TWO_PHASES_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="TWO_PHASES_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="TWO_PHASES_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="SEARCH"/>
- <ConnInstance_capabilities ConnInstance_id="104" capabilities="SYNC"/>
-
- <ConnInstance id="105" bundleName="net.tirasa.connid.bundles.ldap" displayName="ApacheDS"
- location="${connid.location}"
- connectorName="net.tirasa.connid.bundles.ldap.LdapConnector"
- version="${connid.ldap.version}"
- jsonConf='[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any LDAP groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"The name or IP address of the host where the LDAP server is running.","type":"jav
a.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["localhost"]},{"schema":{"name":"passwordHashAlgorithm","displayName":"Password Hash Algorithm","helpMessage":"Indicates the algorithm that the Identity system should use to hash the password. Currently supported values are SSHA, SHA, SSHA1, and SHA1. A blank value indicates that the system will not hash passwords. This will cause cleartext passwords to be stored in LDAP unless the LDAP server performs the hash (Netscape Directory Server and iPlanet Directory Server do).","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA"]},{"schema":{"name":"blockSize","displayName":"Block Size","helpMessage":"The maximum number of accounts that can be in a block when retrieving accounts in blocks.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"valu
es":[]},{"schema":{"name":"useBlocks","displayName":"Use Blocks","helpMessage":"When performing operations on large numbers of accounts, the accounts are processed in blocks to reduce the amount of memory used by the operation. Select this option to process accounts in blocks.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"usePagedResultControl","displayName":"Use Paged Result Control","helpMessage":"When enabled, the LDAP Paged Results control is preferred over the VLV control when retrieving accounts.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"port","displayName":"TCP Port","helpMessage":"TCP/IP port number used to communicate with the LDAP server.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[1389]},{"schema":{"nam
e":"vlvSortAttribute","displayName":"VLV Sort Attribute","helpMessage":"Specify the sort attribute to use for VLV indexes on the resource.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusManagementClass","displayName":"Status management class ","helpMessage":"Class to be used to manage enabled/disabled status. If no class is specified then identity status management wont be possible.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.ldap.commons.AttributeStatusManagement"]},{"schema":{"name":"accountObjectClasses","displayName":"Account Object Classes","helpMessage":"The object class or classes that will be used when creating new user objects in the LDAP tree. When entering more than one object class, each entry should be on its own line; do not use commas or semi-colons to s
eparate multiple object classes. Some object classes may require that you specify all object classes in the class hierarchy.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson"]},{"schema":{"name":"accountUserNameAttributes","displayName":"Account User Name Attributes","helpMessage":"Attribute or attributes which holds the account user name. They will be used when authenticating to find the LDAP entry for the user name to authenticate.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid"]},{"schema":{"name":"baseContextsToSynchronize","displayName":"Base Contexts to Synchronize","helpMessage":"One or more starting points in the LDAP tree that will be used to determine if a change should be synchronized. The base contexts attribute will be used to synchronize a change if this property is not set.","type":"[Lja
va.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"accountSynchronizationFilter","displayName":"LDAP Filter for Accounts to Synchronize","helpMessage":"An optional LDAP filter for the objects to synchronize. Because the change log is for all objects, this filter updates only objects that match the specified filter. If you specify a filter, an object will be synchronized only if it matches the filter and includes a synchronized object class.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"removeLogEntryObjectClassFromFilter","displayName":"Remove Log Entry Object Class from Filter","helpMessage":"If this property is set (the default), the filter used to fetch change log entries does not contain the \"changeLogEntry\" object class, expecting that there are no entri
es of other object types in the change log.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordDecryptionKey","displayName":"Password Decryption Key","helpMessage":"The key to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"readSchema","displayName":"Read Schema","helpMessage":"If true, the connector will read the schema from the server. If false, the connector will provide a default schema based on the object classes in the configuration. This property must be true in order to use extended object classes.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"ssl","displayName":"SSL","hel
pMessage":"Select the check box to connect to the LDAP server using SSL.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordAttributeToSynchronize","displayName":"Password Attribute to Synchronize","helpMessage":"The name of the password attribute to synchronize when performing password synchronization.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"accountSearchFilter","displayName":"LDAP Filter for Retrieving Accounts","helpMessage":"An optional LDAP filter to control which accounts are returned from the LDAP resource. If no filter is specified, only accounts that include all specified object classes are returned.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=*"]},{"schema":{"name":"passwordDec
ryptionInitializationVector","displayName":"Password Decryption Initialization Vector","helpMessage":"The initialization vector to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupMemberAttribute","displayName":"Group Member Attribute","helpMessage":"The name of the group attribute that will be updated with the distinguished name of the user when the user is added to the group.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"failover","displayName":"Failover Servers","helpMessage":"List all servers that should be used for failover in case the preferred server fails. If the preferred server fails, JNDI will connect to the next available server in the list. List all servers in the
form of \"ldap://ldap.example.com:389/\", which follows the standard LDAP v3 URLs described in RFC 2255. Only the host and port parts of the URL are relevant in this setting.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"modifiersNamesToFilterOut","displayName":"Filter Out Changes By","helpMessage":"The names (DNs) of directory administrators to filter from the changes. Changes with the attribute \"modifiersName\" that match entries in this list will be filtered out. The standard value is the administrator name used by this adapter, to prevent loops. Entries should be of the format \"cn=Directory Manager\".","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupNameAttributes","displayName":"Group Name Attributes","helpMessage":"Attribute or attributes which holds the group nam
e.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"respectResourcePasswordPolicyChangeAfterReset","displayName":"Respect Resource Password Policy Change-After-Reset","helpMessage":"When this resource is specified in a Login Module (i.e., this resource is a pass-through authentication target) and the resource password policy is configured for change-after-reset, a user whose resource account password has been administratively reset will be required to change that password after successfully authenticating.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overrida
ble":false,"values":["false"]},{"schema":{"name":"filterWithOrInsteadOfAnd","displayName":"Filter with Or Instead of And","helpMessage":"Normally the the filter used to fetch change log entries is an and-based filter retrieving an interval of change entries. If this property is set, the filter will or together the required change numbers instead.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"principal","displayName":"Principal","helpMessage":"The distinguished name with which to authenticate to the LDAP server.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=admin,ou=system"]},{"schema":{"name":"changeLogBlockSize","displayName":"Change Log Block Size","helpMessage":"The number of change log entries to fetch per query.","type":"int","required":true,"order":0,"confidential":false,"defaultValues":null},
"overridable":false,"values":[100]},{"schema":{"name":"baseContexts","displayName":"Base Contexts","helpMessage":"One or more starting points in the LDAP tree that will be used when searching the tree. Searches are performed when discovering users from the LDAP server or when looking for the groups of which a user is a member.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=groups,o=isp"]},{"schema":{"name":"passwordAttribute","displayName":"Password Attribute","helpMessage":"The name of the LDAP attribute which holds the password. When changing an user password, the new password is set to this attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["userpassword"]},{"schema":{"name":"changeNumberAttribute","displayName":"Change Number Attribute","helpMessage":"The name of the change number attribute
in the change log entry.","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["changeNumber"]},{"schema":{"name":"objectClassesToSynchronize","displayName":"Object Classes to Synchronize","helpMessage":"The object classes to synchronize. The change log is for all objects; this filters updates to just the listed object classes. You should not list the superclasses of an object class unless you intend to synchronize objects with any of the superclass values. For example, if only \"inetOrgPerson\" objects should be synchronized, but the superclasses of \"inetOrgPerson\" (\"person\", \"organizationalperson\" and \"top\") should be filtered out, then list only \"inetOrgPerson\" here. All objects in LDAP are subclassed from \"top\". For this reason, you should never list \"top\", otherwise no object would be filtered.","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},
"overridable":false,"values":["inetOrgPerson","groupOfUniqueNames"]},{"schema":{"name":"credentials","displayName":"Password","helpMessage":"Password for the principal.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["secret"]},{"schema":{"name":"attributesToSynchronize","displayName":"Attributes to Synchronize","helpMessage":"The names of the attributes to synchronize. This ignores updates from the change log if they do not update any of the named attributes. For example, if only \"department\" is listed, then only changes that affect \"department\" will be processed. All other updates are ignored. If blank (the default), then all changes are processed.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"maintainPosixGroupMembership","displayName":"Maintain POSIX Group M
embership","helpMessage":"When enabled and a user is renamed or deleted, update any POSIX groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["truemaintainLdapGroupMembership"]}]'/>
- <ConnInstance_capabilities ConnInstance_id="105" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="105" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="105" capabilities="ONE_PHASE_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="105" capabilities="SEARCH"/>
-
- <ConnInstance id="106" displayName="H2-test2"
- location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
- bundleName="net.tirasa.connid.bundles.db.table"
- connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector"
- version="${connid.db.table.version}"
- jsonConf='[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"cipherAlgorithm","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA1"]},{"schema":{"name":"enabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"
defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"passwordColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"jdbcDriver","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"retrievePassword","displayName":null,"helpMessage":null,"type":"java.lang.Boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"defaultStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"password","displayName":null,"helpMessage":null,"type":"org.identityco
nnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"statusColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"jdbcUrlTemplate","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]},{"schema":{"name":"table","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test2"]}]'/>
- <ConnInstance_capabilities ConnInstance_id="106" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="106" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="106" capabilities="SEARCH"/>
- <ConnInstance_capabilities ConnInstance_id="106" capabilities="SYNC"/>
-
- <ConnInstance id="107" bundleName="net.tirasa.connid.bundles.db.table"
- location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}"
- connectorName="net.tirasa.connid.bundles.db.table.DatabaseTableConnector"
- displayName="H2-testsync" version="${connid.db.table.version}"
- jsonConf='[{"schema":{"name":"changeLogColumn","displayName":"Change Log Column (Sync)","helpMessage":"=<b>Change Log Column</b><br>The change log column store the latest change time. Providing this value the Sync capabilities are activated.","type":"java.lang.String","required":false,"order":21,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"nativeTimestamps","displayName":"Native Timestamps ","helpMessage":"<b>Native Timestamps</b><br>Select to retrieve Timestamp data type of the columns in java.sql.Timestamp format from the database table.","type":"boolean","required":false,"order":18,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"cipherAlgorithm","displayName":"Password cipher algorithm (defaults to CLEARTEXT)","helpMessage":"Cipher algorithm used to encode password before to store it onto the database table.\nSpecify one of th
e values among CLEARTEXT,AES, MD5, SHA1, SHA256 or a custom implementation identified by its class name.","type":"java.lang.String","required":false,"order":24,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"enabledStatusValue","displayName":"Enabled Status Value","helpMessage":"<b>Enabled Status Value</b><br>Enter the value for enabled status.","type":"java.lang.String","required":false,"order":12,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"retrievePassword","displayName":"Retrieve password","helpMessage":"Specify if password must be retrieved by default.","type":"boolean","required":true,"order":27,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"datasource","displayName":"Datasource Path","helpMessage":"<b>JDBC Data Source Name/Path</b><br>Enter the JDBC Data Source Name/Path to connect to the Or
acle server. If specified, connector will only try to connect using Datasource and ignore other resource parameters specified.<br>the example value is: <CODE>jdbc/SampleDataSourceName</CODE>","type":"java.lang.String","required":false,"order":22,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"allNative","displayName":"All native","helpMessage":"<b>All native</b><br>Select to retrieve all data type of the columns in a native format from the database table.","type":"boolean","required":false,"order":19,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":"User","helpMessage":"<b>User</b><br>Enter the name of the mandatory Database user with permission to account table.","type":"java.lang.String","required":false,"order":4,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name"
:"pwdEncodeToLowerCase","displayName":"Force password encoding to lower case","helpMessage":"Force password encoding to lower case.","type":"boolean","required":false,"order":26,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"jdbcUrlTemplate","displayName":"JDBC Connection URL","helpMessage":"<b>JDBC Connection URL</b><br>Specify the JDBC Driver Connection URL.<br> Oracle template is jdbc:oracle:thin:@[host]:[port(1521)]:[DB].<br> MySQL template is jdbc:mysql://[host]:[port(3306)]/[db], for more info, read the JDBC driver documentation.<br>Could be empty if datasource is provided.","type":"java.lang.String","required":false,"order":15,"confidential":false,"defaultValues":null},"overridable":false,"values":["${testdb.url}"]},{"schema":{"name":"keyColumn","displayName":"Key Column","helpMessage":"<b>Key Column</b><br>This mandatory column value will be used as the unique identi
fier for rows in the table.<br>","type":"java.lang.String","required":true,"order":8,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"validConnectionQuery","displayName":"Validate Connection Query","helpMessage":"<b>Validate Connection Query</b><br>There can be specified the check connection alive query. If empty, default implementation will test it using the switch on/off the autocommit. Some select 1 from dummy table could be more efficient.","type":"java.lang.String","required":false,"order":20,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"rethrowAllSQLExceptions","displayName":"Rethrow all SQLExceptions","helpMessage":"If this is not checked, SQL statements which throw SQLExceptions with a 0 ErrorCode will be have the exception caught and suppressed. Check it to have exceptions with 0 ErrorCodes rethrown.","type":"boolean","required":false,"order":17,"confid
ential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordColumn","displayName":"Password Column","helpMessage":"<b>Password Column</b><br>Enter the name of the column in the table that will hold the password values. If empty, no validation on resource and passwords are activated.","type":"java.lang.String","required":false,"order":9,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"jndiProperties","displayName":"Initial JNDI Properties","helpMessage":"<b>Initial JNDI Properties</b><br>Could be empty or enter the JDBC JNDI Initial context factory, context provider in a format: key = value.","type":"[Ljava.lang.String;","required":false,"order":23,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"password","displayName":"User Password","helpMessage":"<b>User Password</b><br>Enter a user account tha
t has permission to access accounts table.","type":"org.identityconnectors.common.security.GuardedString","required":false,"order":5,"confidential":true,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"<b>Host</b><br>Enter the name of the host where the database is running.","type":"java.lang.String","required":false,"order":2,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"port","displayName":"Port","helpMessage":"<b>TCP Port</b><br>Enter the port number the database server is listening on.","type":"java.lang.String","required":false,"order":3,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusColumn","displayName":"Status Column","helpMessage":"<b>Status Column</b><br>Enter the name of the column in the table that will hold the status values. If empty enabled and
disabled operation wont be performed.","type":"java.lang.String","required":false,"order":10,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"pwdEncodeToUpperCase","displayName":"Force password encoding to upper case","helpMessage":"Force password encoding to upper case.","type":"boolean","required":false,"order":25,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"enableEmptyString","displayName":"Enable writing empty string","helpMessage":"<b>Enable writing empty string</b><br>Select to enable support for writing an empty strings, instead of a NULL value, in character based columns defined as not-null in the table schema. This option does not influence the way strings are written for Oracle based tables. By default empty strings are written as a NULL value.","type":"boolean","required":false,"order":16,"confidential":false,"defaultValues":null},"overridable":false,"
values":["false"]},{"schema":{"name":"database","displayName":"Database","helpMessage":"<b>Database</b><br>Enter the name of the database on the database server that contains the table.","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"defaultStatusValue","displayName":"Default Status Value","helpMessage":"<b>Default Status Value</b><br>Enter the value for status in case of status not specified.","type":"java.lang.String","required":false,"order":13,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"table","displayName":"Table","helpMessage":"<b>Table</b><br>Enter the name of the table in the database that contains the accounts.","type":"java.lang.String","required":true,"order":7,"confidential":false,"defaultValues":null},"overridable":false,"values":["testsync"]},{"schema":{"name":"disab
ledStatusValue","displayName":"Disabled Status Value","helpMessage":"<b>Disabled Status Value</b><br>Enter the value for disabled status.","type":"java.lang.String","required":false,"order":11,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"jdbcDriver","displayName":"JDBC Driver","helpMessage":"<b>JDBC Driver</b><br>Specify the JDBC Driver class name. Oracle is oracle.jdbc.driver.OracleDriver. MySQL is org.gjt.mm.mysql.Driver.<br>Could be empty if datasource is provided.","type":"java.lang.String","required":false,"order":14,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"quoting","displayName":"Name Quoting","helpMessage":"<b>Name Quoting</b><br>Select whether database column names for this resource should be quoted, and the quoting characters. By default, database column names are not quoted (None). For other selec
tions (Single, Double, Back, or Brackets), column names will appear between single quotes, double quotes, back quotes, or brackets in the SQL generated to access the database.","type":"java.lang.String","required":false,"order":1,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"cipherKey","displayName":"Password cipher key","helpMessage":"Specify key in case of reversible algorithm.","type":"java.lang.String","required":false,"order":25,"confidential":false,"defaultValues":null},"overridable":false,"values":[]}]'/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="ONE_PHASE_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="TWO_PHASES_CREATE"/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="ONE_PHASE_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="TWO_PHASES_UPDATE"/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="ONE_PHASE_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="TWO_PHASES_DELETE"/>
- <ConnInstance_capabilities ConnInstance_id="107" capabilities="SEARCH"/>
-
- <ExternalResource name="ws-target-resource-1" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="1" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-2" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
- syncPolicy_id="9"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-timeout" connector_id="102"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="1" createTraceLevel="FAILURES" deleteTraceLevel="NONE" updateTraceLevel="ALL" syncTraceLevel="ALL"
- jsonConf='[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:9080/syncope-build-tools/services/provisioning"]}]'
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-list-mappings-1" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-list-mappings-2" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-delete" connector_id="102"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0" propagationMode="TWO_PHASES"
- propagationPriority="2" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-update" connector_id="100"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="resource-testdb" connector_id="101"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1" propagationMode="ONE_PHASE"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="resource-testdb2" connector_id="106"
- randomPwdIfNotProvided="1" enforceMandatoryCondition="1" propagationMode="ONE_PHASE"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="resource-csv" connector_id="104"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="0" propagationMode="ONE_PHASE" syncPolicy_id="3"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-update-resetsynctoken" connector_id="100" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- userializedSyncToken='{"value":null}'
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="resource-ldap" connector_id="105"
- randomPwdIfNotProvided="1" enforceMandatoryCondition="1" propagationMode="ONE_PHASE"
- propagationPriority="0" propagationPrimary="1"
- createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource_PropActions externalResource_name="resource-ldap"
- element="org.apache.syncope.core.propagation.impl.LDAPMembershipPropagationActions"/>
- <ExternalResource name="ws-target-resource-nopropagation" connector_id="103"
- randomPwdIfNotProvided="0" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- passwordPolicy_id="4"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-
- <!-- The following three resources has been added to verify the issue SYNCOPE-68 -->
- <ExternalResource name="ws-target-resource-nopropagation2" connector_id="103" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-nopropagation3" connector_id="103" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
- <ExternalResource name="ws-target-resource-nopropagation4" connector_id="103" enforceMandatoryCondition="1" propagationMode="TWO_PHASES"
- randomPwdIfNotProvided="0" propagationPriority="0" propagationPrimary="0" createTraceLevel="ALL" deleteTraceLevel="ALL" updateTraceLevel="ALL" syncTraceLevel="ALL"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-
- <!-- External resource for issue SYNCOPE-230 -->
- <ExternalResource name="resource-db-sync" connector_id="107"
- randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
- enforceMandatoryCondition="0"
- propagationMode="TWO_PHASES" propagationPrimary="0" propagationPriority="0"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-
- <!-- External resource for issue SYNCOPE-267 -->
- <ExternalResource name="resource-db-virattr" connector_id="107"
- randomPwdIfNotProvided="0" createTraceLevel="ALL" deleteTraceLevel="ALL" syncTraceLevel="ALL" updateTraceLevel="ALL"
- enforceMandatoryCondition="0"
- propagationMode="TWO_PHASES" propagationPrimary="0" propagationPriority="0"
- creator="admin" lastModifier="admin"
- creationDate="2010-10-20 11:00:00" lastChangeDate="2010-10-20 11:00:00"/>
-
- <!-- Use resource-testdb for passthrough authentication (SYNCOPE-164) in the global account policy -->
- <Policy_ExternalResource account_policy_id="5" resource_name="resource-testdb"/>
-
- <SyncopeUser_ExternalResource user_id="1" resource_name="resource-testdb2"/>
- <SyncopeUser_ExternalResource user_id="3" resource_name="ws-target-resource-delete"/>
- <SyncopeUser_ExternalResource user_id="3" resource_name="ws-target-resource-2"/>
- <SyncopeUser_ExternalResource user_id="3" resource_name="ws-target-resource-1"/>
- <SyncopeUser_ExternalResource user_id="5" resource_name="resource-testdb2"/>
- <SyncopeRole_ExternalResource role_id="3" resource_name="ws-target-resource-list-mappings-1"/>
- <SyncopeRole_ExternalResource role_id="8" resource_name="ws-target-resource-2"/>
- <SyncopeRole_ExternalResource role_id="3" resource_name="ws-target-resource-list-mappings-2"/>
- <SyncopeRole_ExternalResource role_id="7" resource_name="ws-target-resource-nopropagation"/>
- <SyncopeRole_ExternalResource role_id="10" resource_name="ws-target-resource-nopropagation3"/>
- <SyncopeRole_ExternalResource role_id="12" resource_name="resource-csv"/>
- <SyncopeRole_ExternalResource role_id="13" resource_name="resource-csv"/>
-
- <UMapping id="15" resource_name="ws-target-resource-1"/>
- <UMappingItem id="99" mapping_id="15" extAttrName="userId"
- intMappingType="UserId" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="100" extAttrName="email" mapping_id="15"
- intAttrName="email" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="101" extAttrName="surname" mapping_id="15"
- intAttrName="surname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="102" mapping_id="15"
- extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
- accountid="0" password="1" purpose="PROPAGATION"/>
- <UMappingItem id="335" mapping_id="15"
- extAttrName="fullname" intAttrName="surname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="336" mapping_id="15"
- extAttrName="type" intAttrName="type" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="337" mapping_id="15"
- extAttrName="name" intAttrName="firstname" intMappingType="UserSchema" mandatoryCondition="false"
- accountid="0" password="0" purpose="NONE"/>
-
- <UMapping id="12" resource_name="ws-target-resource-list-mappings-1"/>
- <UMappingItem id="103" mapping_id="12"
- extAttrName="email" intAttrName="email" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="104" extAttrName="surname" mapping_id="12"
- intAttrName="surname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="13" resource_name="ws-target-resource-list-mappings-2"/>
- <UMappingItem id="105" mapping_id="13"
- extAttrName="userId" intAttrName="userId" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="1" resource_name="ws-target-resource-2"/>
- <UMappingItem id="106" mapping_id="1" extAttrName="fullname"
- intAttrName="fullname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="BOTH"/>
- <UMappingItem id="107" mapping_id="1"
- extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
- accountid="0" password="1" purpose="BOTH"/>
- <UMappingItem id="108" extAttrName="type" mapping_id="1"
- intAttrName="type" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="BOTH"/>
- <UMappingItem id="109" extAttrName="surname" mapping_id="1"
- intAttrName="surname" intMappingType="UserSchema" mandatoryCondition="type == 'F'"
- accountid="0" password="0" purpose="BOTH"/>
- <UMappingItem id="110" extAttrName="name" mapping_id="1"
- intAttrName="virtualdata" intMappingType="UserVirtualSchema" mandatoryCondition="type == 'F'"
- accountid="0" password="0" purpose="BOTH"/>
- <UMappingItem id="111" extAttrName="fullname" mapping_id="1"
- intAttrName="cn" intMappingType="UserDerivedSchema" mandatoryCondition="true"
- accountid="0" password="0" purpose="BOTH"/>
-
- <UMapping id="2" resource_name="ws-target-resource-update"/>
- <UMappingItem id="112" extAttrName="email" mapping_id="2"
- intAttrName="email" intMappingType="UserSchema" mandatoryCondition="false"
- accountid="0" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="113" extAttrName="userId" mapping_id="2"
- intAttrName="userId" intMappingType="UserSchema" mandatoryCondition="false"
- accountid="1" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="114" extAttrName="test3" mapping_id="2"
- intAttrName="fullname" intMappingType="UserSchema" mandatoryCondition="false"
- accountid="0" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="3" resource_name="ws-target-resource-nopropagation"/>
- <UMappingItem id="115" mapping_id="3" extAttrName="fullname"
- intAttrName="fullname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="4" resource_name="ws-target-resource-nopropagation2"/>
- <UMappingItem id="116" mapping_id="4" extAttrName="fullname"
- intAttrName="fullname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="5" resource_name="ws-target-resource-nopropagation3"/>
- <UMappingItem id="117" mapping_id="5" extAttrName="fullname"
- intAttrName="fullname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="6" resource_name="ws-target-resource-nopropagation4"/>
- <UMappingItem id="118" mapping_id="6"
- extAttrName="fullname" intAttrName="fullname" intMappingType="UserSchema" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
-
- <UMapping id="7" resource_name="resource-testdb"/>
- <UMappingItem id="119" mapping_id="7"
- extAttrName="id" intMappingType="Username" mandatoryCondition="true"
- accountid="1" password="0" purpose="BOTH"/>
- <UMappingItem id="120" mapping_id="7"
- extAttrName="__PASSWORD__" intMappingType="Password" mandatoryCondition="true"
- accountid="0" password="1" purpose="BOTH"/>
-
- <UMapping id="8" resource_name="resource-testdb2"/>
- <UMappingItem id="121" mapping_id="8" extAttrName="id"
- intMappingType="Username" mandatoryCondition="true"
- accountid="1" password="0" purpose="PROPAGATION"/>
- <UMappingItem id="122" mapping_id="8" extAttrName="__PASSWORD__"
- intMappingType="Password" mandatoryCondition="true"
- accountid="0" password="1" purpose="PROPAGATION"/>
-
- <UMapping id="9" resource_name="resource-csv"/>
- <UMappingItem id="200" extAttrName="id" mapping_id="9"
- intMappingType="Username" mandatoryCondition="true"
- accountid="0" password="0" purpose="BOTH"/>
- <UMappingItem id="201" extAttrName="id" mapping_id="9"
-
<TRUNCATED>
[4/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/main/resources/syncopeupgrade.bat
----------------------------------------------------------------------
diff --git a/core/upgrade/src/main/resources/syncopeupgrade.bat b/core/upgrade/src/main/resources/syncopeupgrade.bat
new file mode 100644
index 0000000..a1a7a7c
--- /dev/null
+++ b/core/upgrade/src/main/resources/syncopeupgrade.bat
@@ -0,0 +1,27 @@
+@ECHO OFF
+
+rem Licensed to the Apache Software Foundation (ASF) under one
+rem or more contributor license agreements. See the NOTICE file
+rem distributed with this work for additional information
+rem regarding copyright ownership. The ASF licenses this file
+rem to you under the Apache License, Version 2.0 (the
+rem "License"); you may not use this file except in compliance
+rem with the License. You may obtain a copy of the License at
+rem
+rem http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem Unless required by applicable law or agreed to in writing,
+rem software distributed under the License is distributed on an
+rem "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+rem KIND, either express or implied. See the License for the
+rem specific language governing permissions and limitations
+rem under the License.
+
+setLocal EnableDelayedExpansion
+set CLASSPATH="
+for /R ./lib %%a in (*.jar) do (
+ set CLASSPATH=!CLASSPATH!;%%a
+)
+set CLASSPATH=!CLASSPATH!"
+
+java -Xms256m -Xmx512m -classpath !CLASSPATH! org.apache.syncope.core.upgrade.GenerateUpgradeSQL %*
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/main/resources/syncopeupgrade.sh
----------------------------------------------------------------------
diff --git a/core/upgrade/src/main/resources/syncopeupgrade.sh b/core/upgrade/src/main/resources/syncopeupgrade.sh
new file mode 100755
index 0000000..466e986
--- /dev/null
+++ b/core/upgrade/src/main/resources/syncopeupgrade.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# 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.
+
+LIB=`ls lib`
+CLASSPATH=lib/`echo $LIB | sed "s/jar /jar:lib\//g"`
+
+java -Xms256m -Xmx512m -classpath "$CLASSPATH" org.apache.syncope.core.upgrade.GenerateUpgradeSQL "$@"
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/test/java/org/apache/syncope/core/upgrade/GeneratedUpgradeSQLTest.java
----------------------------------------------------------------------
diff --git a/core/upgrade/src/test/java/org/apache/syncope/core/upgrade/GeneratedUpgradeSQLTest.java b/core/upgrade/src/test/java/org/apache/syncope/core/upgrade/GeneratedUpgradeSQLTest.java
new file mode 100644
index 0000000..3d44e37
--- /dev/null
+++ b/core/upgrade/src/test/java/org/apache/syncope/core/upgrade/GeneratedUpgradeSQLTest.java
@@ -0,0 +1,120 @@
+/*
+ * 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.upgrade;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.AssertionsKt.fail;
+
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.io.ByteArrayResource;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.datasource.init.DataSourceInitializer;
+import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
+
+@SpringJUnitConfig(locations = {
+ "classpath:testJDBCEnv.xml"
+})
+public class GeneratedUpgradeSQLTest {
+
+ @Resource(name = "driverClassName")
+ private String driverClassName;
+
+ @Resource(name = "jdbcURL")
+ private String jdbcURL;
+
+ @Resource(name = "username")
+ private String username;
+
+ @Resource(name = "password")
+ private String password;
+
+ @Autowired
+ private DataSource syncope20DataSource;
+
+ @Test
+ public void upgradefrom20() throws Exception {
+ StringWriter out = new StringWriter();
+ GenerateUpgradeSQL.setWriter(out);
+
+ String[] args = new String[] { driverClassName, jdbcURL, username, password, "h2" };
+ GenerateUpgradeSQL.main(args);
+
+ String upgradeSQL = out.toString();
+
+ try {
+ DataSourceInitializer adminUsersInit = new DataSourceInitializer();
+ adminUsersInit.setDataSource(syncope20DataSource);
+ adminUsersInit.setDatabasePopulator(
+ new ResourceDatabasePopulator(new ByteArrayResource(upgradeSQL.getBytes(StandardCharsets.UTF_8))));
+ adminUsersInit.afterPropertiesSet();
+ } catch (Exception e) {
+ fail("Unexpected error while upgrading", e);
+ }
+
+ JdbcTemplate jdbcTemplate = new JdbcTemplate(syncope20DataSource);
+
+ Integer implementations = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM Implementation", Integer.class);
+ assertNotNull(implementations);
+ assertEquals(16, implementations.intValue());
+
+ Integer pullTaskActions = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM PullTaskAction", Integer.class);
+ assertNotNull(pullTaskActions);
+ assertEquals(1, pullTaskActions.intValue());
+
+ Integer pushTaskActions = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM PushTaskAction", Integer.class);
+ assertNotNull(pushTaskActions);
+ assertEquals(0, pushTaskActions.intValue());
+
+ Integer propagationTaskActions = jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM ExternalResourcePropagationAction", Integer.class);
+ assertNotNull(propagationTaskActions);
+ assertEquals(1, propagationTaskActions.intValue());
+
+ Integer realmActions = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM RealmAction", Integer.class);
+ assertNotNull(realmActions);
+ assertEquals(0, realmActions.intValue());
+
+ Integer accountPolicyRules = jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM AccountPolicyRule", Integer.class);
+ assertNotNull(accountPolicyRules);
+ assertEquals(2, accountPolicyRules.intValue());
+
+ Integer passwordPolicyRules = jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM PasswordPolicyRule", Integer.class);
+ assertNotNull(passwordPolicyRules);
+ assertEquals(3, passwordPolicyRules.intValue());
+
+ Integer pullCorrelationRuleEntities = jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM PullCorrelationRuleEntity", Integer.class);
+ assertNotNull(pullCorrelationRuleEntities);
+ assertEquals(1, pullCorrelationRuleEntities.intValue());
+
+ Integer pushCorrelationRuleEntities = jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM PushCorrelationRuleEntity", Integer.class);
+ assertNotNull(pushCorrelationRuleEntities);
+ assertEquals(0, pushCorrelationRuleEntities.intValue());
+ }
+}
[5/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/GenerateUpgradeSQL.java
----------------------------------------------------------------------
diff --git a/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/GenerateUpgradeSQL.java b/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/GenerateUpgradeSQL.java
new file mode 100644
index 0000000..f4a863d
--- /dev/null
+++ b/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/GenerateUpgradeSQL.java
@@ -0,0 +1,387 @@
+/*
+ * 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.upgrade;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.Arrays;
+import java.util.UUID;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl;
+import org.apache.openjpa.jdbc.schema.FileSchemaFactory;
+import org.apache.openjpa.jdbc.schema.SchemaTool;
+import org.apache.openjpa.jdbc.schema.SimpleDriverDataSource;
+
+public final class GenerateUpgradeSQL {
+
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
+ private static Writer OUT = new PrintWriter(System.out);
+
+ public static void setWriter(final Writer out) {
+ GenerateUpgradeSQL.OUT = out;
+ }
+
+ public static void main(final String[] args) throws Exception {
+ // parse args
+ if (args.length < 5 || args.length > 6) {
+ System.err.println("Unexpected arguments: " + Arrays.asList(args));
+ System.out.println("Usage: <driverClassName> <jdbcURL> <username> <password>"
+ + "<h2|mariadb|mysql|oracle|postgres|sqlserver> [filename]");
+ System.exit(1);
+ }
+
+ String driverClassName = args[0];
+ String jdbcURL = args[1];
+ String username = args[2];
+ String password = args[3];
+ String dbDictionary = args[4];
+ if (args.length == 6) {
+ setWriter(new FileWriter(args[5]));
+ }
+
+ // setup DataSource
+ SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
+ dataSource.setConnectionDriverName(driverClassName);
+ dataSource.setConnectionURL(jdbcURL);
+ dataSource.setConnectionUserName(username);
+ dataSource.setConnectionPassword(password);
+
+ // setup OpenJPA
+ JDBCConfiguration jdbcConf = new JDBCConfigurationImpl();
+ jdbcConf.setConnection2DriverName(driverClassName);
+ jdbcConf.setConnection2UserName(username);
+ jdbcConf.setConnection2Password(password);
+ jdbcConf.setDBDictionary(dbDictionary);
+ jdbcConf.setConnectionFactory2(dataSource);
+
+ FileSchemaFactory schemaFactory = new FileSchemaFactory();
+ schemaFactory.setConfiguration(jdbcConf);
+ schemaFactory.setFile("schema.xml");
+ jdbcConf.setSchemaFactory(schemaFactory);
+
+ WiserSchemaTool schemaTool = new WiserSchemaTool(jdbcConf, SchemaTool.ACTION_ADD);
+ schemaTool.setSchemaGroup(schemaFactory.readSchema());
+ schemaTool.setWriter(OUT);
+ try {
+ // run OpenJPA's SchemaTool to get the update statements
+ schemaTool.run();
+
+ // now proceed with manual update statements...
+ // OrgUnit
+ OUT.write("UPDATE OrgUnit SET ignoreCaseMatch=0;\n");
+
+ Connection conn = jdbcConf.getDataSource2(null).getConnection();
+
+ // PlainSchema
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT DISTINCT validatorClass FROM PlainSchema WHERE validatorClass IS NOT NULL")) {
+
+ while (rs.next()) {
+ String validatorClass = rs.getString(1);
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + validatorClass + "',"
+ + "'VALIDATOR',"
+ + "'JAVA',"
+ + "'" + validatorClass + "');\n");
+ }
+ }
+ OUT.write("UPDATE PlainSchema SET validator_id=validatorClass;\n");
+ OUT.write("ALTER TABLE PlainSchema DROP COLUMN validatorClass;\n");
+
+ // Provision
+ OUT.write("UPDATE Provision SET ignoreCaseMatch=0;\n");
+
+ // PullPolicy
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT id,specification FROM PullPolicy WHERE specification IS NOT NULL")) {
+
+ while (rs.next()) {
+ String id = rs.getString(1);
+ ObjectNode specification = (ObjectNode) MAPPER.readTree(rs.getString(2));
+
+ if (specification.has("conflictResolutionAction")) {
+ OUT.write("UPDATE PullPolicy SET "
+ + "conflictResolutionAction='"
+ + specification.get("conflictResolutionAction").asText() + "' "
+ + "WHERE id='" + id + "';\n");
+ }
+ if (specification.has("correlationRules")) {
+ specification.get("correlationRules").fields().forEachRemaining(entry -> {
+ ObjectNode body = MAPPER.createObjectNode();
+ body.put("@class", "org.apache.syncope.common.lib.policy.DefaultPullCorrelationRuleConf");
+ body.put("name", "org.apache.syncope.common.lib.policy.DefaultPullCorrelationRuleConf");
+ body.set("schemas", entry.getValue());
+
+ try {
+ String implementationId = "PullCorrelationRule_" + entry.getKey() + "_" + id;
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + implementationId + "',"
+ + "'PULL_CORRELATION_RULE',"
+ + "'JAVA',"
+ + "'" + MAPPER.writeValueAsString(body) + "');\n");
+
+ OUT.write("INSERT INTO PullCorrelationRuleEntity"
+ + "(id,pullPolicy_id,anyType_id,implementation_id) VALUES("
+ + "'" + UUID.randomUUID().toString() + "',"
+ + "'" + id + "',"
+ + "'" + entry.getKey() + "',"
+ + "'" + implementationId + "');\n");
+ } catch (IOException e) {
+ System.err.println("Unexpected error: " + e.getMessage());
+ System.exit(2);
+ }
+ });
+ }
+ }
+ OUT.write("ALTER TABLE PullPolicy DROP COLUMN specification;\n");
+ }
+
+ // AccountPolicy
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT id,accountPolicy_id,serializedInstance FROM AccountRuleConfInstance")) {
+
+ while (rs.next()) {
+ String id = rs.getString(1);
+ String accountPolicyId = rs.getString(2);
+ String serializedInstance = rs.getString(3);
+
+ String implementationId = "AccountRule_" + accountPolicyId + "_" + id;
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + implementationId + "',"
+ + "'ACCOUNT_RULE',"
+ + "'JAVA',"
+ + "'" + serializedInstance + "');\n");
+ OUT.write("INSERT INTO AccountPolicyRule(policy_id,implementation_id) VALUES("
+ + "'" + accountPolicyId + "',"
+ + "'" + implementationId + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE AccountRuleConfInstance;\n");
+
+ // PasswordPolicy
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT id,passwordPolicy_id,serializedInstance FROM PasswordRuleConfInstance")) {
+
+ while (rs.next()) {
+ String id = rs.getString(1);
+ String passwordPolicyId = rs.getString(2);
+ String serializedInstance = rs.getString(3);
+
+ String implementationId = "PasswordRule_" + passwordPolicyId + "_" + id;
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + implementationId + "',"
+ + "'ACCOUNT_RULE',"
+ + "'JAVA',"
+ + "'" + serializedInstance + "');\n");
+ OUT.write("INSERT INTO PasswordPolicyRule(policy_id,implementation_id) VALUES("
+ + "'" + passwordPolicyId + "',"
+ + "'" + implementationId + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE PasswordRuleConfInstance;\n");
+
+ // Task
+ OUT.write("UPDATE Task SET remediation=0;\n");
+
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'PullJobDelegate',"
+ + "'TASKJOB_DELEGATE',"
+ + "'JAVA',"
+ + "'org.apache.syncope.core.provisioning.java.pushpull.PullJobDelegate');\n");
+ OUT.write("UPDATE Task SET jobDelegate_id='PullJobDelegate' WHERE DTYPE='PullTask';\n");
+
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'PushJobDelegate',"
+ + "'TASKJOB_DELEGATE',"
+ + "'JAVA',"
+ + "'org.apache.syncope.core.provisioning.java.pushpull.PushJobDelegate');\n");
+ OUT.write("UPDATE Task SET jobDelegate_id='PushJobDelegate' WHERE DTYPE='PushTask';\n");
+
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT DISTINCT jobDelegateClassName FROM Task WHERE jobDelegateClassName IS NOT NULL")) {
+
+ while (rs.next()) {
+ String jobDelegateClassName = rs.getString(1);
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + jobDelegateClassName + "',"
+ + "'TASKJOB_DELEGATE',"
+ + "'JAVA',"
+ + "'" + jobDelegateClassName + "');\n");
+ }
+ }
+ OUT.write("UPDATE Task SET jobDelegate_id=jobDelegateClassName;\n");
+ OUT.write("ALTER TABLE Task DROP COLUMN jobDelegateClassName;\n");
+
+ // PullActions
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT DISTINCT actionClassName FROM PullTask_actionsClassNames")) {
+
+ while (rs.next()) {
+ String actionClassName = rs.getString(1);
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + actionClassName + "',"
+ + "'PULL_ACTIONS',"
+ + "'JAVA',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT pullTask_id,actionClassName FROM PullTask_actionsClassNames")) {
+
+ while (rs.next()) {
+ String pullTaskId = rs.getString(1);
+ String actionClassName = rs.getString(2);
+ OUT.write("INSERT INTO PullTaskAction(task_id,implementation_id) VALUES("
+ + "'" + pullTaskId + "',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE PullTask_actionsClassNames;\n");
+
+ // PushActions
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT DISTINCT actionClassName FROM PushTask_actionsClassNames")) {
+
+ while (rs.next()) {
+ String actionClassName = rs.getString(1);
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + actionClassName + "',"
+ + "'PULL_ACTIONS',"
+ + "'JAVA',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT pushTask_id,actionClassName FROM PushTask_actionsClassNames")) {
+
+ while (rs.next()) {
+ String pushTaskId = rs.getString(1);
+ String actionClassName = rs.getString(2);
+ OUT.write("INSERT INTO PushTaskAction(task_id,implementation_id) VALUES("
+ + "'" + pushTaskId + "',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE PushTask_actionsClassNames;\n");
+
+ // PropagationActions
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT DISTINCT actionClassName FROM ExternalResource_PropActions")) {
+
+ while (rs.next()) {
+ String actionClassName = rs.getString(1);
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + actionClassName + "',"
+ + "'PROPAGATION_ACTIONS',"
+ + "'JAVA',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT resource_id,actionClassName FROM ExternalResource_PropActions")) {
+
+ while (rs.next()) {
+ String resourceId = rs.getString(1);
+ String actionClassName = rs.getString(2);
+ OUT.write("INSERT INTO ExternalResourcePropagationAction(resource_id,implementation_id) VALUES("
+ + "'" + resourceId + "',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE ExternalResource_PropActions;\n");
+
+ // LogicActions
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT DISTINCT actionClassName FROM Realm_actionsClassNames")) {
+
+ while (rs.next()) {
+ String actionClassName = rs.getString(1);
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + actionClassName + "',"
+ + "'PULL_ACTIONS',"
+ + "'JAVA',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT realm_id,actionClassName FROM Realm_actionsClassNames")) {
+
+ while (rs.next()) {
+ String realmId = rs.getString(1);
+ String actionClassName = rs.getString(2);
+ OUT.write("INSERT INTO RealmAction(task_id,implementation_id) VALUES("
+ + "'" + realmId + "',"
+ + "'" + actionClassName + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE Realm_actionsClassNames;\n");
+
+ // Reportlet
+ try (Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery(
+ "SELECT id,report_id,serializedInstance FROM ReportletConfInstance")) {
+
+ while (rs.next()) {
+ String id = rs.getString(1);
+ String reportId = rs.getString(2);
+ String serializedInstance = rs.getString(3);
+
+ String implementationId = "Reportlet_" + reportId + "_" + id;
+ OUT.write("INSERT INTO Implementation(id,type,engine,body) VALUES("
+ + "'" + implementationId + "',"
+ + "'REPORTLET',"
+ + "'JAVA',"
+ + "'" + serializedInstance + "');\n");
+ OUT.write("INSERT INTO ReportReportlet(report_id,implementation_id) VALUES("
+ + "'" + reportId + "',"
+ + "'" + implementationId + "');\n");
+ }
+ }
+ OUT.write("DROP TABLE ReportletConfInstance;\n");
+ } finally {
+ OUT.flush();
+ OUT.close();
+ }
+ }
+
+ private GenerateUpgradeSQL() {
+ // private constructor
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/WiserSchemaTool.java
----------------------------------------------------------------------
diff --git a/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/WiserSchemaTool.java b/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/WiserSchemaTool.java
new file mode 100644
index 0000000..f2804b5
--- /dev/null
+++ b/core/upgrade/src/main/java/org/apache/syncope/core/upgrade/WiserSchemaTool.java
@@ -0,0 +1,233 @@
+/*
+ * 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.upgrade;
+
+import java.sql.SQLException;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import org.apache.openjpa.jdbc.identifier.DBIdentifier;
+import org.apache.openjpa.jdbc.schema.Column;
+import org.apache.openjpa.jdbc.schema.ForeignKey;
+import org.apache.openjpa.jdbc.schema.Index;
+import org.apache.openjpa.jdbc.schema.PrimaryKey;
+import org.apache.openjpa.jdbc.schema.Schema;
+import org.apache.openjpa.jdbc.schema.SchemaGroup;
+import org.apache.openjpa.jdbc.schema.SchemaTool;
+import org.apache.openjpa.jdbc.schema.Sequence;
+import org.apache.openjpa.jdbc.schema.Table;
+import org.apache.openjpa.jdbc.schema.Unique;
+
+/**
+ * Compared to the original {@link SchemaTool}, this class' methods keep consistent behavior when either {@code _writer}
+ * is null or not.
+ */
+public class WiserSchemaTool extends SchemaTool {
+
+ public WiserSchemaTool(final JDBCConfiguration conf) {
+ super(conf);
+ }
+
+ public WiserSchemaTool(final JDBCConfiguration conf, final String action) {
+ super(conf, action);
+ }
+
+ @Override
+ protected void buildSchema(
+ final SchemaGroup db,
+ final SchemaGroup repos,
+ final boolean considerDatabaseState) throws SQLException {
+
+ // add sequences
+ if (getSequences()) {
+ for (Schema schema : repos.getSchemas()) {
+ for (Sequence seq : schema.getSequences()) {
+ if (considerDatabaseState && db.findSequence(schema, seq.getQualifiedPath()) != null) {
+ continue;
+ }
+
+ if (createSequence(seq)) {
+ Schema dbSchema = db.getSchema(seq.getSchemaIdentifier());
+ if (dbSchema == null) {
+ dbSchema = db.addSchema(seq.getSchemaIdentifier());
+ }
+ dbSchema.importSequence(seq);
+ } else {
+ _log.warn(_loc.get("add-seq", seq));
+ }
+ }
+ }
+ }
+
+ // order is important in this method; start with columns
+ DBIdentifier defaultSchemaName = DBIdentifier.newSchema(_dict.getDefaultSchemaName());
+ for (Schema schema : repos.getSchemas()) {
+ for (Table tab : schema.getTables()) {
+ Table dbTable = null;
+ if (considerDatabaseState) {
+ dbTable = db.findTable(schema, tab.getQualifiedPath(), defaultSchemaName);
+ }
+ for (Column col : tab.getColumns()) {
+ if (dbTable != null) {
+ Column dbCol = dbTable.getColumn(col.getIdentifier());
+ if (dbCol == null) {
+ if (addColumn(col)) {
+ dbTable.importColumn(col);
+ } else {
+ _log.warn(_loc.get("add-col", col, tab));
+ }
+ } else if (!col.equalsColumn(_dict, dbCol)) {
+ _log.warn(_loc.get("bad-col",
+ new Object[] { dbCol, dbTable, dbCol.getDescription(), col.getDescription() }));
+ }
+ }
+ }
+ }
+ }
+
+ // primary keys
+ if (getPrimaryKeys()) {
+ for (Schema schema : repos.getSchemas()) {
+ for (Table tab : schema.getTables()) {
+ PrimaryKey pk = tab.getPrimaryKey();
+ Table dbTable = null;
+ if (considerDatabaseState) {
+ dbTable = db.findTable(schema, tab.getQualifiedPath());
+ }
+ if (pk != null && !pk.isLogical() && dbTable != null) {
+ if (dbTable.getPrimaryKey() == null && addPrimaryKey(pk)) {
+ dbTable.importPrimaryKey(pk);
+ } else if (dbTable.getPrimaryKey() == null) {
+ _log.warn(_loc.get("add-pk", pk, tab));
+ } else if (!pk.equalsPrimaryKey(dbTable.getPrimaryKey())) {
+ _log.warn(_loc.get("bad-pk",
+ dbTable.getPrimaryKey(), dbTable));
+ }
+ }
+ }
+ }
+ }
+
+ // tables
+ Set<Table> newTables = new HashSet<>();
+ for (Schema schema : repos.getSchemas()) {
+ for (Table tab : schema.getTables()) {
+ if (considerDatabaseState && db.findTable(schema, tab.getQualifiedPath()) != null) {
+ continue;
+ }
+
+ if (createTable(tab)) {
+ newTables.add(tab);
+ Schema dbSchema = db.getSchema(tab.getSchemaIdentifier());
+ if (dbSchema == null) {
+ dbSchema = db.addSchema(tab.getSchemaIdentifier());
+ }
+ dbSchema.importTable(tab);
+ } else {
+ _log.warn(_loc.get("add-table", tab));
+ }
+ }
+ }
+
+ // indexes
+ for (Schema schema : repos.getSchemas()) {
+ Table[] tabs = schema.getTables();
+ for (Table tab : tabs) {
+ // create indexes on new tables even if indexes have been turned off
+ if (!getIndexes() && !newTables.contains(tab)) {
+ continue;
+ }
+
+ Table dbTable = null;
+ if (considerDatabaseState) {
+ dbTable = db.findTable(schema, tab.getQualifiedPath());
+ }
+ if (dbTable != null) {
+ for (Index idx : tab.getIndexes()) {
+ Index dbIdx = findIndex(dbTable, idx);
+ if (dbIdx == null) {
+ if (createIndex(idx, dbTable, tab.getUniques())) {
+ dbTable.importIndex(idx);
+ } else {
+ _log.warn(_loc.get("add-index", idx, tab));
+ }
+ } else if (!idx.equalsIndex(dbIdx)) {
+ _log.warn(_loc.get("bad-index", dbIdx, dbTable));
+ }
+ }
+ }
+ }
+ }
+
+ // Unique Constraints on group of columns
+ for (Schema schema : repos.getSchemas()) {
+ for (Table tab : schema.getTables()) {
+ // create unique constraints only on new tables
+ if (!newTables.contains(tab)) {
+ continue;
+ }
+ Unique[] uniques = tab.getUniques();
+ if (uniques == null || uniques.length == 0) {
+ continue;
+ }
+ Table dbTable = null;
+ if (considerDatabaseState) {
+ dbTable = db.findTable(tab);
+ }
+ if (dbTable == null) {
+ continue;
+ }
+ for (Unique unique : uniques) {
+ dbTable.importUnique(unique);
+ }
+ }
+ }
+
+ // foreign keys
+ for (Schema schema : repos.getSchemas()) {
+ for (Table tab : schema.getTables()) {
+ // create foreign keys on new tables even if fks have been turned off
+ if (!getForeignKeys() && !newTables.contains(tab)) {
+ continue;
+ }
+
+ Table dbTable = null;
+ if (considerDatabaseState) {
+ dbTable = db.findTable(schema, tab.getQualifiedPath());
+ }
+ if (dbTable != null) {
+ for (ForeignKey fk : tab.getForeignKeys()) {
+ if (!fk.isLogical()) {
+ ForeignKey dbFk = findForeignKey(dbTable, fk);
+ if (dbFk == null) {
+ if (addForeignKey(fk)) {
+ dbTable.importForeignKey(fk);
+ } else {
+ _log.warn(_loc.get("add-fk", fk, tab));
+ }
+ } else if (!fk.equalsForeignKey(dbFk)) {
+ _log.warn(_loc.get("bad-fk", dbFk, dbTable));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/main/resources/schema.xml
----------------------------------------------------------------------
diff --git a/core/upgrade/src/main/resources/schema.xml b/core/upgrade/src/main/resources/schema.xml
new file mode 100644
index 0000000..9d73d86
--- /dev/null
+++ b/core/upgrade/src/main/resources/schema.xml
@@ -0,0 +1,1217 @@
+<?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.
+-->
+<schemas>
+ <schema>
+ <table name="ADynGroupMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="GROUP_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="GROUP_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_DYNGSHP_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_DYNGSHP_GROUP" column="GROUP_ID"/>
+ </table>
+ <table name="AMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="group_id" type="varchar" size="36"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <index name="I_MMBRSHP_LEFTEND" column="anyObject_id"/>
+ <index name="I_MMBRSHP_RIGHTEND" column="group_id"/>
+ </table>
+ <table name="APlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="MEMBERSHIP_ID" type="varchar" size="36"/>
+ <fk to-table="AnyObject" column="OWNER_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="AMembership" column="MEMBERSHIP_ID"/>
+ <index name="I_PLINTTR_MEMBERSHIP" column="MEMBERSHIP_ID"/>
+ <index name="I_PLINTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_PLINTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="APlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="APlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_PLNTQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTQVL_SCHEMA" column="schema_id"/>
+ <unique name="U_PLNTQVL_BOOLEANVALUE">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DATEVALUE">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_STRINGVALUE">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DOUBLEVALUE">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_LONGVALUE">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="APlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="APlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="ARelationship">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="left_anyObject_id" type="varchar" size="36"/>
+ <column name="right_anyObject_id" type="varchar" size="36"/>
+ <column name="TYPE_ID" type="varchar" size="255"/>
+ <fk to-table="AnyObject" column="left_anyObject_id"/>
+ <fk to-table="AnyObject" column="right_anyObject_id"/>
+ <fk to-table="RelationshipType" column="TYPE_ID"/>
+ <index name="I_RLTNSHP_LEFTEND" column="left_anyObject_id"/>
+ <index name="I_RLTNSHP_RIGHTEND" column="right_anyObject_id"/>
+ <index name="I_RLTNSHP_TYPE" column="TYPE_ID"/>
+ <unique name="U_RLTNSHP_TYPE_ID">
+ <on column="TYPE_ID"/>
+ <on column="left_anyObject_id"/>
+ <on column="right_anyObject_id"/>
+ </unique>
+ </table>
+ <table name="AccessToken">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="authorities" type="blob" size="-1"/>
+ <column name="body" type="clob" size="-1"/>
+ <column name="expiryTime" type="timestamp"/>
+ <column name="owner" type="varchar" size="255"/>
+ <unique name="U_CCSSTKN_OWNER" column="owner"/>
+ </table>
+ <table name="AccountPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="maxAuthenticationAttempts" type="integer"/>
+ <column name="propagateSuspension" type="integer"/>
+ </table>
+ <table name="AccountPolicyRule">
+ <column name="policy_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="AccountPolicy" column="policy_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_CCNTYRL_ELEMENT" column="implementation_id"/>
+ <index name="I_CCNTYRL_POLICY_ID" column="policy_id"/>
+ </table>
+ <table name="AccountPolicy_ExternalResource">
+ <column name="accountPolicy_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="AccountPolicy" column="accountPolicy_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_CCNTSRC_ACCOUNTPOLICY_ID" column="accountPolicy_id"/>
+ <index name="I_CCNTSRC_ELEMENT" column="resource_id"/>
+ </table>
+ <table name="AnyAbout">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="filter" type="clob" size="-1"/>
+ <column name="NOTIFICATION_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Notification" column="NOTIFICATION_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_NYABOUT_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_NYABOUT_NOTIFICATION" column="NOTIFICATION_ID"/>
+ <unique name="U_NYABOUT_NOTIFICATION_ID">
+ <on column="NOTIFICATION_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="AnyObject">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="creationDate" type="timestamp"/>
+ <column name="creator" type="varchar" size="255"/>
+ <column name="lastChangeDate" type="timestamp"/>
+ <column name="lastModifier" type="varchar" size="255"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="workflowId" type="varchar" size="255"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="TYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="AnyType" column="TYPE_ID"/>
+ <index name="I_NYOBJCT_REALM" column="REALM_ID"/>
+ <index name="I_NYOBJCT_TYPE" column="TYPE_ID"/>
+ <unique name="U_NYOBJCT_NAME" column="name"/>
+ </table>
+ <table name="AnyObject_AnyTypeClass">
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_NYBJLSS_ANYOBJECT_ID" column="anyObject_id"/>
+ <index name="I_NYBJLSS_ELEMENT" column="anyTypeClass_id"/>
+ </table>
+ <table name="AnyObject_ExternalResource">
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_NYBJSRC_ANYOBJECT_ID" column="anyObject_id"/>
+ <index name="I_NYBJSRC_ELEMENT" column="resource_id"/>
+ </table>
+ <table name="AnyTemplatePullTask">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="template" type="clob" size="-1"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="PULLTASK_ID" type="varchar" size="36"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Task" column="PULLTASK_ID"/>
+ <index name="I_NYTMTSK_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_NYTMTSK_PULLTASK" column="PULLTASK_ID"/>
+ <unique name="U_NYTMTSK_PULLTASK_ID">
+ <on column="PULLTASK_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="AnyTemplateRealm">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="template" type="clob" size="-1"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_NYTMRLM_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_NYTMRLM_REALM" column="REALM_ID"/>
+ <unique name="U_NYTMRLM_REALM_ID">
+ <on column="REALM_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="AnyType">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="kind" type="varchar" size="20"/>
+ </table>
+ <table name="AnyTypeClass">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="AnyType_AnyTypeClass">
+ <column name="anyType_id" type="varchar" size="255"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="AnyType" column="anyType_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_NYTYLSS_ANYTYPE_ID" column="anyType_id"/>
+ <index name="I_NYTYLSS_ELEMENT" column="anyTypeClass_id"/>
+ </table>
+ <table name="Application">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ </table>
+ <table name="CPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="OWNER_ID" type="varchar" size="255"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="SyncopeConf" column="OWNER_ID"/>
+ <index name="I_CPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_CPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="CPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="CPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_CPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_CPLNQVL_SCHEMA" column="schema_id"/>
+ <unique name="U_CPLNQVL_BOOLEANVALUE">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_DATEVALUE">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_STRINGVALUE">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_DOUBLEVALUE">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_CPLNQVL_LONGVALUE">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="CPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="CPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_CPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="ConnInstance">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="bundleName" type="varchar" size="255"/>
+ <column name="connRequestTimeout" type="integer"/>
+ <column name="connectorName" type="varchar" size="255"/>
+ <column name="displayName" type="varchar" size="255"/>
+ <column name="jsonConf" type="clob" size="-1"/>
+ <column name="location" type="varchar" size="255"/>
+ <column name="version" type="varchar" size="255"/>
+ <column name="ADMINREALM_ID" type="varchar" size="36"/>
+ <column name="maxIdle" type="integer"/>
+ <column name="maxObjects" type="integer"/>
+ <column name="maxWait" type="bigint"/>
+ <column name="minEvictableIdleTimeMillis" type="bigint"/>
+ <column name="minIdle" type="integer"/>
+ <fk to-table="Realm" column="ADMINREALM_ID"/>
+ <index name="I_CNNNTNC_ADMINREALM" column="ADMINREALM_ID"/>
+ <unique name="U_CNNNTNC_DISPLAYNAME" column="displayName"/>
+ </table>
+ <table name="ConnInstanceHistoryConf">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="conf" type="clob" size="-1"/>
+ <column name="creation" type="timestamp"/>
+ <column name="creator" type="varchar" not-null="true" size="255"/>
+ <column name="ENTITY_ID" type="varchar" size="36"/>
+ <fk to-table="ConnInstance" column="ENTITY_ID"/>
+ <index name="I_CNNNCNF_ENTITY" column="ENTITY_ID"/>
+ </table>
+ <table name="ConnInstance_capabilities">
+ <column name="connInstance_id" type="varchar" size="36"/>
+ <column name="capability" type="varchar" size="20"/>
+ <fk to-table="ConnInstance" column="connInstance_id"/>
+ <index name="I_CNNNLTS_CONNINSTANCE_ID" column="connInstance_id"/>
+ </table>
+ <table name="DerSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="expression" type="varchar" size="255"/>
+ <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeSchema" column="id"/>
+ <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
+ <index name="I_DRSCHEM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
+ </table>
+ <table name="DynRealm">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="DynRealmMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="DYNREALM_ID" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="DynRealm" column="DYNREALM_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_DYNRSHP_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_DYNRSHP_DYNREALM" column="DYNREALM_ID"/>
+ </table>
+ <table name="DynRoleMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="ROLE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="ROLE_ID"/>
+ <index name="I_DYNRSHP_ROLE" column="ROLE_ID"/>
+ </table>
+ <table name="ExternalResource">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="createTraceLevel" type="varchar" size="20"/>
+ <column name="deleteTraceLevel" type="varchar" size="20"/>
+ <column name="enforceMandatoryCondition" type="integer"/>
+ <column name="jsonConf" type="clob" size="-1"/>
+ <column name="overrideCapabilities" type="integer"/>
+ <column name="propagationPriority" type="integer"/>
+ <column name="provisioningTraceLevel" type="varchar" size="20"/>
+ <column name="randomPwdIfNotProvided" type="integer"/>
+ <column name="updateTraceLevel" type="varchar" size="20"/>
+ <column name="ACCOUNTPOLICY_ID" type="varchar" size="36"/>
+ <column name="CONNECTOR_ID" type="varchar" size="36"/>
+ <column name="PASSWORDPOLICY_ID" type="varchar" size="36"/>
+ <column name="PULLPOLICY_ID" type="varchar" size="36"/>
+ <column name="PUSHPOLICY_ID" type="varchar" size="36"/>
+ <fk to-table="AccountPolicy" column="ACCOUNTPOLICY_ID"/>
+ <fk to-table="ConnInstance" column="CONNECTOR_ID"/>
+ <fk to-table="PasswordPolicy" column="PASSWORDPOLICY_ID"/>
+ <fk to-table="PullPolicy" column="PULLPOLICY_ID"/>
+ <fk to-table="PushPolicy" column="PUSHPOLICY_ID"/>
+ <index name="I_XTRNSRC_ACCOUNTPOLICY" column="ACCOUNTPOLICY_ID"/>
+ <index name="I_XTRNSRC_CONNECTOR" column="CONNECTOR_ID"/>
+ <index name="I_XTRNSRC_PASSWORDPOLICY" column="PASSWORDPOLICY_ID"/>
+ <index name="I_XTRNSRC_PULLPOLICY" column="PULLPOLICY_ID"/>
+ <index name="I_XTRNSRC_PUSHPOLICY" column="PUSHPOLICY_ID"/>
+ </table>
+ <table name="ExternalResourceHistoryConf">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="conf" type="clob" size="-1"/>
+ <column name="creation" type="timestamp"/>
+ <column name="creator" type="varchar" not-null="true" size="255"/>
+ <column name="ENTITY_ID" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="ENTITY_ID"/>
+ <index name="I_XTRNCNF_ENTITY" column="ENTITY_ID"/>
+ </table>
+ <table name="ExternalResourcePropagationAction">
+ <column name="resource_id" type="varchar" size="255"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_XTRNCTN_ELEMENT" column="implementation_id"/>
+ <index name="I_XTRNCTN_RESOURCE_ID" column="resource_id"/>
+ </table>
+ <table name="ExternalResource_capOverride">
+ <column name="resource_id" type="varchar" size="255"/>
+ <column name="capabilityOverride" type="varchar" size="20"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_XTRNRRD_RESOURCE_ID" column="resource_id"/>
+ </table>
+ <table name="GPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="OWNER_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_GPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_GPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="GPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="GPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_GPLNQVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ <index name="I_GPLNQVL_SCHEMA" column="schema_id"/>
+ <unique name="U_GPLNQVL_BOOLEANVALUE">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_DATEVALUE">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_STRINGVALUE">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_DOUBLEVALUE">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_GPLNQVL_LONGVALUE">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="GPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="GPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_GPLNRVL_ATTRIBUTE" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="Implementation">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="body" type="clob" size="-1"/>
+ <column name="engine" type="varchar" not-null="true" size="20"/>
+ <column name="type" type="varchar" not-null="true" size="21"/>
+ </table>
+ <table name="MailTemplate">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="htmlTemplate" type="clob" size="-1"/>
+ <column name="textTemplate" type="clob" size="-1"/>
+ </table>
+ <table name="Mapping">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectLink" type="varchar" size="255"/>
+ <column name="PROVISION_ID" type="varchar" size="36"/>
+ <fk to-table="Provision" column="PROVISION_ID"/>
+ <index name="I_MAPPING_PROVISION" column="PROVISION_ID"/>
+ </table>
+ <table name="MappingItem">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectKey" type="integer"/>
+ <column name="extAttrName" type="varchar" size="255"/>
+ <column name="intAttrName" type="varchar" size="255"/>
+ <column name="mandatoryCondition" type="varchar" size="255"/>
+ <column name="password" type="integer"/>
+ <column name="propJEXL" type="varchar" size="255"/>
+ <column name="pullJEXL" type="varchar" size="255"/>
+ <column name="purpose" type="varchar" size="20"/>
+ <column name="MAPPING_ID" type="varchar" size="36"/>
+ <fk to-table="Mapping" column="MAPPING_ID"/>
+ <index name="I_MPPNGTM_MAPPING" column="MAPPING_ID"/>
+ </table>
+ <table name="MappingItemTransformer">
+ <column name="item_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="MappingItem" column="item_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_MPPNRMR_ELEMENT" column="implementation_id"/>
+ <index name="I_MPPNRMR_ITEM_ID" column="item_id"/>
+ </table>
+ <table name="Notification">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="active" type="integer"/>
+ <column name="recipientAttrName" type="varchar" size="255"/>
+ <column name="recipientsFIQL" type="varchar" size="255"/>
+ <column name="selfAsRecipient" type="integer"/>
+ <column name="sender" type="varchar" size="255"/>
+ <column name="subject" type="varchar" size="255"/>
+ <column name="traceLevel" type="varchar" size="20"/>
+ <column name="RECIPIENTSPROVIDER_ID" type="varchar" size="255"/>
+ <column name="template_id" type="varchar" size="255"/>
+ <fk to-table="Implementation" column="RECIPIENTSPROVIDER_ID"/>
+ <fk to-table="MailTemplate" column="template_id"/>
+ <index name="I_NTFCTON_RECIPIENTSPROVIDER" column="RECIPIENTSPROVIDER_ID"/>
+ <index name="I_NTFCTON_TEMPLATE" column="template_id"/>
+ </table>
+ <table name="NotificationTask_recipients">
+ <column name="notificationTask_id" type="varchar" size="36"/>
+ <column name="address" type="varchar" size="255"/>
+ <fk to-table="Task" column="notificationTask_id"/>
+ <index name="I_NTFCNTS_NOTIFICATIONTASK_ID" column="notificationTask_id"/>
+ </table>
+ <table name="Notification_events">
+ <column name="notification_id" type="varchar" size="36"/>
+ <column name="event" type="varchar" size="255"/>
+ <fk to-table="Notification" column="notification_id"/>
+ <index name="I_NTFCNTS_NOTIFICATION_ID" column="notification_id"/>
+ </table>
+ <table name="Notification_staticRecipients">
+ <column name="notification_id" type="varchar" size="36"/>
+ <column name="staticRecipients" type="varchar" size="255"/>
+ <fk to-table="Notification" column="notification_id"/>
+ <index name="I_NTFCNTS_NOTIFICATION_ID1" column="notification_id"/>
+ </table>
+ <table name="OrgUnit">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectLink" type="varchar" size="255"/>
+ <column name="ignoreCaseMatch" type="integer"/>
+ <column name="objectClass" type="varchar" size="255"/>
+ <column name="serializedSyncToken" type="clob" size="-1"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <index name="I_ORGUNIT_RESOURCE" column="RESOURCE_ID"/>
+ </table>
+ <table name="OrgUnitItem">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="connObjectKey" type="integer"/>
+ <column name="extAttrName" type="varchar" size="255"/>
+ <column name="intAttrName" type="varchar" size="255"/>
+ <column name="mandatoryCondition" type="varchar" size="255"/>
+ <column name="password" type="integer"/>
+ <column name="propJEXL" type="varchar" size="255"/>
+ <column name="pullJEXL" type="varchar" size="255"/>
+ <column name="purpose" type="varchar" size="20"/>
+ <column name="ORGUNIT_ID" type="varchar" size="36"/>
+ <fk to-table="OrgUnit" column="ORGUNIT_ID"/>
+ <index name="I_RGUNTTM_ORGUNIT" column="ORGUNIT_ID"/>
+ </table>
+ <table name="OrgUnitItemTransformer">
+ <column name="item_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="OrgUnitItem" column="item_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_RGNTRMR_ELEMENT" column="implementation_id"/>
+ <index name="I_RGNTRMR_ITEM_ID" column="item_id"/>
+ </table>
+ <table name="PasswordPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="allowNullPassword" type="integer"/>
+ <column name="historyLength" type="integer"/>
+ </table>
+ <table name="PasswordPolicyRule">
+ <column name="policy_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="PasswordPolicy" column="policy_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_PSSWYRL_ELEMENT" column="implementation_id"/>
+ <index name="I_PSSWYRL_POLICY_ID" column="policy_id"/>
+ </table>
+ <table name="PlainSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="cipherAlgorithm" type="varchar" size="20"/>
+ <column name="conversionPattern" type="varchar" size="255"/>
+ <column name="enumerationKeys" type="clob" size="-1"/>
+ <column name="enumerationValues" type="clob" size="-1"/>
+ <column name="mandatoryCondition" type="varchar" size="255"/>
+ <column name="mimeType" type="varchar" size="255"/>
+ <column name="multivalue" type="integer"/>
+ <column name="readonly" type="integer"/>
+ <column name="secretKey" type="varchar" size="255"/>
+ <column name="type" type="varchar" size="20"/>
+ <column name="uniqueConstraint" type="integer"/>
+ <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
+ <column name="VALIDATOR_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeSchema" column="id"/>
+ <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
+ <fk to-table="Implementation" column="VALIDATOR_ID"/>
+ <index name="I_PLNSCHM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
+ <index name="I_PLNSCHM_VALIDATOR" column="VALIDATOR_ID"/>
+ </table>
+ <table name="Privilege">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="spec" type="clob" size="-1"/>
+ <column name="APPLICATION_ID" type="varchar" size="255"/>
+ <fk to-table="Application" column="APPLICATION_ID"/>
+ <index name="I_PRIVILG_APPLICATION" column="APPLICATION_ID"/>
+ </table>
+ <table name="Provision">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="ignoreCaseMatch" type="integer"/>
+ <column name="objectClass" type="varchar" size="255"/>
+ <column name="serializedSyncToken" type="clob" size="-1"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="UIDONCREATE_ID" type="varchar" size="255"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="PlainSchema" column="UIDONCREATE_ID"/>
+ <index name="I_PROVSON_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PROVSON_RESOURCE" column="RESOURCE_ID"/>
+ <index name="I_PROVSON_UIDONCREATE" column="UIDONCREATE_ID"/>
+ <unique name="U_PROVSON_RESOURCE_ID">
+ <on column="RESOURCE_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="Provision_AnyTypeClass">
+ <column name="provision_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="Provision" column="provision_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_PRVSLSS_ELEMENT" column="anyTypeClass_id"/>
+ <index name="I_PRVSLSS_PROVISION_ID" column="provision_id"/>
+ </table>
+ <table name="PullCorrelationRuleEntity">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="PULLPOLICY_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="IMPLEMENTATION_ID" type="varchar" size="255"/>
+ <fk to-table="PullPolicy" column="PULLPOLICY_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Implementation" column="IMPLEMENTATION_ID"/>
+ <index name="I_PLLCTTY_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PLLCTTY_IMPLEMENTATION" column="IMPLEMENTATION_ID"/>
+ <index name="I_PLLCTTY_PULLPOLICY" column="PULLPOLICY_ID"/>
+ <unique name="U_PLLCTTY_PULLPOLICY_ID">
+ <on column="PULLPOLICY_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="PullPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="conflictResolutionAction" type="varchar" size="20"/>
+ </table>
+ <table name="PullTaskAction">
+ <column name="task_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Task" column="task_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_PLLTCTN_ELEMENT" column="implementation_id"/>
+ <index name="I_PLLTCTN_TASK_ID" column="task_id"/>
+ </table>
+ <table name="PushCorrelationRuleEntity">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="PUSHPOLICY_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="IMPLEMENTATION_ID" type="varchar" size="255"/>
+ <fk to-table="PushPolicy" column="PUSHPOLICY_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Implementation" column="IMPLEMENTATION_ID"/>
+ <index name="I_PSHCTTY_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PSHCTTY_IMPLEMENTATION" column="IMPLEMENTATION_ID"/>
+ <index name="I_PSHCTTY_PUSHPOLICY" column="PUSHPOLICY_ID"/>
+ <unique name="U_PSHCTTY_PUSHPOLICY_ID">
+ <on column="PUSHPOLICY_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="PushPolicy">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="conflictResolutionAction" type="varchar" size="20"/>
+ </table>
+ <table name="PushTaskAction">
+ <column name="task_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Task" column="task_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_PSHTCTN_ELEMENT" column="implementation_id"/>
+ <index name="I_PSHTCTN_TASK_ID" column="task_id"/>
+ </table>
+ <table name="PushTaskAnyFilter">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="PUSHTASK_ID" type="varchar" size="36"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Task" column="PUSHTASK_ID"/>
+ <index name="I_PSHTLTR_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_PSHTLTR_PUSHTASK" column="PUSHTASK_ID"/>
+ <unique name="U_PSHTLTR_PUSHTASK_ID">
+ <on column="PUSHTASK_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="Realm">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="ACCOUNTPOLICY_ID" type="varchar" size="36"/>
+ <column name="PARENT_ID" type="varchar" size="36"/>
+ <column name="PASSWORDPOLICY_ID" type="varchar" size="36"/>
+ <fk to-table="AccountPolicy" column="ACCOUNTPOLICY_ID"/>
+ <fk to-table="Realm" column="PARENT_ID"/>
+ <fk to-table="PasswordPolicy" column="PASSWORDPOLICY_ID"/>
+ <index name="I_REALM_ACCOUNTPOLICY" column="ACCOUNTPOLICY_ID"/>
+ <index name="I_REALM_PARENT" column="PARENT_ID"/>
+ <index name="I_REALM_PASSWORDPOLICY" column="PASSWORDPOLICY_ID"/>
+ <unique name="U_REALM_NAME">
+ <on column="name"/>
+ <on column="PARENT_ID"/>
+ </unique>
+ </table>
+ <table name="RealmAction">
+ <column name="realm_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Realm" column="realm_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_RLMCTON_ELEMENT" column="implementation_id"/>
+ <index name="I_RLMCTON_REALM_ID" column="realm_id"/>
+ </table>
+ <table name="Realm_ExternalResource">
+ <column name="realm_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="Realm" column="realm_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_RLM_SRC_ELEMENT" column="resource_id"/>
+ <index name="I_RLM_SRC_REALM_ID" column="realm_id"/>
+ </table>
+ <table name="RelationshipType">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ </table>
+ <table name="Remediation">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="error" type="clob" size="-1"/>
+ <column name="instant" type="timestamp"/>
+ <column name="operation" type="varchar" size="20"/>
+ <column name="payload" type="clob" size="-1"/>
+ <column name="remoteName" type="varchar" size="255"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <column name="PULLTASK_ID" type="varchar" size="36"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <fk to-table="Task" column="PULLTASK_ID"/>
+ <index name="I_RMDTION_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_RMDTION_PULLTASK" column="PULLTASK_ID"/>
+ </table>
+ <table name="Report">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="active" type="integer"/>
+ <column name="cronExpression" type="varchar" size="255"/>
+ <column name="name" type="varchar" not-null="true" size="255"/>
+ <column name="template_id" type="varchar" size="255"/>
+ <fk to-table="ReportTemplate" column="template_id"/>
+ <index name="I_REPORT_TEMPLATE" column="template_id"/>
+ <unique name="U_REPORT_NAME" column="name"/>
+ </table>
+ <table name="ReportExec">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="endDate" type="timestamp"/>
+ <column name="message" type="clob" size="-1"/>
+ <column name="startDate" type="timestamp"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="execResult" type="blob" size="-1"/>
+ <column name="REPORT_ID" type="varchar" size="36"/>
+ <fk to-table="Report" column="REPORT_ID"/>
+ <index name="I_RPORTXC_REPORT" column="REPORT_ID"/>
+ </table>
+ <table name="ReportReportlet">
+ <column name="report_id" type="varchar" size="36"/>
+ <column name="implementation_id" type="varchar" size="255"/>
+ <fk to-table="Report" column="report_id"/>
+ <fk to-table="Implementation" column="implementation_id"/>
+ <index name="I_RPRTTLT_ELEMENT" column="implementation_id"/>
+ <index name="I_RPRTTLT_REPORT_ID" column="report_id"/>
+ </table>
+ <table name="ReportTemplate">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="csvTemplate" type="clob" size="-1"/>
+ <column name="foTemplate" type="clob" size="-1"/>
+ <column name="htmlTemplate" type="clob" size="-1"/>
+ </table>
+ <table name="SchemaLabel">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="display" type="varchar" not-null="true" size="255"/>
+ <column name="locale" type="varchar" not-null="true" size="255"/>
+ <column name="SCHEMA_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeSchema" column="SCHEMA_ID"/>
+ <index name="I_SCHMLBL_SCHEMA" column="SCHEMA_ID"/>
+ <unique name="U_SCHMLBL_SCHEMA_ID">
+ <on column="SCHEMA_ID"/>
+ <on column="locale"/>
+ </unique>
+ </table>
+ <table name="SecurityQuestion">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="content" type="varchar" size="255"/>
+ <unique name="U_SCRTSTN_CONTENT" column="content"/>
+ </table>
+ <table name="SyncopeConf">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="SyncopeDomain">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="adminCipherAlgorithm" type="varchar" size="20"/>
+ <column name="adminPwd" type="varchar" size="255"/>
+ </table>
+ <table name="SyncopeGroup">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="creationDate" type="timestamp"/>
+ <column name="creator" type="varchar" size="255"/>
+ <column name="lastChangeDate" type="timestamp"/>
+ <column name="lastModifier" type="varchar" size="255"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="workflowId" type="varchar" size="255"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="GROUPOWNER_ID" type="varchar" size="36"/>
+ <column name="USEROWNER_ID" type="varchar" size="36"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="SyncopeGroup" column="GROUPOWNER_ID"/>
+ <fk to-table="SyncopeUser" column="USEROWNER_ID"/>
+ <index name="I_SYNCGRP_GROUPOWNER" column="GROUPOWNER_ID"/>
+ <index name="I_SYNCGRP_REALM" column="REALM_ID"/>
+ <index name="I_SYNCGRP_USEROWNER" column="USEROWNER_ID"/>
+ <unique name="U_SYNCGRP_NAME" column="name"/>
+ </table>
+ <table name="SyncopeGroup_AnyTypeClass">
+ <column name="group_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_ELEMENT" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_GROUP_ID" column="group_id"/>
+ </table>
+ <table name="SyncopeGroup_ExternalResource">
+ <column name="group_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_SYNCSRC_ELEMENT" column="resource_id"/>
+ <index name="I_SYNCSRC_GROUP_ID" column="group_id"/>
+ </table>
+ <table name="SyncopeLogger">
+ <pk column="logName"/>
+ <column name="logName" type="varchar" not-null="true" size="255"/>
+ <column name="logLevel" type="varchar" not-null="true" size="20"/>
+ <column name="logType" type="varchar" not-null="true" size="20"/>
+ </table>
+ <table name="SyncopeRole">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="consoleLayoutInfo" type="clob" size="-1"/>
+ </table>
+ <table name="SyncopeRole_DynRealm">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="dynamicRealm_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <fk to-table="DynRealm" column="dynamicRealm_id"/>
+ <index name="I_SYNCRLM_ELEMENT" column="dynamicRealm_id"/>
+ <index name="I_SYNCRLM_ROLE_ID" column="role_id"/>
+ </table>
+ <table name="SyncopeRole_Privilege">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="privilege_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <fk to-table="Privilege" column="privilege_id"/>
+ <index name="I_SYNCVLG_ELEMENT" column="privilege_id"/>
+ <index name="I_SYNCVLG_ROLE_ID" column="role_id"/>
+ </table>
+ <table name="SyncopeRole_Realm">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="realm_id" type="varchar" size="36"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <fk to-table="Realm" column="realm_id"/>
+ <index name="I_SYNCRLM_ELEMENT1" column="realm_id"/>
+ <index name="I_SYNCRLM_ROLE_ID1" column="role_id"/>
+ </table>
+ <table name="SyncopeRole_entitlements">
+ <column name="role_id" type="varchar" size="255"/>
+ <column name="entitlement" type="varchar" size="255"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <index name="I_SYNCNTS_ROLE_ID" column="role_id"/>
+ </table>
+ <table name="SyncopeSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ </table>
+ <table name="SyncopeUser">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="creationDate" type="timestamp"/>
+ <column name="creator" type="varchar" size="255"/>
+ <column name="lastChangeDate" type="timestamp"/>
+ <column name="lastModifier" type="varchar" size="255"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="workflowId" type="varchar" size="255"/>
+ <column name="changePwdDate" type="timestamp"/>
+ <column name="cipherAlgorithm" type="varchar" size="20"/>
+ <column name="failedLogins" type="integer"/>
+ <column name="lastLoginDate" type="timestamp"/>
+ <column name="lastRecertification" type="timestamp"/>
+ <column name="lastRecertificator" type="varchar" size="255"/>
+ <column name="mustChangePassword" type="integer"/>
+ <column name="password" type="varchar" size="255"/>
+ <column name="securityAnswer" type="varchar" size="255"/>
+ <column name="suspended" type="integer"/>
+ <column name="token" type="clob" size="-1"/>
+ <column name="tokenExpireTime" type="timestamp"/>
+ <column name="username" type="varchar" size="255"/>
+ <column name="REALM_ID" type="varchar" size="36"/>
+ <column name="SECURITYQUESTION_ID" type="varchar" size="36"/>
+ <fk to-table="Realm" column="REALM_ID"/>
+ <fk to-table="SecurityQuestion" column="SECURITYQUESTION_ID"/>
+ <index name="I_SYNCPSR_REALM" column="REALM_ID"/>
+ <index name="I_SYNCPSR_SECURITYQUESTION" column="SECURITYQUESTION_ID"/>
+ <unique name="U_SYNCPSR_USERNAME" column="username"/>
+ </table>
+ <table name="SyncopeUser_AnyTypeClass">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_ELEMENT1" column="anyTypeClass_id"/>
+ <index name="I_SYNCLSS_USER_ID" column="user_id"/>
+ </table>
+ <table name="SyncopeUser_ExternalResource">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="resource_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="ExternalResource" column="resource_id"/>
+ <index name="I_SYNCSRC_ELEMENT1" column="resource_id"/>
+ <index name="I_SYNCSRC_USER_ID" column="user_id"/>
+ </table>
+ <table name="SyncopeUser_SyncopeRole">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="role_id" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="SyncopeRole" column="role_id"/>
+ <index name="I_SYNCPRL_ELEMENT" column="role_id"/>
+ <index name="I_SYNCPRL_USER_ID" column="user_id"/>
+ </table>
+ <table name="SyncopeUser_passwordHistory">
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="passwordHistoryValue" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <index name="I_SYNCTRY_USER_ID" column="user_id"/>
+ </table>
+ <table name="Task">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="DTYPE" type="varchar" size="31"/>
+ <column name="active" type="integer"/>
+ <column name="cronExpression" type="varchar" size="255"/>
+ <column name="description" type="varchar" size="255"/>
+ <column name="name" type="varchar" size="255"/>
+ <column name="startAt" type="timestamp"/>
+ <column name="matchingRule" type="varchar" size="20"/>
+ <column name="performCreate" type="integer"/>
+ <column name="performDelete" type="integer"/>
+ <column name="performUpdate" type="integer"/>
+ <column name="syncStatus" type="integer"/>
+ <column name="unmatchingRule" type="varchar" size="20"/>
+ <column name="pullMode" type="varchar" size="23"/>
+ <column name="remediation" type="integer"/>
+ <column name="JOBDELEGATE_ID" type="varchar" size="255"/>
+ <column name="RESOURCE_ID" type="varchar" size="255"/>
+ <column name="DESTINATIONREALM_ID" type="varchar" size="36"/>
+ <column name="RECONFILTERBUILDER_ID" type="varchar" size="255"/>
+ <column name="anyType" type="varchar" size="255"/>
+ <column name="anyTypeKind" type="varchar" size="20"/>
+ <column name="attributes" type="clob" size="-1"/>
+ <column name="connObjectKey" type="varchar" size="255"/>
+ <column name="entityKey" type="varchar" size="255"/>
+ <column name="objectClassName" type="varchar" size="255"/>
+ <column name="oldConnObjectKey" type="varchar" size="255"/>
+ <column name="operation" type="varchar" size="20"/>
+ <column name="SOURCEREALM_ID" type="varchar" size="36"/>
+ <column name="executed" type="integer"/>
+ <column name="htmlBody" type="clob" size="-1"/>
+ <column name="sender" type="varchar" size="255"/>
+ <column name="subject" type="varchar" size="255"/>
+ <column name="textBody" type="clob" size="-1"/>
+ <column name="traceLevel" type="varchar" size="20"/>
+ <column name="NOTIFICATION_ID" type="varchar" size="36"/>
+ <fk to-table="Implementation" column="JOBDELEGATE_ID"/>
+ <fk to-table="ExternalResource" column="RESOURCE_ID"/>
+ <fk to-table="Realm" column="DESTINATIONREALM_ID"/>
+ <fk to-table="Implementation" column="RECONFILTERBUILDER_ID"/>
+ <fk to-table="Realm" column="SOURCEREALM_ID"/>
+ <fk to-table="Notification" column="NOTIFICATION_ID"/>
+ <index name="I_TASK_DESTINATIONREALM" column="DESTINATIONREALM_ID"/>
+ <index name="I_TASK_DTYPE" column="DTYPE"/>
+ <index name="I_TASK_JOBDELEGATE" column="JOBDELEGATE_ID"/>
+ <index name="I_TASK_NOTIFICATION" column="NOTIFICATION_ID"/>
+ <index name="I_TASK_RECONFILTERBUILDER" column="RECONFILTERBUILDER_ID"/>
+ <index name="I_TASK_RESOURCE" column="RESOURCE_ID"/>
+ <index name="I_TASK_SOURCEREALM" column="SOURCEREALM_ID"/>
+ </table>
+ <table name="TaskExec">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="endDate" type="timestamp"/>
+ <column name="message" type="clob" size="-1"/>
+ <column name="startDate" type="timestamp"/>
+ <column name="status" type="varchar" size="255"/>
+ <column name="TASK_ID" type="varchar" size="36"/>
+ <fk to-table="Task" column="TASK_ID"/>
+ <index name="I_TSKEXEC_TASK" column="TASK_ID"/>
+ </table>
+ <table name="TypeExtension">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="GROUP_ID" type="varchar" size="36"/>
+ <column name="ANYTYPE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeGroup" column="GROUP_ID"/>
+ <fk to-table="AnyType" column="ANYTYPE_ID"/>
+ <index name="I_TYPXNSN_ANYTYPE" column="ANYTYPE_ID"/>
+ <index name="I_TYPXNSN_GROUP" column="GROUP_ID"/>
+ <unique name="U_TYPXNSN_GROUP_ID">
+ <on column="GROUP_ID"/>
+ <on column="ANYTYPE_ID"/>
+ </unique>
+ </table>
+ <table name="TypeExtension_AnyTypeClass">
+ <column name="typeExtension_id" type="varchar" size="36"/>
+ <column name="anyTypeClass_id" type="varchar" size="255"/>
+ <fk to-table="TypeExtension" column="typeExtension_id"/>
+ <fk to-table="AnyTypeClass" column="anyTypeClass_id"/>
+ <index name="I_TYPXLSS_ELEMENT" column="anyTypeClass_id"/>
+ <index name="I_TYPXLSS_TYPEEXTENSION_ID" column="typeExtension_id"/>
+ </table>
+ <table name="UDynGroupMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="fiql" type="varchar" size="255"/>
+ <column name="GROUP_ID" type="varchar" size="36"/>
+ <fk to-table="SyncopeGroup" column="GROUP_ID"/>
+ <index name="I_DYNGSHP_GROUP1" column="GROUP_ID"/>
+ </table>
+ <table name="UMembership">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="group_id" type="varchar" size="36"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="SyncopeGroup" column="group_id"/>
+ <index name="I_MMBRSHP_LEFTEND1" column="user_id"/>
+ <index name="I_MMBRSHP_RIGHTEND1" column="group_id"/>
+ </table>
+ <table name="UPlainAttr">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="OWNER_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <column name="MEMBERSHIP_ID" type="varchar" size="36"/>
+ <fk to-table="SyncopeUser" column="OWNER_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <fk to-table="UMembership" column="MEMBERSHIP_ID"/>
+ <index name="I_UPLNTTR_MEMBERSHIP" column="MEMBERSHIP_ID"/>
+ <index name="I_UPLNTTR_OWNER" column="OWNER_ID"/>
+ <index name="I_UPLNTTR_SCHEMA" column="schema_id"/>
+ </table>
+ <table name="UPlainAttrUniqueValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <column name="schema_id" type="varchar" size="255"/>
+ <fk to-table="UPlainAttr" column="ATTRIBUTE_ID"/>
+ <fk to-table="PlainSchema" column="schema_id"/>
+ <index name="I_PLNTQVL_ATTRIBUTE1" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTQVL_SCHEMA1" column="schema_id"/>
+ <unique name="U_PLNTQVL_BOOLEANVALUE1">
+ <on column="booleanValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DATEVALUE1">
+ <on column="dateValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_STRINGVALUE1">
+ <on column="stringValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_DOUBLEVALUE1">
+ <on column="doubleValue"/>
+ <on column="schema_id"/>
+ </unique>
+ <unique name="U_PLNTQVL_LONGVALUE1">
+ <on column="longValue"/>
+ <on column="schema_id"/>
+ </unique>
+ </table>
+ <table name="UPlainAttrValue">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="binaryValue" type="blob" size="-1"/>
+ <column name="booleanValue" type="integer"/>
+ <column name="dateValue" type="timestamp"/>
+ <column name="doubleValue" type="double"/>
+ <column name="longValue" type="bigint"/>
+ <column name="stringValue" type="varchar" size="255"/>
+ <column name="ATTRIBUTE_ID" type="varchar" size="36"/>
+ <fk to-table="UPlainAttr" column="ATTRIBUTE_ID"/>
+ <index name="I_PLNTRVL_ATTRIBUTE1" column="ATTRIBUTE_ID"/>
+ </table>
+ <table name="URelationship">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="36"/>
+ <column name="user_id" type="varchar" size="36"/>
+ <column name="anyObject_id" type="varchar" size="36"/>
+ <column name="TYPE_ID" type="varchar" size="255"/>
+ <fk to-table="SyncopeUser" column="user_id"/>
+ <fk to-table="AnyObject" column="anyObject_id"/>
+ <fk to-table="RelationshipType" column="TYPE_ID"/>
+ <index name="I_RLTNSHP_LEFTEND1" column="user_id"/>
+ <index name="I_RLTNSHP_RIGHTEND1" column="anyObject_id"/>
+ <index name="I_RLTNSHP_TYPE1" column="TYPE_ID"/>
+ <unique name="U_RLTNSHP_TYPE_ID1">
+ <on column="TYPE_ID"/>
+ <on column="user_id"/>
+ <on column="anyObject_id"/>
+ </unique>
+ </table>
+ <table name="VirSchema">
+ <pk column="id"/>
+ <column name="id" type="varchar" not-null="true" size="255"/>
+ <column name="extAttrName" type="varchar" size="255"/>
+ <column name="readonly" type="integer"/>
+ <column name="ANYTYPECLASS_ID" type="varchar" size="255"/>
+ <column name="PROVISION_ID" type="varchar" size="36"/>
+ <fk to-table="SyncopeSchema" column="id"/>
+ <fk to-table="AnyTypeClass" column="ANYTYPECLASS_ID"/>
+ <fk to-table="Provision" column="PROVISION_ID"/>
+ <index name="I_VIRSCHM_ANYTYPECLASS" column="ANYTYPECLASS_ID"/>
+ <index name="I_VIRSCHM_PROVISION" column="PROVISION_ID"/>
+ </table>
+ </schema>
+</schemas>
\ No newline at end of file
[3/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/test/resources/syncopedb20.sql
----------------------------------------------------------------------
diff --git a/core/upgrade/src/test/resources/syncopedb20.sql b/core/upgrade/src/test/resources/syncopedb20.sql
new file mode 100644
index 0000000..314669b
--- /dev/null
+++ b/core/upgrade/src/test/resources/syncopedb20.sql
@@ -0,0 +1,2867 @@
+-- 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.
+
+CREATE SEQUENCE PUBLIC.SYSTEM_SEQUENCE_59F7B0CC_7480_4829_9E5B_C3B02CB5126B START WITH 1 BELONGS_TO_TABLE;
+CREATE MEMORY TABLE PUBLIC.QRTZ_CALENDARS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ CALENDAR_NAME VARCHAR(200) NOT NULL,
+ CALENDAR IMAGE NOT NULL
+);
+ALTER TABLE PUBLIC.QRTZ_CALENDARS ADD CONSTRAINT PUBLIC.PK_QRTZ_CALENDARS PRIMARY KEY(SCHED_NAME, CALENDAR_NAME);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_CALENDARS;
+CREATE MEMORY TABLE PUBLIC.QRTZ_CRON_TRIGGERS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_NAME VARCHAR(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ CRON_EXPRESSION VARCHAR(120) NOT NULL,
+ TIME_ZONE_ID VARCHAR(80)
+);
+ALTER TABLE PUBLIC.QRTZ_CRON_TRIGGERS ADD CONSTRAINT PUBLIC.PK_QRTZ_CRON_TRIGGERS PRIMARY KEY(SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP);
+-- 4 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_CRON_TRIGGERS;
+INSERT INTO PUBLIC.QRTZ_CRON_TRIGGERS(SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, CRON_EXPRESSION, TIME_ZONE_ID) VALUES
+('scheduler', 'Trigger_taskJobe95555d2-1b09-42c8-b25b-f4c4ec597979', 'DEFAULT', '0 0 0 1 * ?', 'Europe/Rome'),
+('scheduler', 'Trigger_notificationJob', 'DEFAULT', '0/20 * * * * ?', 'Europe/Rome'),
+('scheduler', 'Trigger_systemLoadReporterJob', 'DEFAULT', '0 * * * * ?', 'Europe/Rome'),
+('scheduler', 'Trigger_taskJob89de5014-e3f5-4462-84d8-d97575740baf', 'DEFAULT', '0 0/5 * * * ?', 'Europe/Rome');
+CREATE MEMORY TABLE PUBLIC.QRTZ_FIRED_TRIGGERS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ ENTRY_ID VARCHAR(95) NOT NULL,
+ TRIGGER_NAME VARCHAR(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ INSTANCE_NAME VARCHAR(200) NOT NULL,
+ FIRED_TIME BIGINT NOT NULL,
+ SCHED_TIME BIGINT NOT NULL,
+ PRIORITY INTEGER NOT NULL,
+ STATE VARCHAR(16) NOT NULL,
+ JOB_NAME VARCHAR(200),
+ JOB_GROUP VARCHAR(200),
+ IS_NONCONCURRENT BOOLEAN,
+ REQUESTS_RECOVERY BOOLEAN
+);
+ALTER TABLE PUBLIC.QRTZ_FIRED_TRIGGERS ADD CONSTRAINT PUBLIC.PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY(SCHED_NAME, ENTRY_ID);
+-- 1 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_FIRED_TRIGGERS;
+INSERT INTO PUBLIC.QRTZ_FIRED_TRIGGERS(SCHED_NAME, ENTRY_ID, TRIGGER_NAME, TRIGGER_GROUP, INSTANCE_NAME, FIRED_TIME, SCHED_TIME, PRIORITY, STATE, JOB_NAME, JOB_GROUP, IS_NONCONCURRENT, REQUESTS_RECOVERY) VALUES
+('scheduler', 'bambooo15306986457271530698645716', 'Trigger_notificationJob', 'DEFAULT', 'bambooo1530698645727', 1530698700189, 1530698720000, 5, 'ACQUIRED', NULL, NULL, FALSE, FALSE);
+CREATE MEMORY TABLE PUBLIC.QRTZ_PAUSED_TRIGGER_GRPS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL
+);
+ALTER TABLE PUBLIC.QRTZ_PAUSED_TRIGGER_GRPS ADD CONSTRAINT PUBLIC.PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY(SCHED_NAME, TRIGGER_GROUP);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_PAUSED_TRIGGER_GRPS;
+CREATE MEMORY TABLE PUBLIC.QRTZ_SCHEDULER_STATE(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ INSTANCE_NAME VARCHAR(200) NOT NULL,
+ LAST_CHECKIN_TIME BIGINT NOT NULL,
+ CHECKIN_INTERVAL BIGINT NOT NULL
+);
+ALTER TABLE PUBLIC.QRTZ_SCHEDULER_STATE ADD CONSTRAINT PUBLIC.PK_QRTZ_SCHEDULER_STATE PRIMARY KEY(SCHED_NAME, INSTANCE_NAME);
+-- 1 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_SCHEDULER_STATE;
+INSERT INTO PUBLIC.QRTZ_SCHEDULER_STATE(SCHED_NAME, INSTANCE_NAME, LAST_CHECKIN_TIME, CHECKIN_INTERVAL) VALUES
+('scheduler', 'bambooo1530698645727', 1530698701866, 20000);
+CREATE MEMORY TABLE PUBLIC.QRTZ_LOCKS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ LOCK_NAME VARCHAR(40) NOT NULL
+);
+ALTER TABLE PUBLIC.QRTZ_LOCKS ADD CONSTRAINT PUBLIC.PK_QRTZ_LOCKS PRIMARY KEY(SCHED_NAME, LOCK_NAME);
+-- 2 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_LOCKS;
+INSERT INTO PUBLIC.QRTZ_LOCKS(SCHED_NAME, LOCK_NAME) VALUES
+('scheduler', 'TRIGGER_ACCESS'),
+('scheduler', 'STATE_ACCESS');
+CREATE MEMORY TABLE PUBLIC.QRTZ_JOB_DETAILS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ JOB_NAME VARCHAR(200) NOT NULL,
+ JOB_GROUP VARCHAR(200) NOT NULL,
+ DESCRIPTION VARCHAR(250),
+ JOB_CLASS_NAME VARCHAR(250) NOT NULL,
+ IS_DURABLE BOOLEAN NOT NULL,
+ IS_NONCONCURRENT BOOLEAN NOT NULL,
+ IS_UPDATE_DATA BOOLEAN NOT NULL,
+ REQUESTS_RECOVERY BOOLEAN NOT NULL,
+ JOB_DATA IMAGE
+);
+ALTER TABLE PUBLIC.QRTZ_JOB_DETAILS ADD CONSTRAINT PUBLIC.PK_QRTZ_JOB_DETAILS PRIMARY KEY(SCHED_NAME, JOB_NAME, JOB_GROUP);
+-- 28 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_JOB_DETAILS;
+INSERT INTO PUBLIC.QRTZ_JOB_DETAILS(SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT, IS_UPDATE_DATA, REQUESTS_RECOVERY, JOB_DATA) VALUES
+('scheduler', 'taskJob89de5014-e3f5-4462-84d8-d97575740baf', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', FALSE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400476f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e6a6f622e45787069726564416363657373546f6b656e436c65616e7570740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob30cfd653-257b-495f-8665-281281dbcb3d', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobec674143-480a-4816-98ad-b61fa090821e', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob97f327b6-2eff-4d35-85e8-d581baaab855', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob81d88f73-d474-4450-9031-605daa4e313f', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800');
+INSERT INTO PUBLIC.QRTZ_JOB_DETAILS(SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT, IS_UPDATE_DATA, REQUESTS_RECOVERY, JOB_DATA) VALUES
+('scheduler', 'taskJob38abbf9e-a1a3-40a1-a15f-7d0ac02f47f1', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobfeae4e57-15ca-40d9-b973-8b9015efca49', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob7c2242f4-14af-4ab5-af31-cdae23783655', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob83f7e85d-9774-43fe-adba-ccd856312994', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobe95555d2-1b09-42c8-b25b-f4c4ec597979', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', FALSE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c61737374003b6f72672e6170616368652e73796e636f70652e6669742e636f72652e7265666572656e63652e5465737453616d706c654a6f6244656c6567617465740006646f6d61696e7400064d61737465727800');
+INSERT INTO PUBLIC.QRTZ_JOB_DETAILS(SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT, IS_UPDATE_DATA, REQUESTS_RECOVERY, JOB_DATA) VALUES
+('scheduler', 'taskJob24b1be9c-7e3b-443a-86c9-798ebce5eaf2', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob375c7b7f-9e3a-4833-88c9-b7787b0a69f2', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobfd905ba5-9d56-4f51-83e2-859096a67b75', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobe95555d2-1b09-42c8-b25b-f4c4ec598989', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400456f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e6a6f622e4964656e74697479526563657274696669636174696f6e740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob986867e2-993b-430e-8feb-aa9abb4c1dcd', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800');
+INSERT INTO PUBLIC.QRTZ_JOB_DETAILS(SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT, IS_UPDATE_DATA, REQUESTS_RECOVERY, JOB_DATA) VALUES
+('scheduler', 'taskJob1e419ca4-ea81-4493-a14f-28b90113686d', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobc41b9b71-9bfa-4f90-89f2-84787def4c5c', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobaf558be4-9d2f-4359-bf85-a554e6e90be1', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob5e5f7c7e-9de7-4c6a-99f1-4df1af959807', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJobc46edc3a-a18b-4af2-b707-f4a415507496', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800');
+INSERT INTO PUBLIC.QRTZ_JOB_DETAILS(SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT, IS_UPDATE_DATA, REQUESTS_RECOVERY, JOB_DATA) VALUES
+('scheduler', 'taskJob0bc11a19-6454-45c2-a4e3-ceef84e5d79b', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob51318433-cce4-4f71-8f45-9534b6c9c819', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob55d5e74b-497e-4bc0-9156-73abef4b9adc', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e50756c6c4a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'taskJob03aa2a04-4881-4573-9117-753f81b04865', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.TaskJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c7708000000100000000274000d64656c6567617465436c6173737400426f72672e6170616368652e73796e636f70652e636f72652e70726f766973696f6e696e672e6a6176612e7075736870756c6c2e507573684a6f6244656c6567617465740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'reportJob0062ea9c-924d-4ecf-9961-4492a8cc6d1b', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.report.ReportJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c77080000001000000001740006646f6d61696e7400064d61737465727800');
+INSERT INTO PUBLIC.QRTZ_JOB_DETAILS(SCHED_NAME, JOB_NAME, JOB_GROUP, DESCRIPTION, JOB_CLASS_NAME, IS_DURABLE, IS_NONCONCURRENT, IS_UPDATE_DATA, REQUESTS_RECOVERY, JOB_DATA) VALUES
+('scheduler', 'reportJobc3520ad9-179f-49e7-b315-d684d216dd97', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.report.ReportJob', TRUE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c77080000001000000001740006646f6d61696e7400064d61737465727800'),
+('scheduler', 'notificationJob', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.notification.NotificationJob', FALSE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c77080000001000000001740006646f6d61696e74000354776f7800'),
+('scheduler', 'systemLoadReporterJob', 'DEFAULT', NULL, 'org.apache.syncope.core.provisioning.java.job.SystemLoadReporterJob', FALSE, TRUE, FALSE, FALSE, X'aced0005737200156f72672e71756172747a2e4a6f62446174614d61709fb083e8bfa9b0cb020000787200266f72672e71756172747a2e7574696c732e537472696e674b65794469727479466c61674d61708208e8c3fbc55d280200015a0013616c6c6f77735472616e7369656e74446174617872001d6f72672e71756172747a2e7574696c732e4469727479466c61674d617013e62ead28760ace0200025a000564697274794c00036d617074000f4c6a6176612f7574696c2f4d61703b787001737200116a6176612e7574696c2e486173684d61700507dac1c31660d103000246000a6c6f6164466163746f724900097468726573686f6c6478703f4000000000000c77080000001000000001740006646f6d61696e74000354776f7800');
+CREATE MEMORY TABLE PUBLIC.QRTZ_SIMPLE_TRIGGERS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_NAME VARCHAR(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ REPEAT_COUNT BIGINT NOT NULL,
+ REPEAT_INTERVAL BIGINT NOT NULL,
+ TIMES_TRIGGERED BIGINT NOT NULL
+);
+ALTER TABLE PUBLIC.QRTZ_SIMPLE_TRIGGERS ADD CONSTRAINT PUBLIC.PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY(SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_SIMPLE_TRIGGERS;
+CREATE MEMORY TABLE PUBLIC.QRTZ_SIMPROP_TRIGGERS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_NAME VARCHAR(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ STR_PROP_1 VARCHAR(512),
+ STR_PROP_2 VARCHAR(512),
+ STR_PROP_3 VARCHAR(512),
+ INT_PROP_1 INTEGER,
+ INT_PROP_2 INTEGER,
+ LONG_PROP_1 BIGINT,
+ LONG_PROP_2 BIGINT,
+ DEC_PROP_1 NUMERIC(13, 4),
+ DEC_PROP_2 NUMERIC(13, 4),
+ BOOL_PROP_1 BOOLEAN,
+ BOOL_PROP_2 BOOLEAN
+);
+ALTER TABLE PUBLIC.QRTZ_SIMPROP_TRIGGERS ADD CONSTRAINT PUBLIC.PK_QRTZ_SIMPROP_TRIGGERS PRIMARY KEY(SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_SIMPROP_TRIGGERS;
+CREATE MEMORY TABLE PUBLIC.QRTZ_BLOB_TRIGGERS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_NAME VARCHAR(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ BLOB_DATA IMAGE
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_BLOB_TRIGGERS;
+CREATE MEMORY TABLE PUBLIC.QRTZ_TRIGGERS(
+ SCHED_NAME VARCHAR(120) NOT NULL,
+ TRIGGER_NAME VARCHAR(200) NOT NULL,
+ TRIGGER_GROUP VARCHAR(200) NOT NULL,
+ JOB_NAME VARCHAR(200) NOT NULL,
+ JOB_GROUP VARCHAR(200) NOT NULL,
+ DESCRIPTION VARCHAR(250),
+ NEXT_FIRE_TIME BIGINT,
+ PREV_FIRE_TIME BIGINT,
+ PRIORITY INTEGER,
+ TRIGGER_STATE VARCHAR(16) NOT NULL,
+ TRIGGER_TYPE VARCHAR(8) NOT NULL,
+ START_TIME BIGINT NOT NULL,
+ END_TIME BIGINT,
+ CALENDAR_NAME VARCHAR(200),
+ MISFIRE_INSTR SMALLINT,
+ JOB_DATA IMAGE
+);
+ALTER TABLE PUBLIC.QRTZ_TRIGGERS ADD CONSTRAINT PUBLIC.PK_QRTZ_TRIGGERS PRIMARY KEY(SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP);
+-- 4 +/- SELECT COUNT(*) FROM PUBLIC.QRTZ_TRIGGERS;
+INSERT INTO PUBLIC.QRTZ_TRIGGERS(SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, JOB_NAME, JOB_GROUP, DESCRIPTION, NEXT_FIRE_TIME, PREV_FIRE_TIME, PRIORITY, TRIGGER_STATE, TRIGGER_TYPE, START_TIME, END_TIME, CALENDAR_NAME, MISFIRE_INSTR, JOB_DATA) VALUES
+('scheduler', 'Trigger_taskJobe95555d2-1b09-42c8-b25b-f4c4ec597979', 'DEFAULT', 'taskJobe95555d2-1b09-42c8-b25b-f4c4ec597979', 'DEFAULT', NULL, 1533074400000, -1, 5, 'WAITING', 'CRON', 1530698657000, 0, NULL, 0, X''),
+('scheduler', 'Trigger_taskJob89de5014-e3f5-4462-84d8-d97575740baf', 'DEFAULT', 'taskJob89de5014-e3f5-4462-84d8-d97575740baf', 'DEFAULT', NULL, 1530699000000, 1530698700000, 5, 'WAITING', 'CRON', 1530698657000, 0, NULL, 0, X''),
+('scheduler', 'Trigger_systemLoadReporterJob', 'DEFAULT', 'systemLoadReporterJob', 'DEFAULT', NULL, 1530698760000, 1530698700000, 5, 'WAITING', 'CRON', 1530698657000, 0, NULL, 0, X''),
+('scheduler', 'Trigger_notificationJob', 'DEFAULT', 'notificationJob', 'DEFAULT', NULL, 1530698720000, 1530698700000, 5, 'ACQUIRED', 'CRON', 1530698657000, 0, NULL, 0, X'');
+CREATE MEMORY TABLE PUBLIC.ACCESSTOKEN(
+ ID VARCHAR(255) NOT NULL,
+ AUTHORITIES BLOB,
+ BODY CLOB,
+ EXPIRYTIME TIMESTAMP,
+ OWNER VARCHAR(255)
+);
+ALTER TABLE PUBLIC.ACCESSTOKEN ADD CONSTRAINT PUBLIC.CONSTRAINT_4 PRIMARY KEY(ID);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ACCESSTOKEN;
+CREATE MEMORY TABLE PUBLIC.ACCOUNTPOLICY(
+ ID VARCHAR(36) NOT NULL,
+ DESCRIPTION VARCHAR(255),
+ MAXAUTHENTICATIONATTEMPTS INTEGER,
+ PROPAGATESUSPENSION INTEGER
+);
+ALTER TABLE PUBLIC.ACCOUNTPOLICY ADD CONSTRAINT PUBLIC.CONSTRAINT_B PRIMARY KEY(ID);
+-- 2 +/- SELECT COUNT(*) FROM PUBLIC.ACCOUNTPOLICY;
+INSERT INTO PUBLIC.ACCOUNTPOLICY(ID, DESCRIPTION, MAXAUTHENTICATIONATTEMPTS, PROPAGATESUSPENSION) VALUES
+('20ab5a8c-4b0c-432c-b957-f7fb9784d9f7', 'an account policy', 0, 0),
+('06e2ed52-6966-44aa-a177-a0ca7434201f', 'sample account policy', 3, 0);
+CREATE MEMORY TABLE PUBLIC.ACCOUNTPOLICY_EXTERNALRESOURCE(
+ ACCOUNTPOLICY_ID VARCHAR(36),
+ RESOURCE_ID VARCHAR(255)
+);
+-- 1 +/- SELECT COUNT(*) FROM PUBLIC.ACCOUNTPOLICY_EXTERNALRESOURCE;
+INSERT INTO PUBLIC.ACCOUNTPOLICY_EXTERNALRESOURCE(ACCOUNTPOLICY_ID, RESOURCE_ID) VALUES
+('20ab5a8c-4b0c-432c-b957-f7fb9784d9f7', 'resource-testdb');
+CREATE MEMORY TABLE PUBLIC.ACCOUNTRULECONFINSTANCE(
+ ID VARCHAR(36) NOT NULL,
+ SERIALIZEDINSTANCE CLOB,
+ ACCOUNTPOLICY_ID VARCHAR(36)
+);
+ALTER TABLE PUBLIC.ACCOUNTRULECONFINSTANCE ADD CONSTRAINT PUBLIC.CONSTRAINT_2 PRIMARY KEY(ID);
+-- 2 +/- SELECT COUNT(*) FROM PUBLIC.ACCOUNTRULECONFINSTANCE;
+INSERT INTO PUBLIC.ACCOUNTRULECONFINSTANCE(ID, SERIALIZEDINSTANCE, ACCOUNTPOLICY_ID) VALUES
+('5', '{"@class":"org.apache.syncope.common.lib.policy.DefaultAccountRuleConf","maxLength":0,"minLength":0,"pattern":null,"allUpperCase":false,"allLowerCase":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":[],"suffixesNotPermitted":[]}', '20ab5a8c-4b0c-432c-b957-f7fb9784d9f7'),
+('6', '{"@class":"org.apache.syncope.common.lib.policy.DefaultAccountRuleConf","maxLength":0,"minLength":4,"pattern":null,"allUpperCase":false,"allLowerCase":false,"wordsNotPermitted":[],"schemasNotPermitted":[],"prefixesNotPermitted":["notpermitted1","notpermitted2"],"suffixesNotPermitted":[]}', '06e2ed52-6966-44aa-a177-a0ca7434201f');
+CREATE MEMORY TABLE PUBLIC.ADYNGROUPMEMBERSHIP(
+ ID VARCHAR(36) NOT NULL,
+ FIQL VARCHAR(255),
+ GROUP_ID VARCHAR(36),
+ ANYTYPE_ID VARCHAR(255)
+);
+ALTER TABLE PUBLIC.ADYNGROUPMEMBERSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_F PRIMARY KEY(ID);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ADYNGROUPMEMBERSHIP;
+CREATE MEMORY TABLE PUBLIC.AMEMBERSHIP(
+ ID VARCHAR(36) NOT NULL,
+ ANYOBJECT_ID VARCHAR(36),
+ GROUP_ID VARCHAR(36)
+);
+ALTER TABLE PUBLIC.AMEMBERSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_9 PRIMARY KEY(ID);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.AMEMBERSHIP;
+CREATE INDEX PUBLIC.AMEMBERSHIP_ANYOBJECTINDEX ON PUBLIC.AMEMBERSHIP(ANYOBJECT_ID);
+CREATE INDEX PUBLIC.AMEMBERSHIP_GROUPINDEX ON PUBLIC.AMEMBERSHIP(GROUP_ID);
+CREATE MEMORY TABLE PUBLIC.ANYABOUT(
+ ID VARCHAR(36) NOT NULL,
+ FILTER CLOB,
+ NOTIFICATION_ID VARCHAR(36),
+ ANYTYPE_ID VARCHAR(255)
+);
+ALTER TABLE PUBLIC.ANYABOUT ADD CONSTRAINT PUBLIC.CONSTRAINT_1 PRIMARY KEY(ID);
+-- 2 +/- SELECT COUNT(*) FROM PUBLIC.ANYABOUT;
+INSERT INTO PUBLIC.ANYABOUT(ID, FILTER, NOTIFICATION_ID, ANYTYPE_ID) VALUES
+('a328f2e6-25e9-4cc1-badf-7425d7be4b39', 'token!=$null', 'e00945b5-1184-4d43-8e45-4318a8dcdfd4', 'USER'),
+('2e2ee845-2abf-43c6-b543-49243a84e2f1', 'fullname==*o*;fullname==*i*', '9e2b911c-25de-4c77-bcea-b86ed9451050', 'USER');
+CREATE MEMORY TABLE PUBLIC.ANYOBJECT(
+ ID VARCHAR(36) NOT NULL,
+ CREATIONDATE TIMESTAMP,
+ CREATOR VARCHAR(255),
+ LASTCHANGEDATE TIMESTAMP,
+ LASTMODIFIER VARCHAR(255),
+ STATUS VARCHAR(255),
+ WORKFLOWID VARCHAR(255),
+ NAME VARCHAR(255),
+ REALM_ID VARCHAR(36),
+ TYPE_ID VARCHAR(255)
+);
+ALTER TABLE PUBLIC.ANYOBJECT ADD CONSTRAINT PUBLIC.CONSTRAINT_3 PRIMARY KEY(ID);
+-- 3 +/- SELECT COUNT(*) FROM PUBLIC.ANYOBJECT;
+INSERT INTO PUBLIC.ANYOBJECT(ID, CREATIONDATE, CREATOR, LASTCHANGEDATE, LASTMODIFIER, STATUS, WORKFLOWID, NAME, REALM_ID, TYPE_ID) VALUES
+('fc6dbc3a-6c07-4965-8781-921e7401a4a5', TIMESTAMP '2010-10-20 11:00:00', 'admin', TIMESTAMP '2010-10-20 11:00:00', 'admin', NULL, NULL, 'HP LJ 1300n', 'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', 'PRINTER'),
+('8559d14d-58c2-46eb-a2d4-a7d35161e8f8', TIMESTAMP '2010-10-20 11:00:00', 'admin', TIMESTAMP '2010-10-20 11:00:00', 'admin', NULL, NULL, 'Canon MF 8030cn', 'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', 'PRINTER'),
+('9e1d130c-d6a3-48b1-98b3-182477ed0688', TIMESTAMP '2010-10-20 11:00:00', 'admin', TIMESTAMP '2010-10-20 11:00:00', 'admin', NULL, NULL, 'Epson Stylus Color', '0679e069-7355-4b20-bd11-a5a0a5453c7c', 'PRINTER');
+CREATE MEMORY TABLE PUBLIC.ANYOBJECT_ANYTYPECLASS(
+ ANYOBJECT_ID VARCHAR(36),
+ ANYTYPECLASS_ID VARCHAR(255)
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANYOBJECT_ANYTYPECLASS;
+CREATE MEMORY TABLE PUBLIC.ANYOBJECT_EXTERNALRESOURCE(
+ ANYOBJECT_ID VARCHAR(36),
+ RESOURCE_ID VARCHAR(255)
+);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANYOBJECT_EXTERNALRESOURCE;
+CREATE MEMORY TABLE PUBLIC.ANYTEMPLATEPULLTASK(
+ ID VARCHAR(36) NOT NULL,
+ TEMPLATE CLOB,
+ ANYTYPE_ID VARCHAR(255),
+ PULLTASK_ID VARCHAR(36)
+);
+ALTER TABLE PUBLIC.ANYTEMPLATEPULLTASK ADD CONSTRAINT PUBLIC.CONSTRAINT_9E PRIMARY KEY(ID);
+-- 8 +/- SELECT COUNT(*) FROM PUBLIC.ANYTEMPLATEPULLTASK;
+INSERT INTO PUBLIC.ANYTEMPLATEPULLTASK(ID, TEMPLATE, ANYTYPE_ID, PULLTASK_ID) VALUES
+('3a6173a9-8c34-4e37-b3b1-0c2ea385fac0', '{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["csv"],"derAttrs":[{"schema":"cn","values":[""]}],"virAttrs":[],"resources":["resource-testdb"],"relationships":[],"memberships":[{"groupKey":"f779c0d4-633b-4be5-8f57-32eb478a3ca5","groupName":null}],"dynMemberships":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"ctype","values":["email == ''test8@syncope.apache.org''? ''TYPE_8'': ''TYPE_OTHER''"]}]}', 'USER', 'c41b9b71-9bfa-4f90-89f2-84787def4c5c'),
+('b3772d66-ec06-4133-bf38-b3273845ac5b', '{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}', 'GROUP', 'c41b9b71-9bfa-4f90-89f2-84787def4c5c'),
+('6c3f578d-327b-4a7c-8037-6f5ba24eb770', '{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"relationships":[],"memberships":[],"dynMemberships":[],"roles":[],"dynRoles":[],"plainAttrs":[{"schema":"ctype","values":["''type a''"]},{"schema":"userId","values":["''reconciled@syncope.apache.org''"]},{"schema":"fullname","values":["''reconciled fullname''"]},{"schema":"surname","values":["''surname''"]}]}', 'USER', '83f7e85d-9774-43fe-adba-ccd856312994'),
+('45b61137-c7c3-49ee-86e0-9efffa75ae68', '{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}', 'GROUP', '83f7e85d-9774-43fe-adba-ccd856312994'),
+('df655a2a-40c0-43b1-a157-3f4988802f58', '{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":"''/'' + title","status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":["minimal group"],"derAttrs":[],"virAttrs":[{"schema":"virtualReadOnly","values":[""]}],"resources":["resource-ldap"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynMemberships":[],"plainAttrs":[]}', 'USER', '1e419ca4-ea81-4493-a14f-28b90113686d'),
+('fda22ff3-98f3-42e4-a2ae-cd9a28282d57', '{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[{"schema":"show","values":["true"]}]}', 'GROUP', '1e419ca4-ea81-4493-a14f-28b90113686d'),
+('8bc41ba1-cc1d-4ee0-bb43-61cd148b414f', '{"@class":"org.apache.syncope.common.lib.to.UserTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"USER","realm":null,"status":null,"password":null,"token":null,"tokenExpireTime":null,"username":null,"lastLoginDate":null,"changePwdDate":null,"failedLogins":null,"securityQuestion":null,"securityAnswer":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":["resource-testdb"],"roles":[],"dynRoles":[],"relationships":[],"memberships":[],"dynMemberships":[],"plainAttrs":[{"schema":"firstname","values":[""]},{"schema":"userId","values":["''test''"]},{"schema":"fullname","values":["''test''"]},{"schema":"surname","values":["''test''"]}]}', 'USER', '986867e2-993b-430e-8feb-aa9abb4c1dcd');
+INSERT INTO PUBLIC.ANYTEMPLATEPULLTASK(ID, TEMPLATE, ANYTYPE_ID, PULLTASK_ID) VALUES
+('9af0e343-8a37-42d2-9bc7-6e2e3b103219', '{"@class":"org.apache.syncope.common.lib.to.GroupTO","creator":null,"creationDate":null,"lastModifier":null,"lastChangeDate":null,"key":null,"type":"GROUP","realm":null,"status":null,"name":null,"userOwner":null,"groupOwner":null,"udynMembershipCond":null,"auxClasses":[],"derAttrs":[],"virAttrs":[],"resources":[],"plainAttrs":[]}', 'GROUP', '986867e2-993b-430e-8feb-aa9abb4c1dcd');
+CREATE MEMORY TABLE PUBLIC.ANYTEMPLATEREALM(
+ ID VARCHAR(36) NOT NULL,
+ TEMPLATE CLOB,
+ REALM_ID VARCHAR(36),
+ ANYTYPE_ID VARCHAR(255)
+);
+ALTER TABLE PUBLIC.ANYTEMPLATEREALM ADD CONSTRAINT PUBLIC.CONSTRAINT_D PRIMARY KEY(ID);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.ANYTEMPLATEREALM;
+CREATE MEMORY TABLE PUBLIC.ANYTYPE(
+ ID VARCHAR(255) NOT NULL,
+ KIND VARCHAR(20)
+);
+ALTER TABLE PUBLIC.ANYTYPE ADD CONSTRAINT PUBLIC.CONSTRAINT_F8 PRIMARY KEY(ID);
+-- 3 +/- SELECT COUNT(*) FROM PUBLIC.ANYTYPE;
+INSERT INTO PUBLIC.ANYTYPE(ID, KIND) VALUES
+('USER', 'USER'),
+('GROUP', 'GROUP'),
+('PRINTER', 'ANY_OBJECT');
+CREATE MEMORY TABLE PUBLIC.ANYTYPECLASS(
+ ID VARCHAR(255) NOT NULL
+);
+ALTER TABLE PUBLIC.ANYTYPECLASS ADD CONSTRAINT PUBLIC.CONSTRAINT_49 PRIMARY KEY(ID);
+-- 6 +/- SELECT COUNT(*) FROM PUBLIC.ANYTYPECLASS;
+INSERT INTO PUBLIC.ANYTYPECLASS(ID) VALUES
+('generic membership'),
+('minimal user'),
+('other'),
+('minimal group'),
+('minimal printer'),
+('csv');
+CREATE MEMORY TABLE PUBLIC.ANYTYPE_ANYTYPECLASS(
+ ANYTYPE_ID VARCHAR(255),
+ ANYTYPECLASS_ID VARCHAR(255)
+);
+-- 4 +/- SELECT COUNT(*) FROM PUBLIC.ANYTYPE_ANYTYPECLASS;
+INSERT INTO PUBLIC.ANYTYPE_ANYTYPECLASS(ANYTYPE_ID, ANYTYPECLASS_ID) VALUES
+('USER', 'minimal user'),
+('USER', 'other'),
+('GROUP', 'minimal group'),
+('PRINTER', 'minimal printer');
+CREATE MEMORY TABLE PUBLIC.APLAINATTR(
+ ID VARCHAR(36) NOT NULL,
+ OWNER_ID VARCHAR(36),
+ SCHEMA_ID VARCHAR(255),
+ MEMBERSHIP_ID VARCHAR(36)
+);
+ALTER TABLE PUBLIC.APLAINATTR ADD CONSTRAINT PUBLIC.CONSTRAINT_22 PRIMARY KEY(ID);
+-- 4 +/- SELECT COUNT(*) FROM PUBLIC.APLAINATTR;
+INSERT INTO PUBLIC.APLAINATTR(ID, OWNER_ID, SCHEMA_ID, MEMBERSHIP_ID) VALUES
+('956a8440-1df7-4ed6-b156-04173ca47528', 'fc6dbc3a-6c07-4965-8781-921e7401a4a5', 'model', NULL),
+('1fa796fd-c7e2-414e-8ad3-ac86b729d62c', 'fc6dbc3a-6c07-4965-8781-921e7401a4a5', 'location', NULL),
+('b8342732-81bd-440b-91ac-b8cdad288ed5', '8559d14d-58c2-46eb-a2d4-a7d35161e8f8', 'model', NULL),
+('c4cb0684-a033-425c-8b1b-d283597f999b', '8559d14d-58c2-46eb-a2d4-a7d35161e8f8', 'location', NULL);
+CREATE INDEX PUBLIC.APLAINATTR_SCHEMA_INDEX ON PUBLIC.APLAINATTR(SCHEMA_ID);
+CREATE INDEX PUBLIC.APLAINATTR_OWNER_INDEX ON PUBLIC.APLAINATTR(OWNER_ID);
+CREATE INDEX PUBLIC.APLAINATTR_MEMBERSHIP_INDEX ON PUBLIC.APLAINATTR(MEMBERSHIP_ID);
+CREATE MEMORY TABLE PUBLIC.APLAINATTRUNIQUEVALUE(
+ ID VARCHAR(36) NOT NULL,
+ BINARYVALUE BLOB,
+ BOOLEANVALUE INTEGER,
+ DATEVALUE TIMESTAMP,
+ DOUBLEVALUE DOUBLE,
+ LONGVALUE BIGINT,
+ STRINGVALUE VARCHAR(255),
+ ATTRIBUTE_ID VARCHAR(36),
+ SCHEMA_ID VARCHAR(255)
+);
+ALTER TABLE PUBLIC.APLAINATTRUNIQUEVALUE ADD CONSTRAINT PUBLIC.CONSTRAINT_FE PRIMARY KEY(ID);
+-- 0 +/- SELECT COUNT(*) FROM PUBLIC.APLAINATTRUNIQUEVALUE;
+CREATE INDEX PUBLIC.APATTRUNIQUEVALUE_ATTRINDEX ON PUBLIC.APLAINATTRUNIQUEVALUE(ATTRIBUTE_ID);
+CREATE MEMORY TABLE PUBLIC.APLAINATTRVALUE(
+ ID VARCHAR(36) NOT NULL,
+ BINARYVALUE BLOB,
+ BOOLEANVALUE INTEGER,
+ DATEVALUE TIMESTAMP,
+ DOUBLEVALUE DOUBLE,
+ LONGVALUE BIGINT,
+ STRINGVALUE VARCHAR(255),
+ ATTRIBUTE_ID VARCHAR(36)
+);
+ALTER TABLE PUBLIC.APLAINATTRVALUE ADD CONSTRAINT PUBLIC.CONSTRAINT_B4 PRIMARY KEY(ID);
+-- 4 +/- SELECT COUNT(*) FROM PUBLIC.APLAINATTRVALUE;
+INSERT INTO PUBLIC.APLAINATTRVALUE(ID, BINARYVALUE, BOOLEANVALUE, DATEVALUE, DOUBLEVALUE, LONGVALUE, STRINGVALUE, ATTRIBUTE_ID) VALUES
+('15f64e99-20cc-42ec-a77a-3396dea4248f', NULL, NULL, NULL, NULL, NULL, 'Canon MFC8030', '956a8440-1df7-4ed6-b156-04173ca47528'),
+('ad0452c9-93b9-4248-b2ca-48ef8a1cf5b5', NULL, NULL, NULL, NULL, NULL, '1st floor', '1fa796fd-c7e2-414e-8ad3-ac86b729d62c'),
+('50e852ac-68ba-4b12-85ca-e366987fd855', NULL, NULL, NULL, NULL, NULL, 'HP Laserjet 1300n', 'b8342732-81bd-440b-91ac-b8cdad288ed5'),
+('7b954dee-8a14-4fa1-a433-cff0d1f888f8', NULL, NULL, NULL, NULL, NULL, '2nd floor', 'c4cb0684-a033-425c-8b1b-d283597f999b');
+CREATE INDEX PUBLIC.AATTRVALUE_DATEVALUEINDEX ON PUBLIC.APLAINATTRVALUE(DATEVALUE);
+CREATE INDEX PUBLIC.AATTRVALUE_LONGVALUEINDEX ON PUBLIC.APLAINATTRVALUE(LONGVALUE);
+CREATE INDEX PUBLIC.AATTRVALUE_BOOLEANVALUEINDEX ON PUBLIC.APLAINATTRVALUE(BOOLEANVALUE);
+CREATE INDEX PUBLIC.AATTRVALUE_DOUBLEVALUEINDEX ON PUBLIC.APLAINATTRVALUE(DOUBLEVALUE);
+CREATE INDEX PUBLIC.AATTRVALUE_STRINGVALUEINDEX ON PUBLIC.APLAINATTRVALUE(STRINGVALUE);
+CREATE INDEX PUBLIC.APLAINATTRVALUE_ATTRINDEX ON PUBLIC.APLAINATTRVALUE(ATTRIBUTE_ID);
+CREATE MEMORY TABLE PUBLIC.ARELATIONSHIP(
+ ID VARCHAR(36) NOT NULL,
+ LEFT_ANYOBJECT_ID VARCHAR(36),
+ RIGHT_ANYOBJECT_ID VARCHAR(36),
+ TYPE_ID VARCHAR(255)
+);
+ALTER TABLE PUBLIC.ARELATIONSHIP ADD CONSTRAINT PUBLIC.CONSTRAINT_9C PRIMARY KEY(ID);
+-- 1 +/- SELECT COUNT(*) FROM PUBLIC.ARELATIONSHIP;
+INSERT INTO PUBLIC.ARELATIONSHIP(ID, LEFT_ANYOBJECT_ID, RIGHT_ANYOBJECT_ID, TYPE_ID) VALUES
+('11a0ec66-b59b-428a-af3d-f856950ff1c5', 'fc6dbc3a-6c07-4965-8781-921e7401a4a5', '8559d14d-58c2-46eb-a2d4-a7d35161e8f8', 'neighborhood');
+CREATE INDEX PUBLIC.ARELATIONSHIP_ANYOBJECTINDEX ON PUBLIC.ARELATIONSHIP(LEFT_ANYOBJECT_ID);
+CREATE INDEX PUBLIC.ARELATIONSHIP_RIGHTINDEX ON PUBLIC.ARELATIONSHIP(RIGHT_ANYOBJECT_ID);
+CREATE MEMORY TABLE PUBLIC.CAMELROUTE(
+ ID VARCHAR(255) NOT NULL,
+ ANYTYPEKIND VARCHAR(20),
+ CONTENT CLOB
+);
+ALTER TABLE PUBLIC.CAMELROUTE ADD CONSTRAINT PUBLIC.CONSTRAINT_9B PRIMARY KEY(ID);
+-- 31 +/- SELECT COUNT(*) FROM PUBLIC.CAMELROUTE;
+INSERT INTO PUBLIC.CAMELROUTE(ID, ANYTYPEKIND, CONTENT) VALUES
+('createUser', 'USER', STRINGDECODE('<route id=\"createUser\">\n <from uri=\"direct:createUser\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"create(${body},${property.disablePwdPolicyCheck},${property.enabled},${property.storePassword})\" ref=\"uwfAdapter\"/>\n <to uri=\"propagate:create?anyTypeKind=USER\"/>\n <to uri=\"direct:createPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:createPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('updateUser', 'USER', STRINGDECODE('<route id=\"updateUser\">\n <from uri=\"direct:updateUser\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"update(${body})\" ref=\"uwfAdapter\"/>\n <to uri=\"propagate:update?anyTypeKind=USER\"/>\n <to uri=\"direct:updatePort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:updatePort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('updateUserInPull', 'USER', STRINGDECODE('<route id=\"updateUserInPull\">\n <from uri=\"direct:updateUserInPull\"/> \n <doTry>\n <bean method=\"update(${body})\" ref=\"uwfAdapter\"/>\n <to uri=\"direct:userInPull\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:updateInPullPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('userInPull', 'USER', STRINGDECODE('<route id=\"userInPull\">\n <from uri=\"direct:userInPull\"/>\n <to uri=\"propagate:status?anyTypeKind=USER&pull=true\"/>\n <to uri=\"propagate:update?anyTypeKind=USER&pull=true\"/>\n <to uri=\"direct:updateInPullPort\"/>\n </route>')),
+('deleteUser', 'USER', STRINGDECODE('<route id=\"deleteUser\">\n <from uri=\"direct:deleteUser\"/>\n <doTry>\n <to uri=\"propagate:delete?anyTypeKind=USER\"/>\n <bean method=\"delete(${body})\" ref=\"uwfAdapter\"/>\n <setBody>\n <simple>${property.statuses}</simple>\n </setBody>\n <to uri=\"direct:deletePort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:deletePort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('unlinkUser', 'USER', STRINGDECODE('<route id=\"unlinkUser\">\n <from uri=\"direct:unlinkUser\"/>\n <doTry>\n <bean method=\"update(${body})\" ref=\"uwfAdapter\"/>\n <setBody>\n <simple>${body.getResult.getKey}</simple>\n </setBody>\n <to uri=\"direct:unlinkPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:unlinkPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('linkUser', 'USER', STRINGDECODE('<route id=\"linkUser\">\n <from uri=\"direct:linkUser\"/>\n <doTry>\n <bean method=\"update(${body})\" ref=\"uwfAdapter\"/>\n <setBody>\n <simple>${body.getResult.getKey}</simple>\n </setBody>\n <to uri=\"direct:linkPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:linkPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('activateUser', 'USER', STRINGDECODE('<route id=\"activateUser\">\n <from uri=\"direct:activateUser\"/>\n <doTry>\n <bean method=\"activate(${body}, ${property.token})\" ref=\"uwfAdapter\"/>\n <to uri=\"direct:userStatusPropagation\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:statusPort\"/>\n </doCatch>\n </doTry> \n </route>'));
+INSERT INTO PUBLIC.CAMELROUTE(ID, ANYTYPEKIND, CONTENT) VALUES
+('reactivateUser', 'USER', STRINGDECODE('<route id=\"reactivateUser\">\n <from uri=\"direct:reactivateUser\"/>\n <doTry>\n <bean method=\"reactivate(${body})\" ref=\"uwfAdapter\"/>\n <to uri=\"direct:userStatusPropagation\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:statusPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('suspendUser', 'USER', STRINGDECODE('<route id=\"suspendUser\">\n <from uri=\"direct:suspendUser\"/>\n <doTry>\n <bean method=\"suspend(${body})\" ref=\"uwfAdapter\"/>\n <to uri=\"direct:userStatusPropagation\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:statusPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('userStatusPropagation', 'USER', STRINGDECODE('<route id=\"userStatusPropagation\">\n <from uri=\"direct:userStatusPropagation\"/> \n <to uri=\"propagate:status?anyTypeKind=USER\"/>\n <to uri=\"direct:statusPort\"/> \n </route>')),
+('provisionUser', 'USER', STRINGDECODE('<route id=\"provisionUser\">\n <from uri=\"direct:provisionUser\"/> \n <to uri=\"propagate:provision?anyTypeKind=USER\"/>\n <to uri=\"direct:provisionPort\"/> \n </route>')),
+('deprovisionUser', 'USER', STRINGDECODE('<route id=\"deprovisionUser\">\n <from uri=\"direct:deprovisionUser\"/> \n <to uri=\"propagate:deprovision?anyTypeKind=USER\"/>\n <to uri=\"direct:deprovisionPort\"/> \n </route>')),
+('internalSuspendUser', 'USER', STRINGDECODE('<route id=\"internalSuspendUser\">\n <from uri=\"direct:internalSuspendUser\"/>\n <doTry>\n <bean method=\"internalSuspend(${body})\" ref=\"uwfAdapter\"/>\n <to uri=\"propagate:suspend?anyTypeKind=USER\"/>\n <to uri=\"direct:internalSuspendUserPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:internalSuspendUserPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('requestPwdReset', 'USER', STRINGDECODE('<route id=\"requestPwdReset\">\n <from uri=\"direct:requestPwdReset\"/>\n <doTry>\n <bean method=\"requestPasswordReset(${body})\" ref=\"uwfAdapter\"/>\n <to uri=\"direct:requestPwdResetPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:requestPwdResetPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('confirmPwdReset', 'USER', STRINGDECODE('<route id=\"confirmPwdReset\">\n <from uri=\"direct:confirmPwdReset\"/>\n <doTry>\n <bean method=\"confirmPasswordReset(${property.key},${property.token},${property.password})\" ref=\"uwfAdapter\"/>\n <to uri=\"propagate:confirmPasswordReset?anyTypeKind=USER\"/>\n <to uri=\"direct:confirmPwdResetPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:confirmPwdResetPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('createGroup', 'GROUP', STRINGDECODE('<route id=\"createGroup\">\n <from uri=\"direct:createGroup\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"create(${body})\" ref=\"gwfAdapter\"/>\n <to uri=\"propagate:create?anyTypeKind=GROUP\"/>\n <to uri=\"direct:createGroupPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:createGroupPort\"/>\n </doCatch>\n </doTry>\n </route>'));
+INSERT INTO PUBLIC.CAMELROUTE(ID, ANYTYPEKIND, CONTENT) VALUES
+('createGroupPull', 'GROUP', STRINGDECODE('<route id=\"createGroupPull\">\n <from uri=\"direct:createGroupInPull\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"create(${body})\" ref=\"gwfAdapter\"/>\n <to uri=\"propagate:create?anyTypeKind=GROUP&pull=true\"/>\n <to uri=\"direct:createGroupInPullPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:createGroupInPullPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('updateGroup', 'GROUP', STRINGDECODE('<route id=\"updateGroup\">\n <from uri=\"direct:updateGroup\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"update(${body})\" ref=\"gwfAdapter\"/>\n <to uri=\"propagate:update?anyTypeKind=GROUP\"/>\n <to uri=\"direct:updateGroupPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:updateGroupPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('deleteGroup', 'GROUP', STRINGDECODE('<route id=\"deleteGroup\">\n <from uri=\"direct:deleteGroup\"/>\n <doTry>\n <to uri=\"propagate:delete?anyTypeKind=GROUP\"/>\n <bean method=\"delete(${body})\" ref=\"gwfAdapter\"/>\n <setBody>\n <simple>${property.statuses}</simple>\n </setBody>\n <to uri=\"direct:deleteGroupPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:deleteGroupPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('unlinkGroup', 'GROUP', STRINGDECODE('<route id=\"unlinkGroup\">\n <from uri=\"direct:unlinkGroup\"/>\n <doTry>\n <bean method=\"update(${body})\" ref=\"gwfAdapter\"/>\n <setBody>\n <simple>${body.getResult}</simple>\n </setBody>\n <to uri=\"direct:unlinkGroupPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:unlinkGroupPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('linkGroup', 'GROUP', STRINGDECODE('<route id=\"linkGroup\">\n <from uri=\"direct:linkGroup\"/>\n <doTry>\n <bean method=\"update(${body})\" ref=\"gwfAdapter\"/>\n <setBody>\n <simple>${body.getResult}</simple>\n </setBody>\n <to uri=\"direct:linkGroupPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:linkGroupPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('provisionGroup', 'GROUP', STRINGDECODE('<route id=\"provisionGroup\">\n <from uri=\"direct:provisionGroup\"/> \n <to uri=\"propagate:provision?anyTypeKind=GROUP\"/>\n <to uri=\"direct:provisionGroupPort\"/> \n </route>')),
+('deprovisionGroup', 'GROUP', STRINGDECODE('<route id=\"deprovisionGroup\">\n <from uri=\"direct:deprovisionGroup\"/> \n <to uri=\"propagate:deprovision?anyTypeKind=GROUP\"/>\n <to uri=\"direct:deprovisionGroupPort\"/> \n </route>')),
+('createAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"createAnyObject\">\n <from uri=\"direct:createAnyObject\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"create(${body})\" ref=\"awfAdapter\"/>\n <to uri=\"propagate:create?anyTypeKind=ANY_OBJECT\"/>\n <to uri=\"direct:createAnyObjectPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:createAnyObjectPort\"/>\n </doCatch>\n </doTry>\n </route>'));
+INSERT INTO PUBLIC.CAMELROUTE(ID, ANYTYPEKIND, CONTENT) VALUES
+('updateAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"updateAnyObject\">\n <from uri=\"direct:updateAnyObject\"/>\n <setProperty propertyName=\"actual\">\n <simple>${body}</simple>\n </setProperty>\n <doTry>\n <bean method=\"update(${body})\" ref=\"awfAdapter\"/>\n <to uri=\"propagate:update?anyTypeKind=ANY_OBJECT\"/>\n <to uri=\"direct:updateAnyObjectPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:updateAnyObjectPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('deleteAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"deleteAnyObject\">\n <from uri=\"direct:deleteAnyObject\"/>\n <doTry>\n <to uri=\"propagate:delete?anyTypeKind=ANY_OBJECT\"/>\n <bean method=\"delete(${body})\" ref=\"awfAdapter\"/>\n <setBody>\n <simple>${property.statuses}</simple>\n </setBody>\n <to uri=\"direct:deleteAnyObjectPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:deleteAnyObjectPort\"/>\n </doCatch>\n </doTry>\n </route>')),
+('unlinkAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"unlinkAnyObject\">\n <from uri=\"direct:unlinkAnyObject\"/>\n <doTry>\n <bean method=\"update(${body})\" ref=\"awfAdapter\"/>\n <setBody>\n <simple>${body.getResult}</simple>\n </setBody>\n <to uri=\"direct:unlinkAnyObjectPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:unlinkAnyObjectPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('linkAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"linkAnyObject\">\n <from uri=\"direct:linkAnyObject\"/>\n <doTry>\n <bean method=\"update(${body})\" ref=\"awfAdapter\"/>\n <setBody>\n <simple>${body.getResult}</simple>\n </setBody>\n <to uri=\"direct:linkAnyObjectPort\"/>\n <doCatch> \n <exception>java.lang.RuntimeException</exception>\n <handled>\n <constant>false</constant>\n </handled>\n <to uri=\"direct:linkAnyObjectPort\"/>\n </doCatch>\n </doTry> \n </route>')),
+('provisionAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"provisionAnyObject\">\n <from uri=\"direct:provisionAnyObject\"/> \n <to uri=\"propagate:provision?anyTypeKind=ANY_OBJECT\"/>\n <to uri=\"direct:provisionAnyObjectPort\"/> \n </route>')),
+('deprovisionAnyObject', 'ANY_OBJECT', STRINGDECODE('<route id=\"deprovisionAnyObject\">\n <from uri=\"direct:deprovisionAnyObject\"/> \n <to uri=\"propagate:deprovision?anyTypeKind=ANY_OBJECT\"/>\n <to uri=\"direct:deprovisionAnyObjectPort\"/> \n </route>'));
+CREATE MEMORY TABLE PUBLIC.CONNINSTANCE(
+ ID VARCHAR(36) NOT NULL,
+ BUNDLENAME VARCHAR(255),
+ CONNREQUESTTIMEOUT INTEGER,
+ CONNECTORNAME VARCHAR(255),
+ DISPLAYNAME VARCHAR(255),
+ JSONCONF CLOB,
+ LOCATION VARCHAR(255),
+ VERSION VARCHAR(255),
+ ADMINREALM_ID VARCHAR(36),
+ MAXIDLE INTEGER,
+ MAXOBJECTS INTEGER,
+ MAXWAIT BIGINT,
+ MINEVICTABLEIDLETIMEMILLIS BIGINT,
+ MINIDLE INTEGER
+);
+ALTER TABLE PUBLIC.CONNINSTANCE ADD CONSTRAINT PUBLIC.CONSTRAINT_E PRIMARY KEY(ID);
+-- 10 +/- SELECT COUNT(*) FROM PUBLIC.CONNINSTANCE;
+INSERT INTO PUBLIC.CONNINSTANCE(ID, BUNDLENAME, CONNREQUESTTIMEOUT, CONNECTORNAME, DISPLAYNAME, JSONCONF, LOCATION, VERSION, ADMINREALM_ID, MAXIDLE, MAXOBJECTS, MAXWAIT, MINEVICTABLEIDLETIMEMILLIS, MINIDLE) VALUES
+('88a7a819-dab5-46b4-9b90-0b9769eabdb8', 'net.tirasa.connid.bundles.soap', NULL, 'net.tirasa.connid.bundles.soap.WebServiceConnector', 'ConnInstance100', '[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["http://localhost:9080/syncope-fit-build-tools/cxf/soap/provisioning"]},{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]}]', 'file:/home/ilgrosso/work/syncope/syncope2/fit/core-reference/target/bundles/', '1.4.1', 'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL, NULL, NULL, NULL),
+('5aa5b8be-7521-481a-9651-c557aea078c1', 'net.tirasa.connid.bundles.db.table', NULL, 'net.tirasa.connid.bundles.db.table.DatabaseTableConnector', 'H2', '[{"schema":{"name":"disabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"user","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"keyColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id"]},{"schema":{"name":"retrievePassword","displayName":null,"helpMessage":null,"type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"cipherAlgorit
hm","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA1"]},{"schema":{"name":"enabledStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"passwordColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"jdbcDriver","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["org.h2.Driver"]},{"schema":{"name":"defaultStatusValue","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridabl
e":false,"values":["true"]},{"schema":{"name":"table","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test"]},{"schema":{"name":"password","displayName":null,"helpMessage":null,"type":"org.identityconnectors.common.security.GuardedString","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["sa"]},{"schema":{"name":"statusColumn","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"jdbcUrlTemplate","displayName":null,"helpMessage":null,"type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["jdbc:h2:tcp://localhost:9092/mem:testdb;DB_CLOSE_DELAY=-1"]}]', 'connid://testconnectorserver@localhost:4554', '2.2.5', 'e4c28
e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO PUBLIC.CONNINSTANCE(ID, BUNDLENAME, CONNREQUESTTIMEOUT, CONNECTORNAME, DISPLAYNAME, JSONCONF, LOCATION, VERSION, ADMINREALM_ID, MAXIDLE, MAXOBJECTS, MAXWAIT, MINEVICTABLEIDLETIMEMILLIS, MINIDLE) VALUES
+('5ffbb4ac-a8c3-4b44-b699-11b398a1ba08', 'net.tirasa.connid.bundles.soap', 10, 'net.tirasa.connid.bundles.soap.WebServiceConnector', 'ConnInstance102', '[{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]},{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["http://localhost:9080/syncope-fit-build-tools/cxf/soap/provisioning"]}]', 'file:/home/ilgrosso/work/syncope/syncope2/fit/core-reference/target/bundles/', '1.4.1', 'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL, NULL, NULL, NULL),
+('fcf9f2b0-f7d6-42c9-84a6-61b28255a42b', 'net.tirasa.connid.bundles.soap', NULL, 'net.tirasa.connid.bundles.soap.WebServiceConnector', 'ConnInstance103', '[{"schema":{"name":"endpoint","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["http://localhost:9080/syncope-fit-build-tools/cxf/soap/provisioning"]},{"schema":{"name":"servicename","displayName":null,"helpMessage":null,"type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.soap.provisioning.interfaces.Provisioning"]}]', 'file:/home/ilgrosso/work/syncope/syncope2/fit/core-reference/target/bundles/', '1.4.1', 'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL, NULL, NULL, NULL),
+('6c2acf1b-b052-46f0-8c56-7a8ad6905edf', 'net.tirasa.connid.bundles.csvdir', NULL, 'net.tirasa.connid.bundles.csvdir.CSVDirConnector', 'CSVDir', '[{"schema":{"name":"fields","displayName":"fields","helpMessage":"Column names separated by comma","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["id","name","surname","email","password","theirgroup","membership","status","deleted"]},{"schema":{"name":"keyColumnNames","displayName":"Key column name","helpMessage":"Name of the column used to identify user uniquely","type":"[Ljava.lang.String;","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["name","surname"]},{"schema":{"name":"deleteColumnName","displayName":"Delete column name","helpMessage":"Name of the column used to specify users to be deleted","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":fal
se,"values":["deleted"]},{"schema":{"name":"passwordColumnName","displayName":"Password column name","helpMessage":"Name of the column used to specify user password","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["password"]},{"schema":{"name":"keyseparator","displayName":"Key separator","helpMessage":"Character used to separate keys in a multi-key scenario","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[","]},{"schema":{"name":"ignoreHeader","displayName":"Ignore header","helpMessage":"Specify it first line file must be ignored","type":"java.lang.Boolean","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"fieldDelimiter","displayName":"fieldDelimiter","helpMessage":"fieldDelimiter","type":"char","required":true,"order":0,"confidential":false,"defaultValu
es":null},"overridable":false,"values":[","]},{"schema":{"name":"quotationRequired","displayName":"Value quotation required","helpMessage":"Specify if value quotation is required","type":"java.lang.Boolean","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[false]},{"schema":{"name":"statusColumn","displayName":"statusColumn","helpMessage":"Status column","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["status"]},{"schema":{"name":"sourcePath","displayName":"Source path","helpMessage":"Absolute path of a directory where are located CSV files to be processed","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["/home/ilgrosso/work/syncope/syncope2/fit/core-reference/target/test-csvdir"]},{"schema":{"name":"fileMask","displayName":"File mask","helpMessage":"Regular expression describing fi
les to be processed","type":"java.lang.String","required":true,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["test.csv"]}]', 'file:/home/ilgrosso/work/syncope/syncope2/fit/core-reference/target/bundles/', '0.8.7', 'e4c28e7a-9dbf-4ee7-9441-93812a0d4a28', NULL, NULL, NULL, NULL, NULL);
+CREATE TABLE IF NOT EXISTS SYSTEM_LOB_STREAM(ID INT NOT NULL, PART INT NOT NULL, CDATA VARCHAR, BDATA BINARY);
+CREATE PRIMARY KEY SYSTEM_LOB_STREAM_PRIMARY_KEY ON SYSTEM_LOB_STREAM(ID, PART);
+CREATE ALIAS IF NOT EXISTS SYSTEM_COMBINE_CLOB FOR "org.h2.command.dml.ScriptCommand.combineClob";
+CREATE ALIAS IF NOT EXISTS SYSTEM_COMBINE_BLOB FOR "org.h2.command.dml.ScriptCommand.combineBlob";
+INSERT INTO SYSTEM_LOB_STREAM VALUES(0, 0, '[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership","helpMessage":"When enabled and a user is renamed or deleted, update any LDAP groups to which the user belongs to reflect the new name. Otherwise, the LDAP resource must maintain referential integrity with respect to group membership.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"host","displayName":"Host","helpMessage":"The name or IP address of the host where the LDAP server is run
ning.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["localhost"]},{"schema":{"name":"passwordHashAlgorithm","displayName":"Password Hash Algorithm","helpMessage":"Indicates the algorithm that the Identity system should use to hash the password. Currently supported values are SSHA, SHA, SSHA1, and SHA1. A blank value indicates that the system will not hash passwords. This will cause cleartext passwords to be stored in LDAP unless the LDAP server performs the hash (Netscape Directory Server and iPlanet Directory Server do).","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["SHA"]},{"schema":{"name":"port","displayName":"TCP Port","helpMessage":"TCP/IP port number used to communicate with the LDAP server.","type":"int","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[1389]},{"sche
ma":{"name":"vlvSortAttribute","displayName":"VLV Sort Attribute","helpMessage":"Specify the sort attribute to use for VLV indexes on the resource.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"statusManagementClass","displayName":"Status management class ","helpMessage":"Class to be used to manage enabled/disabled status. If no class is specified then identity status management wont be possible.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["net.tirasa.connid.bundles.ldap.commons.AttributeStatusManagement"]},{"schema":{"name":"accountObjectClasses","displayName":"Account Object Classes","helpMessage":"The object class or classes that will be used when creating new user objects in the LDAP tree. When entering more than one object class, each entry should be on its own line; do not use commas or semi-co
lons to separate multiple object classes. Some object classes may require that you specify all object classes in the class hierarchy.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["inetOrgPerson"]},{"schema":{"name":"accountUserNameAttributes","displayName":"Account User Name Attributes","helpMessage":"Attribute or attributes which holds the account user name. They will be used when authenticating to find the LDAP entry for the user name to authenticate.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid"]},{"schema":{"name":"baseContextsToSynchronize","displayName":"Base Contexts to Synchronize","helpMessage":"One or more starting points in the LDAP tree that will be used to determine if a change should be synchronized. The base contexts attribute will be used to synchronize a change if this property is not set.","ty
pe":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["ou=people,o=isp","ou=grou', NULL);
+INSERT INTO SYSTEM_LOB_STREAM VALUES(0, 1, 'ps,o=isp"]},{"schema":{"name":"accountSynchronizationFilter","displayName":"LDAP Filter for Accounts to Synchronize","helpMessage":"An optional LDAP filter for the objects to synchronize. Because the change log is for all objects, this filter updates only objects that match the specified filter. If you specify a filter, an object will be synchronized only if it matches the filter and includes a synchronized object class.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"removeLogEntryObjectClassFromFilter","displayName":"Remove Log Entry Object Class from Filter","helpMessage":"If this property is set (the default), the filter used to fetch change log entries does not contain the \"changeLogEntry\" object class, expecting that there are no entries of other object types in the change log.","type":"boolean","required":false,"order":0,"confident
ial":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordDecryptionKey","displayName":"Password Decryption Key","helpMessage":"The key to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"readSchema","displayName":"Read Schema","helpMessage":"If true, the connector will read the schema from the server. If false, the connector will provide a default schema based on the object classes in the configuration. This property must be true in order to use extended object classes.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["true"]},{"schema":{"name":"ssl","displayName":"SSL","helpMessage":"Select the check box to connect to the LDAP server using SSL.","type":"boolean","required
":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"passwordAttributeToSynchronize","displayName":"Password Attribute to Synchronize","helpMessage":"The name of the password attribute to synchronize when performing password synchronization.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"accountSearchFilter","displayName":"LDAP Filter for Retrieving Accounts","helpMessage":"An optional LDAP filter to control which accounts are returned from the LDAP resource. If no filter is specified, only accounts that include all specified object classes are returned.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["uid=*"]},{"schema":{"name":"passwordDecryptionInitializationVector","displayName":"Password Decryption Initialization Vector","helpMessage"
:"The initialization vector to decrypt passwords with when performing password synchronization.","type":"org.identityconnectors.common.security.GuardedByteArray","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupMemberAttribute","displayName":"Group Member Attribute","helpMessage":"The name of the group attribute that will be updated with the distinguished name of the user when the user is added to the group.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"failover","displayName":"Failover Servers","helpMessage":"List all servers that should be used for failover in case the preferred server fails. If the preferred server fails, JNDI will connect to the next available server in the list. List all servers in the form of \"ldap://ldap.example.com:389/\", which follows the standard LDAP v3 URLs described in RFC
2255. Only the host and port parts of the URL are relevant in this setting.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":fals', NULL);
+INSERT INTO SYSTEM_LOB_STREAM VALUES(0, 2, 'e,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"modifiersNamesToFilterOut","displayName":"Filter Out Changes By","helpMessage":"The names (DNs) of directory administrators to filter from the changes. Changes with the attribute \"modifiersName\" that match entries in this list will be filtered out. The standard value is the administrator name used by this adapter, to prevent loops. Entries should be of the format \"cn=Directory Manager\".","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":[]},{"schema":{"name":"groupNameAttributes","displayName":"Group Name Attributes","helpMessage":"Attribute or attributes which holds the group name.","type":"[Ljava.lang.String;","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["cn"]},{"schema":{"name":"uidAttribute","displayName":"Uid Attribute","help
Message":"The name of the LDAP attribute which is mapped to the Uid attribute.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["cn"]},{"schema":{"name":"gidAttribute","displayName":"Uid Attribute for groups","helpMessage":"The name of the LDAP attribute which is mapped to the Uid attribute for groups.","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":true,"values":["cn"]},{"schema":{"name":"respectResourcePasswordPolicyChangeAfterReset","displayName":"Respect Resource Password Policy Change-After-Reset","helpMessage":"When this resource is specified in a Login Module (i.e., this resource is a pass-through authentication target) and the resource password policy is configured for change-after-reset, a user whose resource account password has been administratively reset will be required to change that password after successfully authenticating.","ty
pe":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"filterWithOrInsteadOfAnd","displayName":"Filter with Or Instead of And","helpMessage":"Normally the the filter used to fetch change log entries is an and-based filter retrieving an interval of change entries. If this property is set, the filter will or together the required change numbers instead.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"principal","displayName":"Principal","helpMessage":"The distinguished name with which to authenticate to the LDA
<TRUNCATED>
[8/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
[SYNCOPE-1024] New 'upgrade' module ready with tests, old 'migration' removed
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/027b6bdf
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/027b6bdf
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/027b6bdf
Branch: refs/heads/master
Commit: 027b6bdfed8666f0d1a1225d3e27a3047e93acf2
Parents: dd3d4a3
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Jul 5 09:57:08 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Jul 5 12:43:01 2018 +0200
----------------------------------------------------------------------
.../cli/commands/migrate/MigrateCommand.java | 95 -
.../cli/commands/migrate/MigrateConf.java | 953 ------
.../commands/migrate/MigrateResultManager.java | 24 -
.../client/cli/commands/MigrateTest.java | 83 -
.../client/cli/util/CommandUtilsTest.java | 11 +-
client/cli/src/test/resources/content12.xml | 1154 -------
client/cli/src/test/resources/schema20.sql | 229 --
client/cli/src/test/resources/test.properties | 17 -
core/migration/pom.xml | 63 -
.../core/migration/MigrationPullActions.java | 137 -
.../main/resources/scripted/SchemaScript.groovy | 108 -
.../main/resources/scripted/SearchScript.groovy | 191 --
.../main/resources/scripted/SyncScript.groovy | 202 --
.../main/resources/scripted/TestScript.groovy | 32 -
core/persistence-jpa/pom.xml | 28 +
core/pom.xml | 2 +-
.../java/job/SetUMembershipsJob.java | 50 +-
core/upgrade/LICENSE | 237 ++
core/upgrade/NOTICE | 18 +
core/upgrade/pom.xml | 152 +
core/upgrade/src/assemble/upgrade-zip.xml | 62 +
.../core/upgrade/GenerateUpgradeSQL.java | 387 +++
.../syncope/core/upgrade/WiserSchemaTool.java | 233 ++
core/upgrade/src/main/resources/schema.xml | 1217 ++++++++
.../src/main/resources/syncopeupgrade.bat | 27 +
.../src/main/resources/syncopeupgrade.sh | 23 +
.../core/upgrade/GeneratedUpgradeSQLTest.java | 120 +
core/upgrade/src/test/resources/syncopedb20.sql | 2867 ++++++++++++++++++
core/upgrade/src/test/resources/testJDBCEnv.xml | 63 +
src/main/asciidoc/getting-started/obtain.adoc | 42 +-
.../workingwithapachesyncope/customization.adoc | 2 +-
.../workingwithapachesyncope/migration.adoc | 259 --
.../systemadministration/flowablemodeler.adoc | 2 +-
.../workingwithapachesyncope/upgrade.adoc | 53 +
.../workingwithapachesyncope.adoc | 2 +-
35 files changed, 5535 insertions(+), 3610 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateCommand.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateCommand.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateCommand.java
deleted file mode 100644
index cd9830f..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateCommand.java
+++ /dev/null
@@ -1,95 +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.cli.commands.migrate;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.syncope.client.cli.Command;
-import org.apache.syncope.client.cli.Input;
-import org.apache.syncope.client.cli.commands.AbstractCommand;
-
-@Command(name = "migrate")
-public class MigrateCommand extends AbstractCommand {
-
- private final MigrateResultManager migrateResultManager = new MigrateResultManager();
-
- @Override
- public void execute(final Input input) {
- if (StringUtils.isBlank(input.getOption())) {
- input.setOption(Options.HELP.getOptionName());
- }
-
- switch (Options.fromName(input.getOption())) {
- case CONF:
- new MigrateConf(input).migrate();
- break;
-
- case HELP:
- System.out.println(getHelpMessage());
- break;
-
- default:
- migrateResultManager.defaultOptionMessage(input.getOption(), getHelpMessage());
- }
- }
-
- @Override
- public String getHelpMessage() {
- return migrateResultManager.commandHelpMessage(getClass());
- }
-
- private enum Options {
-
- HELP("--help"),
- CONF("--conf");
-
- private final String optionName;
-
- Options(final String optionName) {
- this.optionName = optionName;
- }
-
- public String getOptionName() {
- return optionName;
- }
-
- public boolean equalsOptionName(final String otherName) {
- return (otherName == null) ? false : optionName.equals(otherName);
- }
-
- public static Options fromName(final String name) {
- Options optionToReturn = HELP;
- for (final Options option : Options.values()) {
- if (option.equalsOptionName(name)) {
- optionToReturn = option;
- }
- }
- return optionToReturn;
- }
-
- public static List<String> toList() {
- final List<String> options = new ArrayList<>();
- for (final Options value : values()) {
- options.add(value.getOptionName());
- }
- return options;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
deleted file mode 100644
index 8b4884d..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateConf.java
+++ /dev/null
@@ -1,953 +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.cli.commands.migrate;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import java.io.FileWriter;
-import java.io.InputStream;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeSet;
-import java.util.UUID;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-import javax.xml.transform.TransformerException;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.cxf.staxutils.PrettyPrintXMLStreamWriter;
-import org.apache.syncope.client.cli.Input;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MigrateConf {
-
- private static final Logger LOG = LoggerFactory.getLogger(MigrateConf.class);
-
- private static final String HELP_MESSAGE = "migrate --conf {SRC} {DST}";
-
- private static final XMLInputFactory INPUT_FACTORY = XMLInputFactory.newInstance();
-
- private static final XMLOutputFactory OUTPUT_FACTORY = XMLOutputFactory.newInstance();
-
- private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
-
- private final MigrateResultManager migrateResultManager = new MigrateResultManager();
-
- private final Input input;
-
- private static void copyAttrs(
- final XMLStreamReader streamReader, final XMLStreamWriter streamWriter, final String... but)
- throws XMLStreamException {
-
- Set<String> exceptions = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
- exceptions.addAll(Arrays.asList(but));
- exceptions.add("id");
- exceptions.add("name");
-
- for (int i = 0; i < streamReader.getAttributeCount(); i++) {
- String name = streamReader.getAttributeLocalName(i);
- if (!exceptions.contains(name)) {
- streamWriter.writeAttribute(name, streamReader.getAttributeValue(i));
- }
- }
- }
-
- private static String getAttributeValue(final XMLStreamReader streamReader, final String key) {
- String value = null;
-
- for (int i = 0; i < streamReader.getAttributeCount(); i++) {
- String attrName = streamReader.getAttributeLocalName(i);
- if (attrName.equalsIgnoreCase(key)) {
- value = streamReader.getAttributeValue(i);
- }
- }
-
- return value;
- }
-
- private static void writeIntAttrName(
- final String intMappingType,
- final String intAttrNameKey,
- final String intAttrNameValue,
- final XMLStreamWriter writer)
- throws XMLStreamException {
-
- switch (intMappingType) {
- case "UserId":
- case "RoleId":
- writer.writeAttribute(intAttrNameKey, "key");
- break;
-
- case "Username":
- writer.writeAttribute(intAttrNameKey, "username");
- break;
-
- case "Password":
- writer.writeAttribute(intAttrNameKey, "password");
- break;
-
- case "RoleName":
- writer.writeAttribute(intAttrNameKey, "name");
- break;
-
- case "RoleOwnerSchema":
- writer.writeAttribute(intAttrNameKey, "userOwner");
- break;
-
- default:
- if (StringUtils.isNotBlank(intAttrNameValue)) {
- writer.writeAttribute(intAttrNameKey, intAttrNameValue);
- }
- }
- }
-
- private static void exec(final String src, final String dst)
- throws XMLStreamException, IOException, TransformerException {
-
- XMLStreamWriter writer = new PrettyPrintXMLStreamWriter(
- OUTPUT_FACTORY.createXMLStreamWriter(new FileWriter(dst)), 2);
- writer.writeStartDocument("UTF-8", "1.0");
- writer.writeStartElement("dataset");
-
- StringWriter reporterSW = new StringWriter();
- XMLStreamWriter reporter = new PrettyPrintXMLStreamWriter(
- OUTPUT_FACTORY.createXMLStreamWriter(reporterSW), 2);
- reporter.writeStartDocument("UTF-8", "1.0");
- reporter.writeStartElement("dataset");
-
- InputStream inputStream = Files.newInputStream(Paths.get(src));
- XMLStreamReader reader = INPUT_FACTORY.createXMLStreamReader(inputStream);
- reader.nextTag(); // root
- reader.nextTag(); // dataset
-
- String realmUUID = UUID.randomUUID().toString();
-
- writer.writeStartElement("AnyType");
- writer.writeAttribute("id", "USER");
- writer.writeAttribute("kind", "USER");
- writer.writeEndElement();
-
- writer.writeStartElement("AnyTypeClass");
- writer.writeAttribute("id", "BaseUser");
- writer.writeEndElement();
-
- writer.writeStartElement("AnyType_AnyTypeClass");
- writer.writeAttribute("anyType_id", "USER");
- writer.writeAttribute("anyTypeClass_id", "BaseUser");
- writer.writeEndElement();
-
- writer.writeStartElement("AnyType");
- writer.writeAttribute("id", "GROUP");
- writer.writeAttribute("kind", "GROUP");
- writer.writeEndElement();
-
- writer.writeStartElement("AnyTypeClass");
- writer.writeAttribute("id", "BaseGroup");
- writer.writeEndElement();
-
- writer.writeStartElement("AnyType_AnyTypeClass");
- writer.writeAttribute("anyType_id", "GROUP");
- writer.writeAttribute("anyTypeClass_id", "BaseGroup");
- writer.writeEndElement();
-
- writer.writeStartElement("AnyTypeClass");
- writer.writeAttribute("id", "BaseUMembership");
- writer.writeEndElement();
-
- Set<String> connInstanceCapabilities = new HashSet<>();
-
- String lastUUID;
- String syncopeConf = "cd64d66f-6fff-4008-b966-a06b1cc1436d";
- Map<String, String> cPlainAttrs = new HashMap<>();
- Map<String, String> policies = new HashMap<>();
- Map<String, String> connInstances = new HashMap<>();
- Map<String, String> provisions = new HashMap<>();
- Map<String, String> mappings = new HashMap<>();
- Map<String, String> tasks = new HashMap<>();
- Map<String, String> notifications = new HashMap<>();
- Map<String, String> reports = new HashMap<>();
-
- String globalAccountPolicy = null;
- String globalPasswordPolicy = null;
- while (reader.hasNext()) {
- if (reader.isStartElement()) {
- switch (reader.getLocalName().toLowerCase()) {
- case "syncopeconf":
- writer.writeStartElement("SyncopeConf");
- writer.writeAttribute("id", syncopeConf);
- writer.writeEndElement();
- break;
-
- case "cschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("PlainSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
- break;
-
- case "cattr":
- writer.writeStartElement("CPlainAttr");
- copyAttrs(reader, writer, "owner_id", "schema_name");
- lastUUID = UUID.randomUUID().toString();
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("owner_id", syncopeConf);
- writer.writeAttribute("schema_id", getAttributeValue(reader, "schema_name"));
- writer.writeEndElement();
- cPlainAttrs.put(getAttributeValue(reader, "id"), lastUUID);
- break;
-
- case "cattrvalue":
- writer.writeStartElement("CPlainAttrValue");
- copyAttrs(reader, writer, "attribute_id");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute(
- "attribute_id", cPlainAttrs.get(getAttributeValue(reader, "attribute_id")));
- writer.writeEndElement();
- break;
-
- case "uschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("PlainSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute("anyTypeClass_id", "BaseUser");
- writer.writeEndElement();
- break;
-
- case "uderschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("DerSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute("anyTypeClass_id", "BaseUser");
- writer.writeEndElement();
- break;
-
- case "uvirschema":
- reporter.writeStartElement("VirSchema");
- copyAttrs(reader, reporter);
- reporter.writeAttribute("key", getAttributeValue(reader, "name"));
- reporter.writeEndElement();
- break;
-
- case "rschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("PlainSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute("anyTypeClass_id", "BaseGroup");
- writer.writeEndElement();
- break;
-
- case "rderschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("DerSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute("anyTypeClass_id", "BaseGroup");
- writer.writeEndElement();
- break;
-
- case "rvirschema":
- reporter.writeStartElement("VirSchema");
- reporter.writeAttribute("key", getAttributeValue(reader, "name"));
- copyAttrs(reader, reporter);
- reporter.writeEndElement();
- break;
-
- case "mschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("PlainSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute("anyTypeClass_id", "BaseUMembership");
- writer.writeEndElement();
- break;
-
- case "mderschema":
- writer.writeStartElement("SyncopeSchema");
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeEndElement();
-
- writer.writeStartElement("DerSchema");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute("anyTypeClass_id", "BaseUMembership");
- writer.writeEndElement();
- break;
-
- case "mvirschema":
- reporter.writeStartElement("VirSchema");
- copyAttrs(reader, reporter);
- reporter.writeAttribute("key", getAttributeValue(reader, "name"));
- reporter.writeEndElement();
- break;
-
- case "policy":
- String policyId = getAttributeValue(reader, "id");
- lastUUID = UUID.randomUUID().toString();
- policies.put(policyId, lastUUID);
-
- ObjectNode specification = (ObjectNode) OBJECT_MAPPER.readTree(
- getAttributeValue(reader, "specification"));
-
- switch (getAttributeValue(reader, "DTYPE")) {
- case "SyncPolicy":
- writer.writeStartElement("PullPolicy");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute(
- "description", getAttributeValue(reader, "description"));
- String specificationAttr = getAttributeValue(reader, "specification");
- if (StringUtils.isNotBlank(specificationAttr)) {
- ObjectNode templateRead = (ObjectNode) OBJECT_MAPPER.readTree(specificationAttr);
- JsonNode conflictResolutionAction = templateRead.get("conflictResolutionAction");
- ObjectNode templateWrite = OBJECT_MAPPER.createObjectNode();
- templateWrite.set("conflictResolutionAction", conflictResolutionAction);
- writer.writeAttribute(
- "specification", OBJECT_MAPPER.writeValueAsString(templateWrite));
- }
- writer.writeEndElement();
- break;
-
- case "PasswordPolicy":
- writer.writeStartElement("PasswordPolicy");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute(
- "description", getAttributeValue(reader, "description"));
-
- if ("GLOBAL_PASSWORD".equalsIgnoreCase(getAttributeValue(reader, "type"))) {
- globalPasswordPolicy = lastUUID;
- }
-
- JsonNode allowNullPassword = specification.get("allowNullPassword");
- if (allowNullPassword != null) {
- writer.writeAttribute(
- "allowNullPassword", allowNullPassword.asBoolean() ? "1" : "0");
- specification.remove("allowNullPassword");
- }
- JsonNode historyLength = specification.get("historyLength");
- if (historyLength != null) {
- writer.writeAttribute("historyLength", historyLength.asText());
- specification.remove("historyLength");
- }
- specification.put(
- "@class", "org.apache.syncope.common.lib.policy.DefaultPasswordRuleConf");
- writer.writeEndElement();
-
- writer.writeStartElement("PasswordRuleConfInstance");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("passwordPolicy_id", lastUUID);
- writer.writeAttribute("serializedInstance", specification.toString());
- writer.writeEndElement();
- break;
-
- case "AccountPolicy":
- writer.writeStartElement("AccountPolicy");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute(
- "description", getAttributeValue(reader, "description"));
-
- if ("GLOBAL_ACCOUNT".equalsIgnoreCase(getAttributeValue(reader, "type"))) {
- globalAccountPolicy = lastUUID;
- }
-
- JsonNode propagateSuspension = specification.get("propagateSuspension");
- if (propagateSuspension != null) {
- writer.writeAttribute(
- "propagateSuspension", propagateSuspension.asBoolean() ? "1" : "0");
- specification.remove("propagateSuspension");
- }
- JsonNode permittedLoginRetries = specification.get("permittedLoginRetries");
- if (permittedLoginRetries != null) {
- writer.writeAttribute(
- "maxAuthenticationAttempts", permittedLoginRetries.asText());
- specification.remove("permittedLoginRetries");
- }
- specification.put(
- "@class", "org.apache.syncope.common.lib.policy.DefaultAccountRuleConf");
- writer.writeEndElement();
-
- writer.writeStartElement("AccountRuleConfInstance");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("accountPolicy_id", lastUUID);
- writer.writeAttribute("serializedInstance", specification.toString());
- writer.writeEndElement();
- break;
-
- default:
- }
- break;
-
- case "conninstance":
- lastUUID = UUID.randomUUID().toString();
- connInstances.put(getAttributeValue(reader, "id"), lastUUID);
-
- writer.writeStartElement("ConnInstance");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", lastUUID);
- writer.writeEndElement();
- break;
-
- case "conninstance_capabilities":
- String connInstanceId = getAttributeValue(reader, "connInstance_id");
- String connInstanceKey = connInstances.get(connInstanceId);
-
- String capabilities = getAttributeValue(reader, "capabilities");
- if (capabilities.startsWith("ONE_PHASE_")) {
- capabilities = capabilities.substring(10);
- } else if (capabilities.startsWith("TWO_PHASES_")) {
- capabilities = capabilities.substring(11);
- }
- if (!connInstanceCapabilities.contains(connInstanceId + capabilities)) {
- writer.writeStartElement("ConnInstance_capabilities");
- writer.writeAttribute("connInstance_id", connInstanceKey);
- writer.writeAttribute("capability", capabilities);
- writer.writeEndElement();
-
- connInstanceCapabilities.add(connInstanceId + capabilities);
- }
- break;
-
- case "externalresource":
- writer.writeStartElement("ExternalResource");
- copyAttrs(reader, writer,
- "syncTraceLevel", "userializedSyncToken", "rserializedSyncToken",
- "propagationMode", "propagationPrimary", "connector_id", "syncPolicy_id",
- "passwordPolicy_id",
- "creator", "lastModifier", "creationDate", "lastChangeDate");
-
- writer.writeAttribute("id", getAttributeValue(reader, "name"));
- writer.writeAttribute(
- "connector_id", connInstances.get(getAttributeValue(reader, "connector_id")));
-
- writer.writeAttribute("provisioningTraceLevel", getAttributeValue(reader, "syncTraceLevel"));
-
- String syncPolicyKey = policies.get(getAttributeValue(reader, "syncPolicy_id"));
- if (StringUtils.isNotBlank(syncPolicyKey)) {
- writer.writeAttribute("pullPolicy_id", syncPolicyKey);
- }
-
- String passwordPolicyKey = policies.get(getAttributeValue(reader, "passwordPolicy_id"));
- if (StringUtils.isNotBlank(passwordPolicyKey)) {
- writer.writeAttribute("passwordPolicy_id", passwordPolicyKey);
- }
-
- writer.writeEndElement();
- break;
-
- case "externalresource_propactions":
- writer.writeStartElement("ExternalResource_PropActions");
-
- writer.writeAttribute("resource_id", getAttributeValue(reader, "externalResource_name"));
-
- String propActionClassName = getAttributeValue(reader, "element");
- switch (propActionClassName) {
- case "org.apache.syncope.core.propagation.impl.LDAPMembershipPropagationActions":
- propActionClassName = "org.apache.syncope.core.provisioning.java.propagation."
- + "LDAPMembershipPropagationActions";
- break;
-
- case "org.apache.syncope.core.propagation.impl.LDAPPasswordPropagationActions":
- propActionClassName = "org.apache.syncope.core.provisioning.java.propagation."
- + "LDAPPasswordPropagationActions";
- break;
-
- case "org.apache.syncope.core.propagation.impl.DBPasswordPropagationActions":
- propActionClassName = "org.apache.syncope.core.provisioning.java.propagation."
- + "DBPasswordPropagationActions";
- break;
-
- default:
- }
- writer.writeAttribute("actionClassName", propActionClassName);
- writer.writeEndElement();
- break;
-
- case "policy_externalresource":
- writer.writeStartElement("AccountPolicy_ExternalResource");
- writer.writeAttribute(
- "accountPolicy_id", policies.get(getAttributeValue(reader, "account_policy_id")));
- writer.writeAttribute("resource_id", getAttributeValue(reader, "resource_name"));
- writer.writeEndElement();
- break;
-
- case "umapping":
- String umappingId = getAttributeValue(reader, "id");
- lastUUID = UUID.randomUUID().toString();
- provisions.put(umappingId, lastUUID);
-
- writer.writeStartElement("Provision");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("resource_id", getAttributeValue(reader, "resource_name"));
- writer.writeAttribute("anyType_id", "USER");
- writer.writeAttribute("objectClass", "__ACCOUNT__");
- writer.writeEndElement();
-
- lastUUID = UUID.randomUUID().toString();
- mappings.put(umappingId, lastUUID);
-
- writer.writeStartElement("Mapping");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("provision_id", provisions.get(umappingId));
-
- String uaccountLink = getAttributeValue(reader, "accountlink");
- if (StringUtils.isNotBlank(uaccountLink)) {
- writer.writeAttribute("connObjectLink", uaccountLink);
- }
- writer.writeEndElement();
- break;
-
- case "umappingitem":
- String uIntMappingType = getAttributeValue(reader, "intMappingType");
- if (uIntMappingType.endsWith("VirtualSchema")) {
- reporter.writeStartElement("MappingItem");
- copyAttrs(reader, reporter, "accountid", "intMappingType");
- reporter.writeEndElement();
- } else {
- writer.writeStartElement("MappingItem");
- copyAttrs(reader, writer, "purpose",
- "accountid", "intMappingType", "mapping_id", "intMappingType", "intAttrName");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("mapping_id", mappings.
- get(getAttributeValue(reader, "mapping_id")));
- writer.writeAttribute("connObjectKey", getAttributeValue(reader, "accountid"));
-
- writeIntAttrName(
- uIntMappingType,
- "intAttrName",
- getAttributeValue(reader, "intAttrName"),
- writer);
-
- String purposeValue = getAttributeValue(reader, "purpose");
- writer.writeAttribute("purpose",
- "SYNCHRONIZATION".equals(purposeValue) ? "PULL" : purposeValue);
-
- writer.writeEndElement();
- }
- break;
-
- case "rmapping":
- String rmappingId = "10" + getAttributeValue(reader, "id");
- lastUUID = UUID.randomUUID().toString();
- provisions.put(rmappingId, lastUUID);
-
- writer.writeStartElement("Provision");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("resource_id", getAttributeValue(reader, "resource_name"));
- writer.writeAttribute("anyType_id", "GROUP");
- writer.writeAttribute("objectClass", "__GROUP__");
- writer.writeEndElement();
-
- lastUUID = UUID.randomUUID().toString();
- mappings.put(rmappingId, lastUUID);
-
- writer.writeStartElement("Mapping");
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("provision_id", provisions.get(rmappingId));
-
- String raccountLink = getAttributeValue(reader, "accountlink");
- if (StringUtils.isNotBlank(raccountLink)) {
- writer.writeAttribute("connObjectLink", raccountLink);
- }
- writer.writeEndElement();
- break;
-
- case "rmappingitem":
- String rIntMappingType = getAttributeValue(reader, "intMappingType");
- if (rIntMappingType.endsWith("VirtualSchema")) {
- reporter.writeStartElement("MappingItem");
- copyAttrs(reader, reporter, "accountid", "intMappingType");
- reporter.writeEndElement();
- } else {
- writer.writeStartElement("MappingItem");
- copyAttrs(reader, writer,
- "accountid", "intMappingType", "mapping_id", "intAttrName");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute(
- "mapping_id", mappings.get("10" + getAttributeValue(reader, "mapping_id")));
- writer.writeAttribute("connObjectKey", getAttributeValue(reader, "accountid"));
-
- writeIntAttrName(
- rIntMappingType,
- "intAttrName",
- mappings.get(getAttributeValue(reader, "intAttrName")),
- writer);
-
- writer.writeEndElement();
- }
- break;
-
- case "task":
- writer.writeStartElement("Task");
- copyAttrs(reader, writer,
- "DTYPE", "propagationMode", "subjectType", "subjectId", "xmlAttributes",
- "jobClassName", "userTemplate", "roleTemplate", "userFilter", "roleFilter",
- "propagationOperation", "syncStatus", "fullReconciliation", "resource_name");
-
- lastUUID = UUID.randomUUID().toString();
- tasks.put(getAttributeValue(reader, "id"), lastUUID);
-
- writer.writeAttribute("id", lastUUID);
-
- String resourceName = getAttributeValue(reader, "resource_name");
- if (StringUtils.isNotBlank(resourceName)) {
- writer.writeAttribute("resource_id", resourceName);
- }
-
- String name = getAttributeValue(reader, "name");
- if (StringUtils.isNotBlank(name)) {
- writer.writeAttribute("name", name);
- }
-
- switch (getAttributeValue(reader, "DTYPE")) {
- case "PropagationTask":
- writer.writeAttribute("DTYPE", "PropagationTask");
- writer.writeAttribute(
- "anyTypeKind", getAttributeValue(reader, "subjectType"));
- writer.writeAttribute(
- "anyKey", getAttributeValue(reader, "subjectId"));
- writer.writeAttribute(
- "attributes", getAttributeValue(reader, "xmlAttributes"));
- writer.writeAttribute(
- "operation", getAttributeValue(reader, "propagationOperation"));
- writer.writeEndElement();
- break;
-
- case "SyncTask":
- writer.writeAttribute("DTYPE", "PullTask");
- writer.writeAttribute("syncStatus", getAttributeValue(reader, "syncStatus"));
- writer.writeAttribute("destinationRealm_id", realmUUID);
-
- String fullReconciliation = getAttributeValue(reader, "fullReconciliation");
- if ("1".equals(fullReconciliation)) {
- writer.writeAttribute("pullMode", "FULL_RECONCILIATION");
- } else if ("0".equals(fullReconciliation)) {
- writer.writeAttribute("pullMode", "INCREMENTAL");
- }
-
- writer.writeEndElement();
-
- String userTemplate = getAttributeValue(reader, "userTemplate");
- if (StringUtils.isNotBlank(userTemplate)) {
- ObjectNode template = (ObjectNode) OBJECT_MAPPER.readTree(userTemplate);
- JsonNode plainAttrs = template.remove("attributes");
- template.set("plainAttrs", plainAttrs);
- template.remove("id");
- template.set("key", null);
- template.remove("readonly");
- JsonNode derAttrs = template.remove("derivedAttributes");
- template.set("derAttrs", derAttrs);
- JsonNode virAttrs = template.remove("virtualAttributes");
- template.set("virAttrs", virAttrs);
- template.remove("propagationStatuses");
-
- writer.writeStartElement("AnyTemplatePullTask");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("pullTask_id", lastUUID);
- writer.writeAttribute("anyType_id", "USER");
- writer.writeAttribute("template", template.toString());
- writer.writeEndElement();
- }
- String roleTemplate = getAttributeValue(reader, "roleTemplate");
- if (StringUtils.isNotBlank(roleTemplate)) {
- ObjectNode template = (ObjectNode) OBJECT_MAPPER.readTree(roleTemplate);
- JsonNode plainAttrs = template.remove("attributes");
- template.set("plainAttrs", plainAttrs);
- template.remove("id");
- template.set("key", null);
- template.remove("readonly");
- JsonNode derAttrs = template.remove("derivedAttributes");
- template.set("derAttrs", derAttrs);
- JsonNode virAttrs = template.remove("virtualAttributes");
- template.set("virAttrs", virAttrs);
- template.remove("propagationStatuses");
-
- writer.writeStartElement("AnyTemplatePullTask");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("pullTask_id", lastUUID);
- writer.writeAttribute("anyType_id", "GROUP");
- writer.writeAttribute("template", template.toString());
- writer.writeEndElement();
- }
-
- break;
-
- case "SchedTask":
- writer.writeAttribute("DTYPE", "SchedTask");
- writer.writeAttribute(
- "jobDelegateClassName", getAttributeValue(reader, "jobClassName"));
- writer.writeEndElement();
- break;
-
- case "NotificationTask":
- writer.writeAttribute("DTYPE", "NotificationTask");
- writer.writeEndElement();
- break;
-
- case "PushTask":
- writer.writeAttribute("DTYPE", "PushTask");
- writer.writeEndElement();
-
- String userFilter = getAttributeValue(reader, "userFilter");
- if (StringUtils.isNotBlank(userFilter)) {
- writer.writeStartElement("PushTaskAnyFilter");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("pushTask_id", lastUUID);
- writer.writeAttribute("anyType_id", "USER");
- writer.writeAttribute("fiql", userFilter);
- writer.writeEndElement();
- }
- String roleFilter = getAttributeValue(reader, "roleFilter");
- if (StringUtils.isNotBlank(roleFilter)) {
- writer.writeStartElement("PushTaskAnyFilter");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("pushTask_id", lastUUID);
- writer.writeAttribute("anyType_id", "GROUP");
- writer.writeAttribute("fiql", roleFilter);
- writer.writeEndElement();
- }
- break;
-
- default:
- }
- break;
-
- case "taskexec":
- writer.writeStartElement("TaskExec");
- copyAttrs(reader, writer, "task_id");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("task_id", tasks.get(getAttributeValue(reader, "task_id")));
- writer.writeEndElement();
- break;
-
- case "synctask_actionsclassnames":
- writer.writeStartElement("PullTask_actionsClassNames");
- writer.writeAttribute(
- "pullTask_id", tasks.get(getAttributeValue(reader, "syncTask_id")));
-
- String syncActionClassName = getAttributeValue(reader, "element");
- switch (syncActionClassName) {
- case "org.apache.syncope.core.sync.impl.LDAPMembershipSyncActions":
- syncActionClassName = "org.apache.syncope.core.provisioning."
- + "java.pushpull.LDAPMembershipPullActions";
- break;
-
- case "org.apache.syncope.core.sync.impl.LDAPPasswordSyncActions":
- syncActionClassName =
- "org.apache.syncope.core.provisioning.java.pushpull.LDAPPasswordPullActions";
- break;
-
- case "org.apache.syncope.core.sync.impl.DBPasswordSyncActions":
- syncActionClassName =
- "org.apache.syncope.core.provisioning.java.pushpull.DBPasswordPullActions";
- break;
-
- default:
- }
- writer.writeAttribute("actionClassName", syncActionClassName);
- writer.writeEndElement();
- break;
-
- case "notification":
- writer.writeStartElement("Notification");
-
- lastUUID = UUID.randomUUID().toString();
- notifications.put(getAttributeValue(reader, "id"), lastUUID);
-
- writer.writeAttribute("id", lastUUID);
-
- copyAttrs(reader, writer,
- "recipientAttrType", "template", "userAbout", "roleAbout", "recipients",
- "recipientAttrName");
-
- String recipientAttrType = getAttributeValue(reader, "recipientAttrType");
- writeIntAttrName(
- recipientAttrType,
- "recipientAttrName",
- mappings.get(getAttributeValue(reader, "recipientAttrName")),
- writer);
-
- String recipients = getAttributeValue(reader, "recipients");
- if (StringUtils.isNotBlank(recipients)) {
- writer.writeAttribute("recipientsFIQL", getAttributeValue(reader, "recipients"));
- }
- writer.writeAttribute("template_id", getAttributeValue(reader, "template"));
- writer.writeEndElement();
-
- String userAbout = getAttributeValue(reader, "userAbout");
- if (StringUtils.isNotBlank(userAbout)) {
- writer.writeStartElement("AnyAbout");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("notification_id", lastUUID);
- writer.writeAttribute("anyType_id", "USER");
- writer.writeAttribute("filter", userAbout);
- writer.writeEndElement();
- }
- String roleAbout = getAttributeValue(reader, "roleAbout");
- if (StringUtils.isNotBlank(roleAbout)) {
- writer.writeStartElement("AnyAbout");
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("notification_id", lastUUID);
- writer.writeAttribute("anyType_id", "GROUP");
- writer.writeAttribute("filter", roleAbout);
- writer.writeEndElement();
- }
- break;
-
- case "notification_events":
- writer.writeStartElement("Notification_events");
- copyAttrs(reader, writer, "notification_id", "events");
- writer.writeAttribute(
- "notification_id", notifications.get(getAttributeValue(reader, "notification_id")));
- writer.writeAttribute(
- "event", getAttributeValue(reader, "events").
- replaceAll("Controller", "Logic"));
- writer.writeEndElement();
- break;
-
- case "notificationtask_recipients":
- writer.writeStartElement("NotificationTask_recipients");
- copyAttrs(reader, writer, "notificationTask_id");
- writer.writeAttribute(
- "notificationTask_id",
- tasks.get(getAttributeValue(reader, "notificationTask_id")));
- writer.writeEndElement();
- break;
-
- case "report":
- writer.writeStartElement("Report");
- copyAttrs(reader, writer);
-
- lastUUID = UUID.randomUUID().toString();
- reports.put(getAttributeValue(reader, "id"), lastUUID);
-
- writer.writeAttribute("id", lastUUID);
- writer.writeAttribute("name", getAttributeValue(reader, "name"));
-
- writer.writeEndElement();
- break;
-
- case "reportletconfinstance":
- writer.writeStartElement("ReportletConfInstance");
- copyAttrs(reader, writer, "report_id");
-
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("report_id", reports.get(getAttributeValue(reader, "report_id")));
-
- writer.writeEndElement();
- break;
-
- case "reportexec":
- writer.writeStartElement("ReportExec");
- copyAttrs(reader, writer, "report_id");
-
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeAttribute("report_id", reports.get(getAttributeValue(reader, "report_id")));
-
- writer.writeEndElement();
- break;
-
- case "securityquestion":
- writer.writeStartElement("SecurityQuestion");
- copyAttrs(reader, writer);
- writer.writeAttribute("id", UUID.randomUUID().toString());
- writer.writeEndElement();
- break;
-
- default:
- }
- }
-
- reader.next();
- }
-
- writer.writeStartElement("Realm");
- writer.writeAttribute("id", realmUUID);
- writer.writeAttribute("name", "/");
- if (globalAccountPolicy != null) {
- writer.writeAttribute("accountPolicy_id", globalAccountPolicy);
- }
- if (globalPasswordPolicy != null) {
- writer.writeAttribute("passwordPolicy_id", globalPasswordPolicy);
- }
- writer.writeEndElement();
-
- writer.writeEndElement();
- writer.writeEndDocument();
- writer.close();
-
- reporter.writeEndElement();
- reporter.writeEndDocument();
- reporter.close();
- System.out.println("\nVirtual items, require manual intervention:\n" + reporterSW.toString());
- }
-
- public MigrateConf(final Input input) {
- this.input = input;
- }
-
- public void migrate() {
- if (input.parameterNumber() == 2) {
- try {
- exec(input.firstParameter(), input.secondParameter());
- migrateResultManager.genericMessage(
- "Migration completed; file successfully created under " + input.secondParameter());
- } catch (Exception e) {
- LOG.error("Error migrating configuration from {}", input.firstParameter(), e);
- StringWriter errors = new StringWriter();
- e.printStackTrace(new PrintWriter(errors));
- migrateResultManager.genericError("Error performing configuration migration: "
- + errors.toString());
- }
- } else {
- migrateResultManager.commandOptionError(HELP_MESSAGE);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateResultManager.java
----------------------------------------------------------------------
diff --git a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateResultManager.java b/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateResultManager.java
deleted file mode 100644
index 4c6632b..0000000
--- a/client/cli/src/main/java/org/apache/syncope/client/cli/commands/migrate/MigrateResultManager.java
+++ /dev/null
@@ -1,24 +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.cli.commands.migrate;
-
-import org.apache.syncope.client.cli.commands.CommonsResultManager;
-
-public class MigrateResultManager extends CommonsResultManager {
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java
----------------------------------------------------------------------
diff --git a/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java b/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java
deleted file mode 100644
index 0b1c749..0000000
--- a/client/cli/src/test/java/org/apache/syncope/client/cli/commands/MigrateTest.java
+++ /dev/null
@@ -1,83 +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.cli.commands;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-import javax.sql.DataSource;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import org.apache.syncope.client.cli.Input;
-import org.apache.syncope.client.cli.commands.migrate.MigrateCommand;
-import org.apache.syncope.core.persistence.jpa.content.ContentLoaderHandler;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
-
-public class MigrateTest {
-
- private static final String ROOT_ELEMENT = "dataset";
-
- private static String BASE_PATH;
-
- @BeforeAll
- public static void before() {
- Properties props = new Properties();
- try (InputStream propStream = MigrateTest.class.getResourceAsStream("/test.properties")) {
- props.load(propStream);
-
- BASE_PATH = props.getProperty("testClasses");
- } catch (IOException e) {
- fail(e.getMessage());
- }
- assertNotNull(BASE_PATH);
- }
-
- @Test
- public void conf() throws Exception {
- // 1. migrate
- String[] args = new String[4];
- args[0] = "migrate";
- args[1] = "--conf";
- args[2] = BASE_PATH + File.separator + "content12.xml";
- args[3] = BASE_PATH + File.separator + "MasterContent.xml";
-
- new MigrateCommand().execute(new Input(args));
-
- // 2. initialize db as persistence-jpa does
- DataSource dataSource = new DriverManagerDataSource("jdbc:h2:mem:syncopedb;DB_CLOSE_DELAY=-1", "sa", null);
-
- new ResourceDatabasePopulator(new ClassPathResource("/schema20.sql")).execute(dataSource);
-
- // 3. attempt to set initial content from the migrated MasterContent.xml
- SAXParserFactory factory = SAXParserFactory.newInstance();
- try (InputStream in = new FileInputStream(args[3])) {
- SAXParser parser = factory.newSAXParser();
- parser.parse(in, new ContentLoaderHandler(dataSource, ROOT_ELEMENT, false));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/test/java/org/apache/syncope/client/cli/util/CommandUtilsTest.java
----------------------------------------------------------------------
diff --git a/client/cli/src/test/java/org/apache/syncope/client/cli/util/CommandUtilsTest.java b/client/cli/src/test/java/org/apache/syncope/client/cli/util/CommandUtilsTest.java
index 558b802..2b3c2ae 100644
--- a/client/cli/src/test/java/org/apache/syncope/client/cli/util/CommandUtilsTest.java
+++ b/client/cli/src/test/java/org/apache/syncope/client/cli/util/CommandUtilsTest.java
@@ -22,7 +22,6 @@ import static org.junit.jupiter.api.Assertions.fail;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
-import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.apache.syncope.client.cli.Command;
import org.apache.syncope.client.cli.commands.AbstractCommand;
@@ -31,9 +30,7 @@ import org.junit.jupiter.api.Test;
public class CommandUtilsTest {
@Test
- public void fromArgs() throws InstantiationException, IllegalAccessException,
- NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
-
+ public void fromArgs() throws Exception {
String commandName = "logger";
AbstractCommand command = CommandUtils.fromArgs(commandName);
assertEquals(commandName, command.getClass().getAnnotation(Command.class).name());
@@ -49,11 +46,9 @@ public class CommandUtilsTest {
}
@Test
- public void commands() throws InstantiationException, IllegalAccessException,
- NoSuchMethodException, IllegalArgumentException, InvocationTargetException {
-
+ public void commands() throws Exception {
List<AbstractCommand> commands = CommandUtils.commands();
assertFalse(commands.isEmpty());
- assertEquals(22, commands.size());
+ assertEquals(21, commands.size());
}
}
[6/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/test/resources/schema20.sql
----------------------------------------------------------------------
diff --git a/client/cli/src/test/resources/schema20.sql b/client/cli/src/test/resources/schema20.sql
deleted file mode 100644
index 4cdad60..0000000
--- a/client/cli/src/test/resources/schema20.sql
+++ /dev/null
@@ -1,229 +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.
-
-CREATE TABLE AccountPolicy (id VARCHAR(36) NOT NULL, description VARCHAR(255), maxAuthenticationAttempts INTEGER, propagateSuspension INTEGER, PRIMARY KEY (id));
-CREATE TABLE AccountPolicy_ExternalResource (accountPolicy_id VARCHAR(36), resource_id VARCHAR(255));
-CREATE TABLE AccountRuleConfInstance (id VARCHAR(36) NOT NULL, serializedInstance CLOB, ACCOUNTPOLICY_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE ADynGroupMembership (id VARCHAR(36) NOT NULL, fiql VARCHAR(255), GROUP_ID VARCHAR(36), ANYTYPE_ID VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE ADynGroupMembership_AnyObject (aDynGroupMembership_id VARCHAR(36), anyObject_id VARCHAR(36));
-CREATE TABLE AMembership (id VARCHAR(36) NOT NULL, anyObject_id VARCHAR(36), group_id VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE AnyAbout (id VARCHAR(36) NOT NULL, filter CLOB, ANYTYPE_ID VARCHAR(255), NOTIFICATION_ID VARCHAR(36), PRIMARY KEY (id), CONSTRAINT U_NYABOUT_NOTIFICATION_ID UNIQUE (NOTIFICATION_ID, ANYTYPE_ID));
-CREATE TABLE AnyObject (id VARCHAR(36) NOT NULL, creationDate TIMESTAMP NOT NULL, creator VARCHAR(255) NOT NULL, lastChangeDate TIMESTAMP NOT NULL, lastModifier VARCHAR(255) NOT NULL, status VARCHAR(255), workflowId VARCHAR(255), name VARCHAR(255), REALM_ID VARCHAR(36), TYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_NYOBJCT_NAME UNIQUE (name));
-CREATE TABLE AnyObject_AnyTypeClass (anyObject_id VARCHAR(36), anyTypeClass_id VARCHAR(255));
-CREATE TABLE AnyObject_ExternalResource (anyObject_id VARCHAR(36), resource_id VARCHAR(255));
-CREATE TABLE AnyTemplatePullTask (id VARCHAR(36) NOT NULL, template CLOB, PULLTASK_ID VARCHAR(36), ANYTYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_NYTMTSK_PULLTASK_ID UNIQUE (PULLTASK_ID, ANYTYPE_ID));
-CREATE TABLE AnyTemplateRealm (id VARCHAR(36) NOT NULL, template CLOB, REALM_ID VARCHAR(36), ANYTYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_NYTMRLM_REALM_ID UNIQUE (REALM_ID, ANYTYPE_ID));
-CREATE TABLE AnyType (id VARCHAR(255) NOT NULL, kind VARCHAR(20), PRIMARY KEY (id));
-CREATE TABLE AnyTypeClass (id VARCHAR(255) NOT NULL, PRIMARY KEY (id));
-CREATE TABLE AnyType_AnyTypeClass (anyType_id VARCHAR(255), anyTypeClass_id VARCHAR(255));
-CREATE TABLE APlainAttr (id VARCHAR(36) NOT NULL, OWNER_ID VARCHAR(36), schema_id VARCHAR(255), MEMBERSHIP_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE APlainAttrUniqueValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), schema_id VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_PLNTQVL_BOOLEANVALUE UNIQUE (booleanValue, schema_id), CONSTRAINT U_PLNTQVL_DATEVALUE UNIQUE (dateValue, schema_id), CONSTRAINT U_PLNTQVL_STRINGVALUE UNIQUE (stringValue, schema_id), CONSTRAINT U_PLNTQVL_DOUBLEVALUE UNIQUE (doubleValue, schema_id), CONSTRAINT U_PLNTQVL_LONGVALUE UNIQUE (longValue, schema_id));
-CREATE TABLE APlainAttrValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE ARelationship (id VARCHAR(36) NOT NULL, left_anyObject_id VARCHAR(36), right_anyObject_id VARCHAR(36), TYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_RLTNSHP_TYPE_ID UNIQUE (TYPE_ID, left_anyObject_id, right_anyObject_id));
-CREATE TABLE ConnInstance (id VARCHAR(36) NOT NULL, bundleName VARCHAR(255), connRequestTimeout INTEGER, connectorName VARCHAR(255), displayName VARCHAR(255), jsonConf CLOB, location VARCHAR(255), version VARCHAR(255), maxIdle INTEGER, maxObjects INTEGER, maxWait BIGINT, minEvictableIdleTimeMillis BIGINT, minIdle INTEGER, PRIMARY KEY (id), CONSTRAINT U_CNNNTNC_DISPLAYNAME UNIQUE (displayName));
-CREATE TABLE ConnInstance_capabilities (connInstance_id VARCHAR(36), capability VARCHAR(20));
-CREATE TABLE CPlainAttr (id VARCHAR(36) NOT NULL, schema_id VARCHAR(255), OWNER_ID VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE CPlainAttrUniqueValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), schema_id VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_CPLNQVL_BOOLEANVALUE UNIQUE (booleanValue, schema_id), CONSTRAINT U_CPLNQVL_DATEVALUE UNIQUE (dateValue, schema_id), CONSTRAINT U_CPLNQVL_STRINGVALUE UNIQUE (stringValue, schema_id), CONSTRAINT U_CPLNQVL_DOUBLEVALUE UNIQUE (doubleValue, schema_id), CONSTRAINT U_CPLNQVL_LONGVALUE UNIQUE (longValue, schema_id));
-CREATE TABLE CPlainAttrValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE DerSchema (id VARCHAR(255) NOT NULL, expression VARCHAR(255), ANYTYPECLASS_ID VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE DynRoleMembership (id VARCHAR(36) NOT NULL, fiql VARCHAR(255), ROLE_ID VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE DynRoleMembership_User (dynRoleMembership_id VARCHAR(36), user_id VARCHAR(36));
-CREATE TABLE ExternalResource (id VARCHAR(255) NOT NULL, createTraceLevel VARCHAR(20), deleteTraceLevel VARCHAR(20), enforceMandatoryCondition INTEGER, jsonConf CLOB, overrideCapabilities INTEGER, propagationPriority INTEGER, provisioningTraceLevel VARCHAR(20), randomPwdIfNotProvided INTEGER, updateTraceLevel VARCHAR(20), ACCOUNTPOLICY_ID VARCHAR(36), CONNECTOR_ID VARCHAR(36), PASSWORDPOLICY_ID VARCHAR(36), PULLPOLICY_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE ExternalResource_capOverride (resource_id VARCHAR(255), capabilityOverride VARCHAR(20));
-CREATE TABLE ExternalResource_PropActions (resource_id VARCHAR(255), actionClassName VARCHAR(255));
-CREATE TABLE GPlainAttr (id VARCHAR(36) NOT NULL, OWNER_ID VARCHAR(36), schema_id VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE GPlainAttrUniqueValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), schema_id VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_GPLNQVL_BOOLEANVALUE UNIQUE (booleanValue, schema_id), CONSTRAINT U_GPLNQVL_DATEVALUE UNIQUE (dateValue, schema_id), CONSTRAINT U_GPLNQVL_STRINGVALUE UNIQUE (stringValue, schema_id), CONSTRAINT U_GPLNQVL_DOUBLEVALUE UNIQUE (doubleValue, schema_id), CONSTRAINT U_GPLNQVL_LONGVALUE UNIQUE (longValue, schema_id));
-CREATE TABLE GPlainAttrValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE MailTemplate (id VARCHAR(255) NOT NULL, htmlTemplate CLOB, textTemplate CLOB, PRIMARY KEY (id));
-CREATE TABLE Mapping (id VARCHAR(36) NOT NULL, connObjectLink VARCHAR(255), PROVISION_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE MappingItem (id VARCHAR(36) NOT NULL, connObjectKey INTEGER, extAttrName VARCHAR(255), intAttrName VARCHAR(255), mandatoryCondition VARCHAR(255), password INTEGER, propJEXL VARCHAR(255), pullJEXL VARCHAR(255), purpose VARCHAR(20), MAPPING_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE MappingItem_Transformer (mappingItem_id VARCHAR(36), transformerClassName VARCHAR(255));
-CREATE TABLE Notification (id VARCHAR(36) NOT NULL, active INTEGER, recipientAttrName VARCHAR(255), recipientsFIQL VARCHAR(255), recipientsProviderClassName VARCHAR(255), selfAsRecipient INTEGER, sender VARCHAR(255), subject VARCHAR(255), traceLevel VARCHAR(20), template_id VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE NotificationTask_recipients (notificationTask_id VARCHAR(36), address VARCHAR(255));
-CREATE TABLE Notification_events (notification_id VARCHAR(36), event VARCHAR(255));
-CREATE TABLE Notification_staticRecipients (notification_id VARCHAR(36), staticRecipients VARCHAR(255));
-CREATE TABLE OrgUnit (id VARCHAR(36) NOT NULL, connObjectLink VARCHAR(255), extAttrName VARCHAR(255), objectClass VARCHAR(255), serializedSyncToken CLOB, RESOURCE_ID VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE PasswordPolicy (id VARCHAR(36) NOT NULL, description VARCHAR(255), allowNullPassword INTEGER, historyLength INTEGER, PRIMARY KEY (id));
-CREATE TABLE PasswordRuleConfInstance (id VARCHAR(36) NOT NULL, serializedInstance CLOB, PASSWORDPOLICY_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE PlainSchema (id VARCHAR(255) NOT NULL, cipherAlgorithm VARCHAR(20), conversionPattern VARCHAR(255), enumerationKeys CLOB, enumerationValues CLOB, mandatoryCondition VARCHAR(255), mimeType VARCHAR(255), multivalue INTEGER, readonly INTEGER, secretKey VARCHAR(255), type VARCHAR(20), uniqueConstraint INTEGER, validatorClass VARCHAR(255), ANYTYPECLASS_ID VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE Provision (id VARCHAR(36) NOT NULL, objectClass VARCHAR(255), serializedSyncToken CLOB, ANYTYPE_ID VARCHAR(255), RESOURCE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_PROVSON_RESOURCE_ID UNIQUE (RESOURCE_ID, ANYTYPE_ID));
-CREATE TABLE Provision_AnyTypeClass (provision_id VARCHAR(36), anyTypeClass_id VARCHAR(255));
-CREATE TABLE PullPolicy (id VARCHAR(36) NOT NULL, description VARCHAR(255), specification CLOB, PRIMARY KEY (id));
-CREATE TABLE PullTask_actionsClassNames (pullTask_id VARCHAR(36), actionClassName VARCHAR(255));
-CREATE TABLE PushPolicy (id VARCHAR(36) NOT NULL, description VARCHAR(255), specification CLOB, PRIMARY KEY (id));
-CREATE TABLE PushTaskAnyFilter (id VARCHAR(36) NOT NULL, fiql VARCHAR(255), PUSHTASK_ID VARCHAR(36), ANYTYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_PSHTLTR_PUSHTASK_ID UNIQUE (PUSHTASK_ID, ANYTYPE_ID));
-CREATE TABLE PushTask_actionsClassNames (pushTask_id VARCHAR(36), actionClassName VARCHAR(255));
-CREATE TABLE Realm (id VARCHAR(36) NOT NULL, name VARCHAR(255), ACCOUNTPOLICY_ID VARCHAR(36), PARENT_ID VARCHAR(36), PASSWORDPOLICY_ID VARCHAR(36), PRIMARY KEY (id), CONSTRAINT U_REALM_ID UNIQUE (id, PARENT_ID));
-CREATE TABLE Realm_actionsClassNames (realm_id VARCHAR(36), actionClassName VARCHAR(255));
-CREATE TABLE Realm_ExternalResource (realm_id VARCHAR(36), resource_id VARCHAR(255));
-CREATE TABLE RelationshipType (id VARCHAR(255) NOT NULL, description VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE Report (id VARCHAR(36) NOT NULL, active INTEGER, cronExpression VARCHAR(255), name VARCHAR(255) NOT NULL, template_id VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_REPORT_NAME UNIQUE (name));
-CREATE TABLE ReportExec (id VARCHAR(36) NOT NULL, endDate TIMESTAMP, message CLOB, startDate TIMESTAMP, status VARCHAR(255), execResult BLOB, REPORT_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE ReportletConfInstance (id VARCHAR(36) NOT NULL, serializedInstance CLOB, REPORT_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE ReportTemplate (id VARCHAR(255) NOT NULL, csvTemplate CLOB, foTemplate CLOB, htmlTemplate CLOB, PRIMARY KEY (id));
-CREATE TABLE SecurityQuestion (id VARCHAR(36) NOT NULL, content VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_SCRTSTN_CONTENT UNIQUE (content));
-CREATE TABLE SyncopeConf (id VARCHAR(255) NOT NULL, PRIMARY KEY (id));
-CREATE TABLE SyncopeDomain (id VARCHAR(255) NOT NULL, adminCipherAlgorithm VARCHAR(20), adminPwd VARCHAR(255), PRIMARY KEY (id));
-CREATE TABLE SyncopeGroup (id VARCHAR(36) NOT NULL, creationDate TIMESTAMP NOT NULL, creator VARCHAR(255) NOT NULL, lastChangeDate TIMESTAMP NOT NULL, lastModifier VARCHAR(255) NOT NULL, status VARCHAR(255), workflowId VARCHAR(255), name VARCHAR(255), REALM_ID VARCHAR(36), GROUPOWNER_ID VARCHAR(36), USEROWNER_ID VARCHAR(36), PRIMARY KEY (id), CONSTRAINT U_SYNCGRP_NAME UNIQUE (name));
-CREATE TABLE SyncopeGroup_AnyTypeClass (group_id VARCHAR(36), anyTypeClass_id VARCHAR(255));
-CREATE TABLE SyncopeGroup_ExternalResource (group_id VARCHAR(36), resource_id VARCHAR(255));
-CREATE TABLE SyncopeLogger (logName VARCHAR(255) NOT NULL, logLevel VARCHAR(20) NOT NULL, logType VARCHAR(20) NOT NULL, PRIMARY KEY (logName));
-CREATE TABLE SyncopeRole (id VARCHAR(255) NOT NULL, consoleLayoutInfo CLOB, PRIMARY KEY (id));
-CREATE TABLE SyncopeRole_entitlements (role_id VARCHAR(255), entitlement VARCHAR(255));
-CREATE TABLE SyncopeRole_Realm (role_id VARCHAR(255), realm_id VARCHAR(36));
-CREATE TABLE SyncopeSchema (id VARCHAR(255) NOT NULL, PRIMARY KEY (id));
-CREATE TABLE SyncopeUser (id VARCHAR(36) NOT NULL, creationDate TIMESTAMP NOT NULL, creator VARCHAR(255) NOT NULL, lastChangeDate TIMESTAMP NOT NULL, lastModifier VARCHAR(255) NOT NULL, status VARCHAR(255), workflowId VARCHAR(255), changePwdDate TIMESTAMP, cipherAlgorithm VARCHAR(20), failedLogins INTEGER, lastLoginDate TIMESTAMP, mustChangePassword INTEGER, password VARCHAR(255), securityAnswer VARCHAR(255), suspended INTEGER, token CLOB, tokenExpireTime TIMESTAMP, username VARCHAR(255), REALM_ID VARCHAR(36), SECURITYQUESTION_ID VARCHAR(36), PRIMARY KEY (id), CONSTRAINT U_SYNCPSR_USERNAME UNIQUE (username));
-CREATE TABLE SyncopeUser_AnyTypeClass (user_id VARCHAR(36), anyTypeClass_id VARCHAR(255));
-CREATE TABLE SyncopeUser_ExternalResource (user_id VARCHAR(36), resource_id VARCHAR(255));
-CREATE TABLE SyncopeUser_passwordHistory (user_id VARCHAR(36), passwordHistoryValue VARCHAR(255));
-CREATE TABLE SyncopeUser_SyncopeRole (user_id VARCHAR(36), role_id VARCHAR(255));
-CREATE TABLE Task (id VARCHAR(36) NOT NULL, DTYPE VARCHAR(31), active INTEGER, cronExpression VARCHAR(255), description VARCHAR(255), jobDelegateClassName VARCHAR(255), name VARCHAR(255), startAt TIMESTAMP, matchingRule VARCHAR(20), performCreate INTEGER, performDelete INTEGER, performUpdate INTEGER, syncStatus INTEGER, unmatchingRule VARCHAR(20), RESOURCE_ID VARCHAR(255), pullMode VARCHAR(23), reconciliationFilterBuilderClassName VARCHAR(255), DESTINATIONREALM_ID VARCHAR(36), anyKey VARCHAR(255), anyTypeKind VARCHAR(20), executed INTEGER, htmlBody CLOB, sender VARCHAR(255), subject VARCHAR(255), textBody CLOB, traceLevel VARCHAR(20), NOTIFICATION_ID VARCHAR(36), anyType VARCHAR(255), attributes CLOB, connObjectKey VARCHAR(255), entityKey VARCHAR(255), objectClassName VARCHAR(255), oldConnObjectKey VARCHAR(255), operation VARCHAR(20), PRIMARY KEY (id));
-CREATE TABLE TaskExec (id VARCHAR(36) NOT NULL, endDate TIMESTAMP, message CLOB, startDate TIMESTAMP, status VARCHAR(255), TASK_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE TypeExtension (id VARCHAR(36) NOT NULL, GROUP_ID VARCHAR(36), ANYTYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_TYPXNSN_GROUP_ID UNIQUE (GROUP_ID, ANYTYPE_ID));
-CREATE TABLE TypeExtension_AnyTypeClass (typeExtension_id VARCHAR(36), anyTypeClass_id VARCHAR(255));
-CREATE TABLE UDynGroupMembership (id VARCHAR(36) NOT NULL, fiql VARCHAR(255), GROUP_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE UDynGroupMembership_User (uDynGroupMembership_id VARCHAR(36), user_id VARCHAR(36));
-CREATE TABLE UMembership (id VARCHAR(36) NOT NULL, user_id VARCHAR(36), group_id VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE UPlainAttr (id VARCHAR(36) NOT NULL, OWNER_ID VARCHAR(36), schema_id VARCHAR(255), MEMBERSHIP_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE UPlainAttrUniqueValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), schema_id VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_PLNTQVL_BOOLEANVALUE1 UNIQUE (booleanValue, schema_id), CONSTRAINT U_PLNTQVL_DATEVALUE1 UNIQUE (dateValue, schema_id), CONSTRAINT U_PLNTQVL_STRINGVALUE1 UNIQUE (stringValue, schema_id), CONSTRAINT U_PLNTQVL_DOUBLEVALUE1 UNIQUE (doubleValue, schema_id), CONSTRAINT U_PLNTQVL_LONGVALUE1 UNIQUE (longValue, schema_id));
-CREATE TABLE UPlainAttrValue (id VARCHAR(36) NOT NULL, binaryValue BLOB, booleanValue INTEGER, dateValue TIMESTAMP, doubleValue DOUBLE, longValue BIGINT, stringValue VARCHAR(255), ATTRIBUTE_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE TABLE URelationship (id VARCHAR(36) NOT NULL, user_id VARCHAR(36), anyObject_id VARCHAR(36), TYPE_ID VARCHAR(255), PRIMARY KEY (id), CONSTRAINT U_RLTNSHP_TYPE_ID1 UNIQUE (TYPE_ID, user_id, anyObject_id));
-CREATE TABLE VirSchema (id VARCHAR(255) NOT NULL, extAttrName VARCHAR(255), readonly INTEGER, ANYTYPECLASS_ID VARCHAR(255), PROVISION_ID VARCHAR(36), PRIMARY KEY (id));
-CREATE INDEX I_CCNTSRC_ACCOUNTPOLICY_ID ON AccountPolicy_ExternalResource (accountPolicy_id);
-CREATE INDEX I_CCNTSRC_ELEMENT ON AccountPolicy_ExternalResource (resource_id);
-CREATE INDEX I_CCNTTNC_ACCOUNTPOLICY ON AccountRuleConfInstance (ACCOUNTPOLICY_ID);
-CREATE INDEX I_DYNGSHP_ANYTYPE ON ADynGroupMembership (ANYTYPE_ID);
-CREATE INDEX I_DYNGSHP_GROUP ON ADynGroupMembership (GROUP_ID);
-CREATE INDEX I_DYNGJCT_ADYNGROUPMEMBERSHIP_ID ON ADynGroupMembership_AnyObject (aDynGroupMembership_id);
-CREATE INDEX I_DYNGJCT_ELEMENT ON ADynGroupMembership_AnyObject (anyObject_id);
-CREATE INDEX I_MMBRSHP_LEFTEND ON AMembership (anyObject_id);
-CREATE INDEX I_MMBRSHP_RIGHTEND ON AMembership (group_id);
-CREATE INDEX I_NYABOUT_ANYTYPE ON AnyAbout (ANYTYPE_ID);
-CREATE INDEX I_NYABOUT_NOTIFICATION ON AnyAbout (NOTIFICATION_ID);
-CREATE INDEX I_NYOBJCT_REALM ON AnyObject (REALM_ID);
-CREATE INDEX I_NYOBJCT_TYPE ON AnyObject (TYPE_ID);
-CREATE INDEX I_NYBJLSS_ANYOBJECT_ID ON AnyObject_AnyTypeClass (anyObject_id);
-CREATE INDEX I_NYBJLSS_ELEMENT ON AnyObject_AnyTypeClass (anyTypeClass_id);
-CREATE INDEX I_NYBJSRC_ANYOBJECT_ID ON AnyObject_ExternalResource (anyObject_id);
-CREATE INDEX I_NYBJSRC_ELEMENT ON AnyObject_ExternalResource (resource_id);
-CREATE INDEX I_NYTMTSK_ANYTYPE ON AnyTemplatePullTask (ANYTYPE_ID);
-CREATE INDEX I_NYTMTSK_PULLTASK ON AnyTemplatePullTask (PULLTASK_ID);
-CREATE INDEX I_NYTMRLM_ANYTYPE ON AnyTemplateRealm (ANYTYPE_ID);
-CREATE INDEX I_NYTMRLM_REALM ON AnyTemplateRealm (REALM_ID);
-CREATE INDEX I_NYTYLSS_ANYTYPE_ID ON AnyType_AnyTypeClass (anyType_id);
-CREATE INDEX I_NYTYLSS_ELEMENT ON AnyType_AnyTypeClass (anyTypeClass_id);
-CREATE INDEX I_PLINTTR_MEMBERSHIP ON APlainAttr (MEMBERSHIP_ID);
-CREATE INDEX I_PLINTTR_OWNER ON APlainAttr (OWNER_ID);
-CREATE INDEX I_PLINTTR_SCHEMA ON APlainAttr (schema_id);
-CREATE INDEX I_PLNTQVL_ATTRIBUTE ON APlainAttrUniqueValue (ATTRIBUTE_ID);
-CREATE INDEX I_PLNTQVL_SCHEMA ON APlainAttrUniqueValue (schema_id);
-CREATE INDEX I_PLNTRVL_ATTRIBUTE ON APlainAttrValue (ATTRIBUTE_ID);
-CREATE INDEX I_RLTNSHP_LEFTEND ON ARelationship (left_anyObject_id);
-CREATE INDEX I_RLTNSHP_RIGHTEND ON ARelationship (right_anyObject_id);
-CREATE INDEX I_RLTNSHP_TYPE ON ARelationship (TYPE_ID);
-CREATE INDEX I_CNNNLTS_CONNINSTANCE_ID ON ConnInstance_capabilities (connInstance_id);
-CREATE INDEX I_CPLNTTR_OWNER ON CPlainAttr (OWNER_ID);
-CREATE INDEX I_CPLNTTR_SCHEMA ON CPlainAttr (schema_id);
-CREATE INDEX I_CPLNQVL_ATTRIBUTE ON CPlainAttrUniqueValue (ATTRIBUTE_ID);
-CREATE INDEX I_CPLNQVL_SCHEMA ON CPlainAttrUniqueValue (schema_id);
-CREATE INDEX I_CPLNRVL_ATTRIBUTE ON CPlainAttrValue (ATTRIBUTE_ID);
-CREATE INDEX I_DRSCHEM_ANYTYPECLASS ON DerSchema (ANYTYPECLASS_ID);
-CREATE INDEX I_DYNRSHP_ROLE ON DynRoleMembership (ROLE_ID);
-CREATE INDEX I_DYNR_SR_DYNROLEMEMBERSHIP_ID ON DynRoleMembership_User (dynRoleMembership_id);
-CREATE INDEX I_DYNR_SR_ELEMENT ON DynRoleMembership_User (user_id);
-CREATE INDEX I_XTRNSRC_ACCOUNTPOLICY ON ExternalResource (ACCOUNTPOLICY_ID);
-CREATE INDEX I_XTRNSRC_CONNECTOR ON ExternalResource (CONNECTOR_ID);
-CREATE INDEX I_XTRNSRC_PASSWORDPOLICY ON ExternalResource (PASSWORDPOLICY_ID);
-CREATE INDEX I_XTRNSRC_PULLPOLICY ON ExternalResource (PULLPOLICY_ID);
-CREATE INDEX I_XTRNRRD_RESOURCE_ID ON ExternalResource_capOverride (resource_id);
-CREATE INDEX I_XTRNTNS_RESOURCE_ID ON ExternalResource_PropActions (resource_id);
-CREATE INDEX I_GPLNTTR_OWNER ON GPlainAttr (OWNER_ID);
-CREATE INDEX I_GPLNTTR_SCHEMA ON GPlainAttr (schema_id);
-CREATE INDEX I_GPLNQVL_ATTRIBUTE ON GPlainAttrUniqueValue (ATTRIBUTE_ID);
-CREATE INDEX I_GPLNQVL_SCHEMA ON GPlainAttrUniqueValue (schema_id);
-CREATE INDEX I_GPLNRVL_ATTRIBUTE ON GPlainAttrValue (ATTRIBUTE_ID);
-CREATE INDEX I_MAPPING_PROVISION ON Mapping (PROVISION_ID);
-CREATE INDEX I_MPPNGTM_MAPPING ON MappingItem (MAPPING_ID);
-CREATE INDEX I_MPPNRMR_MAPPINGITEM_ID ON MappingItem_Transformer (mappingItem_id);
-CREATE INDEX I_NTFCTON_TEMPLATE ON Notification (template_id);
-CREATE INDEX I_NTFCNTS_NOTIFICATIONTASK_ID ON NotificationTask_recipients (notificationTask_id);
-CREATE INDEX I_NTFCNTS_NOTIFICATION_ID ON Notification_events (notification_id);
-CREATE INDEX I_NTFCNTS_NOTIFICATION_ID1 ON Notification_staticRecipients (notification_id);
-CREATE INDEX I_ORGUNIT_RESOURCE ON OrgUnit (RESOURCE_ID);
-CREATE INDEX I_PSSWTNC_PASSWORDPOLICY ON PasswordRuleConfInstance (PASSWORDPOLICY_ID);
-CREATE INDEX I_PLNSCHM_ANYTYPECLASS ON PlainSchema (ANYTYPECLASS_ID);
-CREATE INDEX I_PROVSON_ANYTYPE ON Provision (ANYTYPE_ID);
-CREATE INDEX I_PROVSON_RESOURCE ON Provision (RESOURCE_ID);
-CREATE INDEX I_PRVSLSS_ELEMENT ON Provision_AnyTypeClass (anyTypeClass_id);
-CREATE INDEX I_PRVSLSS_PROVISION_ID ON Provision_AnyTypeClass (provision_id);
-CREATE INDEX I_PLLTNMS_PULLTASK_ID ON PullTask_actionsClassNames (pullTask_id);
-CREATE INDEX I_PSHTLTR_ANYTYPE ON PushTaskAnyFilter (ANYTYPE_ID);
-CREATE INDEX I_PSHTLTR_PUSHTASK ON PushTaskAnyFilter (PUSHTASK_ID);
-CREATE INDEX I_PSHTNMS_PUSHTASK_ID ON PushTask_actionsClassNames (pushTask_id);
-CREATE INDEX I_REALM_ACCOUNTPOLICY ON Realm (ACCOUNTPOLICY_ID);
-CREATE INDEX I_REALM_PARENT ON Realm (PARENT_ID);
-CREATE INDEX I_REALM_PASSWORDPOLICY ON Realm (PASSWORDPOLICY_ID);
-CREATE INDEX I_RLM_NMS_REALM_ID ON Realm_actionsClassNames (realm_id);
-CREATE INDEX I_RLM_SRC_ELEMENT ON Realm_ExternalResource (resource_id);
-CREATE INDEX I_RLM_SRC_REALM_ID ON Realm_ExternalResource (realm_id);
-CREATE INDEX I_REPORT_TEMPLATE ON Report (template_id);
-CREATE INDEX I_RPORTXC_REPORT ON ReportExec (REPORT_ID);
-CREATE INDEX I_RPRTTNC_REPORT ON ReportletConfInstance (REPORT_ID);
-CREATE INDEX I_SYNCGRP_GROUPOWNER ON SyncopeGroup (GROUPOWNER_ID);
-CREATE INDEX I_SYNCGRP_REALM ON SyncopeGroup (REALM_ID);
-CREATE INDEX I_SYNCGRP_USEROWNER ON SyncopeGroup (USEROWNER_ID);
-CREATE INDEX I_SYNCLSS_ELEMENT ON SyncopeGroup_AnyTypeClass (anyTypeClass_id);
-CREATE INDEX I_SYNCLSS_GROUP_ID ON SyncopeGroup_AnyTypeClass (group_id);
-CREATE INDEX I_SYNCSRC_ELEMENT ON SyncopeGroup_ExternalResource (resource_id);
-CREATE INDEX I_SYNCSRC_GROUP_ID ON SyncopeGroup_ExternalResource (group_id);
-CREATE INDEX I_SYNCNTS_ROLE_ID ON SyncopeRole_entitlements (role_id);
-CREATE INDEX I_SYNCRLM_ELEMENT ON SyncopeRole_Realm (realm_id);
-CREATE INDEX I_SYNCRLM_ROLE_ID ON SyncopeRole_Realm (role_id);
-CREATE INDEX I_SYNCPSR_REALM ON SyncopeUser (REALM_ID);
-CREATE INDEX I_SYNCPSR_SECURITYQUESTION ON SyncopeUser (SECURITYQUESTION_ID);
-CREATE INDEX I_SYNCLSS_ELEMENT1 ON SyncopeUser_AnyTypeClass (anyTypeClass_id);
-CREATE INDEX I_SYNCLSS_USER_ID ON SyncopeUser_AnyTypeClass (user_id);
-CREATE INDEX I_SYNCSRC_ELEMENT1 ON SyncopeUser_ExternalResource (resource_id);
-CREATE INDEX I_SYNCSRC_USER_ID ON SyncopeUser_ExternalResource (user_id);
-CREATE INDEX I_SYNCTRY_USER_ID ON SyncopeUser_passwordHistory (user_id);
-CREATE INDEX I_SYNCPRL_ELEMENT ON SyncopeUser_SyncopeRole (role_id);
-CREATE INDEX I_SYNCPRL_USER_ID ON SyncopeUser_SyncopeRole (user_id);
-CREATE INDEX I_TASK_DESTINATIONREALM ON Task (DESTINATIONREALM_ID);
-CREATE INDEX I_TASK_DTYPE ON Task (DTYPE);
-CREATE INDEX I_TASK_NOTIFICATION ON Task (NOTIFICATION_ID);
-CREATE INDEX I_TASK_RESOURCE ON Task (RESOURCE_ID);
-CREATE INDEX I_TSKEXEC_TASK ON TaskExec (TASK_ID);
-CREATE INDEX I_TYPXNSN_ANYTYPE ON TypeExtension (ANYTYPE_ID);
-CREATE INDEX I_TYPXNSN_GROUP ON TypeExtension (GROUP_ID);
-CREATE INDEX I_TYPXLSS_ELEMENT ON TypeExtension_AnyTypeClass (anyTypeClass_id);
-CREATE INDEX I_TYPXLSS_TYPEEXTENSION_ID ON TypeExtension_AnyTypeClass (typeExtension_id);
-CREATE INDEX I_DYNGSHP_GROUP1 ON UDynGroupMembership (GROUP_ID);
-CREATE INDEX I_DYNG_SR_ELEMENT ON UDynGroupMembership_User (user_id);
-CREATE INDEX I_DYNG_SR_UDYNGROUPMEMBERSHIP_ID ON UDynGroupMembership_User (uDynGroupMembership_id);
-CREATE INDEX I_MMBRSHP_LEFTEND1 ON UMembership (user_id);
-CREATE INDEX I_MMBRSHP_RIGHTEND1 ON UMembership (group_id);
-CREATE INDEX I_UPLNTTR_MEMBERSHIP ON UPlainAttr (MEMBERSHIP_ID);
-CREATE INDEX I_UPLNTTR_OWNER ON UPlainAttr (OWNER_ID);
-CREATE INDEX I_UPLNTTR_SCHEMA ON UPlainAttr (schema_id);
-CREATE INDEX I_PLNTQVL_ATTRIBUTE1 ON UPlainAttrUniqueValue (ATTRIBUTE_ID);
-CREATE INDEX I_PLNTQVL_SCHEMA1 ON UPlainAttrUniqueValue (schema_id);
-CREATE INDEX I_PLNTRVL_ATTRIBUTE1 ON UPlainAttrValue (ATTRIBUTE_ID);
-CREATE INDEX I_RLTNSHP_LEFTEND1 ON URelationship (user_id);
-CREATE INDEX I_RLTNSHP_RIGHTEND1 ON URelationship (anyObject_id);
-CREATE INDEX I_RLTNSHP_TYPE1 ON URelationship (TYPE_ID);
-CREATE INDEX I_VIRSCHM_ANYTYPECLASS ON VirSchema (ANYTYPECLASS_ID);
-CREATE INDEX I_VIRSCHM_PROVISION ON VirSchema (PROVISION_ID);
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/client/cli/src/test/resources/test.properties
----------------------------------------------------------------------
diff --git a/client/cli/src/test/resources/test.properties b/client/cli/src/test/resources/test.properties
deleted file mode 100644
index 77028b1..0000000
--- a/client/cli/src/test/resources/test.properties
+++ /dev/null
@@ -1,17 +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.
-testClasses=${project.build.directory}/test-classes
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/migration/pom.xml
----------------------------------------------------------------------
diff --git a/core/migration/pom.xml b/core/migration/pom.xml
deleted file mode 100644
index dcca9d3..0000000
--- a/core/migration/pom.xml
+++ /dev/null
@@ -1,63 +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.
--->
-<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-core</artifactId>
- <version>2.1.0-SNAPSHOT</version>
- </parent>
-
- <name>Apache Syncope Core Migration</name>
- <description>Apache Syncope Core Migration</description>
- <groupId>org.apache.syncope.core</groupId>
- <artifactId>syncope-core-migration</artifactId>
- <packaging>jar</packaging>
-
- <properties>
- <rootpom.basedir>${basedir}/../..</rootpom.basedir>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.syncope.core</groupId>
- <artifactId>syncope-core-provisioning-java</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <build>
- <resources>
- <resource>
- <directory>${basedir}/src/main/resources</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
-
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-checkstyle-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java
----------------------------------------------------------------------
diff --git a/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java b/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java
deleted file mode 100644
index 00cf2e9..0000000
--- a/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java
+++ /dev/null
@@ -1,137 +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.migration;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import org.apache.syncope.common.lib.to.AnyTO;
-import org.apache.syncope.common.lib.to.EntityTO;
-import org.apache.syncope.common.lib.to.GroupTO;
-import org.apache.syncope.common.lib.to.UserTO;
-import org.apache.syncope.common.lib.types.CipherAlgorithm;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.entity.user.User;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningProfile;
-import org.apache.syncope.core.provisioning.api.pushpull.ProvisioningReport;
-import org.apache.syncope.core.provisioning.java.job.SetUMembershipsJob;
-import org.apache.syncope.core.provisioning.java.pushpull.SchedulingPullActions;
-import org.identityconnectors.common.security.GuardedString;
-import org.identityconnectors.common.security.SecurityUtil;
-import org.identityconnectors.framework.common.objects.Attribute;
-import org.identityconnectors.framework.common.objects.AttributeUtil;
-import org.identityconnectors.framework.common.objects.SyncDelta;
-import org.quartz.JobExecutionException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-
-public class MigrationPullActions extends SchedulingPullActions {
-
- private static final Logger LOG = LoggerFactory.getLogger(MigrationPullActions.class);
-
- private static final String CIPHER_ALGORITHM_ATTR = "cipherAlgorithm";
-
- private static final String RESOURCES_ATTR = "__RESOURCES__";
-
- private static final String MEMBERSHIPS_ATTR = "__MEMBERSHIPS__";
-
- @Autowired
- private UserDAO userDAO;
-
- private final Map<String, Set<String>> memberships = new HashMap<>();
-
- @Override
- public void beforeProvision(
- final ProvisioningProfile<?, ?> profile,
- final SyncDelta delta,
- final EntityTO entity) throws JobExecutionException {
-
- // handles resource assignment, for users and groups
- Attribute resourcesAttr = delta.getObject().getAttributeByName(RESOURCES_ATTR);
- if (entity instanceof AnyTO && resourcesAttr != null
- && resourcesAttr.getValue() != null && !resourcesAttr.getValue().isEmpty()) {
-
- ((AnyTO) entity).getResources().addAll(
- resourcesAttr.getValue().stream().map(Object::toString).collect(Collectors.toList()));
- }
- }
-
- @Transactional
- @Override
- public void after(
- final ProvisioningProfile<?, ?> profile, final SyncDelta delta, final EntityTO entity,
- final ProvisioningReport result)
- throws JobExecutionException {
-
- if (entity instanceof UserTO) {
- // handles ciphered password import
- CipherAlgorithm cipherAlgorithm = null;
- Attribute cipherAlgorithmAttr = delta.getObject().getAttributeByName(CIPHER_ALGORITHM_ATTR);
- if (cipherAlgorithmAttr != null
- && cipherAlgorithmAttr.getValue() != null && !cipherAlgorithmAttr.getValue().isEmpty()) {
-
- cipherAlgorithm = CipherAlgorithm.valueOf(cipherAlgorithmAttr.getValue().get(0).toString());
- }
-
- GuardedString passwordValue = AttributeUtil.getPasswordValue(delta.getObject().getAttributes());
-
- if (cipherAlgorithm != null && passwordValue != null) {
- User user = userDAO.find(entity.getKey());
- LOG.debug("Setting encoded password for {}", user);
- user.setEncodedPassword(SecurityUtil.decrypt(passwordValue), cipherAlgorithm);
- }
- } else if (entity instanceof GroupTO) {
- // handles group membership
- Attribute membershipsAttr = delta.getObject().getAttributeByName(MEMBERSHIPS_ATTR);
- if (membershipsAttr != null
- && membershipsAttr.getValue() != null && !membershipsAttr.getValue().isEmpty()) {
-
- LOG.debug("Found {} for group {}", MEMBERSHIPS_ATTR, entity.getKey());
-
- for (Object membership : membershipsAttr.getValue()) {
- User member = userDAO.findByUsername(membership.toString());
- if (member == null) {
- LOG.warn("Could not find member {} for group {}", membership, entity.getKey());
- } else {
- Set<String> memb = memberships.get(member.getKey());
- if (memb == null) {
- memb = new HashSet<>();
- memberships.put(member.getKey(), memb);
- }
- memb.add(entity.getKey());
- }
- }
- }
- } else {
- super.after(profile, delta, entity, result);
- }
- }
-
- @Override
- public void afterAll(final ProvisioningProfile<?, ?> profile) throws JobExecutionException {
- Map<String, Object> jobMap = new HashMap<>();
- jobMap.put(SetUMembershipsJob.MEMBERSHIPS_KEY, memberships);
- schedule(SetUMembershipsJob.class, jobMap);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/migration/src/main/resources/scripted/SchemaScript.groovy
----------------------------------------------------------------------
diff --git a/core/migration/src/main/resources/scripted/SchemaScript.groovy b/core/migration/src/main/resources/scripted/SchemaScript.groovy
deleted file mode 100644
index 8a009a2..0000000
--- a/core/migration/src/main/resources/scripted/SchemaScript.groovy
+++ /dev/null
@@ -1,108 +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.
- */
-import groovy.sql.Sql;
-import org.identityconnectors.common.security.GuardedString;
-import org.identityconnectors.framework.common.objects.AttributeInfo;
-import org.identityconnectors.framework.common.objects.AttributeInfo.Flags;
-import org.identityconnectors.framework.common.objects.AttributeInfoBuilder;
-import org.identityconnectors.framework.common.objects.ObjectClassInfo;
-import org.identityconnectors.framework.common.objects.ObjectClassInfoBuilder;
-
-// Parameters:
-// The connector sends the following:
-// connection: handler to the SQL connection
-// action: a string describing the action ("SCHEMA" here)
-// log: a handler to the Log facility
-// builder: SchemaBuilder instance for the connector
-//
-// The connector will make the final call to builder.build()
-// so the scipt just need to declare the different object types.
-
-def getAIB(it) {
- aib = new AttributeInfoBuilder(it.NAME);
-
- switch(it.TYPE) {
- case "String":
- case "Date":
- case "Enum":
- aib.setType(String.class);
- break;
-
- case "Long":
- aib.setType(Long.class);
- break;
-
- case "Double":
- aib.setType(Double.class);
- break;
-
- case "Boolean":
- aib.setType(Boolean.class);
- break;
-
- case "Encrypted":
- aib.setType(GuardedString.class);
-
- case "Binary":
- aib.setType(byte[].class);
- }
-
- if (it.MULTIVALUE == 1) {
- aib.setMultiValued(true);
- }
-
- if (it.MANDATORYCONDITION == "true") {
- aib.setRequired(true);
- }
-
- return aib;
-}
-
-log.ok("Entering " + action + " script");
-
-// User
-idAIB = new AttributeInfoBuilder("USERNAME", String.class);
-idAIB.setRequired(true);
-
-userAI = new HashSet<AttributeInfo>();
-userAI.add(idAIB.build());
-
-def sql = new Sql(connection);
-sql.eachRow("SELECT NAME, TYPE, MULTIVALUE, MANDATORYCONDITION FROM USCHEMA", {
- userAI.add(getAIB(it).build());
- });
-
-ObjectClassInfo userCI = new ObjectClassInfoBuilder().setType("__ACCOUNT__").addAllAttributeInfo(userAI).build();
-builder.defineObjectClass(userCI);
-
-// Group
-idAIB = new AttributeInfoBuilder("NAME", String.class);
-idAIB.setRequired(true);
-
-roleAI = new HashSet<AttributeInfo>();
-roleAI.add(idAIB.build());
-
-sql.eachRow("SELECT NAME, TYPE, MULTIVALUE, MANDATORYCONDITION FROM RSCHEMA", {
- roleAI.add(getAIB(it).build());
- });
-
-ObjectClassInfo roleCI = new ObjectClassInfoBuilder().setType("__GROUP__").addAllAttributeInfo(roleAI).build();
-builder.defineObjectClass(roleCI);
-
-log.ok(action + " script done");
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/migration/src/main/resources/scripted/SearchScript.groovy
----------------------------------------------------------------------
diff --git a/core/migration/src/main/resources/scripted/SearchScript.groovy b/core/migration/src/main/resources/scripted/SearchScript.groovy
deleted file mode 100644
index 298dc93..0000000
--- a/core/migration/src/main/resources/scripted/SearchScript.groovy
+++ /dev/null
@@ -1,191 +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.
- */
-import groovy.sql.Sql;
-import org.identityconnectors.framework.common.objects.OperationOptions;
-import org.identityconnectors.common.security.GuardedString;
-
-// Parameters:
-// The connector sends the following:
-// connection: handler to the SQL connection
-// objectClass: a String describing the Object class (__ACCOUNT__ / __GROUP__ / other)
-// action: a string describing the action ("SEARCH" here)
-// log: a handler to the Log facility
-// options: a handler to the OperationOptions Map
-// query: a handler to the Query Map
-//
-// The Query map describes the filter used.
-//
-// query = [ operation: "CONTAINS", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "ENDSWITH", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "STARTSWITH", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "EQUALS", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "GREATERTHAN", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "GREATERTHANOREQUAL", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "LESSTHAN", left: attribute, right: "value", not: true/false ]
-// query = [ operation: "LESSTHANOREQUAL", left: attribute, right: "value", not: true/false ]
-// query = null : then we assume we fetch everything
-//
-// AND and OR filter just embed a left/right couple of queries.
-// query = [ operation: "AND", left: query1, right: query2 ]
-// query = [ operation: "OR", left: query1, right: query2 ]
-//
-// Returns: A list of Maps. Each map describing one row.
-// !!!! Each Map must contain a '__UID__' and '__NAME__' attribute.
-// This is required to build a ConnectorObject.
-
-def addAttributes(it, withValues) {
- value = it.stringValue;
- if (value == null) {
- value = it.longValue;
- }
- if (value == null) {
- value = it.doubleValue;
- }
- if (value == null) {
- if (it.dateValue instanceof java.sql.Timestamp) {
- value = new Date(it.dateValue.getTime()).format("yyyy-MM-dd HH:mm:ss");
- }
- }
- if (value == null) {
- value = it.booleanValue;
- }
-
- if (options[OperationOptions.OP_ATTRIBUTES_TO_GET].contains(it.schema_name)) {
- item.put(it.schema_name, value);
- withValues.add(it.schema_name);
- }
-}
-
-log.ok("Entering " + action + " script");
-
-def sql = new Sql(connection);
-def result = []
-
-def queryAppend = "";
-def pageSize = options[OperationOptions.OP_PAGE_SIZE];
-if (pageSize) {
- queryAppend += " LIMIT " + pageSize;
-}
-def pagedResultsCookie = options[OperationOptions.OP_PAGED_RESULTS_COOKIE];
-if (pagedResultsCookie) {
- queryAppend += " OFFSET " + pagedResultsCookie;
-}
-
-switch ( objectClass ) {
-case "__ACCOUNT__":
- sql.eachRow("SELECT * FROM USER_SEARCH" + queryAppend, {
- item = [
- __UID__: it.username,
- __NAME__: it.username,
- username: it.username,
- __PASSWORD__: new GuardedString(it.password.toCharArray()),
- cipherAlgorithm: it.cipherAlgorithm,
- __ENABLE__: it.suspended == 0
- ];
-
- withValues = ['__UID__', '__NAME__', '__PASSWORD__', 'cipherAlgorithm', '__ENABLE__', 'username'];
-
- sql.eachRow("SELECT * FROM USER_SEARCH_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
- sql.eachRow("SELECT * FROM USER_SEARCH_UNIQUE_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
-
- for (attr in options[OperationOptions.OP_ATTRIBUTES_TO_GET]) {
- if (!withValues.contains(attr)) {
- item.put(attr, null);
- }
- }
-
- resources = [];
- sql.eachRow("SELECT DISTINCT * FROM USER_SEARCH_RESOURCE WHERE subject_id = " + it.id, {
- resources.add(it.resource_name);
- });
- item.put('__RESOURCES__', resources);
-
- result.add(item)
- });
-
- if (result.size() == pageSize) {
- if (pagedResultsCookie == "") {
- pagedResultsCookie = pagedResultsCookie + result.size();
- } else {
- pagedResultsCookie = Integer.toString(pagedResultsCookie.toInteger() + result.size());
- }
- }
- break
-
-case "__GROUP__":
- sql.eachRow("SELECT * FROM ROLE_SEARCH" + queryAppend, {
- name = it.id + ' ' + it.name;
- item = [
- __UID__: name,
- __NAME__: name,
- __ENABLE__: true,
- name: name
- ];
-
- withValues = ['__UID__', '__NAME__', '__ENABLE__', 'name'];
-
- sql.eachRow("SELECT * FROM ROLE_SEARCH_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
- sql.eachRow("SELECT * FROM ROLE_SEARCH_UNIQUE_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
-
- for (attr in options[OperationOptions.OP_ATTRIBUTES_TO_GET]) {
- if (!withValues.contains(attr)) {
- item.put(attr, null);
- }
- }
-
- resources = [];
- sql.eachRow("SELECT DISTINCT * FROM ROLE_SEARCH_RESOURCE WHERE subject_id = " + it.id, {
- resources.add(it.resource_name);
- });
- item.put('__RESOURCES__', resources);
-
- memberships = [];
- sql.eachRow("SELECT u.username as username FROM USER_SEARCH_MEMBERSHIP usm, USER_SEARCH u "
- +"WHERE u.subject_id=usm.subject_id AND usm.role_id =" + it.id, {
- memberships.add(it.username);
- });
- item.put('__MEMBERSHIPS__', memberships);
-
- result.add(item)
- });
- break
-
-default:
- result;
-}
-
-log.ok(action + " script done");
-
-// ----------------
-// Add paged result cookie
-// ----------------
-def pagedResultCookieLine = [:]
-pagedResultCookieLine.put(OperationOptions.OP_PAGED_RESULTS_COOKIE, pagedResultsCookie);
-result.add(pagedResultCookieLine);
-// ----------------
-
-return result;
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/migration/src/main/resources/scripted/SyncScript.groovy
----------------------------------------------------------------------
diff --git a/core/migration/src/main/resources/scripted/SyncScript.groovy b/core/migration/src/main/resources/scripted/SyncScript.groovy
deleted file mode 100644
index 8bca313..0000000
--- a/core/migration/src/main/resources/scripted/SyncScript.groovy
+++ /dev/null
@@ -1,202 +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.
- */
-import groovy.sql.Sql;
-import org.identityconnectors.common.security.GuardedString
-
-// Parameters:
-// The connector sends the following:
-// connection: handler to the SQL connection
-// objectClass: a String describing the Object class (__ACCOUNT__ / __GROUP__ / other)
-// action: a string describing the action ("SYNC" or "GET_LATEST_SYNC_TOKEN" here)
-// log: a handler to the Log facility
-// options: a handler to the OperationOptions Map (null if action = "GET_LATEST_SYNC_TOKEN")
-// token: a handler to an Object representing the sync token (null if action = "GET_LATEST_SYNC_TOKEN")
-//
-//
-// Returns:
-// if action = "GET_LATEST_SYNC_TOKEN", it must return an object representing the last known
-// sync token for the corresponding ObjectClass
-//
-// if action = "SYNC":
-// A list of Maps . Each map describing one update:
-// Map should look like the following:
-//
-// [
-// "token": <Object> token object (could be Integer, Date, String) , [!! could be null]
-// "operation":<String> ("CREATE_OR_UPDATE"|"DELETE") will always default to CREATE_OR_DELETE ,
-// "uid":<String> uid (uid of the entry) ,
-// "previousUid":<String> prevuid (This is for rename ops) ,
-// "password":<String> password (optional... allows to pass clear text password if needed),
-// "attributes":Map<String,List> of attributes name/values
-// ]
-
-def addAttributes(it, withValues) {
- value = it.stringValue;
- if (value == null) {
- value = it.longValue;
- }
- if (value == null) {
- value = it.doubleValue;
- }
- if (value == null) {
- if (it.dateValue instanceof java.sql.Timestamp) {
- value = new Date(it.dateValue.getTime()).format("yyyy-MM-dd HH:mm:ss");
- }
- }
- if (value == null) {
- value = it.booleanValue;
- }
-
- if (options[OperationOptions.OP_ATTRIBUTES_TO_GET].contains(it.schema_name)) {
- attributes.put(it.schema_name, value);
- withValues.add(it.schema_name);
- }
-}
-
-log.ok("Entering " + action + " script");
-
-def sql = new Sql(connection);
-
-if (action.equalsIgnoreCase("GET_LATEST_SYNC_TOKEN")) {
- switch (objectClass) {
- case "__ACCOUNT__":
- row = sql.firstRow("SELECT lastChangeDate FROM USER_SEARCH ORDER BY lastChangeDate DESC");
- log.ok("Get Latest Sync Token script: last token is: " + row["lastChangeDate"])
- break;
-
- case "__GROUP__":
- row = sql.firstRow("SELECT lastChangeDate FROM ROLE_SEARCH ORDER BY lastChangeDate DESC");
- log.ok("Get Latest Sync Token script: last token is: " + row["lastChangeDate"])
- break;
-
- default:
- row = null;
- }
-
- return row == null ? null : row["lastChangeDate"].getTime();
-} else if (action.equalsIgnoreCase("SYNC")) {
- def result = [];
- def lastChangeDate = null;
- if (token == null) {
- lastChangeDate = new Date(0);
- } else {
- lastChangeDate = new Date(token);
- }
-
- switch (objectClass) {
- case "__ACCOUNT__":
- sql.eachRow("SELECT * FROM USER_SEARCH WHERE lastChangeDate > ${lastChangeDate}",
- {
- attributes = [
- __UID__: it.username,
- __NAME__: it.username,
- username: it.username,
- __PASSWORD__: new GuardedString(it.password.toCharArray()),
- cipherAlgorithm: it.cipherAlgorithm,
- __ENABLE__: it.suspended == 0
- ];
-
- withValues = ['__UID__', '__NAME__', '__PASSWORD__', 'cipherAlgorithm', '__ENABLE__', 'username'];
-
- sql.eachRow("SELECT * FROM USER_SEARCH_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
- sql.eachRow("SELECT * FROM USER_SEARCH_UNIQUE_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
-
- for (attr in options[OperationOptions.OP_ATTRIBUTES_TO_GET]) {
- if (!withValues.contains(attr)) {
- attributes.put(attr, null);
- }
- }
-
- resources = [];
- sql.eachRow("SELECT DISTINCT * FROM USER_SEARCH_RESOURCE WHERE subject_id = " + it.id, {
- resources.add(it.resource_name);
- });
- attributes.put('__RESOURCES__', resources);
-
- result.add([
- operation:"CREATE_OR_UPDATE",
- uid: it.username,
- token: it.lastChangeDate.getTime(),
- attributes: attributes
- ]);
- }
- )
- break;
-
- case "__GROUP__":
- sql.eachRow("SELECT * FROM ROLE_SEARCH WHERE lastChangeDate > ${lastChangeDate}",
- {
- name = it.id + ' ' + it.name;
- attributes = [
- __UID__: name,
- __NAME__: name,
- __ENABLE__: true,
- name: name
- ];
-
- withValues = ['__UID__', '__NAME__', '__ENABLE__', 'name'];
-
- sql.eachRow("SELECT * FROM ROLE_SEARCH_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
- sql.eachRow("SELECT * FROM ROLE_SEARCH_UNIQUE_ATTR WHERE subject_id = " + it.id, {
- addAttributes(it, withValues);
- });
-
- for (attr in options[OperationOptions.OP_ATTRIBUTES_TO_GET]) {
- if (!withValues.contains(attr)) {
- attributes.put(attr, null);
- }
- }
-
- resources = [];
- sql.eachRow("SELECT DISTINCT * FROM ROLE_SEARCH_RESOURCE WHERE subject_id = " + it.id, {
- resources.add(it.resource_name);
- });
- attributes.put('__RESOURCES__', resources);
-
- memberships = [];
- sql.eachRow("SELECT u.username as username FROM USER_SEARCH_MEMBERSHIP usm, USER_SEARCH u "
- +"WHERE u.subject_id=usm.subject_id AND usm.role_id =" + it.id, {
- memberships.add(it.username);
- });
- item.put('__MEMBERSHIPS__', memberships);
-
- result.add([
- operation:"CREATE_OR_UPDATE",
- uid: name,
- token: it.lastChangeDate.getTime(),
- attributes: attributes
- ]);
- }
- )
- break;
- }
-
- log.ok("Sync script: found " + result.size() + " events to sync");
- return result;
-} else {
- log.error("Sync script: action '" + action + "' is not implemented in this script");
- return null;
-}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/migration/src/main/resources/scripted/TestScript.groovy
----------------------------------------------------------------------
diff --git a/core/migration/src/main/resources/scripted/TestScript.groovy b/core/migration/src/main/resources/scripted/TestScript.groovy
deleted file mode 100644
index 3bd25bd..0000000
--- a/core/migration/src/main/resources/scripted/TestScript.groovy
+++ /dev/null
@@ -1,32 +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.
- */
-import groovy.sql.Sql;
-
-// Parameters:
-// The connector sends the following:
-// connection: handler to the SQL connection
-// action: a string describing the action ("TEST" here)
-// log: a handler to the Log facility
-
-log.ok("Entering " + action + " script");
-
-def sql = new Sql(connection);
-sql.eachRow("SELECT COUNT(*) AS TEST FROM USER_SEARCH", { println it.TEST});
-
-log.ok(action + " script done");
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/persistence-jpa/pom.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml
index 6d3539c..5721046 100644
--- a/core/persistence-jpa/pom.xml
+++ b/core/persistence-jpa/pom.xml
@@ -226,7 +226,35 @@ under the License.
</plugin>
</plugins>
</build>
+ </profile>
+
+ <profile>
+ <id>schemagen</id>
+
+ <properties>
+ <skipTests>true</skipTests>
+ </properties>
+
+ <build>
+ <defaultGoal>clean verify</defaultGoal>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa-maven-plugin</artifactId>
+ <inherited>true</inherited>
+ <executions>
+ <execution>
+ <id>schemagen</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>schema</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</profile>
</profiles>
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index 922c2d4..3ed1193 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -87,7 +87,7 @@ under the License.
<module>workflow-flowable</module>
<module>logic</module>
<module>rest-cxf</module>
- <module>migration</module>
+ <module>upgrade</module>
</modules>
</project>
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
index 5cb8e11..b62ff33 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/SetUMembershipsJob.java
@@ -48,40 +48,38 @@ public class SetUMembershipsJob extends AbstractInterruptableJob {
@Override
public void execute(final JobExecutionContext context) throws JobExecutionException {
try {
- AuthContextUtils.execWithAuthContext(context.getMergedJobDataMap().getString(JobManager.DOMAIN_KEY),
- () -> {
- @SuppressWarnings("unchecked")
- Map<String, Set<String>> memberships =
+ AuthContextUtils.execWithAuthContext(
+ context.getMergedJobDataMap().getString(JobManager.DOMAIN_KEY), () -> {
+
+ @SuppressWarnings("unchecked")
+ Map<String, Set<String>> memberships =
(Map<String, Set<String>>) context.getMergedJobDataMap().get(MEMBERSHIPS_KEY);
- LOG.debug("About to set memberships (User -> Groups) {}", memberships);
+ LOG.debug("About to set memberships (User -> Groups) {}", memberships);
- memberships.entrySet().stream().map(membership -> {
- UserPatch userPatch = new UserPatch();
- userPatch.setKey(membership.getKey());
- membership.getValue().forEach(groupKey -> {
- userPatch.getMemberships().add(
- new MembershipPatch.Builder().
- operation(PatchOperation.ADD_REPLACE).
- group(groupKey).
- build());
- });
- return userPatch;
- }).filter(userPatch -> (!userPatch.isEmpty())).
- map((userPatch) -> {
- LOG.debug("About to update User {}", userPatch.getKey());
- return userPatch;
- }).
- forEachOrdered((userPatch) -> {
- userProvisioningManager.update(userPatch, true);
- });
+ memberships.forEach((user, groups) -> {
+ UserPatch userPatch = new UserPatch();
+ userPatch.setKey(user);
- return null;
+ groups.forEach(group -> {
+ userPatch.getMemberships().add(
+ new MembershipPatch.Builder().
+ operation(PatchOperation.ADD_REPLACE).
+ group(group).
+ build());
});
+
+ if (!userPatch.isEmpty()) {
+ LOG.debug("About to update User {}", userPatch.getKey());
+ userProvisioningManager.update(userPatch, true);
+ }
+ });
+
+ return null;
+ });
} catch (RuntimeException e) {
LOG.error("While setting memberships", e);
throw new JobExecutionException("While executing memberships", e);
}
}
-
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/LICENSE
----------------------------------------------------------------------
diff --git a/core/upgrade/LICENSE b/core/upgrade/LICENSE
new file mode 100644
index 0000000..7ca3dd8
--- /dev/null
+++ b/core/upgrade/LICENSE
@@ -0,0 +1,237 @@
+
+ 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 SERP (http://serp.sourceforge.net/):
+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.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/NOTICE
----------------------------------------------------------------------
diff --git a/core/upgrade/NOTICE b/core/upgrade/NOTICE
new file mode 100644
index 0000000..bc96f07
--- /dev/null
+++ b/core/upgrade/NOTICE
@@ -0,0 +1,18 @@
+Apache Syncope
+Copyright 2012-2018 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 SERP Project.
+Copyright (c) 2002-2007, A. Abram White http://serp.sourceforge.net/
+All rights reserved.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/pom.xml
----------------------------------------------------------------------
diff --git a/core/upgrade/pom.xml b/core/upgrade/pom.xml
new file mode 100644
index 0000000..954e8ba
--- /dev/null
+++ b/core/upgrade/pom.xml
@@ -0,0 +1,152 @@
+<?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 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-core</artifactId>
+ <version>2.1.0-SNAPSHOT</version>
+ </parent>
+
+ <name>Apache Syncope Core Upgrade</name>
+ <description>Apache Syncope Core Upgrade</description>
+ <groupId>org.apache.syncope.core</groupId>
+ <artifactId>syncope-core-upgrade</artifactId>
+ <packaging>jar</packaging>
+
+ <properties>
+ <rootpom.basedir>${basedir}/../..</rootpom.basedir>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.openjpa</groupId>
+ <artifactId>openjpa-jdbc</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-databind</artifactId>
+ </dependency>
+
+ <!-- TEST -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <resources>
+ <resource>
+ <directory>${basedir}/src/main/resources</directory>
+ </resource>
+ <resource>
+ <directory>${basedir}</directory>
+ <targetPath>META-INF</targetPath>
+ <includes>
+ <include>LICENSE</include>
+ <include>NOTICE</include>
+ </includes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>${basedir}/src/test/resources</directory>
+ </testResource>
+ </testResources>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <appendAssemblyId>false</appendAssemblyId>
+ <descriptors>
+ <descriptor>src/assemble/upgrade-zip.xml</descriptor>
+ </descriptors>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make-cli-zip</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-checkstyle-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>apache-release</id>
+
+ <build>
+ <plugins>
+ <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>
+ </profile>
+ </profiles>
+</project>
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/assemble/upgrade-zip.xml
----------------------------------------------------------------------
diff --git a/core/upgrade/src/assemble/upgrade-zip.xml b/core/upgrade/src/assemble/upgrade-zip.xml
new file mode 100644
index 0000000..d39fb6c
--- /dev/null
+++ b/core/upgrade/src/assemble/upgrade-zip.xml
@@ -0,0 +1,62 @@
+<?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.
+-->
+<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
+ http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+
+ <id>cli</id>
+
+ <formats>
+ <format>zip</format>
+ </formats>
+
+ <includeBaseDirectory>false</includeBaseDirectory>
+
+ <fileSets>
+ <fileSet>
+ <directory>${basedir}</directory>
+ <includes>
+ <include>LICENSE</include>
+ <include>NOTICE</include>
+ </includes>
+ <outputDirectory>${project.build.finalName}</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>${project.build.directory}/classes</directory>
+ <includes>
+ <include>syncopeupgrade.sh</include>
+ <include>syncopeupgrade.bat</include>
+ </includes>
+ <outputDirectory>${project.build.finalName}</outputDirectory>
+ <fileMode>0755</fileMode>
+ </fileSet>
+ </fileSets>
+
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>${project.build.finalName}/lib</outputDirectory>
+ <useProjectArtifact>true</useProjectArtifact>
+ <unpack>false</unpack>
+ <scope>runtime</scope>
+ </dependencySet>
+ </dependencySets>
+
+</assembly>
[2/9] syncope git commit: [SYNCOPE-1024] New 'upgrade' module ready
with tests, old 'migration' removed
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/core/upgrade/src/test/resources/testJDBCEnv.xml
----------------------------------------------------------------------
diff --git a/core/upgrade/src/test/resources/testJDBCEnv.xml b/core/upgrade/src/test/resources/testJDBCEnv.xml
new file mode 100644
index 0000000..daa2597
--- /dev/null
+++ b/core/upgrade/src/test/resources/testJDBCEnv.xml
@@ -0,0 +1,63 @@
+<?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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <bean id="driverClassName" class="java.lang.String">
+ <constructor-arg value="org.h2.Driver"/>
+ </bean>
+ <bean id="jdbcURL" class="java.lang.String">
+ <constructor-arg value="jdbc:h2:mem:syncopedb;DB_CLOSE_DELAY=-1"/>
+ </bean>
+ <bean id="username" class="java.lang.String">
+ <constructor-arg value="sa"/>
+ </bean>
+ <bean id="password" class="java.lang.String">
+ <constructor-arg value="sa"/>
+ </bean>
+
+ <bean id="syncope20DataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+ <property name="driverClassName" ref="driverClassName"/>
+ <property name="url" ref="jdbcURL"/>
+ <property name="username" ref="username"/>
+ <property name="password" ref="password"/>
+ </bean>
+
+ <bean id="syncope20DataSourceInit" class="org.springframework.jdbc.datasource.init.DataSourceInitializer">
+ <property name="dataSource" ref="syncope20DataSource"/>
+ <property name="databasePopulator">
+ <bean class="org.springframework.jdbc.datasource.init.ResourceDatabasePopulator">
+ <property name="continueOnError" value="true"/>
+ <property name="ignoreFailedDrops" value="true"/>
+ <property name="sqlScriptEncoding" value="UTF-8"/>
+ <property name="scripts">
+ <array>
+ <value type="org.springframework.core.io.Resource">
+ classpath:/syncopedb20.sql
+ </value>
+ </array>
+ </property>
+ </bean>
+ </property>
+ </bean>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/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 be92fac..3c7df2d 100644
--- a/src/main/asciidoc/getting-started/obtain.adoc
+++ b/src/main/asciidoc/getting-started/obtain.adoc
@@ -33,7 +33,7 @@ First approach, especially with administration console and end-user; does not re
Getting ready in a few easy steps:
-. http://syncope.apache.org/downloads.html[download^] the standalone distribution
+. https://syncope.apache.org/downloads[download^] the standalone distribution
. unzip the distribution archive
. go into the created Apache Tomcat directory
. start Apache Tomcat
@@ -96,31 +96,23 @@ Getting up and running quickly on Debian / Ubuntu. +
*Difficult to extend beyond pre-sets.*
Download::
-http://syncope.apache.org/downloads.html[Download^] the latest .deb packages
+https://syncope.apache.org/downloads[Download^] the latest .deb packages
Prepare::
. Install Apache Tomcat 8
+
[source,bash]
-sudo apt-get install tomcat8
-+
-[WARNING]
-*Ubuntu LTS 14.04 LTS* does not provide the tomcat8 package by default: you will need instead to download and manually
-install the following packages (from Ubuntu 15.04):
-http://packages.ubuntu.com/wily/all/libecj-java/download[libecj-java]
-http://packages.ubuntu.com/wily/all/libtomcat8-java/download[libtomcat8-java]
-http://packages.ubuntu.com/wily/all/tomcat8-common/download[tomcat8-common]
-http://packages.ubuntu.com/wily/all/tomcat8/download[tomcat8]
+$ sudo apt-get install tomcat8
+
. Install PostgreSQL
+
[source,bash]
-sudo apt-get install libpostgresql-jdbc-java postgresql postgresql-client
+$ sudo apt-get install libpostgresql-jdbc-java postgresql postgresql-client
+
. Use the PostgreSQL JDBC driver with Tomcat
+
[source,bash]
-sudo ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/
+$ sudo ln -s /usr/share/java/postgresql-jdbc4.jar /usr/share/tomcat8/lib/
+
. Replace `JAVA_OPTS` in `/etc/default/tomcat8` with the following:
+
@@ -135,22 +127,22 @@ Install::
. Stop Tomcat
+
[source,bash]
-sudo service tomcat8 stop
+$ sudo service tomcat8 stop
+
. Install Apache Syncope core, console and enduser via the downloaded packages
+
[source,bash]
-sudo dpkg -i apache-syncope-*.deb
+$ sudo dpkg -i apache-syncope-*.deb
+
. Create a database for use with Apache Syncope
+
[source,bash]
-sudo SYNCOPE_USER="syncope" SYNCOPE_PASS="syncope" sh /usr/share/apache-syncope/dbinit-postgresql.sh
+$ sudo SYNCOPE_USER="syncope" SYNCOPE_PASS="syncope" sh /usr/share/apache-syncope/dbinit-postgresql.sh
+
. Start Tomcat
+
[source,bash]
-sudo service tomcat8 start
+$ sudo service tomcat8 start
[[deb-components]]
==== Components
@@ -232,7 +224,7 @@ of `$CATALINA_HOME/conf/tomcat-users.xml` looks like:
==== Usage
-Once http://syncope.apache.org/downloads.html[downloaded^], double-click the JAR file or execute via the command-line:
+Once https://syncope.apache.org/downloads[downloaded^], double-click the JAR file or execute via the command-line:
[source,bash]
java -jar syncope-installer-*-uber.jar
@@ -455,7 +447,7 @@ ifeval::["{snapshotOrRelease}" == "release"]
[subs="verbatim,attributes"]
----
-mvn archetype:generate \
+$ mvn archetype:generate \
-DarchetypeGroupId=org.apache.syncope \
-DarchetypeArtifactId=syncope-archetype \
-DarchetypeRepository=http://repo1.maven.org/maven2 \
@@ -468,7 +460,7 @@ ifeval::["{snapshotOrRelease}" == "snapshot"]
[subs="verbatim,attributes"]
----
-mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \
+$ mvn org.apache.maven.plugins:maven-archetype-plugin:2.4:generate \
-DarchetypeGroupId=org.apache.syncope \
-DarchetypeArtifactId=syncope-archetype \
-DarchetypeRepository=http://repository.apache.org/content/repositories/snapshots \
@@ -522,7 +514,7 @@ specified above) containing four modules: `common`, `core`, `console` and `endus
You are now able to perform the first build via
[source,bash]
-mvn clean install
+$ mvn clean install
After downloading all of the needed dependencies, three WAR files will be produced:
@@ -558,7 +550,7 @@ made are lost.
From the top-level directory of your project, execute:
[source,bash]
-mvn -P all clean install
+$ mvn -P all clean install
[WARNING]
====
@@ -578,7 +570,7 @@ endif::[]
then, from the `enduser` subdirectory, execute:
[source,bash]
-mvn -P embedded,all
+$ mvn -P embedded,all
===== Paths and Components
@@ -817,7 +809,7 @@ The Eclipse IDE plugin allows remote management of notification e-mail and repor
[[eclipseplugin-installation]]
==== Installation
-After http://syncope.apache.org/downloads.html[download^], start the most recent Eclipse IDE distribution then go to
+After https://syncope.apache.org/downloads[download^], start the most recent Eclipse IDE distribution then go to
`Help > Install New Software`:
image::eclipse01.png[eclipse01]
@@ -881,7 +873,7 @@ The Netbeans IDE plugin allows remote management of notification e-mail and repo
[[netbeansplugin-installation]]
==== Installation
-After http://syncope.apache.org/downloads.html[download^], start the most recent Netbeans IDE then go to
+After https://syncope.apache.org/downloads[download^], start the most recent Netbeans IDE then go to
`Tools > Plugins`:
image::netbeans01.png[netbeans01]
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/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 622f51f..e0088b5 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/customization.adoc
@@ -163,7 +163,7 @@ straightforward: just add the `<profile>` below to `enduser/pom.xml`:
Now, from the `enduser` subdirectory, execute:
[source,bash]
-mvn -P embedded,debug
+$ mvn -P embedded,debug
At this point your favourite IDE can be attached to the port `8000`.
====
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc
deleted file mode 100644
index c2241d2..0000000
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/migration.adoc
+++ /dev/null
@@ -1,259 +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.
-//
-=== Migration from Apache Syncope 1.2
-
-Apache Syncope 2.0 brings
-https://cwiki.apache.org/confluence/display/SYNCOPE/Jazz[several enhancements and new features^], compared to the 1.2 release.
-
-For this reason, it is not possible to _update_ an existing 1.2 deployment, rather it is necessary to _migrate_ the
-whole configuration, users and roles to a brand new 2.0 deployment.
-
-==== Preparation
-
-With reference to the
-ifeval::["{backend}" == "html5"]
-http://syncope.apache.org/docs/getting-started.html[Apache Syncope Getting Started Guide,]
-endif::[]
-ifeval::["{backend}" == "pdf"]
-http://syncope.apache.org/docs/getting-started.pdf[Apache Syncope Getting Started Guide,]
-endif::[]
-perform the following steps:
-
-. Install the CLI application
-. Create a new Maven project for Apache Syncope 2.0 and then add the following dependency to `core/pom.xml`
-
-[source,xml,subs="verbatim,attributes"]
-----
-<dependency>
- <groupId>org.apache.syncope.core</groupId>
- <artifactId>syncope-core-migration</artifactId>
- <version>{docVersion}</version>
-</dependency>
-----
-
-==== Migrate configuration
-
-[discrete]
-===== Export configuration from 1.2
-
-First, export the configuration from the 1.2 deployment via
-
-....
-curl -X GET -u username:password -o content.xml protocol://host:port/syncope/rest/configurations/stream
-....
-
-where `username`, `password`, `protocol`, `host` and `port` reflect the Java EE container installation for the 1.2
-deployment. +
-The configuration of the 1.2 deployment is now in the `content.xml` file.
-
-[discrete]
-===== Obtain configuration file for 2.0
-
-Now process the exported configuration of the 1.2 deployment to obtain a basic 2.0 configuration, by invoking the CLI as
-follows:
-
-.On GNU / Linux - Mac OS X
-....
-./syncopeadm.sh migrate --conf /path/to/content.xml /dest/path/to/MasterContent.xml
-....
-
-.On Windows
-....
-syncopeadm.bat migrate --conf \path\to\content.xml \dest\path\to\MasterContent.xml
-....
-
-The result of this invocation is the generated `MasterContent.xml` file and possibly an output message such as the following:
-
-....
-You are running: migrate --conf /path/to/content.xml /dest/path/to/MasterContent.xml
-
-Virtual items, require manual intervention:
-<?xml version='1.0' encoding='UTF-8'?><dataset>
- <VirSchema key="virtualdata"/>
- <VirSchema key="virtualPropagation"/>
- <VirSchema key="rvirtualdata"/>
- <VirSchema key="mvirtualdata"/>
- <VirSchema READONLY="1" key="virtualReadOnly"/>
- <MappingItem extAttrName="name" mapping_id="1" intAttrName="virtualdata"
- mandatoryCondition="type == 'F'" password="0" purpose="BOTH"/>
- <MappingItem password="0" mapping_id="11" extAttrName="givenname"
- intAttrName="virtualReadOnly" mandatoryCondition="false" purpose="BOTH"/>
- <MappingItem password="0" mapping_id="11" extAttrName="givenname"
- intAttrName="virtualPropagation" mandatoryCondition="false" purpose="BOTH"/>
- <MappingItem extAttrName="businessCategory" mapping_id="1"
- intAttrName="rvirtualdata" mandatoryCondition="false" password="0" purpose="BOTH"/>
- <MappingItem mapping_id="17" password="0" extAttrName="USERNAME"
- intAttrName="virtualdata" mandatoryCondition="false" purpose="BOTH"/>
- <MappingItem mapping_id="17" password="0" extAttrName="SURNAME"
- intAttrName="virtualPropagation" mandatoryCondition="false" purpose="BOTH"/>
-</dataset>
-
-
- - Migration completed; file successfully created under /dest/path/to/MasterContent.xml
-....
-
-<<virtual,Virtual schemas>> and associated <<mapping,mapping>> cannot be automatically migrated: take note of the
-message above for further operations.
-
-[discrete]
-===== Finalize configuration for 2.0
-
-After putting the generated `MasterContent.xml` file under the `core/src/test/resources/domains` folder in the new 2.0
-Maven project, build and start in embedded mode, while always watching the log files under:
-
-* `core/target/log/`
-* `console/target/log/`
-* `enduser/target/log/`
-
-If errors are found, make appropriate corrections into `core/src/test/resources/domains/MasterContent.xml` - this might
-involve migrating custom classes originally developed for 1.2 into their respective
-<<customization-core,2.0 counterparts>>.
-
-When no exceptions are reported in the logs, log into the admin console and check if all configuration items
-(schema definitions, external resources, notifications, ...) were correctly migrated. If anything is missing, take care
-to re-add them manually.
-
-If using delegated administration under 1.2, reconstruct <<roles,roles>> and <<entitlements,entitlements>> under the
-new security model.
-
-Now, define the virtual schema and mapping items according to the output message obtained above when invoking the
-CLI.
-
-[WARNING]
-If making modifications via the admin console, do not forget to <<deal-with-internal-storage-export-import,export>>
-the updated configuration before shutting down the embedded mode, then use the downloaded file to update
-`core/src/test/resources/domains/MasterContent.xml`.
-
-Finally, verify that all operations (create, update, delete, propagate, sync / push) about users and roles used in the
-1.2 deployment are working fine (create, update, delete, propagate, pull / push) with users and groups in the 2.0
-Maven project.
-
-When everything works as expected, <<deal-with-internal-storage-export-import,export>>
-the updated configuration before shutting down the embedded mode and use the downloaded file to update both
-`core/src/main/resources/domains/MasterContent.xml` and `core/src/test/resources/domains/MasterContent.xml`.
-
-==== Migrate users and roles
-
-After deploying the 2.0 Maven project into one of supported <<javaee-container,Java EE containers>>, with internal
-storage set to one of supported <<dbms,DBMSes>>, ensure that the 1.2 deployment's internal storage DBMS is reachable.
-
-The steps below are to be performed on the 2.0 deployment.
-
-[discrete]
-===== Define migration <<anytypeclass>>
-
-Create the following <<plain,plain schemas>>:
-
-. `migrationCipherAlgorithm` - string, read-only
-. `migrationResources` - string, multi-value, read-only
-. `migrationMemberships` - string, multi-value, read-only
-
-Then, define the `migration` AnyTypeClass and assign the three plain schemas above.
-
-[discrete]
-===== Create migration <<connector-instance-details,Connector>>
-
-Create an instance of the https://connid.atlassian.net/wiki/display/BASE/Scripted+SQL[Scripted SQL^] bundle:
-
-. set connection details to the 1.2 deployment's internal storage DBMS
-. download the Groovy
-ifeval::["{snapshotOrRelease}" == "release"]
-https://github.com/apache/syncope/tree/syncope-{docVersion}/core/migration/src/main/resources/scripted[scripts^]
-endif::[]
-ifeval::["{snapshotOrRelease}" == "snapshot"]
-https://github.com/apache/syncope/tree/master/core/migration/src/main/resources/scripted[scripts^]
-endif::[]
-and configure accordingly
-. assign the `SEARCH` and `SYNC` capabilities
-
-[discrete]
-===== Create migration <<external-resource-details,External Resource>> and <<mapping>>
-
-Create an External Resource for the Connector created above, and set the <<provision,provisioning>> rules for:
-
-* `USER` as `\\__ACCOUNT__`, with at least the following mapping:
-|===
-| Internal Attribute | External Attribute | Other
-
-| `username`
-| `username`
-| flagged as remote key, mandatory, purpose: `PULL`
-
-| `password`
-|
-| flagged as password, mandatory, purpose: `PULL`
-
-| `migrationCipherAlgorithm`
-| `cipherAlgorithm`
-| mandatory, purpose: `PULL`
-
-| `migrationResources`
-| `\\__RESOURCES__`
-| purpose: `PULL`
-
-|===
-* `GROUP` as `\\__GROUP__`, with at least the following mapping:
-|===
-| Internal Attribute | External Attribute | Other
-
-| `name`
-| `name`
-| flagged as remote key, mandatory, purpose: `PULL`
-
-| `migrationResources`
-| `\\__RESOURCES__`
-| purpose: `PULL`
-
-| `migrationMemberships`
-| `\\__MEMBERSHIPS__`
-| mandatory, purpose: `PULL`
-
-|===
-
-[WARNING]
-More attributes should be added to the mapping information in order to pull values from the 1.2 deployments.
-
-[discrete]
-===== Setup migration <<tasks-pull,Pull Task>>
-
-Setup a pull task for the External Resource created above, set it for `FULL_RECONCILIATION` <<pull-mode,mode>> and
-configure the
-ifeval::["{snapshotOrRelease}" == "release"]
-https://github.com/apache/syncope/blob/syncope-{docVersion}/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^]
-endif::[]
-ifeval::["{snapshotOrRelease}" == "snapshot"]
-https://github.com/apache/syncope/blob/master/core/migration/src/main/java/org/apache/syncope/core/migration/MigrationPullActions.java[MigrationPullActions^]
-endif::[]
-class among <<pullactions>>.
-
-[discrete]
-===== Migrate
-
-Before actual migration, use the admin console features to explore the External Resource and check that all expected
-information is reported.
-
-Another check to perform is to run the pull task set up above with the <<dryrun,DryRun>> option and watch the execution
-results.
-
-Finally, execute the pull task and check the execution results.
-
-[TIP]
-If the number of users and roles to import from the 1.2 deployment is high, it is suggested to change the pull mode to
-`FILTERED_RECONCILIATION` for a relevant subset of entities to migrate, check the results and eventually switch back
-to `FULL_RECONCILIATION`.
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/flowablemodeler.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/flowablemodeler.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/flowablemodeler.adoc
index f7ff238..6cf0e68 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/flowablemodeler.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/systemadministration/flowablemodeler.adoc
@@ -38,7 +38,7 @@ endif::[]
then build via
....
-mvn -P all clean install
+$ mvn -P all clean install
....
At this point, copy the `console/target/flowable-modeler/` directory in the desired location of the host where the
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/src/main/asciidoc/reference-guide/workingwithapachesyncope/upgrade.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/upgrade.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/upgrade.adoc
new file mode 100644
index 0000000..f38daed
--- /dev/null
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/upgrade.adoc
@@ -0,0 +1,53 @@
+//
+// 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.
+//
+=== Upgrade from Apache Syncope 2.0
+
+Upgrading an existing Apache Syncope 2.0 deployment involves at least the following steps:
+
+. upgrade Core, Console and Enduser according to the latest
+https://cwiki.apache.org/confluence/display/SYNCOPE/Fusion[release notes^] available
+
+. full backup of existing DBMS used as <<persistence,internal storage>> for Apache Syncope 2.0 Core
+
+. https://syncope.apache.org/downloads[download^] and run the upgrade tool, which will generate the full set of SQL
+statements required to upgrade the internal storage to 2.1
+ .. once uncompressed, you will find a `lib` directory and two scripts: `syncopeupgrade.sh` and `syncopeupgrade.bat`,
+which will be used depending on the operating system
+ .. copy the JDBC driver JAR file compatible with the internal storage into the `lib` directory
+ .. run the tool as follows:
++
+[source,bash]
+$ ./syncopeupgrade.sh org.postgresql.Driver \
+ jdbc:postgresql://localhost:5432/syncope syncope syncope postgres \
+ upgrade.sql
++
+assuming that:
+ * `org.postgresql.Driver` is the JDBC driver class name
+ * you have a PostgreSQL instance running on localhost, listening on its default port 5432 with a database
+`syncope` fully accessible by user `syncope` with password `syncope`
+ * SQL statements are generated onto the `upgrade.sql` file
+
+. shutdown the Java EE container running Apache Syncope 2.0 Core
+
+. execute the SQL statements as generated above against the internal storage: in case of errors, apply manual
+corrections until everything runs clear; consider to restore from the backup taken above if needed, before executing
+the updated SQL statements again
+
+. after deploying Apache Syncope 2.1, start the Java EE container of Apache Syncope 2.1 Core and watch the log files
+to check for any error
http://git-wip-us.apache.org/repos/asf/syncope/blob/027b6bdf/src/main/asciidoc/reference-guide/workingwithapachesyncope/workingwithapachesyncope.adoc
----------------------------------------------------------------------
diff --git a/src/main/asciidoc/reference-guide/workingwithapachesyncope/workingwithapachesyncope.adoc b/src/main/asciidoc/reference-guide/workingwithapachesyncope/workingwithapachesyncope.adoc
index 1ed9621..d106fa1 100644
--- a/src/main/asciidoc/reference-guide/workingwithapachesyncope/workingwithapachesyncope.adoc
+++ b/src/main/asciidoc/reference-guide/workingwithapachesyncope/workingwithapachesyncope.adoc
@@ -40,4 +40,4 @@ include::customization.adoc[]
include::systemadministration/systemadministration.adoc[]
-include::migration.adoc[]
+include::upgrade.adoc[]