You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tamaya.apache.org by an...@apache.org on 2016/11/27 21:02:54 UTC

[2/2] incubator-tamaya-sandbox git commit: TAMAYA-202: Added first JUnit test case for OSGI tests with Karaf based on PaxExam for testing.

TAMAYA-202:  Added first JUnit test case for OSGI tests with Karaf based on PaxExam for testing.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/commit/166b3a3d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/tree/166b3a3d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/diff/166b3a3d

Branch: refs/heads/master
Commit: 166b3a3dde8f26c9c2f29c4da2724cace511a13b
Parents: 3dab25f
Author: anatole <an...@apache.org>
Authored: Sun Nov 27 22:02:26 2016 +0100
Committer: anatole <an...@apache.org>
Committed: Sun Nov 27 22:02:26 2016 +0100

----------------------------------------------------------------------
 apache-commons/pom.xml                          |   2 +-
 camel/pom.xml                                   |   2 +-
 configured-sysprops/pom.xml                     |   2 +-
 consul/pom.xml                                  |   2 +-
 etcd/pom.xml                                    |   2 +-
 hazelcast/pom.xml                               |   2 +-
 jodatime/pom.xml                                |   2 +-
 management/pom.xml                              |   2 +-
 metamodel/pom.xml                               |   2 +-
 osgi/pom.xml                                    |  65 +++++-
 .../java/org/apache/tamaya/osgi/Activator.java  |   5 -
 pom.xml                                         | 233 ++++++++++++++++++-
 propertysources/pom.xml                         |   4 +-
 remote/pom.xml                                  |   2 +-
 server/pom.xml                                  |   2 +-
 .../tamaya/ui/components/LazyProvider.java      |  81 -------
 .../tamaya/ui/components/PageTitleUpdater.java  |  47 ----
 .../ui/components/VerticalSpacedLayout.java     |  32 ---
 .../org/apache/tamaya/ui/events/EventView.java  | 181 --------------
 .../tamaya/ui/internal/PageTitleUpdater.java    |  47 ++++
 .../ui/internal/VerticalSpacedLayout.java       |  32 +++
 .../tamaya/ui/services/MessageProvider.java     |  43 ----
 .../apache/tamaya/ui/services/UserService.java  |  30 ---
 .../org/apache/tamaya/ui/spi/LazyProvider.java  |  81 +++++++
 .../apache/tamaya/ui/spi/MessageProvider.java   |  43 ++++
 .../org/apache/tamaya/ui/spi/UserService.java   |  30 +++
 usagetracker/pom.xml                            |   2 +-
 validation/pom.xml                              |   2 +-
 28 files changed, 527 insertions(+), 453 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/apache-commons/pom.xml
----------------------------------------------------------------------
diff --git a/apache-commons/pom.xml b/apache-commons/pom.xml
index 47eea0b..4486b29 100644
--- a/apache-commons/pom.xml
+++ b/apache-commons/pom.xml
@@ -28,7 +28,7 @@ under the License.
     </parent>
     <artifactId>tamaya-commons-config</artifactId>
     <name>Apache Tamaya Modules - Apache Commons</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <dependencies>
         <dependency>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/camel/pom.xml
----------------------------------------------------------------------
diff --git a/camel/pom.xml b/camel/pom.xml
index d07de87..806508e 100644
--- a/camel/pom.xml
+++ b/camel/pom.xml
@@ -28,7 +28,7 @@ under the License.
 
     <artifactId>tamaya-camel</artifactId>
     <name>Apache Tamaya Modules - Apache Camel Support</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <camel.version>2.17.0</camel.version>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/configured-sysprops/pom.xml
----------------------------------------------------------------------
diff --git a/configured-sysprops/pom.xml b/configured-sysprops/pom.xml
index 3ba0a45..780e8d8 100644
--- a/configured-sysprops/pom.xml
+++ b/configured-sysprops/pom.xml
@@ -28,7 +28,7 @@ under the License.
     </parent>
     <artifactId>tamaya-sysprops</artifactId>
     <name>Apache Tamaya Modules - Configured System Properties</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <build>
         <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/consul/pom.xml
----------------------------------------------------------------------
diff --git a/consul/pom.xml b/consul/pom.xml
index f3d8611..bbcecc8 100644
--- a/consul/pom.xml
+++ b/consul/pom.xml
@@ -28,7 +28,7 @@ under the License.
 
     <artifactId>tamaya-consul</artifactId>
     <name>Apache Tamaya Modules - Consul</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <build>
         <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/etcd/pom.xml
----------------------------------------------------------------------
diff --git a/etcd/pom.xml b/etcd/pom.xml
index c687b6a..52da6a9 100644
--- a/etcd/pom.xml
+++ b/etcd/pom.xml
@@ -28,7 +28,7 @@ under the License.
 
     <artifactId>tamaya-etcd</artifactId>
     <name>Apache Tamaya Modules - etcd PropertySource</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <build>
         <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/hazelcast/pom.xml
