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 2015/11/10 18:33:30 UTC

[1/5] syncope git commit: [SYNCOPE-718] archetype

Repository: syncope
Updated Branches:
  refs/heads/master b206d9b32 -> e8eceae0f


[SYNCOPE-718] archetype


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

Branch: refs/heads/master
Commit: 02bd1e390d99962f1d7e9f574b94f1e2474b0d2d
Parents: b206d9b
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Nov 10 17:06:33 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Nov 10 17:06:33 2015 +0100

----------------------------------------------------------------------
 archetype/pom.xml                               |  29 ++-
 .../META-INF/maven/archetype-metadata.xml       |  13 +
 .../archetype-resources/enduser/pom.xml         | 246 +++++++++++++++++++
 archetype/src/main/resources/meta-pom.xml       |   7 +
 .../console/SyncopeConsoleApplication.java      |   6 +-
 .../enduser/SyncopeEnduserApplication.java      |  89 ++++++-
 .../client/enduser/SyncopeEnduserSession.java   | 129 ++--------
 .../resources/UserSelfCreateResource.java       |   4 +-
 .../src/main/resources/enduser.properties       |  17 +-
 .../enduser/SyncopeEnduserApplicationTest.java  |   9 +-
 .../src/main/resources/log4j2.xml               |   4 -
 fit/enduser-reference/pom.xml                   |  29 +--
 .../src/main/resources/enduser.properties       |  17 +-
 .../src/main/resources/log4j2.xml               |  12 +-
 14 files changed, 434 insertions(+), 177 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/archetype/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/pom.xml b/archetype/pom.xml
index c62180e..9e9d18f 100644
--- a/archetype/pom.xml
+++ b/archetype/pom.xml
@@ -51,7 +51,7 @@ under the License.
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-archetype-plugin</artifactId>
-          <version>2.3</version>
+          <version>2.4</version>
           <extensions>true</extensions>
         </plugin>
       </plugins>
@@ -201,7 +201,6 @@ under the License.
         <directory>../client/console/src/main/resources</directory>
         <targetPath>${project.build.outputDirectory}/archetype-resources/console/src/main/resources</targetPath>
         <includes>
-          <include>consoleContext.xml</include>
           <include>console.properties</include>
         </includes>
       </resource>
@@ -225,6 +224,32 @@ under the License.
         <directory>../fit/console-reference/src/main/webapp/WEB-INF</directory>
         <targetPath>${project.build.outputDirectory}/archetype-resources/console/src/main/webapp/WEB-INF</targetPath>
       </resource>
+      
+      <resource>
+        <directory>../client/enduser/src/main/resources</directory>
+        <targetPath>${project.build.outputDirectory}/archetype-resources/enduser/src/main/resources</targetPath>
+        <includes>
+          <include>enduser.properties</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>../fit/enduser-reference/src/main/resources</directory>
+        <targetPath>${project.build.outputDirectory}/archetype-resources/enduser/src/main/resources</targetPath>
+        <includes>
+          <include>log4j2.xml</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>../fit/enduser-reference/src/main/resources</directory>
+        <targetPath>${project.build.outputDirectory}/archetype-resources/enduser/src/test/resources</targetPath>
+        <includes>
+          <include>enduser.properties</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>../fit/enduser-reference/src/main/webapp/WEB-INF</directory>
+        <targetPath>${project.build.outputDirectory}/archetype-resources/enduser/src/main/webapp/WEB-INF</targetPath>
+      </resource>
     </resources>
   </build>
   

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml b/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
index 99d107b..fc39cb5 100644
--- a/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -62,5 +62,18 @@ under the License.
         </fileSet>
       </fileSets>
     </module>
+    <module id="enduser" dir="enduser" name="enduser">
+      <fileSets>
+        <fileSet filtered="false" encoding="UTF-8">
+          <directory>src/main/resources</directory>
+        </fileSet>
+        <fileSet filtered="false" encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+        </fileSet>
+        <fileSet filtered="false" encoding="UTF-8">
+          <directory>src/test/resources</directory>
+        </fileSet>
+      </fileSets>
+    </module>
   </modules>
 </archetype-descriptor>

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/archetype/src/main/resources/archetype-resources/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/archetype-resources/enduser/pom.xml b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
new file mode 100644
index 0000000..8a079a9
--- /dev/null
+++ b/archetype/src/main/resources/archetype-resources/enduser/pom.xml
@@ -0,0 +1,246 @@
+<?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>${groupId}</groupId>
+    <artifactId>${rootArtifactId}</artifactId>
+    <version>${version}</version>
+  </parent>
+
+  <name>Apache Syncope sample project - Enduser</name>
+  <groupId>${groupId}</groupId>
+  <artifactId>${artifactId}</artifactId>
+  <packaging>war</packaging>
+
+  <dependencies>
+
+    <dependency> 
+      <groupId>javax.servlet</groupId> 
+      <artifactId>javax.servlet-api</artifactId> 
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet.jsp</groupId>
+      <artifactId>javax.servlet.jsp-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>jstl</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>${groupId}</groupId>
+      <artifactId>common</artifactId>
+      <version>${project.version}</version>
+    </dependency>  
+    
+    <dependency>
+      <groupId>org.apache.syncope.client</groupId>
+      <artifactId>syncope-client-enduser</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.lmax</groupId>
+      <artifactId>disruptor</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j-impl</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <finalName>syncope-enduser</finalName>
+
+    <plugins>      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <inherited>true</inherited>
+        <configuration>
+          <failOnMissingWebXml>false</failOnMissingWebXml>
+        </configuration>
+      </plugin>
+    </plugins>
+
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+        <filtering>true</filtering>
+      </resource>
+    </resources>
+
+    <testResources>
+      <testResource>
+        <directory>src/test/resources</directory>
+        <filtering>true</filtering>
+      </testResource>
+    </testResources>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>embedded</id>
+      
+      <properties>
+        <conf.directory>${project.build.directory}/test-classes</conf.directory>
+      </properties>
+      
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.syncope.fit</groupId>
+          <artifactId>syncope-fit-build-tools</artifactId>
+          <version>${syncope.version}</version>
+          <type>war</type>
+          <scope>test</scope>
+        </dependency>
+        <dependency>
+          <groupId>net.tirasa.connid.bundles.soap</groupId>
+          <artifactId>wssample</artifactId>
+          <type>war</type>
+          <scope>test</scope>
+        </dependency>
+        <dependency>
+          <groupId>com.h2database</groupId>
+          <artifactId>h2</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+      
+      <build>
+        <defaultGoal>clean verify cargo:run</defaultGoal>  
+        
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <inherited>true</inherited>
+            <executions>
+              <execution>
+                <id>setupEmbeddedConf</id>
+                <phase>package</phase>
+                <configuration>
+                  <target>
+                    <delete dir="../core/target/syncope/WEB-INF/classes/domains"/>
+                    <copy todir="../core/target/syncope/WEB-INF/classes/domains">
+                      <fileset dir="../core/target/test-classes/domains"/>
+                    </copy>
+                    <copy file="../core/target/test-classes/connid.properties" 
+                          todir="../core/target/syncope/WEB-INF/classes" 
+                          overwrite="true"/>
+                    <copy file="../core/target/test-classes/db.jsp" 
+                          todir="../core/target/syncope" 
+                          overwrite="true"/>
+
+                    <copy file="${project.build.directory}/test-classes/enduser.properties" 
+                          todir="${project.build.directory}/${project.build.finalName}/WEB-INF/classes" 
+                          overwrite="true"/>
+                  </target>
+                </configuration>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+      
+          <plugin>
+            <groupId>org.codehaus.cargo</groupId>
+            <artifactId>cargo-maven2-plugin</artifactId>
+            <inherited>true</inherited>
+            <configuration>
+              <container>
+                <dependencies>
+                  <dependency>
+                    <groupId>com.h2database</groupId>
+                    <artifactId>h2</artifactId>
+                  </dependency>
+                </dependencies>
+              </container>
+              <configuration>
+                <type>standalone</type>
+                <properties>
+                  <cargo.servlet.port>${cargo.servlet.port}</cargo.servlet.port>
+                  <cargo.tomcat.ajp.port>${cargo.tomcat.ajp.port}</cargo.tomcat.ajp.port>
+                  <cargo.rmi.port>${cargo.rmi.port}</cargo.rmi.port>
+
+                  <cargo.jvmargs>-noverify -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m</cargo.jvmargs>
+                </properties>
+              </configuration>
+              <deployables>
+                <deployable>
+                  <groupId>net.tirasa.connid.bundles.soap</groupId>
+                  <artifactId>wssample</artifactId>
+                  <type>war</type>
+                  <properties>
+                    <context>wssample</context>
+                  </properties>
+                </deployable>
+                <deployable>
+                  <groupId>org.apache.syncope.fit</groupId>
+                  <artifactId>syncope-fit-build-tools</artifactId>
+                  <type>war</type>
+                  <properties>
+                    <context>syncope-fit-build-tools</context>
+                  </properties>
+                </deployable>
+                <deployable>
+                  <location>../core/target/syncope</location>
+                  <properties>
+                    <context>syncope</context>
+                  </properties>
+                </deployable>
+                <deployable>
+                  <location>${project.build.directory}/${project.build.finalName}</location>
+                  <properties>
+                    <context>syncope-enduser</context>
+                  </properties>
+                </deployable>
+              </deployables>
+            </configuration>
+          </plugin>
+        </plugins>  
+      </build>
+    </profile>
+  </profiles>
+</project>

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/archetype/src/main/resources/meta-pom.xml
----------------------------------------------------------------------
diff --git a/archetype/src/main/resources/meta-pom.xml b/archetype/src/main/resources/meta-pom.xml
index e7a6487..47a2d5e 100644
--- a/archetype/src/main/resources/meta-pom.xml
+++ b/archetype/src/main/resources/meta-pom.xml
@@ -79,6 +79,12 @@ under the License.
         <artifactId>syncope-client-console</artifactId>
         <version>${syncope.version}</version>
       </dependency>