----------------------------------------------------------------------
diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml
index 231f5e4..e9ce8a7 100644
--- a/hazelcast/pom.xml
+++ b/hazelcast/pom.xml
@@ -28,7 +28,7 @@
 
     <artifactId>tamaya-hazelcast</artifactId>
     <name>Apache Tamaya Modules - Hazelcast PropertySource</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <build>
         <plugins>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/jodatime/pom.xml
----------------------------------------------------------------------
diff --git a/jodatime/pom.xml b/jodatime/pom.xml
index 0280212..3a89fc7 100644
--- a/jodatime/pom.xml
+++ b/jodatime/pom.xml
@@ -31,7 +31,7 @@ under the License.
 
     <artifactId>tamaya-jodatime</artifactId>
     <name>Apache Tamaya Modules - Joda-Time Support</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <inceptionYear>2015</inceptionYear>
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/management/pom.xml
----------------------------------------------------------------------
diff --git a/management/pom.xml b/management/pom.xml
index 5af0cf2..b5dcc0b 100644
--- a/management/pom.xml
+++ b/management/pom.xml
@@ -28,7 +28,7 @@ under the License.
 
     <artifactId>tamaya-management</artifactId>
     <name>Apache Tamaya Modules - JMX Support</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <jdkVersion>1.7</jdkVersion>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/metamodel/pom.xml
----------------------------------------------------------------------
diff --git a/metamodel/pom.xml b/metamodel/pom.xml
index 11301dd..13c5c47 100644
--- a/metamodel/pom.xml
+++ b/metamodel/pom.xml
@@ -31,7 +31,7 @@
     <description>This extension module provides functionality to configure the
         configuration system using meta-configuration.
     </description>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <jdkVersion>1.7</jdkVersion>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/osgi/pom.xml
----------------------------------------------------------------------
diff --git a/osgi/pom.xml b/osgi/pom.xml
index 5d3beb8..193abca 100644
--- a/osgi/pom.xml
+++ b/osgi/pom.xml
@@ -33,16 +33,32 @@
     <name>Apache Tamaya Integration - OSGi Services :: Tamaya Config</name>
     <description>Tamaya Based OSGI Implementation of ConfigAdmin and Config Injection</description>
 
+    <properties>
+        <karaf.version>4.0.7</karaf.version>
+        <osgi.version>6.0.0</osgi.version>
+        <pax.exam.version>4.5.0</pax.exam.version>
+    </properties>
+
     <dependencies>
+        <!--<dependency>-->
+            <!--<groupId>org.apache.felix</groupId>-->
+            <!--<artifactId>org.apache.felix.configadmin</artifactId>-->
+            <!--<version>1.8.8</version>-->
+        <!--</dependency>-->
         <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.configadmin</artifactId>
-            <version>1.8.8</version>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.service.cm</artifactId>
+            <version>1.5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-atinject_1.0_spec</artifactId>
+            <version>1.0</version>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
-            <version>6.0.0</version>
+            <version>${osgi.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.tamaya</groupId>
@@ -59,11 +75,14 @@
             <artifactId>tamaya-spisupport</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
-            <groupId>org.apache.tamaya.ext</groupId>
-            <artifactId>tamaya-injection</artifactId>
-            <version>${project.version}</version>
-        </dependency>
+
+        <!-- Testing -->
+
+        <!--<dependency>-->
+            <!--<groupId>org.apache.tamaya.ext</groupId>-->
+            <!--<artifactId>tamaya-injection</artifactId>-->
+            <!--<version>${project.version}</version>-->
+        <!--</dependency>-->
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>java-hamcrest</artifactId>
@@ -72,6 +91,34 @@
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-container-karaf</artifactId>
+            <version>${pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.ops4j.pax.exam</groupId>
+            <artifactId>pax-exam-junit4</artifactId>
+            <version>${pax.exam.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/org.ops4j.pax.url/pax-url-mvn -->
+        <dependency>
+            <groupId>org.ops4j.pax.url</groupId>
+            <artifactId>pax-url-mvn</artifactId>
+            <version>1.3.7</version>
+        </dependency>
+
+
+        <!--<dependency>-->
+            <!--<groupId>org.apache.karaf</groupId>-->
+            <!--<artifactId>apache-karaf</artifactId>-->
+            <!--<version>${karaf.version}</version>-->
+            <!--<type>zip</type>-->
+            <!--<scope>test</scope>-->
+        <!--</dependency>-->
+
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/osgi/src/main/java/org/apache/tamaya/osgi/Activator.java
----------------------------------------------------------------------
diff --git a/osgi/src/main/java/org/apache/tamaya/osgi/Activator.java b/osgi/src/main/java/org/apache/tamaya/osgi/Activator.java
index 4270324..73820f5 100644
--- a/osgi/src/main/java/org/apache/tamaya/osgi/Activator.java
+++ b/osgi/src/main/java/org/apache/tamaya/osgi/Activator.java
@@ -18,20 +18,15 @@
  */
 package org.apache.tamaya.osgi;
 
-import org.apache.tamaya.Configuration;
-import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.inject.ConfigurationInjection;
 import org.osgi.framework.BundleActivator;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.Constants;
-import org.osgi.framework.ServiceReference;
 import org.osgi.framework.ServiceRegistration;
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.util.tracker.ServiceTracker;
 
 import java.util.Dictionary;
 import java.util.Hashtable;
-import java.util.logging.Level;
 import java.util.logging.Logger;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index de7161a..77e670a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,17 +20,30 @@ under the License.
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>org.apache.tamaya</groupId>
-        <artifactId>tamaya-all</artifactId>
-        <version>0.3-incubating-SNAPSHOT</version>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>18</version>
+        <relativePath>org.apache:apache</relativePath>
     </parent>
-
-    <artifactId>tamaya-sandbox</artifactId>
     <groupId>org.apache.tamaya.ext</groupId>
-    <name>Apache Tamaya Extensions - Sandbox</name>
-    <description>This project contains the several extensions that can be used with Tamaya, but that where not yet ready for production use or still under heavy discussion.</description>
+    <artifactId>tamaya-sandbox</artifactId>
+    <version>0.3-incubating-SNAPSHOT</version>
     <packaging>pom</packaging>
 
+    <name>Apache Tamaya Sandbox</name>
+    <description>Extension modules for Apache Tamaya</description>
+    <url>https://tamaya.incubator.apache.org</url>
+    <inceptionYear>2016</inceptionYear>
+
+    <organization>
+        <name>Apache Software Foundation</name>
+        <url>https://apache.org</url>
+    </organization>
+
+    <prerequisites>
+        <maven>3.0.5</maven>
+    </prerequisites>
+
     <properties>
         <commons-io.version>2.5</commons-io.version>
         <findbugs.skip>false</findbugs.skip>
@@ -44,10 +57,12 @@ under the License.
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <json.spec.version>1.0-alpha-1</json.spec.version>
+        <johnzon.version>0.9-incubating</johnzon.version>
         <junit.version>4.12</junit.version>
 
         <!-- Dependency and plugin relate version properties go here -->
-        <johnzon.version>0.9-incubating</johnzon.version>
+        <arquillian.version>1.1.7.Final</arquillian.version>
+        <arquillian.deamon.version>1.0.0.Alpha1</arquillian.deamon.version>
 
         <!-- Keep the JRuby version in sync with the one used by Asciidoctor -->
         <asciidoctor.version>1.5.2</asciidoctor.version>
@@ -71,9 +86,181 @@ under the License.
         <released_version>0.2-incubating</released_version>
     </properties>
 
+    <licenses>
+        <license>
+            <name>Apache License</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
+            <distribution>repo</distribution>
+        </license>
+    </licenses>
+
+    <scm>
+        <connection>scm:git://git.apache.org/incubator-tamaya-extensions.git</connection>
+        <developerConnection>scm:git://git.apache.org/incubator-tamaya-extensions.git</developerConnection>
+        <url>https://git-wip-us.apache.org/repos/asf?p=incubator-tamaya-extensions.git</url>
+    </scm>
+
+    <issueManagement>
+        <system>jira</system>
+        <url>http://issues.apache.org/jira/browse/TAMAYA</url>
+    </issueManagement>
+
+    <mailingLists>
+        <mailingList>
+            <name>Tamaya Development List</name>
+            <post>dev@tamaya.incubator.apache.org</post>
+            <subscribe>dev-subscribe@tamaya.incubator.apache.org</subscribe>
+            <unsubscribe>dev-unsubscribe@tamaya.incubator.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/incubator-tamaya-dev/</archive>
+        </mailingList>
+        <mailingList>
+            <name>Tamaya Commits List</name>
+            <post>commits@tamaya.incubator.apache.org</post>
+            <subscribe>commits-subscribe@tamaya.incubator.apache.org</subscribe>
+            <unsubscribe>commits-unsubscribe@tamaya.incubator.apache.org</unsubscribe>
+            <archive>http://mail-archives.apache.org/mod_mbox/incubator-tamaya-commits/</archive>
+        </mailingList>
+        <mailingList>
+            <name>tamaya-private</name>
+            <subscribe>private-subscribe@tamaya.incubator.apache.org</subscribe>
+            <unsubscribe>private-unsubscribe@tamaya.incubator.apache.org</unsubscribe>
+            <post>private@tamaya.incubator.apache.org</post>
+            <archive>http://mail-archives.apache.org/mod_mbox/tamaya-private/</archive>
+        </mailingList>
+    </mailingLists>
+
+    <distributionManagement>
+    </distributionManagement>
+
+    <ciManagement>
+        <system>Jenkins</system>
+        <url>https://builds.apache.org/view/Tamaya/</url>
+    </ciManagement>
+
+    <developers>
+        <developer>
+            <name>Anatole Tresch</name>
+            <id>anatole</id>
+            <email>anatole -at- apache.org</email>
+            <roles>
+                <role>PMC</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+
+        <developer>
+            <id>struberg</id>
+            <name>Mark Struberg</name>
+            <email>struberg at apache.org</email>
+            <roles>
+                <role>PMC</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+
+        <developer>
+            <id>gpetracek</id>
+            <name>Gerhard Petracek</name>
+            <email>gpetracek at apache.org</email>
+            <organization>IRIAN.at, Austria</organization>
+            <organizationUrl>http://www.irian.at/</organizationUrl>
+            <roles>
+                <role>PMC</role>
+            </roles>
+            <timezone>+1</timezone>
+        </developer>
+
+        <developer>
+            <id>johndament</id>
+            <name>John D. Ament</name>
+            <email>johndament at apache.org</email>
+            <roles>
+                <role>PMC</role>
+            </roles>
+            <timezone>-5</timezone>
+        </developer>
+
+        <developer>
+            <id>plexus</id>
+            <name>Oliver B. Fischer</name>
+            <roles>
+                <role>PMC</role>
+            </roles>
+            <email>plexus@apache.org</email>
+            <timezone>+1</timezone>
+        </developer>
+
+        <developer>
+            <id>pottlinger</id>
+            <name>Phil Ottlinger</name>
+            <roles>
+                <role>Committer</role>
+            </roles>
+            <email>pottlinger at apache.org</email>
+            <timezone>+1</timezone>
+        </developer>
+    </developers>
+
     <dependencyManagement>
         <dependencies>
             <dependency>
+                <groupId>org.mockito</groupId>
+                <artifactId>mockito-core</artifactId>
+                <version>${mockito.version}</version>
+                <scope>test</scope>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.hamcrest</groupId>
+                        <artifactId>hamcrest-core</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>commons-io</groupId>
+                <artifactId>commons-io</artifactId>
+                <version>${commons-io.version}</version>
+                <scope>test</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>junit</groupId>
+                <artifactId>junit</artifactId>
+                <version>${junit.version}</version>
+                <scope>test</scope>
+                <exclusions>
+                    <exclusion>
+                        <groupId>org.hamcrest</groupId>
+                        <artifactId>hamcrest-core</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+
+            <dependency>
+                <groupId>com.google.code.findbugs</groupId>
+                <artifactId>jsr305</artifactId>
+                <version>${findbugs.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.hamcrest</groupId>
+                <artifactId>java-hamcrest</artifactId>
+                <version>${hamcrest.version}</version>
+                <scope>test</scope>
+            </dependency>
+
+            <dependency>
+                <groupId>rubygems</groupId>
+                <artifactId>asciidoctor-diagram</artifactId>
+                <version>${asciidoctor-diagramm.version}</version>
+                <type>gem</type>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.geronimo.specs</groupId>
+                <artifactId>geronimo-json_1.0_spec</artifactId>
+                <version>${json.spec.version}</version>
+            </dependency>
+            <dependency>
                 <groupId>org.apache.johnzon</groupId>
                 <artifactId>johnzon-core</artifactId>
                 <version>${johnzon.version}</version>
@@ -81,11 +268,37 @@ under the License.
             <dependency>
                 <groupId>org.hamcrest</groupId>
                 <artifactId>hamcrest-library</artifactId>
-                <version>1.3</version>
+                <version>${hamcrest.version}</version>
+                <scope>test</scope>
             </dependency>
         </dependencies>
     </dependencyManagement>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>biz.aQute.bnd</groupId>
+                <artifactId>bnd-maven-plugin</artifactId>
+                <version>3.3.0</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>bnd-process</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.7</source>
+                    <target>1.7</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
     <modules>
         <module>hazelcast</module>
         <module>apache-commons</module>
@@ -99,7 +312,7 @@ under the License.
         <module>camel</module>
         <module>propertysources</module>
         <!--<module>ui</module>-->
-        <!--<module>osgi</module>-->
+        <module>osgi</module>
         <module>management</module>
         <!--<module>metamodel</module>-->
     </modules>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/propertysources/pom.xml
----------------------------------------------------------------------
diff --git a/propertysources/pom.xml b/propertysources/pom.xml
index 0398cf6..8271f61 100644
--- a/propertysources/pom.xml
+++ b/propertysources/pom.xml
@@ -29,7 +29,7 @@ under the License.
     <artifactId>tamaya-propertysources</artifactId>
     <name>Apache Tamaya Modules - PropertySources</name>
     <description>A collection of simple property sources and property source providers.</description>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <dependencies>
         <dependency>
@@ -49,7 +49,7 @@ under the License.
         </dependency>
         <dependency>
             <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-library</artifactId>
+            <artifactId>java-hamcrest</artifactId>
         </dependency>
         <dependency>
             <groupId>org.apache.tamaya.ext</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/remote/pom.xml
----------------------------------------------------------------------
diff --git a/remote/pom.xml b/remote/pom.xml
index 92f428e..a9cb1a4 100644
--- a/remote/pom.xml
+++ b/remote/pom.xml
@@ -29,7 +29,7 @@ under the License.
 
     <artifactId>tamaya-remote</artifactId>
     <name>Apache Tamaya Modules - Remote PropertySource</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <jdkVersion>1.7</jdkVersion>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/server/pom.xml
----------------------------------------------------------------------
diff --git a/server/pom.xml b/server/pom.xml
index d2abf18..baa2355 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -28,7 +28,7 @@ under the License.
 
     <artifactId>tamaya-server</artifactId>
     <name>Apache Tamaya Modules - Server Extension</name>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <jdkVersion>1.7</jdkVersion>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/components/LazyProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/components/LazyProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/components/LazyProvider.java
deleted file mode 100644
index 2d1547f..0000000
--- a/ui/base/src/main/java/org/apache/tamaya/ui/components/LazyProvider.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.ui.components;
-
-import com.vaadin.navigator.View;
-import org.apache.tamaya.spi.ServiceContextManager;
-import org.apache.tamaya.ui.ViewProvider;
-import org.apache.tamaya.ui.services.MessageProvider;
-
-import java.util.Objects;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-/**
- * Lazily initializes a view when it's first accessed, then always returns the
- * same instance on subsequent calls.
- */
-public class LazyProvider implements ViewProvider {
-    private static final Logger LOG = Logger.getLogger(
-            LazyProvider.class.getName());
-    private Class<? extends View> viewClass;
-    private View view;
-    private String urlPattern;
-    private String name;
-
-    public LazyProvider(String name, String urlPattern, Class<? extends View> viewClass) {
-        this.viewClass = Objects.requireNonNull(viewClass);
-        this.urlPattern = Objects.requireNonNull(urlPattern);
-        this.name = Objects.requireNonNull(name);
-    }
-
-    @Override
-    public String getUrlPattern() {
-        return urlPattern;
-    }
-
-
-    @Override
-    public ViewLifecycle getLifecycle() {
-        return ViewLifecycle.LAZY;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    @Override
-    public String getDisplayName() {
-        return ServiceContextManager.getServiceContext().getService(MessageProvider.class)
-                .getMessage(name);
-    }
-
-    @Override
-    public View createView(Object... params) {
-        if(view==null){
-            try {
-                view = viewClass.newInstance();
-            } catch (Exception e) {
-                LOG.log(Level.SEVERE, "Failed to create view: "+urlPattern, e);
-            }
-        }
-        return view;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java b/ui/base/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
deleted file mode 100644
index 83a0105..0000000
--- a/ui/base/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.ui.components;
-
-import com.vaadin.navigator.View;
-import com.vaadin.navigator.ViewChangeListener;
-import com.vaadin.server.Page;
-import org.apache.tamaya.spi.ServiceContextManager;
-import org.apache.tamaya.ui.services.MessageProvider;
-
-/**
- * Listener that updates the page title when a new view is shown.
- */
-public class PageTitleUpdater implements ViewChangeListener {
-
-    @Override
-    public boolean beforeViewChange(ViewChangeEvent event) {
-        return true;
-    }
-
-    @Override
-    public void afterViewChange(ViewChangeEvent event) {
-        View view = event.getNewView();
-        String displayName = ServiceContextManager.getServiceContext().getService(MessageProvider.class)
-                .getMessage("view."+view.getClass().getSimpleName()+".name");
-        if (displayName != null) {
-            Page.getCurrent().setTitle(displayName);
-        }
-
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/components/VerticalSpacedLayout.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/components/VerticalSpacedLayout.java b/ui/base/src/main/java/org/apache/tamaya/ui/components/VerticalSpacedLayout.java
deleted file mode 100644
index 94fc980..0000000
--- a/ui/base/src/main/java/org/apache/tamaya/ui/components/VerticalSpacedLayout.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.ui.components;
-
-import com.vaadin.ui.VerticalLayout;
-
-/**
- * Vertical layout with spacing and margin on by default
- */
-public class VerticalSpacedLayout extends VerticalLayout {
-
-    public VerticalSpacedLayout() {
-        setMargin(true);
-        setSpacing(true);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/events/EventView.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/events/EventView.java b/ui/base/src/main/java/org/apache/tamaya/ui/events/EventView.java
deleted file mode 100644
index ffb59cf..0000000
--- a/ui/base/src/main/java/org/apache/tamaya/ui/events/EventView.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.ui.events;
-
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.navigator.View;
-import com.vaadin.navigator.ViewChangeListener;
-import com.vaadin.shared.ui.label.ContentMode;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.Notification;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextField;
-import org.apache.tamaya.events.ConfigEvent;
-import org.apache.tamaya.events.ConfigEventListener;
-import org.apache.tamaya.events.ConfigEventManager;
-import org.apache.tamaya.spi.ServiceContextManager;
-import org.apache.tamaya.ui.UIConstants;
-import org.apache.tamaya.ui.ViewProvider;
-import org.apache.tamaya.ui.components.VerticalSpacedLayout;
-import org.apache.tamaya.ui.services.MessageProvider;
-
-import javax.annotation.Priority;
-import java.util.Date;
-
-/**
- * Tamaya View for observing the current event stream.
- */
-public class EventView extends VerticalSpacedLayout implements View {
-
-    /**
-     * Provider used to register the view.
-     */
-    @Priority(20)
-    public static final class Provider implements ViewProvider{
-
-        @Override
-        public ViewLifecycle getLifecycle() {
-            return ViewLifecycle.EAGER;
-        }
-
-        @Override
-        public String getName() {
-            return "view.events.name";
-        }
-
-        @Override
-        public String getUrlPattern() {
-            return "/events";
-        }
-
-        @Override
-        public String getDisplayName() {
-            return getName();
-        }
-
-        @Override
-        public View createView(Object... params){
-            return new EventView();
-        }
-    }
-
-    private CheckBox changeMonitorEnabled = new CheckBox(ServiceContextManager.getServiceContext()
-            .getService(MessageProvider.class).getMessage("view.events.button.enableMonitoring"));
-    private Button clearViewButton = new Button(ServiceContextManager.getServiceContext()
-            .getService(MessageProvider.class).getMessage("view.events.button.clearView"));
-    private TextField pollingInterval = new TextField(ServiceContextManager.getServiceContext()
-            .getService(MessageProvider.class).getMessage("view.events.field.pollingInterval"));
-    private Table eventsTable = new Table(ServiceContextManager.getServiceContext()
-            .getService(MessageProvider.class).getMessage("view.events.table.name"));
-
-
-    public EventView() {
-        Label caption = new Label(ServiceContextManager.getServiceContext()
-                .getService(MessageProvider.class).getMessage("view.events.name"));
-        Label description = new Label(ServiceContextManager.getServiceContext()
-                .getService(MessageProvider.class).getMessage("view.events.description"),
-                ContentMode.HTML);
-
-        ConfigEventManager.addListener(new ConfigEventListener() {
-            @Override
-            public void onConfigEvent(ConfigEvent<?> event) {
-                addEvent(event);
-            }
-        });
-        changeMonitorEnabled.addValueChangeListener(new Property.ValueChangeListener() {
-            @Override
-            public void valueChange(Property.ValueChangeEvent valueChangeEvent) {
-                ConfigEventManager.enableChangeMonitoring(changeMonitorEnabled.getValue());
-                if(changeMonitorEnabled.getValue()) {
-                    Notification.show("Event Monitoring (Polling) active.");
-                }else{
-                    Notification.show("Event Monitoring (Polling) inactive.");
-                }
-            }
-        });
-        clearViewButton.addClickListener(new Button.ClickListener() {
-            @Override
-            public void buttonClick(Button.ClickEvent clickEvent) {
-                eventsTable.removeAllItems();
-                Notification.show("Events cleared.");
-            }
-        });
-
-        HorizontalLayout eventSettings = new HorizontalLayout();
-        eventSettings.addComponents(changeMonitorEnabled, new Label(" Polling Interval"), pollingInterval, clearViewButton);
-        changeMonitorEnabled.setValue(ConfigEventManager.isChangeMonitoring());
-        pollingInterval.setValue(String.valueOf(ConfigEventManager.getChangeMonitoringPeriod()));
-        pollingInterval.setRequired(true);
-        pollingInterval.addValueChangeListener(new Property.ValueChangeListener() {
-            @Override
-            public void valueChange(Property.ValueChangeEvent valueChangeEvent) {
-                try{
-                    long millis = Long.parseLong((String)valueChangeEvent.getProperty().getValue());
-                    ConfigEventManager.setChangeMonitoringPeriod(millis);
-                    Notification.show("Updated Event Monitoring Poll Interval to " + millis + " milliseconds.");
-                }catch(Exception e){
-                    Notification.show("Cannot update Event Monitoring Poll Interval to "
-                            + valueChangeEvent.getProperty().getValue(), Notification.Type.ERROR_MESSAGE);
-                }
-            }
-        });
-        eventsTable.addContainerProperty("Timestamp", Date.class, null);
-        eventsTable.addContainerProperty("Type", String.class, "?");
-        eventsTable.addContainerProperty("Payload", String.class, "<empty>");
-        eventsTable.addContainerProperty("Version",  String.class, "?");
-        eventsTable.setPageLength(20);
-        eventsTable.setWidth("100%");
-        eventsTable.setResponsive(true);
-
-
-        caption.addStyleName(UIConstants.LABEL_HUGE);
-        description.addStyleName(UIConstants.LABEL_LARGE);
-        addComponents(caption, description, eventSettings, eventsTable);
-    }
-
-    private void addEvent(ConfigEvent<?> evt){
-        Object newItemId = eventsTable.addItem();
-        Item row = eventsTable.getItem(newItemId);
-        row.getItemProperty("Timestamp").setValue(new Date(evt.getTimestamp()));
-        row.getItemProperty("Type").setValue(evt.getResourceType().getSimpleName());
-        String value = String.valueOf(evt.getResource());
-        String valueShort = value.length()<150?value:value.substring(0,147)+"...";
-        row.getItemProperty("Payload").setValue(valueShort);
-        row.getItemProperty("Version").setValue(evt.getVersion());
-    }
-
-
-    private String getCaption(String key, String value) {
-        int index = key.lastIndexOf('.');
-        if(index<0){
-            return key + " = " + value;
-        }else{
-            return key.substring(index+1) + " = " + value;
-        }
-    }
-
-    @Override
-    public void enter(ViewChangeListener.ViewChangeEvent event) {
-
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/internal/PageTitleUpdater.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/internal/PageTitleUpdater.java b/ui/base/src/main/java/org/apache/tamaya/ui/internal/PageTitleUpdater.java
new file mode 100644
index 0000000..83a0105
--- /dev/null
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/internal/PageTitleUpdater.java
@@ -0,0 +1,47 @@
+/*
+ * 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.tamaya.ui.components;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.server.Page;
+import org.apache.tamaya.spi.ServiceContextManager;
+import org.apache.tamaya.ui.services.MessageProvider;
+
+/**
+ * Listener that updates the page title when a new view is shown.
+ */
+public class PageTitleUpdater implements ViewChangeListener {
+
+    @Override
+    public boolean beforeViewChange(ViewChangeEvent event) {
+        return true;
+    }
+
+    @Override
+    public void afterViewChange(ViewChangeEvent event) {
+        View view = event.getNewView();
+        String displayName = ServiceContextManager.getServiceContext().getService(MessageProvider.class)
+                .getMessage("view."+view.getClass().getSimpleName()+".name");
+        if (displayName != null) {
+            Page.getCurrent().setTitle(displayName);
+        }
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/internal/VerticalSpacedLayout.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/internal/VerticalSpacedLayout.java b/ui/base/src/main/java/org/apache/tamaya/ui/internal/VerticalSpacedLayout.java
new file mode 100644
index 0000000..94fc980
--- /dev/null
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/internal/VerticalSpacedLayout.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.ui.components;
+
+import com.vaadin.ui.VerticalLayout;
+
+/**
+ * Vertical layout with spacing and margin on by default
+ */
+public class VerticalSpacedLayout extends VerticalLayout {
+
+    public VerticalSpacedLayout() {
+        setMargin(true);
+        setSpacing(true);
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/services/MessageProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/services/MessageProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/services/MessageProvider.java
deleted file mode 100644
index a15ae46..0000000
--- a/ui/base/src/main/java/org/apache/tamaya/ui/services/MessageProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.ui.services;
-
-import java.util.Locale;
-
-/**
- * Component resolving messages for being shown in the UI.
- */
-public interface MessageProvider {
-
-    /**
-     * Get a message using the default locale.
-     * @param key the message key, not null.
-     * @return the resolved message, or the key, never null.
-     */
-    String getMessage(String key);
-
-    /**
-     * Get a message.
-     * @param key the message key, not null.
-     * @param locale the target locale, or null, for the default locale.
-     * @return the resolved message, or the key, never null.
-     */
-    String getMessage(String key, Locale locale);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/services/UserService.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/services/UserService.java b/ui/base/src/main/java/org/apache/tamaya/ui/services/UserService.java
deleted file mode 100644
index 71a8a43..0000000
--- a/ui/base/src/main/java/org/apache/tamaya/ui/services/UserService.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tamaya.ui.services;
-
-import org.apache.tamaya.ui.User;
-
-/**
- * Created by atsticks on 29.03.16.
- */
-public interface UserService {
-
-    User login(String userId, String credentials);
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/spi/LazyProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/spi/LazyProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/spi/LazyProvider.java
new file mode 100644
index 0000000..2d1547f
--- /dev/null
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/spi/LazyProvider.java
@@ -0,0 +1,81 @@
+/*
+ * 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.tamaya.ui.components;
+
+import com.vaadin.navigator.View;
+import org.apache.tamaya.spi.ServiceContextManager;
+import org.apache.tamaya.ui.ViewProvider;
+import org.apache.tamaya.ui.services.MessageProvider;
+
+import java.util.Objects;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Lazily initializes a view when it's first accessed, then always returns the
+ * same instance on subsequent calls.
+ */
+public class LazyProvider implements ViewProvider {
+    private static final Logger LOG = Logger.getLogger(
+            LazyProvider.class.getName());
+    private Class<? extends View> viewClass;
+    private View view;
+    private String urlPattern;
+    private String name;
+
+    public LazyProvider(String name, String urlPattern, Class<? extends View> viewClass) {
+        this.viewClass = Objects.requireNonNull(viewClass);
+        this.urlPattern = Objects.requireNonNull(urlPattern);
+        this.name = Objects.requireNonNull(name);
+    }
+
+    @Override
+    public String getUrlPattern() {
+        return urlPattern;
+    }
+
+
+    @Override
+    public ViewLifecycle getLifecycle() {
+        return ViewLifecycle.LAZY;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public String getDisplayName() {
+        return ServiceContextManager.getServiceContext().getService(MessageProvider.class)
+                .getMessage(name);
+    }
+
+    @Override
+    public View createView(Object... params) {
+        if(view==null){
+            try {
+                view = viewClass.newInstance();
+            } catch (Exception e) {
+                LOG.log(Level.SEVERE, "Failed to create view: "+urlPattern, e);
+            }
+        }
+        return view;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/spi/MessageProvider.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/spi/MessageProvider.java b/ui/base/src/main/java/org/apache/tamaya/ui/spi/MessageProvider.java
new file mode 100644
index 0000000..a15ae46
--- /dev/null
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/spi/MessageProvider.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.ui.services;
+
+import java.util.Locale;
+
+/**
+ * Component resolving messages for being shown in the UI.
+ */
+public interface MessageProvider {
+
+    /**
+     * Get a message using the default locale.
+     * @param key the message key, not null.
+     * @return the resolved message, or the key, never null.
+     */
+    String getMessage(String key);
+
+    /**
+     * Get a message.
+     * @param key the message key, not null.
+     * @param locale the target locale, or null, for the default locale.
+     * @return the resolved message, or the key, never null.
+     */
+    String getMessage(String key, Locale locale);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/ui/base/src/main/java/org/apache/tamaya/ui/spi/UserService.java
----------------------------------------------------------------------
diff --git a/ui/base/src/main/java/org/apache/tamaya/ui/spi/UserService.java b/ui/base/src/main/java/org/apache/tamaya/ui/spi/UserService.java
new file mode 100644
index 0000000..71a8a43
--- /dev/null
+++ b/ui/base/src/main/java/org/apache/tamaya/ui/spi/UserService.java
@@ -0,0 +1,30 @@
+/*
+ * 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.tamaya.ui.services;
+
+import org.apache.tamaya.ui.User;
+
+/**
+ * Created by atsticks on 29.03.16.
+ */
+public interface UserService {
+
+    User login(String userId, String credentials);
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/usagetracker/pom.xml
----------------------------------------------------------------------
diff --git a/usagetracker/pom.xml b/usagetracker/pom.xml
index 371990c..226f280 100644
--- a/usagetracker/pom.xml
+++ b/usagetracker/pom.xml
@@ -31,7 +31,7 @@ under the License.
     <description>This extension module provides functionality to measure configuration
         usage during runtime.
     </description>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <jdkVersion>1.7</jdkVersion>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya-sandbox/blob/166b3a3d/validation/pom.xml
----------------------------------------------------------------------
diff --git a/validation/pom.xml b/validation/pom.xml
index e190257..2f81395 100644
--- a/validation/pom.xml
+++ b/validation/pom.xml
@@ -30,7 +30,7 @@
     <name>Apache Tamaya Modules - Validation</name>
     <description>This extension module provides functionality to validate configuration.
     </description>
-    <packaging>bundle</packaging>
+    <packaging>jar</packaging>
 
     <properties>
         <jdkVersion>1.7</jdkVersion>