+
+      <dependency>
+        <groupId>org.apache.syncope.client</groupId>
+        <artifactId>syncope-client-enduser</artifactId>
+        <version>${syncope.version}</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
     
@@ -104,6 +110,7 @@ under the License.
     <module>common</module>
     <module>core</module>
     <module>console</module>
+    <module>enduser</module>
   </modules>
 
 </project>

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
index ec65024..34f7fe9 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
@@ -53,14 +53,10 @@ import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.wicket.resource.DynamicJQueryResourceReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.util.Assert;
 
 public class SyncopeConsoleApplication extends AuthenticatedWebApplication {
 
-    private static final Logger LOG = LoggerFactory.getLogger(SyncopeConsoleApplication.class);
-
     private static final String CONSOLE_PROPERTIES = "console.properties";
 
     public static final List<Locale> SUPPORTED_LOCALES = Collections.unmodifiableList(Arrays.asList(
@@ -101,7 +97,7 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication {
                 File consoleDirProps = FileUtils.getFile(consoleDir, CONSOLE_PROPERTIES);
                 if (consoleDirProps.exists() && consoleDirProps.canRead() && consoleDirProps.isFile()) {
                     props.clear();
-                    props.load(FileUtils.openInputStream(consoleDir));
+                    props.load(FileUtils.openInputStream(consoleDirProps));
                 }
             }
         } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
index 7d014d7..c708502 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
@@ -18,12 +18,15 @@
  */
 package org.apache.syncope.client.enduser;
 
+import java.io.File;
 import java.io.Serializable;
 import org.apache.syncope.client.enduser.pages.HomePage;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
+import java.util.Properties;
+import org.apache.commons.io.FileUtils;
 import org.apache.syncope.client.enduser.resources.LoginResource;
 import org.apache.syncope.client.enduser.resources.LogoutResource;
 import org.apache.syncope.client.enduser.resources.SchemaResource;
@@ -31,31 +34,86 @@ import org.apache.syncope.client.enduser.resources.SecurityQuestionResource;
 import org.apache.syncope.client.enduser.resources.UserSelfCreateResource;
 import org.apache.syncope.client.enduser.resources.UserSelfReadResource;
 import org.apache.syncope.client.enduser.resources.UserSelfUpdateResource;
+import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
 import org.apache.wicket.Page;
 import org.apache.wicket.Session;
+import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Response;
 import org.apache.wicket.request.resource.IResource;
 import org.apache.wicket.request.resource.ResourceReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.springframework.util.Assert;
 
 public class SyncopeEnduserApplication extends WebApplication implements Serializable {
 
     private static final long serialVersionUID = -6445919351044845120L;
 
-    private static final Logger LOG = LoggerFactory.getLogger(SyncopeEnduserApplication.class);
+    private static final String ENDUSER_PROPERTIES = "enduser.properties";
 
     public static final List<Locale> SUPPORTED_LOCALES = Collections.unmodifiableList(Arrays.asList(
             new Locale[] {
                 Locale.ENGLISH, Locale.ITALIAN, new Locale("pt", "BR")
             }));
 
+    public static SyncopeEnduserApplication get() {
+        return (SyncopeEnduserApplication) WebApplication.get();
+    }
+
+    private String version;
+
+    private String site;
+
+    private String license;
+
+    private String anonymousUser;
+
+    private String anonymousKey;
+
+    private SyncopeClientFactoryBean clientFactory;
+
     @Override
     protected void init() {
         super.init();
 
+        // read enduser.properties
+        Properties props = new Properties();
+        try {
+            props.load(getClass().getResourceAsStream("/" + ENDUSER_PROPERTIES));
+            File enduserDir = new File(props.getProperty("enduser.directory"));
+            if (enduserDir.exists() && enduserDir.canRead() && enduserDir.isDirectory()) {
+                File enduserDirProps = FileUtils.getFile(enduserDir, ENDUSER_PROPERTIES);
+                if (enduserDirProps.exists() && enduserDirProps.canRead() && enduserDirProps.isFile()) {
+                    props.clear();
+                    props.load(FileUtils.openInputStream(enduserDirProps));
+                }
+            }
+        } catch (Exception e) {
+            throw new WicketRuntimeException("Could not read " + ENDUSER_PROPERTIES, e);
+        }
+        version = props.getProperty("version");
+        Assert.notNull(version, "<version> not set");
+        site = props.getProperty("site");
+        Assert.notNull(site, "<site> not set");
+        license = props.getProperty("license");
+        Assert.notNull(license, "<license> not set");
+        anonymousUser = props.getProperty("anonymousUser");
+        Assert.notNull(anonymousUser, "<anonymousUser> not set");
+        anonymousKey = props.getProperty("anonymousKey");
+        Assert.notNull(anonymousKey, "<anonymousKey> not set");
+
+        String scheme = props.getProperty("scheme");
+        Assert.notNull(scheme, "<scheme> not set");
+        String host = props.getProperty("host");
+        Assert.notNull(host, "<host> not set");
+        String port = props.getProperty("port");
+        Assert.notNull(port, "<port> not set");
+        String rootPath = props.getProperty("rootPath");
+        Assert.notNull(rootPath, "<rootPath> not set");
+
+        clientFactory = new SyncopeClientFactoryBean().setAddress(scheme + "://" + host + ":" + port + "/" + rootPath);
+        clientFactory.setContentType(SyncopeClientFactoryBean.ContentType.JSON);
+
         // resource to provide login functionality managed by wicket
         mountResource("/api/login", new ResourceReference("login") {
 
@@ -142,4 +200,29 @@ public class SyncopeEnduserApplication extends WebApplication implements Seriali
     public Session newSession(final Request request, final Response response) {
         return new SyncopeEnduserSession(request);
     }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public String getSite() {
+        return site;
+    }
+
+    public String getLicense() {
+        return license;
+    }
+
+    public String getAnonymousUser() {
+        return anonymousUser;
+    }
+
+    public String getAnonymousKey() {
+        return anonymousKey;
+    }
+
+    public SyncopeClientFactoryBean getClientFactory() {
+        return clientFactory;
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
index f91a4d6..bbea57b 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserSession.java
@@ -18,17 +18,14 @@
  */
 package org.apache.syncope.client.enduser;
 
-import java.io.File;
 import java.text.DateFormat;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Set;
 import javax.ws.rs.core.EntityTag;
 import javax.ws.rs.core.MediaType;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.syncope.client.lib.SyncopeClient;
@@ -52,36 +49,14 @@ public class SyncopeEnduserSession extends WebSession {
 
     private static final Logger LOG = LoggerFactory.getLogger(SyncopeEnduserSession.class);
 
-    protected static final String ENDUSER_PROPERTIES = "enduser.properties";
+    private final SyncopeClient anonymousClient;
+
+    private SyncopeClient client;
 
     private String username;
 
     private String password;
 
-    private String scheme;
-
-    private String host;
-
-    private String port;
-
-    private String rootPath;
-
-    private String anonymousUser;
-
-    private String anonymousKey;
-
-    private Boolean storePassword;
-
-    private String version;
-
-    private String license;
-
-    private final SyncopeClientFactoryBean clientFactory;
-
-    private SyncopeClient client;
-
-    private final SyncopeClient anonymousClient;
-
     private final SyncopeTO syncopeTO;
 
     private UserTO selfTO;
@@ -95,21 +70,9 @@ public class SyncopeEnduserSession extends WebSession {
     public SyncopeEnduserSession(final Request request) {
         super(request);
 
-        // load properties from classpath file
-        loadProperties();
-
-        clientFactory = new SyncopeClientFactoryBean();
-        clientFactory.setAddress(new StringBuilder(scheme)
-                .append("://")
-                .append(host)
-                .append(":")
-                .append(port)
-                .append("/")
-                .append(rootPath)
-                .toString());
-        clientFactory.setContentType(SyncopeClientFactoryBean.ContentType.JSON);
-
-        anonymousClient = clientFactory.create(anonymousUser, anonymousKey);
+        anonymousClient = SyncopeEnduserApplication.get().getClientFactory().create(
+                SyncopeEnduserApplication.get().getAnonymousUser(),
+                SyncopeEnduserApplication.get().getAnonymousKey());
         syncopeTO = anonymousClient.getService(SyncopeService.class).info();
 
     }
@@ -118,7 +81,8 @@ public class SyncopeEnduserSession extends WebSession {
         boolean authenticated = false;
 
         try {
-            client = clientFactory.setDomain(SyncopeConstants.MASTER_DOMAIN).create(username, password);
+            client = SyncopeEnduserApplication.get().getClientFactory().
+                    setDomain(SyncopeConstants.MASTER_DOMAIN).create(username, password);
 
             Pair<Map<String, Set<String>>, UserTO> self = client.self();
             selfTO = self.getValue();
@@ -169,12 +133,15 @@ public class SyncopeEnduserSession extends WebSession {
     public <T> T getService(final MediaType mediaType, final Class<T> serviceClass) {
         T service;
 
-        synchronized (clientFactory) {
-            SyncopeClientFactoryBean.ContentType preType = clientFactory.getContentType();
+        synchronized (SyncopeEnduserApplication.get().getClientFactory()) {
+            SyncopeClientFactoryBean.ContentType preType = SyncopeEnduserApplication.get().getClientFactory().
+                    getContentType();
 
-            clientFactory.setContentType(SyncopeClientFactoryBean.ContentType.fromString(mediaType.toString()));
-            service = clientFactory.create(username, password).getService(serviceClass);
-            clientFactory.setContentType(preType);
+            SyncopeEnduserApplication.get().getClientFactory().
+                    setContentType(SyncopeClientFactoryBean.ContentType.fromString(mediaType.toString()));
+            service = SyncopeEnduserApplication.get().getClientFactory().
+                    create(username, password).getService(serviceClass);
+            SyncopeEnduserApplication.get().getClientFactory().setContentType(preType);
         }
 
         return service;
@@ -188,42 +155,6 @@ public class SyncopeEnduserSession extends WebSession {
         return password;
     }
 
-    public String getScheme() {
-        return scheme;
-    }
-
-    public String getHost() {
-        return host;
-    }
-
-    public String getPort() {
-        return port;
-    }
-
-    public String getRootPath() {
-        return rootPath;
-    }
-
-    public String getAnonymousUser() {
-        return anonymousUser;
-    }
-
-    public String getAnonymousKey() {
-        return anonymousKey;
-    }
-
-    public Boolean storePassword() {
-        return this.storePassword;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public String getLicense() {
-        return license;
-    }
-
     public SyncopeTO getSyncopeTO() {
         return syncopeTO;
     }
@@ -242,32 +173,4 @@ public class SyncopeEnduserSession extends WebSession {
         return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale);
     }
 
-    private void loadProperties() {
-        Properties properties = new Properties();
-
-        try {
-            properties.load(getClass().getResourceAsStream("/" + ENDUSER_PROPERTIES));
-            File enduserDir = new File(properties.getProperty("enduser.directory"));
-            if (enduserDir.exists() && enduserDir.canRead() && enduserDir.isDirectory()) {
-                File enduserDirProps = FileUtils.getFile(enduserDir, ENDUSER_PROPERTIES);
-                if (enduserDirProps.exists() && enduserDirProps.canRead() && enduserDirProps.isFile()) {
-                    properties.clear();
-                    properties.load(FileUtils.openInputStream(enduserDir));
-                }
-            }
-        } catch (Exception e) {
-            LOG.error("Error loading {} file", ENDUSER_PROPERTIES, e);
-        }
-
-        this.scheme = properties.getProperty("scheme");
-        this.host = properties.getProperty("host");
-        this.port = properties.getProperty("port");
-        this.rootPath = properties.getProperty("rootPath");
-        this.anonymousUser = properties.getProperty("anonymousUser");
-        this.anonymousKey = properties.getProperty("anonymousKey");
-        this.storePassword = Boolean.valueOf(properties.getProperty("storePassword"));
-        version = properties.getProperty("version");
-        license = properties.getProperty("license");
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
index 08cedb2..7e9341b 100644
--- a/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
+++ b/client/enduser/src/main/java/org/apache/syncope/client/enduser/resources/UserSelfCreateResource.java
@@ -20,7 +20,6 @@ package org.apache.syncope.client.enduser.resources;
 
 import java.io.IOException;
 import javax.servlet.http.HttpServletRequest;
-import org.apache.syncope.client.enduser.SyncopeEnduserSession;
 import org.apache.syncope.client.enduser.adapters.UserTOAdapter;
 import org.apache.syncope.client.enduser.model.UserTORequest;
 import org.apache.syncope.common.rest.api.service.UserSelfService;
@@ -61,8 +60,7 @@ public class UserSelfCreateResource extends AbstractBaseResource {
                 LOG.debug("Received user self registration request for user: [{}]", userTORequest.getUsername());
                 LOG.trace("Received user self registration request is: [{}]", userTORequest);
                 // adapt request and create user
-                userSelfService.create(userTOAdapter.fromUserTORequest(userTORequest, null),
-                        SyncopeEnduserSession.get().storePassword());
+                userSelfService.create(userTOAdapter.fromUserTORequest(userTORequest, null), true);
                 responseMessage.append("User").append(userTORequest.getUsername()).append("created successfully");
             } else {
                 responseMessage.append(userTORequest == null

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/client/enduser/src/main/resources/enduser.properties
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/enduser.properties b/client/enduser/src/main/resources/enduser.properties
index 4dd1cbe..30f4028 100644
--- a/client/enduser/src/main/resources/enduser.properties
+++ b/client/enduser/src/main/resources/enduser.properties
@@ -15,16 +15,15 @@
 # specific language governing permissions and limitations
 # under the License.
 enduser.directory=${conf.directory}
-scheme=http
-host=localhost
-port=8080
-rootPath=/syncope/rest/
-
-anonymousUser=${anonymousUser}
-anonymousKey=${anonymousKey}
-
-storePassword=true
 
 version=${syncope.version}
+site=${project.parent.url}
 license=${licenseUrl}
 
+anonymousUser=${anonymousUser}
+anonymousKey=${anonymousKey}
+
+scheme=http
+host=localhost
+port=8080
+rootPath=/syncope/rest/

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/client/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
----------------------------------------------------------------------
diff --git a/client/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java b/client/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
index 4a77739..860de89 100644
--- a/client/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
+++ b/client/enduser/src/test/java/org/apache/syncope/client/enduser/SyncopeEnduserApplicationTest.java
@@ -38,7 +38,7 @@ public class SyncopeEnduserApplicationTest {
 
         private static final long serialVersionUID = -2500230416352618497L;
 
-        SyncopeEnduserMockSession(Request request) {
+        SyncopeEnduserMockSession(final Request request) {
             super(request);
         }
     }
@@ -50,7 +50,12 @@ public class SyncopeEnduserApplicationTest {
             private static final long serialVersionUID = 1445165406200746511L;
 
             @Override
-            public Session newSession(Request request, Response response) {
+            protected void init() {
+                // just skip over actual init
+            }
+
+            @Override
+            public Session newSession(final Request request, final Response response) {
                 return new SyncopeEnduserMockSession(request);
             }
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/fit/console-reference/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/fit/console-reference/src/main/resources/log4j2.xml b/fit/console-reference/src/main/resources/log4j2.xml
index a7c1fa6..18563df 100644
--- a/fit/console-reference/src/main/resources/log4j2.xml
+++ b/fit/console-reference/src/main/resources/log4j2.xml
@@ -48,10 +48,6 @@ under the License.
     <asyncLogger name="org.apache.wicket" additivity="false" level="ERROR">
       <appender-ref ref="main"/>
     </asyncLogger>
-
-    <asyncLogger name="org.springframework" additivity="false" level="ERROR">
-      <appender-ref ref="main"/>
-    </asyncLogger>
     
     <asyncLogger name="org.apache.cxf" additivity="false" level="ERROR">
       <appender-ref ref="main"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/fit/enduser-reference/pom.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml
index b88ce2d..a08ab4d 100644
--- a/fit/enduser-reference/pom.xml
+++ b/fit/enduser-reference/pom.xml
@@ -61,23 +61,19 @@ under the License.
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
-    </dependency><!--
--->    
+    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
-    </dependency><!--
--->    
+    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
-    </dependency><!--
--->    
+    </dependency>
     <dependency>
       <groupId>com.lmax</groupId>
       <artifactId>disruptor</artifactId>
-    </dependency><!--
--->    
+    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
@@ -86,14 +82,13 @@ under the License.
       <groupId>commons-logging</groupId>
       <artifactId>commons-logging</artifactId>
       <scope>provided</scope>
-    </dependency><!--
--->    
+    </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
     </dependency>
     
-    <!--   TEST -->
+    <!-- TEST -->
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
@@ -116,19 +111,7 @@ under the License.
       <groupId>com.h2database</groupId>
       <artifactId>h2</artifactId>
       <scope>test</scope>
-    </dependency><!--
-    
-     SELENIUM INTEGRATION TEST 
-    <dependency>
-      <groupId>org.seleniumhq.selenium</groupId>
-      <artifactId>selenium-java</artifactId>
-      <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.seleniumhq.selenium</groupId>
-      <artifactId>selenium-api</artifactId>
-      <scope>test</scope>
-    </dependency>-->
   </dependencies>
 
   <build>

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/fit/enduser-reference/src/main/resources/enduser.properties
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/main/resources/enduser.properties b/fit/enduser-reference/src/main/resources/enduser.properties
index 96b0dea..81d137e 100644
--- a/fit/enduser-reference/src/main/resources/enduser.properties
+++ b/fit/enduser-reference/src/main/resources/enduser.properties
@@ -15,16 +15,15 @@
 # specific language governing permissions and limitations
 # under the License.
 enduser.directory=${conf.directory}
-scheme=http
-host=localhost
-port=9080
-rootPath=/syncope/rest/
-
-anonymousUser=${anonymousUser}
-anonymousKey=${anonymousKey}
-
-storePassword=true
 
 version=${syncope.version}
+site=${project.parent.url}
 license=${licenseUrl}
 
+anonymousUser=${anonymousUser}
+anonymousKey=${anonymousKey}
+
+scheme=http
+host=localhost
+port=9080
+rootPath=/syncope/rest/

http://git-wip-us.apache.org/repos/asf/syncope/blob/02bd1e39/fit/enduser-reference/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/main/resources/log4j2.xml b/fit/enduser-reference/src/main/resources/log4j2.xml
index ced0e34..b0854a6 100644
--- a/fit/enduser-reference/src/main/resources/log4j2.xml
+++ b/fit/enduser-reference/src/main/resources/log4j2.xml
@@ -41,15 +41,19 @@ under the License.
       <appender-ref ref="main"/>
     </asyncLogger>
 
-    <asyncLogger name="org.apache.syncope.client.enduser" additivity="false" level="DEBUG">
+    <asyncLogger name="org.apache.syncope.client.console" additivity="false" level="ERROR">
       <appender-ref ref="main"/>
     </asyncLogger>
 
-    <asyncLogger name="org.apache.wicket" additivity="false" level="DEBUG">
+    <asyncLogger name="org.apache.wicket" additivity="false" level="ERROR">
       <appender-ref ref="main"/>
     </asyncLogger>
-
-    <root level="DEBUG">
+    
+    <asyncLogger name="org.apache.cxf" additivity="false" level="ERROR">
+      <appender-ref ref="main"/>
+    </asyncLogger>
+    
+    <root level="ERROR">
       <appender-ref ref="main"/>
     </root>
   


[2/5] syncope git commit: [SYNCOPE-718] installer

Posted by il...@apache.org.
[SYNCOPE-718] installer


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

Branch: refs/heads/master
Commit: 34af1854f488f80a9969da8e3c833fee7c810b89
Parents: 02bd1e3
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Nov 10 17:16:00 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Nov 10 17:16:00 2015 +0100

----------------------------------------------------------------------
 .../installer/containers/AbstractContainer.java |  4 +++
 .../syncope/installer/containers/Glassfish.java |  4 +++
 .../syncope/installer/containers/Tomcat.java    | 14 ++++++++
 .../installer/containers/jboss/JBoss.java       |  4 +++
 .../installer/files/ConsoleProperties.java      |  2 +-
 .../installer/files/EnduserProperties.java      | 34 ++++++++++++++++++++
 .../installer/processes/ArchetypeProcess.java   | 11 +++++++
 .../installer/processes/ContainerProcess.java   | 31 ++++++++++++++++++
 .../src/main/resources/installer.properties     |  2 ++
 9 files changed, 105 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/containers/AbstractContainer.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/containers/AbstractContainer.java b/installer/src/main/java/org/apache/syncope/installer/containers/AbstractContainer.java
index 61d9927..c677058 100644
--- a/installer/src/main/java/org/apache/syncope/installer/containers/AbstractContainer.java
+++ b/installer/src/main/java/org/apache/syncope/installer/containers/AbstractContainer.java
@@ -26,6 +26,10 @@ public abstract class AbstractContainer {
 
     protected static final String UNIX_CONSOLE_RELATIVE_PATH = "%s/%s/console/target/syncope-console.war";
 
+    protected static final String UNIX_ENDUSER_RELATIVE_PATH = "%s/%s/enduser/target/syncope-enduser.war";
+
     protected static final String WIN_CONSOLE_RELATIVE_PATH = "%s\\%s\\console\\target\\syncope-console.war";
 
+    protected static final String WIN_ENDUSER_RELATIVE_PATH = "%s\\%s\\enduser\\target\\syncope-enduser.war";
+
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/containers/Glassfish.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/containers/Glassfish.java b/installer/src/main/java/org/apache/syncope/installer/containers/Glassfish.java
index 5f174df..2340377 100644
--- a/installer/src/main/java/org/apache/syncope/installer/containers/Glassfish.java
+++ b/installer/src/main/java/org/apache/syncope/installer/containers/Glassfish.java
@@ -37,6 +37,10 @@ public class Glassfish extends AbstractContainer {
         return deploy(UNIX_CONSOLE_RELATIVE_PATH);
     }
 
+    public String deployEnduser() {
+        return deploy(UNIX_CONSOLE_RELATIVE_PATH);
+    }
+
     public String deploy(final String what) {
         return String.format(what, installPath, artifactId);
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/containers/Tomcat.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/containers/Tomcat.java b/installer/src/main/java/org/apache/syncope/installer/containers/Tomcat.java
index af8af5f..9471312 100644
--- a/installer/src/main/java/org/apache/syncope/installer/containers/Tomcat.java
+++ b/installer/src/main/java/org/apache/syncope/installer/containers/Tomcat.java
@@ -31,6 +31,8 @@ public class Tomcat extends AbstractContainer {
 
     private static final String DEPLOY_SYNCOPE_CONSOLE_QUERY = "/manager/text/deploy?path=/syncope-console&war=file:";
 
+    private static final String DEPLOY_SYNCOPE_ENDUSER_QUERY = "/manager/text/deploy?path=/syncope-enduser&war=file:";
+
     private final String installPath;
 
     private final String artifactId;
@@ -69,6 +71,18 @@ public class Tomcat extends AbstractContainer {
         return status == 200;
     }
 
+    public boolean deployEnduser() {
+        int status;
+        if (IS_WIN) {
+            status = httpUtils.getWithBasicAuth(DEPLOY_SYNCOPE_ENDUSER_QUERY
+                    + pathEncoded(String.format(WIN_ENDUSER_RELATIVE_PATH, installPath, artifactId)));
+        } else {
+            status = httpUtils.getWithBasicAuth(path(DEPLOY_SYNCOPE_ENDUSER_QUERY + UNIX_ENDUSER_RELATIVE_PATH));
+        }
+
+        return status == 200;
+    }
+
     private String pathEncoded(final String what) {
         String path = "";
         try {

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/containers/jboss/JBoss.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/containers/jboss/JBoss.java b/installer/src/main/java/org/apache/syncope/installer/containers/jboss/JBoss.java
index 24b193e..a08608c 100644
--- a/installer/src/main/java/org/apache/syncope/installer/containers/jboss/JBoss.java
+++ b/installer/src/main/java/org/apache/syncope/installer/containers/jboss/JBoss.java
@@ -63,6 +63,10 @@ public class JBoss extends AbstractContainer {
         return deploy(UNIX_CONSOLE_RELATIVE_PATH, "syncope-console.war");
     }
 
+    public boolean deployEnduser() {
+        return deploy(UNIX_ENDUSER_RELATIVE_PATH, "syncope-console.war");
+    }
+
     public boolean deploy(final String whatDeploy, final String warName) {
         final String responseBodyAsString = httpUtils.postWithDigestAuth(
                 String.format(addContentUrl, jbossHost, jbossManagementPort),

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/files/ConsoleProperties.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/files/ConsoleProperties.java b/installer/src/main/java/org/apache/syncope/installer/files/ConsoleProperties.java
index 5298908..26532f2 100644
--- a/installer/src/main/java/org/apache/syncope/installer/files/ConsoleProperties.java
+++ b/installer/src/main/java/org/apache/syncope/installer/files/ConsoleProperties.java
@@ -29,6 +29,6 @@ public final class ConsoleProperties {
             + "port=%s";
 
     private ConsoleProperties() {
-            // private constructor for static utility class
+        // private constructor for static utility class
     }
 }

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/files/EnduserProperties.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/files/EnduserProperties.java b/installer/src/main/java/org/apache/syncope/installer/files/EnduserProperties.java
new file mode 100644
index 0000000..26dc304
--- /dev/null
+++ b/installer/src/main/java/org/apache/syncope/installer/files/EnduserProperties.java
@@ -0,0 +1,34 @@
+/*
+ * 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.installer.files;
+
+public final class EnduserProperties {
+
+    public static final String PLACEHOLDER = "scheme=http\n"
+            + "host=localhost\n"
+            + "port=8080";
+
+    public static final String ENDUSER = "scheme=%s\n"
+            + "host=%s\n"
+            + "port=%s";
+
+    private EnduserProperties() {
+        // private constructor for static utility class
+    }
+}

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/processes/ArchetypeProcess.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/processes/ArchetypeProcess.java b/installer/src/main/java/org/apache/syncope/installer/processes/ArchetypeProcess.java
index 4f17035..d0a3f62 100644
--- a/installer/src/main/java/org/apache/syncope/installer/processes/ArchetypeProcess.java
+++ b/installer/src/main/java/org/apache/syncope/installer/processes/ArchetypeProcess.java
@@ -119,6 +119,17 @@ public class ArchetypeProcess extends BaseProcess {
                 + File.separator + PROPERTIES.getProperty("saveModel"),
                 modelerDirectory + File.separator + PROPERTIES.getProperty("saveModel"));
 
+        fileSystemUtils.copyFile(
+                syncopeInstallDir
+                + PROPERTIES.getProperty("enduserResDirectory")
+                + File.separator + PROPERTIES.getProperty("urlConfig"),
+                modelerDirectory + File.separator + PROPERTIES.getProperty("urlConfig"));
+        fileSystemUtils.copyFile(
+                syncopeInstallDir
+                + PROPERTIES.getProperty("enduserResDirectory")
+                + File.separator + PROPERTIES.getProperty("saveModel"),
+                modelerDirectory + File.separator + PROPERTIES.getProperty("saveModel"));
+
         final Properties modelerProperties = new Properties();
         modelerProperties.setProperty("modeler.directory", modelerDirectory);
         mavenUtils.mvnCleanPackageWithProperties(modelerDirectory, modelerProperties, customMavenProxySettings);

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/java/org/apache/syncope/installer/processes/ContainerProcess.java
----------------------------------------------------------------------
diff --git a/installer/src/main/java/org/apache/syncope/installer/processes/ContainerProcess.java b/installer/src/main/java/org/apache/syncope/installer/processes/ContainerProcess.java
index e7e5148..9113c22 100644
--- a/installer/src/main/java/org/apache/syncope/installer/processes/ContainerProcess.java
+++ b/installer/src/main/java/org/apache/syncope/installer/processes/ContainerProcess.java
@@ -30,6 +30,7 @@ import org.apache.syncope.installer.containers.Tomcat;
 import org.apache.syncope.installer.containers.jboss.JBoss;
 import org.apache.syncope.installer.enums.Containers;
 import org.apache.syncope.installer.files.ConsoleProperties;
+import org.apache.syncope.installer.files.EnduserProperties;
 import org.apache.syncope.installer.files.GlassfishCoreWebXml;
 import org.apache.syncope.installer.files.MasterDomainXml;
 import org.apache.syncope.installer.utilities.InstallLog;
@@ -156,6 +157,10 @@ public final class ContainerProcess extends BaseProcess {
                 + File.separator + PROPERTIES.getProperty("consolePropertiesFile"));
         String contentConsolePropertiesFile = fileSystemUtils.readFile(consolePropertiesFile);
 
+        File enduserPropertiesFile = new File(syncopeInstallDir + PROPERTIES.getProperty("enduserResDirectory")
+                + File.separator + PROPERTIES.getProperty("enduserPropertiesFile"));
+        String contentEnduserPropertiesFile = fileSystemUtils.readFile(enduserPropertiesFile);
+
         final String scheme;
         final String host;
         final String port;
@@ -186,6 +191,10 @@ public final class ContainerProcess extends BaseProcess {
                 contentConsolePropertiesFile.replace(ConsoleProperties.PLACEHOLDER,
                         String.format(ConsoleProperties.CONSOLE, scheme, host, port)));
 
+        fileSystemUtils.writeToFile(enduserPropertiesFile,
+                contentEnduserPropertiesFile.replace(EnduserProperties.PLACEHOLDER,
+                        String.format(EnduserProperties.ENDUSER, scheme, host, port)));
+
         MavenUtils mavenUtils = new MavenUtils(mavenDir, handler);
         File customMavenProxySettings = null;
         try {
@@ -249,6 +258,16 @@ public final class ContainerProcess extends BaseProcess {
                     handler.emitError(messageError, messageError);
                     InstallLog.getInstance().error(messageError);
                 }
+
+                boolean deployEnduserResult = tomcat.deployEnduser();
+                if (deployEnduserResult) {
+                    handler.logOutput("Enduser successfully deployed ", true);
+                    InstallLog.getInstance().info("Enduser successfully deployed ");
+                } else {
+                    final String messageError = "Deploy console on Tomcat failed";
+                    handler.emitError(messageError, messageError);
+                    InstallLog.getInstance().error(messageError);
+                }
                 break;
 
             case JBOSS:
@@ -275,6 +294,16 @@ public final class ContainerProcess extends BaseProcess {
                     handler.emitError(messageError, messageError);
                     InstallLog.getInstance().error(messageError);
                 }
+
+                boolean deployEnduserJBoss = jBoss.deployEnduser();
+                if (deployEnduserJBoss) {
+                    handler.logOutput("Enduser successfully deployed ", true);
+                    InstallLog.getInstance().info("Enduser successfully deployed ");
+                } else {
+                    final String messageError = "Deploy console on JBoss failed";
+                    handler.emitError(messageError, messageError);
+                    InstallLog.getInstance().error(messageError);
+                }
                 break;
 
             case GLASSFISH:
@@ -287,6 +316,8 @@ public final class ContainerProcess extends BaseProcess {
                         + Glassfish.DEPLOY_COMMAND + glassfish.deployCore(), null);
                 fileSystemUtils.exec("sh " + glassfishDir
                         + Glassfish.DEPLOY_COMMAND + glassfish.deployConsole(), null);
+                fileSystemUtils.exec("sh " + glassfishDir
+                        + Glassfish.DEPLOY_COMMAND + glassfish.deployEnduser(), null);
                 break;
 
             default:

http://git-wip-us.apache.org/repos/asf/syncope/blob/34af1854/installer/src/main/resources/installer.properties
----------------------------------------------------------------------
diff --git a/installer/src/main/resources/installer.properties b/installer/src/main/resources/installer.properties
index 97d07e1..55f1882 100644
--- a/installer/src/main/resources/installer.properties
+++ b/installer/src/main/resources/installer.properties
@@ -19,10 +19,12 @@ glassfishCoreWebXmlFile=core/src/main/webapp/WEB-INF/glassfish-web.xml
 urlConfig=url-config.js
 saveModel=save-model.html
 consoleResDirectory=console/src/main/resources
+enduserResDirectory=endyser/src/main/resources
 pomFile=pom.xml
 masterDomainFile=core/src/main/resources/domains/MasterDomain.xml
 coreMetaInfDirectory=core/src/main/resources/META-INF
 provisioningPropertiesFile=core/src/main/resources/provisioning.properties
 masterPropertiesFile=core/src/main/resources/domains/Master.properties
 consolePropertiesFile=console.properties
+enduserPropertiesFile=enduser.properties
 modelerPomFile=modelerPom.xml


[4/5] syncope git commit: [SYNCOPE-158] Re-adding missing entries

Posted by il...@apache.org.
[SYNCOPE-158] Re-adding missing entries


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

Branch: refs/heads/master
Commit: 4e6dee22335da12ce1fc9d5f96f51ee53cf53482
Parents: 80798cc
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Nov 10 18:26:42 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Nov 10 18:26:42 2015 +0100

----------------------------------------------------------------------
 client/cli/LICENSE | 5 +++++
 client/cli/NOTICE  | 5 +++++
 2 files changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/4e6dee22/client/cli/LICENSE
----------------------------------------------------------------------
diff --git a/client/cli/LICENSE b/client/cli/LICENSE
index c4106cb..513deb8 100644
--- a/client/cli/LICENSE
+++ b/client/cli/LICENSE
@@ -713,6 +713,11 @@ OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ==
 
+For Bean Validation API (http://beanvalidation.org/):
+This is licensed under the AL 2.0, see above.
+
+==
+
 For Woodstox (http://woodstox.codehaus.org/):
 This is licensed under the AL 2.0, see above.
 

http://git-wip-us.apache.org/repos/asf/syncope/blob/4e6dee22/client/cli/NOTICE
----------------------------------------------------------------------
diff --git a/client/cli/NOTICE b/client/cli/NOTICE
index 5c9b851..b31c6d8 100644
--- a/client/cli/NOTICE
+++ b/client/cli/NOTICE
@@ -48,6 +48,11 @@ All rights reserved.
 
 ==
 
+This product includes software developed by the Bean Validation Project (http://beanvalidation.org).
+Copyright (c) Red Hat, Inc., Emmanuel Bernard
+
+==
+
 This product includes software developed by the Woodstox Project (http://woodstox.codehaus.org/).
 
 ==


[3/5] syncope git commit: [SYNCOPE-718] standalone

Posted by il...@apache.org.
[SYNCOPE-718] standalone


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

Branch: refs/heads/master
Commit: 80798ccee84866e7f4e8c1268cbf9e657a6acb4c
Parents: 34af185
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Nov 10 18:10:28 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Nov 10 18:10:28 2015 +0100

----------------------------------------------------------------------
 .../main/resources/META-INF/web-fragment.xml    | 19 +++---------------
 pom.xml                                         |  1 +
 standalone/pom.xml                              | 21 ++++++++++++++++++++
 3 files changed, 25 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/80798cce/client/enduser/src/main/resources/META-INF/web-fragment.xml
----------------------------------------------------------------------
diff --git a/client/enduser/src/main/resources/META-INF/web-fragment.xml b/client/enduser/src/main/resources/META-INF/web-fragment.xml
index b949d4c..786b59c 100644
--- a/client/enduser/src/main/resources/META-INF/web-fragment.xml
+++ b/client/enduser/src/main/resources/META-INF/web-fragment.xml
@@ -25,26 +25,13 @@ under the License.
   
   <!--causes problem if deployed with other fragments-->
   <display-name>Apache Syncope ${syncope.version} Enduser</display-name>
-
-<!--  <context-param>
+  
+  <context-param>
     <param-name>configuration</param-name>
     <param-value>deployment</param-value>
   </context-param>
-    
-  <filter>
-    <filter-name>SyncopeEnduser</filter-name>
-    <filter-class>org.apache.wicket.protocol.ws.javax.JavaxWebSocketFilter</filter-class>
-    <init-param>
-      <param-name>filterMappingUrlPattern</param-name>
-      <param-value>/*</param-value>
-    </init-param>
-    <init-param>
-      <param-name>applicationClassName</param-name>
-      <param-value>org.apache.syncope.client.enduser.SyncopeEnduserApplication</param-value>
-    </init-param>
-  </filter>-->
   
-    <filter>
+  <filter>
     <filter-name>SyncopeEnduser</filter-name>
     <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
     <init-param>

http://git-wip-us.apache.org/repos/asf/syncope/blob/80798cce/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b23c1c1..cf6e055 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1227,6 +1227,7 @@ under the License.
           <version>2.10</version>
           <configuration>
             <outputDirectory>${bundles.directory}</outputDirectory>
+            <useBaseVersion>true</useBaseVersion>
             <artifactItems>
               <artifactItem>
                 <groupId>net.tirasa.connid.bundles.soap</groupId>

http://git-wip-us.apache.org/repos/asf/syncope/blob/80798cce/standalone/pom.xml
----------------------------------------------------------------------
diff --git a/standalone/pom.xml b/standalone/pom.xml
index 2c9fad0..8189146 100644
--- a/standalone/pom.xml
+++ b/standalone/pom.xml
@@ -72,6 +72,13 @@ under the License.
       <type>war</type>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.syncope.fit</groupId>
+      <artifactId>syncope-fit-enduser-reference</artifactId>
+      <version>${project.version}</version>
+      <type>war</type>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
@@ -150,6 +157,14 @@ under the License.
                   <fileset dir="${project.build.outputDirectory}/console" />
                 </copy>
 
+                <!-- Syncope enduser -->
+                <copy todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope-enduser">
+                  <fileset dir="../fit/enduser-reference/target/syncope-fit-enduser-reference-${project.version}" includes="**/*" />
+                </copy>
+                <copy todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope-enduser/WEB-INF/classes" overwrite="true">
+                  <fileset dir="${project.build.outputDirectory}/enduser" />
+                </copy>
+
                 <mkdir dir="${work.dir}/apache-tomcat-${tomcat.version}/${test.csvdir.path}" />
                 <copy file="../fit/core-reference/src/test/resources/test.csv" todir="${work.dir}/apache-tomcat-${tomcat.version}/${test.csvdir.path}" />
 
@@ -258,6 +273,12 @@ under the License.
       </resource>
       
       <resource>
+        <directory>../fit/enduser-reference/src/main/resources</directory>
+        <targetPath>enduser</targetPath>
+        <filtering>true</filtering>
+      </resource>
+
+      <resource>
         <directory>src/main/resources</directory>
       </resource>
       <resource>


[5/5] syncope git commit: [SYNCOPE-718] deb

Posted by il...@apache.org.
[SYNCOPE-718] deb


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

Branch: refs/heads/master
Commit: e8eceae0fe3f9b559a3e66fbcf968ef6e5b2eba6
Parents: 4e6dee2
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Tue Nov 10 18:33:12 2015 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Tue Nov 10 18:33:12 2015 +0100

----------------------------------------------------------------------
 deb/console/pom.xml                             |   2 -
 deb/console/src/deb/control/conffiles           |   1 -
 deb/core/pom.xml                                |   1 -
 deb/enduser/LICENSE                             | 748 +++++++++++++++++++
 deb/enduser/NOTICE                              | 119 +++
 deb/enduser/pom.xml                             | 272 +++++++
 deb/enduser/src/deb/control/conffiles           |   2 +
 deb/enduser/src/deb/control/control             |  14 +
 deb/enduser/src/deb/control/postinst            |  19 +
 deb/enduser/src/deb/control/postrm              |  17 +
 deb/enduser/src/deb/control/preinst             |  17 +
 deb/enduser/src/deb/control/prerm               |  17 +
 deb/enduser/src/deb/tomcat8/syncope-enduser.xml |  26 +
 deb/pom.xml                                     |   1 +
 .../src/main/resources/log4j2.xml               |   2 +-
 15 files changed, 1253 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/console/pom.xml
----------------------------------------------------------------------
diff --git a/deb/console/pom.xml b/deb/console/pom.xml
index c000457..9008394 100644
--- a/deb/console/pom.xml
+++ b/deb/console/pom.xml
@@ -92,7 +92,6 @@ under the License.
         <directory>${project.basedir}/../../client/console/src/main/resources</directory>
         <includes>
           <include>console.properties</include>
-          <include>consoleContext.xml</include>
         </includes>
         <targetPath>${project.build.directory}/etc</targetPath>
         <filtering>true</filtering>
@@ -126,7 +125,6 @@ under the License.
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
-        <version>2.6</version>
         <executions>
           <execution>
             <id>copy-javadoc-legal-files</id>

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/console/src/deb/control/conffiles
----------------------------------------------------------------------
diff --git a/deb/console/src/deb/control/conffiles b/deb/console/src/deb/control/conffiles
index 82acdf8..f540c1e 100644
--- a/deb/console/src/deb/control/conffiles
+++ b/deb/console/src/deb/control/conffiles
@@ -1,3 +1,2 @@
 /etc/tomcat8/Catalina/localhost/syncope-console.xml
-/etc/apache-syncope/consoleContext.xml
 /etc/apache-syncope/console.properties

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/core/pom.xml
----------------------------------------------------------------------
diff --git a/deb/core/pom.xml b/deb/core/pom.xml
index 612357f..e08f3d8 100644
--- a/deb/core/pom.xml
+++ b/deb/core/pom.xml
@@ -219,7 +219,6 @@ under the License.
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-resources-plugin</artifactId>
-        <version>2.6</version>
         <executions>
           <execution>
             <id>copy-javadoc-legal-files</id>

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/LICENSE
----------------------------------------------------------------------
diff --git a/deb/enduser/LICENSE b/deb/enduser/LICENSE
new file mode 100644
index 0000000..95380f5
--- /dev/null
+++ b/deb/enduser/LICENSE
@@ -0,0 +1,748 @@
+                                 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 javax.annotation-api (http://www.oracle.com/):
+This is licensed under CDDL 1.0.
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+1.1. "Contributor" means each individual or entity that
+creates or contributes to the creation of Modifications.
+
+1.2. "Contributor Version" means the combination of the
+Original Software, prior Modifications used by a
+Contributor (if any), and the Modifications made by that
+particular Contributor.
+
+1.3. "Covered Software" means (a) the Original Software, or
+(b) Modifications, or (c) the combination of files
+containing Original Software with files containing
+Modifications, in each case including portions thereof.
+
+1.4. "Executable" means the Covered Software in any form
+other than Source Code.
+
+1.5. "Initial Developer" means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. "Larger Work" means a work which combines Covered
+Software or portions thereof with code not governed by the
+terms of this License.
+
+1.7. "License" means this document.
+
+1.8. "Licensable" means having the right to grant, to the
+maximum extent possible, whether at the time of the initial
+grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. "Modifications" means the Source Code and Executable
+form of any of the following:
+
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a
+file containing Original Software or previous
+Modifications;
+
+B. Any new file that contains any part of the
+Original Software or previous Modification; or
+
+C. Any new file that is contributed or otherwise made
+available under the terms of this License.
+
+1.10. "Original Software" means the Source Code and
+Executable form of computer software code that is
+originally released under this License.
+
+1.11. "Patent Claims" means any patent claim(s), now owned
+or hereafter acquired, including without limitation,
+method, process, and apparatus claims, in any patent
+Licensable by grantor.
+
+1.12. "Source Code" means (a) the common form of computer
+software code in which modifications are made and (b)
+associated documentation included in or with such code.
+
+1.13. "You" (or "Your") means an individual or a legal
+entity exercising rights under, and complying with all of
+the terms of, this License. For legal entities, "You"
+includes any entity which controls, is controlled by, or is
+under common control with You. For purposes of this
+definition, "control" means (a) the power, direct or
+indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (b) ownership
+of more than fifty percent (50%) of the outstanding shares
+or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, the
+Initial Developer hereby grants You a world-wide,
+royalty-free, non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer,
+to use, reproduce, modify, display, perform,
+sublicense and distribute the Original Software (or
+portions thereof), with or without Modifications,
+and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using or selling of Original Software, to make, have
+made, use, practice, sell, and offer for sale, and/or
+otherwise dispose of the Original Software (or
+portions thereof).
+
+(c) The licenses granted in Sections 2.1(a) and (b)
+are effective on the date Initial Developer first
+distributes or otherwise makes the Original Software
+available to a third party under the terms of this
+License.
+
+(d) Notwithstanding Section 2.1(b) above, no patent
+license is granted: (1) for code that You delete from
+the Original Software, or (2) for infringements
+caused by: (i) the modification of the Original
+Software, or (ii) the combination of the Original
+Software with other software or devices.
+
+2.2. Contributor Grant.
+
+Conditioned upon Your compliance with Section 3.1 below and
+subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Contributor to
+use, reproduce, modify, display, perform, sublicense
+and distribute the Modifications created by such
+Contributor (or portions thereof), either on an
+unmodified basis, with other Modifications, as
+Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent Claims infringed by the making,
+using, or selling of Modifications made by that
+Contributor either alone and/or in combination with
+its Contributor Version (or portions of such
+combination), to make, use, sell, offer for sale,
+have made, and/or otherwise dispose of: (1)
+Modifications made by that Contributor (or portions
+thereof); and (2) the combination of Modifications
+made by that Contributor with its Contributor Version
+(or portions of such combination).
+
+(c) The licenses granted in Sections 2.2(a) and
+2.2(b) are effective on the date Contributor first
+distributes or otherwise makes the Modifications
+available to a third party.
+
+(d) Notwithstanding Section 2.2(b) above, no patent
+license is granted: (1) for any code that Contributor
+has deleted from the Contributor Version; (2) for
+infringements caused by: (i) third party
+modifications of Contributor Version, or (ii) the
+combination of Modifications made by that Contributor
+with other software (except as part of the
+Contributor Version) or other devices; or (3) under
+Patent Claims infringed by Covered Software in the
+absence of Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source Code.
+
+Any Covered Software that You distribute or otherwise make
+available in Executable form must also be made available in
+Source Code form and that Source Code form must be
+distributed only under the terms of this License. You must
+include a copy of this License with every copy of the
+Source Code form of the Covered Software You distribute or
+otherwise make available. You must inform recipients of any
+such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a
+reasonable manner on or through a medium customarily used
+for software exchange.
+
+3.2. Modifications.
+
+The Modifications that You create or to which You
+contribute are governed by the terms of this License. You
+represent that You believe Your Modifications are Your
+original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices.
+
+You must include a notice in each of Your Modifications
+that identifies You as the Contributor of the Modification.
+You may not remove or alter any copyright, patent or
+trademark notices contained within the Covered Software, or
+any notices of licensing or any descriptive text giving
+attribution to any Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+
+You may not offer or impose any terms on any Covered
+Software in Source Code form that alters or restricts the
+applicable version of this License or the recipients'
+rights hereunder. You may choose to offer, and to charge a
+fee for, warranty, support, indemnity or liability
+obligations to one or more recipients of Covered Software.
+However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You
+must make it absolutely clear that any such warranty,
+support, indemnity or liability obligation is offered by
+You alone, and You hereby agree to indemnify the Initial
+Developer and every Contributor for any liability incurred
+by the Initial Developer or such Contributor as a result of
+warranty, support, indemnity or liability terms You offer.
+
+3.5. Distribution of Executable Versions.
+
+You may distribute the Executable form of the Covered
+Software under the terms of this License or under the terms
+of a license of Your choice, which may contain terms
+different from this License, provided that You are in
+compliance with the terms of this License and that the
+license for the Executable form does not attempt to limit
+or alter the recipient's rights in the Source Code form
+from the rights set forth in this License. If You
+distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that
+any terms which differ from this License are offered by You
+alone, not by the Initial Developer or Contributor. You
+hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial
+Developer or such Contributor as a result of any such terms
+You offer.
+
+3.6. Larger Works.
+
+You may create a Larger Work by combining Covered Software
+with other code not governed by the terms of this License
+and distribute the Larger Work as a single product. In such
+a case, You must make sure the requirements of this License
+are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1. New Versions.
+
+Sun Microsystems, Inc. is the initial license steward and
+may publish revised and/or new versions of this License
+from time to time. Each version will be given a
+distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the
+right to modify this License.
+
+4.2. Effect of New Versions.
+
+You may always continue to use, distribute or otherwise
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. If the Initial Developer includes a
+notice in the Original Software prohibiting it from being
+distributed or otherwise made available under any
+subsequent version of the License, You must distribute and
+make the Covered Software available under the terms of the
+version of the License under which You originally received
+the Covered Software. Otherwise, You may also choose to
+use, distribute or otherwise make the Covered Software
+available under the terms of any subsequent version of the
+License published by the license steward.
+
+4.3. Modified Versions.
+
+When You are an Initial Developer and You want to create a
+new license for Your Original Software, You may create and
+use a modified version of this License if You: (a) rename
+the license and remove any references to the name of the
+license steward (except to note that the license differs
+from this License); and (b) otherwise make it clear that
+the license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS"
+BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED
+SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR
+PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE
+INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF
+ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF
+WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS
+DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights granted hereunder will
+terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of
+becoming aware of the breach. Provisions which, by their
+nature, must remain in effect beyond the termination of
+this License shall survive.
+
+6.2. If You assert a patent infringement claim (excluding
+declaratory judgment actions) against Initial Developer or
+a Contributor (the Initial Developer or Contributor against
+whom You assert such claim is referred to as "Participant")
+alleging that the Participant Software (meaning the
+Contributor Version where the Participant is a Contributor
+or the Original Software where the Participant is the
+Initial Developer) directly or indirectly infringes any
+patent, then any and all rights granted directly or
+indirectly to You by such Participant, the Initial
+Developer (if the Initial Developer is not the Participant)
+and all Contributors under Sections 2.1 and/or 2.2 of this
+License shall, upon 60 days notice from Participant
+terminate prospectively and automatically at the expiration
+of such 60 day notice period, unless if within such 60 day
+period You withdraw Your claim with respect to the
+Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with
+Participant.
+
+6.3. In the event of termination under Sections 6.1 or 6.2
+above, all end user licenses that have been validly granted
+by You or any distributor hereunder prior to termination
+(excluding licenses granted to You by any distributor)
+shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE
+INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE
+LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR
+CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK
+STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL
+INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT
+APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR
+CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT
+APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a "commercial item," as that term is
+defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial
+computer software" (as that term is defined at 48 C.F.R. $
+252.227-7014(a)(1)) and "commercial computer software
+documentation" as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+through 227.7202-4 (June 1995), all U.S. Government End Users
+acquire Covered Software with only those rights set forth herein.
+This U.S. Government Rights clause is in lieu of, and supersedes,
+any other FAR, DFAR, or other clause or provision that addresses
+Government rights in computer software under this License.
+
+9. MISCELLANEOUS.
+
+This License represents the complete agreement concerning subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the
+extent necessary to make it enforceable. This License shall be
+governed by the law of the jurisdiction specified in a notice
+contained within the Original Software (except to the extent
+applicable law, if any, provides otherwise), excluding such
+jurisdiction's conflict-of-law provisions. Any litigation
+relating to this License shall be subject to the jurisdiction of
+the courts located in the jurisdiction and venue specified in a
+notice contained within the Original Software, with the losing
+party responsible for costs, including, without limitation, court
+costs and reasonable attorneys' fees and expenses. The
+application of the United Nations Convention on Contracts for the
+International Sale of Goods is expressly excluded. Any law or
+regulation which provides that the language of a contract shall
+be construed against the drafter shall not apply to this License.
+You agree that You alone are responsible for compliance with the
+United States export administration regulations (and the export
+control laws and regulation of any other countries) when You use,
+distribute or otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or
+indirectly, out of its utilization of rights under this License
+and You agree to work with Initial Developer and Contributors to
+distribute such responsibility on an equitable basis. Nothing
+herein is intended or shall be deemed to constitute any admission
+of liability.
+
+==
+
+For AOP Alliance (http://aopalliance.sourceforge.net/):
+This is Public Domain.
+
+==
+
+For ASM (http://asm.ow2.org/):
+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:
+
+ * Redistributions of source code must retain the above copyright notice, this list of 
+   conditions and the following disclaimer.
+ * 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.
+ * Neither the name of the author 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 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+==
+
+For cglib (https://github.com/cglib/cglib):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For CodeMirror (http://codemirror.net/):
+This is licensed under the terms of the MIT license.
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+ 
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+ 
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+==
+
+For LMAX Disruptor (https://lmax-exchange.github.io/disruptor/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For javax.inject (http://code.google.com/p/atinject/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For Jackson (http://wiki.fasterxml.com/JacksonHome):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For javax.ws.rs-api (http://www.oracle.com/):
+This is licensed under CDDL 1.0, see above.
+
+==
+
+For Joda Time (http://www.joda.org/joda-time/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For jQuery (http://jquery.com/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For jQuery UI (http://jqueryui.com/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For Admin LTE (https://github.com/almasaeed2010/AdminLTE/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For Bootstrap (http://getbootstrap.com/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For Bootstrap-select (https://silviomoreto.github.io/bootstrap-select/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For Font Awesome (https://fortawesome.github.io/Font-Awesome/icons/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For ionicons (http://ionicons.com/):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For Simple Logging Facade for Java - SLF4J (http://www.slf4j.org/):
+This is licensed under the MIT license, see above.
+
+==
+
+For Spring Framework (http://projects.spring.io/spring-framework/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For StAX2 API (http://woodstox.codehaus.org/StAX2):
+This is licensed under the BSD license, see above.
+
+==
+
+For Bean Validation API (http://beanvalidation.org/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For Woodstox (http://woodstox.codehaus.org/):
+This is licensed under the AL 2.0, see above.
+
+==
+
+For AngularJS (http://angularjs.org):
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For FileSaver.js (https://github.com/eligrey/FileSaver.js)
+This is licensed under the terms of the MIT license, see above.
+
+==
+
+For Select2 (https://select2.github.io/)
+This is licensed under the terms of the MIT license, see above.

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/NOTICE
----------------------------------------------------------------------
diff --git a/deb/enduser/NOTICE b/deb/enduser/NOTICE
new file mode 100644
index 0000000..1fd0db0
--- /dev/null
+++ b/deb/enduser/NOTICE
@@ -0,0 +1,119 @@
+Apache Syncope
+Copyright 2012-2015 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 Oracle Corporation.
+Copyright (C) 1999-2013 http://www.oracle.com/ and/or its affiliates.
+All rights reserved.
+
+==
+
+This product includes software developed by the AOP Alliance (Java/J2EE AOP standards).
+
+==
+
+This product includes software developed by the ASM project (http://asm.ow2.org/).
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+==
+
+This product includes the CodeMirror JavaScript component.
+Copyright (C) 2015 by Marijn Haverbeke <ma...@gmail.com> and others
+
+==
+
+This product includes software developed by the atinject Project.
+Copyright (c) 2009, http://code.google.com/p/atinject/
+All rights reserved.
+
+==
+
+This product includes software developed by the Jackson project.
+http://wiki.fasterxml.com/JacksonHome
+
+==
+
+This product includes software developed by the Joda Time project.
+http://www.joda.org/joda-time
+
+==
+
+This product includes the jQuery Core JavaScript Library.
+Copyright 2007, 2015 jQuery Foundation and other contributors,
+https://jquery.org/
+
+==
+
+This product includes the jQuery UI JavaScript Library.
+Copyright 2007, 2015 jQuery Foundation and other contributors,
+https://jquery.org/
+
+==
+
+This product includes software developed by Almsaeed Studio.
+Copyright 2014-2015 Almsaeed Studio. All rights reserved.
+https://almsaeedstudio.com/
+
+==
+
+This products includes software developed by Twitter Bootstrap.
+http://twitter.github.com/bootstrap/
+
+==
+
+This products includes software developed by bootstrap-select.
+Copyright (C) 2013-2015 bootstrap-select.
+https://silviomoreto.github.io/bootstrap-select/
+
+==
+
+This products includes software developed by Font Awesome.
+https://fortawesome.github.io/Font-Awesome/icons/
+
+==
+
+This products includes software developed by ionicons.
+http://ionicons.com/
+
+==
+
+This products includes software developed by SLF4J.
+Copyright (c) 2004-2013 QOS.ch.
+http://www.slf4j.org
+
+==
+
+This product includes software developed by SpringSource.
+Copyright (c) 2004-2015 SpringSource
+All rights reserved.
+
+==
+
+This product includes software developed by the Bean Validation Project (http://beanvalidation.org).
+Copyright (c) Red Hat, Inc., Emmanuel Bernard
+
+==
+
+This product includes software developed by the Woodstox Project (http://woodstox.codehaus.org/).
+
+==
+
+This product includes software developed by the AngularJS Project (http://angularjs.org).
+
+==
+
+This product includes software developed by the FileSaver.js Project (https://github.com/eligrey/FileSaver.js).
+Copyright © 2015 Eli Grey.
+
+==
+
+This product includes software developed by the Select2 Project (https://select2.github.io/).
+Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/pom.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/pom.xml b/deb/enduser/pom.xml
new file mode 100644
index 0000000..ef0f631
--- /dev/null
+++ b/deb/enduser/pom.xml
@@ -0,0 +1,272 @@
+<?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-deb</artifactId>
+    <version>2.0.0-SNAPSHOT</version>
+  </parent>
+
+  <name>Apache Syncope Deb Enduser</name>
+  <description>Apache Syncope Deb Enduser</description>
+  <groupId>org.apache.syncope</groupId>
+  <artifactId>syncope-deb-enduser</artifactId>
+  <packaging>war</packaging>
+
+  <properties>
+    <rootpom.basedir>${basedir}/../..</rootpom.basedir>
+  </properties>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.syncope.client</groupId>
+      <artifactId>syncope-client-enduser</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.lmax</groupId>
+      <artifactId>disruptor</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.logging.log4j</groupId>
+      <artifactId>log4j-slf4j-impl</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>${project.basedir}/src/deb/tomcat8</directory>
+        <filtering>true</filtering>
+        <targetPath>${project.build.directory}/tomcat8</targetPath>
+      </resource>
+      
+      <resource>
+        <directory>${project.basedir}/../../client/enduser/src/main/resources</directory>
+        <includes>
+          <include>enduser.properties</include>
+          <include>enduserContext.xml</include>
+        </includes>
+        <targetPath>${project.build.directory}/etc</targetPath>
+        <filtering>true</filtering>
+      </resource>
+      <resource>
+        <directory>${basedir}/../../fit/enduser-reference/src/main/resources</directory>
+        <includes>
+          <include>log4j2.xml</include>
+        </includes>
+        <targetPath>${project.build.directory}/classes</targetPath>
+        <filtering>true</filtering>
+      </resource>
+      
+      <resource>
+        <directory>${project.build.directory}/etc</directory>
+        <targetPath>${project.build.directory}/classes</targetPath>
+      </resource>
+      
+      <resource>
+        <directory>${basedir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>LICENSE</include>
+          <include>NOTICE</include>
+        </includes>
+      </resource>
+    </resources>
+
+    <plugins>
+      <!-- Put NOTICE and LICENSE files in all javadoc artifacts -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-resources-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>copy-javadoc-legal-files</id>
+            <phase>process-resources</phase>
+            <goals>
+              <goal>copy-resources</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.directory}/apidocs/META-INF</outputDirectory>
+              <resources>
+                <resource>
+                  <directory>../..</directory>
+                  <includes>
+                    <include>LICENSE</include>
+                    <include>NOTICE</include>
+                  </includes>
+                </resource>
+              </resources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <inherited>false</inherited>
+        <extensions>true</extensions>
+        <configuration>
+          <failOnMissingWebXml>false</failOnMissingWebXml>
+          <webResources>
+            <resource>
+              <directory>${basedir}</directory>
+              <targetPath>META-INF</targetPath>
+              <includes>
+                <include>LICENSE</include>
+                <include>NOTICE</include>
+              </includes>
+            </resource>
+          </webResources>                 
+        </configuration>
+      </plugin>
+      
+      <plugin>
+        <groupId>org.vafer</groupId>
+        <artifactId>jdeb</artifactId>
+        <inherited>true</inherited>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>jdeb</goal>
+            </goals>
+            <configuration>
+              <verbose>false</verbose>
+              <controlDir>${project.basedir}/src/deb/control</controlDir>
+              <deb>${project.build.directory}/apache-syncope-enduser-${project.version}.deb</deb>
+              <dataSet>
+                <data>
+                  <type>template</type>
+                  <paths>
+                    <path>/var/lib/apache-syncope</path>
+                    <path>${log.directory}</path>
+                  </paths>
+                  <mapper>
+                    <type>perm</type>
+                    <user>tomcat8</user>
+                    <group>tomcat8</group>
+                  </mapper>
+                </data>
+
+                <data>
+                  <src>${project.build.directory}/tomcat8</src>
+                  <type>directory</type>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/etc/tomcat8/Catalina/localhost</prefix>
+                    <user>tomcat8</user>
+                    <group>tomcat8</group>
+                  </mapper>
+                </data>
+                <data>
+                  <src>${project.build.directory}/etc</src>
+                  <type>directory</type>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>${conf.directory}</prefix>
+                    <user>tomcat8</user>
+                    <group>tomcat8</group>
+                  </mapper>
+                </data>
+                <data>
+                  <src>${project.build.directory}/${project.build.finalName}.war</src>
+                  <type>file</type>
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/usr/share/apache-syncope</prefix>
+                    <user>tomcat8</user>
+                    <group>tomcat8</group>
+                  </mapper>
+                </data>
+                <data>
+                  <src>${basedir}</src>
+                  <type>directory</type>
+                  <includes>LICENSE,NOTICE</includes>                  
+                  <mapper>
+                    <type>perm</type>
+                    <prefix>/usr/share/doc/apache-syncope-enduser</prefix>
+                  </mapper>
+                </data>                
+              </dataSet>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>checkstyle-check</id>
+            <phase>none</phase>
+          </execution>
+        </executions>
+      </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>           
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+  
+</project>

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/control/conffiles
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/conffiles b/deb/enduser/src/deb/control/conffiles
new file mode 100644
index 0000000..ee81e59
--- /dev/null
+++ b/deb/enduser/src/deb/control/conffiles
@@ -0,0 +1,2 @@
+/etc/tomcat8/Catalina/localhost/syncope-enduser.xml
+/etc/apache-syncope/enduser.properties

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/control/control
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/control b/deb/enduser/src/deb/control/control
new file mode 100644
index 0000000..25df9d5
--- /dev/null
+++ b/deb/enduser/src/deb/control/control
@@ -0,0 +1,14 @@
+Package: apache-syncope-enduser
+Version: [[project.version]]
+Section: misc
+Priority: optional
+Architecture: all
+Depends: [[debian.dependencies]]
+Maintainer: The Apache Syncope project <de...@syncope.apache.org>
+Description: Apache Syncope enduser Web Application
+ Apache Syncope is an Open Source system for managing digital identities in enterprise environments,
+ implemented in Java EE technology and released under Apache 2.0 license.
+ Identity management (or IdM) represents the joint result of business process and IT to manage user data
+ on systems and applications. IdM involves considering user attributes, roles, resources and
+ entitlements in trying to give a decent answer to the question bumping up every time in an
+ IT administrator's mind: Who has access to What, When, How, and Why?

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/control/postinst
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/postinst b/deb/enduser/src/deb/control/postinst
new file mode 100644
index 0000000..2276c68
--- /dev/null
+++ b/deb/enduser/src/deb/control/postinst
@@ -0,0 +1,19 @@
+#!/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.
+chmod 775 /var/log/apache-syncope
+chown tomcat8 /var/log/apache-syncope

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/control/postrm
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/postrm b/deb/enduser/src/deb/control/postrm
new file mode 100644
index 0000000..349f48c
--- /dev/null
+++ b/deb/enduser/src/deb/control/postrm
@@ -0,0 +1,17 @@
+#!/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.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/control/preinst
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/preinst b/deb/enduser/src/deb/control/preinst
new file mode 100644
index 0000000..349f48c
--- /dev/null
+++ b/deb/enduser/src/deb/control/preinst
@@ -0,0 +1,17 @@
+#!/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.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/control/prerm
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/control/prerm b/deb/enduser/src/deb/control/prerm
new file mode 100644
index 0000000..349f48c
--- /dev/null
+++ b/deb/enduser/src/deb/control/prerm
@@ -0,0 +1,17 @@
+#!/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.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/enduser/src/deb/tomcat8/syncope-enduser.xml
----------------------------------------------------------------------
diff --git a/deb/enduser/src/deb/tomcat8/syncope-enduser.xml b/deb/enduser/src/deb/tomcat8/syncope-enduser.xml
new file mode 100644
index 0000000..bf48d94
--- /dev/null
+++ b/deb/enduser/src/deb/tomcat8/syncope-enduser.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<Context reloadable="false"
+         docBase="/usr/share/apache-syncope/${project.build.finalName}.war">
+
+  <!-- Disable session persistence across Tomcat restarts -->
+  <Manager pathname=""/>
+
+</Context>

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/deb/pom.xml
----------------------------------------------------------------------
diff --git a/deb/pom.xml b/deb/pom.xml
index b855c41..f4ed42e 100644
--- a/deb/pom.xml
+++ b/deb/pom.xml
@@ -47,6 +47,7 @@ under the License.
   <modules>
     <module>core</module>
     <module>console</module>
+    <module>enduser</module>
   </modules>
 
   <profiles>

http://git-wip-us.apache.org/repos/asf/syncope/blob/e8eceae0/fit/enduser-reference/src/main/resources/log4j2.xml
----------------------------------------------------------------------
diff --git a/fit/enduser-reference/src/main/resources/log4j2.xml b/fit/enduser-reference/src/main/resources/log4j2.xml
index b0854a6..0aa3572 100644
--- a/fit/enduser-reference/src/main/resources/log4j2.xml
+++ b/fit/enduser-reference/src/main/resources/log4j2.xml
@@ -41,7 +41,7 @@ under the License.
       <appender-ref ref="main"/>
     </asyncLogger>
 
-    <asyncLogger name="org.apache.syncope.client.console" additivity="false" level="ERROR">
+    <asyncLogger name="org.apache.syncope.client.enduser" additivity="false" level="ERROR">
       <appender-ref ref="main"/>
     </asyncLogger>