tamaya-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From anat...@apache.org
Subject [02/15] incubator-tamaya git commit: TAMAYA-150 Added UI module and related functionality.
Date Tue, 19 Apr 2016 11:54:35 GMT
TAMAYA-150 Added UI module and related functionality.


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

Branch: refs/heads/master
Commit: cb2987cb2db51bff730eb3deb621f2e75964382f
Parents: d9e6e55
Author: anatole <anatole@apache.org>
Authored: Tue Apr 19 13:52:49 2016 +0200
Committer: anatole <anatole@apache.org>
Committed: Tue Apr 19 13:53:44 2016 +0200

----------------------------------------------------------------------
 modules/pom.xml                                 |   1 +
 .../apache/tamaya/server/ConfigServiceApp.java  |  10 +-
 modules/ui/pom.xml                              |  28 +----
 .../org/apache/tamaya/ui/ApplicationLayout.java |  14 ++-
 .../java/org/apache/tamaya/ui/CurrentUser.java  |  23 +++-
 .../main/java/org/apache/tamaya/ui/NavBar.java  |  15 ++-
 .../java/org/apache/tamaya/ui/TamayaUI.java     |  17 +++
 .../main/java/org/apache/tamaya/ui/User.java    | 124 +++++++++++++++++--
 .../java/org/apache/tamaya/ui/VadiinApp.java    |   7 +-
 .../tamaya/ui/components/PageTitleUpdater.java  |   4 +-
 .../org/apache/tamaya/ui/event/LogoutEvent.java |  26 ++++
 .../apache/tamaya/ui/event/NavigationEvent.java |  23 +++-
 .../ConfigurationBasedMessageProvider.java      |   8 +-
 .../ui/internal/ConfiguredUserService.java      |  76 ++++++++++++
 .../tamaya/ui/internal/URLPropertySource.java   |  18 +++
 .../apache/tamaya/ui/views/ComponentView.java   |  20 ++-
 .../org/apache/tamaya/ui/views/ConfigView.java  |  18 ++-
 .../org/apache/tamaya/ui/views/ErrorView.java   |   3 +
 .../org/apache/tamaya/ui/views/HomeView.java    |  12 +-
 .../apache/tamaya/ui/views/login/LoginBox.java  |  49 +++++---
 .../tamaya/ui/views/login/LoginEvent.java       |  42 ++++++-
 .../apache/tamaya/ui/views/login/LoginView.java |  24 ++++
 .../META-INF/javaconfiguration.properties       |  21 ++++
 .../org.apache.tamaya.ui.services.UserService   |  19 +++
 sandbox/pom.xml                                 |   1 -
 25 files changed, 523 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/pom.xml
----------------------------------------------------------------------
diff --git a/modules/pom.xml b/modules/pom.xml
index e32b92f..43f75e5 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -55,6 +55,7 @@ under the License.
         <module>server</module>
         <module>spi-support</module>
         <module>yaml</module>
+        <module>ui</module>
     </modules>
 
     <build>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/server/src/main/java/org/apache/tamaya/server/ConfigServiceApp.java
----------------------------------------------------------------------
diff --git a/modules/server/src/main/java/org/apache/tamaya/server/ConfigServiceApp.java b/modules/server/src/main/java/org/apache/tamaya/server/ConfigServiceApp.java
index 22422b3..880c4f5 100644
--- a/modules/server/src/main/java/org/apache/tamaya/server/ConfigServiceApp.java
+++ b/modules/server/src/main/java/org/apache/tamaya/server/ConfigServiceApp.java
@@ -19,7 +19,6 @@
 package org.apache.tamaya.server;
 
 
-import com.sun.jersey.api.core.ResourceConfig;
 import com.sun.jersey.spi.container.servlet.ServletContainer;
 import org.apache.catalina.Context;
 import org.apache.catalina.Wrapper;
@@ -27,7 +26,6 @@ import org.apache.catalina.startup.Tomcat;
 import org.apache.tamaya.Configuration;
 import org.apache.tamaya.ConfigurationProvider;
 
-import javax.servlet.Servlet;
 import javax.ws.rs.core.Application;
 import java.io.File;
 import java.util.HashSet;
@@ -38,6 +36,14 @@ import java.util.Set;
  */
 public class ConfigServiceApp {
 
+    /**
+     * Utility class.
+     */
+    private ConfigServiceApp(){}
+
+    /**
+     * JAX RS Application.
+     */
     public class ResourceLoader extends Application{
 
         @Override

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/pom.xml
----------------------------------------------------------------------
diff --git a/modules/ui/pom.xml b/modules/ui/pom.xml
index 4edbeb8..2ddb704 100644
--- a/modules/ui/pom.xml
+++ b/modules/ui/pom.xml
@@ -28,7 +28,7 @@ under the License.
         <relativePath>..</relativePath>
     </parent>
 
-    <packaging>war</packaging>
+    <packaging>jar</packaging>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>tamaya-ui</artifactId>
     <name>Apache Tamaya Modules - UI</name>
@@ -64,6 +64,11 @@ under the License.
             <version>${project.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.tamaya.ext</groupId>
+            <artifactId>tamaya-functions</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.tamaya</groupId>
             <artifactId>tamaya-core</artifactId>
             <version>${project.version}</version>
@@ -74,11 +79,6 @@ under the License.
             <artifactId>tamaya-spisupport</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <!--<dependency>-->
-            <!--<groupId>javax.servlet</groupId>-->
-            <!--<artifactId>javax.servlet-api</artifactId>-->
-            <!--<version>${servlet.api.version}</version>-->
-        <!--</dependency>-->
         <dependency>
             <groupId>com.vaadin</groupId>
             <artifactId>vaadin-server</artifactId>
@@ -115,22 +115,6 @@ under the License.
             <artifactId>tomcat-embed-logging-juli</artifactId>
             <version>${tomcat.version}</version>
         </dependency>
-        <!--<dependency>-->
-            <!--<groupId>javax.ws.rs</groupId>-->
-            <!--<artifactId>jsr311-api</artifactId>-->
-            <!--<version>1.1.1</version>-->
-            <!--<scope>provided</scope>-->
-        <!--</dependency>-->
-        <!--<dependency>-->
-            <!--<groupId>com.sun.jersey</groupId>-->
-            <!--<artifactId>jersey-server</artifactId>-->
-            <!--<version>${jersey.version}</version>-->
-        <!--</dependency>-->
-        <!--<dependency>-->
-            <!--<groupId>com.sun.jersey</groupId>-->
-            <!--<artifactId>jersey-servlet</artifactId>-->
-            <!--<version>${jersey.version}</version>-->
-        <!--</dependency>-->
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/ApplicationLayout.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/ApplicationLayout.java b/modules/ui/src/main/java/org/apache/tamaya/ui/ApplicationLayout.java
index 2c303a8..3c3b68e 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/ApplicationLayout.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/ApplicationLayout.java
@@ -26,7 +26,9 @@ import org.apache.tamaya.ui.components.LazyProvider;
 import org.apache.tamaya.ui.components.PageTitleUpdater;
 import org.apache.tamaya.ui.views.ErrorView;
 
-
+/**
+ * UI main layout.
+ */
 public class ApplicationLayout extends HorizontalLayout {
 
     private NavBar navBar;
@@ -35,9 +37,7 @@ public class ApplicationLayout extends HorizontalLayout {
 
     public ApplicationLayout() {
         addStyleName(UIConstants.MAIN_LAYOUT);
-
         setSizeFull();
-
         initLayouts();
         setupNavigator();
     }
@@ -81,15 +81,17 @@ public class ApplicationLayout extends HorizontalLayout {
             case CREATE:
                 navigator.addView(provider.getUrlPattern(), provider.createView());
                 break;
-            case LAZY:
-                navigator.addProvider(new LazyProvider(provider.getUrlPattern(), provider));
-                break;
             case EAGER:
                 try {
                     navigator.addView(provider.getUrlPattern(), provider.createView());
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
+                break;
+            case LAZY:
+            default:
+                navigator.addProvider(new LazyProvider(provider.getUrlPattern(), provider));
+                break;
         }
         navBar.addView(provider.getUrlPattern(), provider.getDisplayName());
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/CurrentUser.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/CurrentUser.java b/modules/ui/src/main/java/org/apache/tamaya/ui/CurrentUser.java
index 8c754e2..f186dbe 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/CurrentUser.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/CurrentUser.java
@@ -23,19 +23,36 @@ import com.vaadin.server.VaadinSession;
 /**
  * Convenience wrapper for storing and retreiving a user from the VaadinSession
  */
-public class CurrentUser {
+public final class CurrentUser {
+    /** The key used. */
+    private static final String KEY = "currentUser";
 
-    private static final String KEY = "currentser";
+    /**
+     * Singleton constructor.
+     */
+    private CurrentUser(){}
 
+    /**
+     * Set the current users.
+     * @param user the current user, not null.
+     */
     public static void set(User user) {
         VaadinSession.getCurrent().setAttribute(KEY, user);
     }
 
+    /**
+     * Get the current user.
+     * @return the current user, or null.
+     */
     public static User get() {
         return (User) VaadinSession.getCurrent().getAttribute(KEY);
     }
 
+    /**
+     * Checks if the current user is present and logged in.
+     * @return
+     */
     public static boolean isLoggedIn() {
-        return get() != null;
+        return get() != null && get().isLoggedin();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/NavBar.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/NavBar.java b/modules/ui/src/main/java/org/apache/tamaya/ui/NavBar.java
index 16b9860..464bcd6 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/NavBar.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/NavBar.java
@@ -33,6 +33,9 @@ import org.apache.tamaya.ui.services.MessageProvider;
 import java.util.HashMap;
 import java.util.Map;
 
+/**
+ * Left side navigation bar.
+ */
 public class NavBar extends CssLayout implements ViewChangeListener {
 
     private Map<String, Button> buttonMap = new HashMap<>();
@@ -45,7 +48,6 @@ public class NavBar extends CssLayout implements ViewChangeListener {
         Label logo = new Label("<strong>"+ messages.getMessage("project.name")+"</strong>",
ContentMode.HTML);
         logo.addStyleName(UIConstants.MENU_TITLE);
         addComponent(logo);
-
         addLogoutButton();
     }
 
@@ -54,7 +56,12 @@ public class NavBar extends CssLayout implements ViewChangeListener {
         Button logout = new Button(messages.getMessage("default.label.logout"), new Button.ClickListener()
{
             @Override
             public void buttonClick(Button.ClickEvent clickEvent) {
-                EventBus.post(new LogoutEvent());
+                User user = CurrentUser.get();
+                if(user!=null){
+                    user.logout();
+                    EventBus.post(new LogoutEvent(user));
+                }
+                CurrentUser.set(null);
             }
         });
         addComponent(logout);
@@ -89,6 +96,8 @@ public class NavBar extends CssLayout implements ViewChangeListener {
             button.removeStyleName(UIConstants.SELECTED);
         }
         Button button = buttonMap.get(event.getViewName());
-        if (button != null) button.addStyleName(UIConstants.SELECTED);
+        if (button != null) {
+            button.addStyleName(UIConstants.SELECTED);
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/TamayaUI.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/TamayaUI.java b/modules/ui/src/main/java/org/apache/tamaya/ui/TamayaUI.java
index b90c402..f446d6f 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/TamayaUI.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/TamayaUI.java
@@ -28,11 +28,28 @@ import org.apache.tamaya.ConfigurationProvider;
 import java.io.File;
 import java.util.logging.Logger;
 
+/**
+ * Tamaya UI Main class.
+ */
 public class TamayaUI {
 
     private static final Logger LOG = Logger.getLogger(TamayaUI.class.getName());
 
+    /**
+     * Not an instantiable class.
+     */
+    private TamayaUI(){}
 
+    /**
+     * The main entry point, use configuration as follows:
+     * <pre>
+     *     tamaya.server.contextPath: the context path, default=/tamaya
+     *     tamaya.server.port: the port, default=8090
+     *     tamaya.server.productionMode: vadiin production mode setting, default=false.
+     * </pre>
+     * @param args the args
+     * @throws Exception if startup fails.
+     */
     public static void main(String[] args) throws Exception {
         Configuration config = ConfigurationProvider.getConfiguration();
         String contextPath = config.getOrDefault("tamaya.server.contextPath", "/tamaya");

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/User.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/User.java b/modules/ui/src/main/java/org/apache/tamaya/ui/User.java
index 2201bdb..ae5b34a 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/User.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/User.java
@@ -18,39 +18,137 @@
  */
 package org.apache.tamaya.ui;
 
-import org.apache.tamaya.spi.ServiceContextManager;
-import org.apache.tamaya.ui.services.MessageProvider;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Objects;
+import java.util.Set;
 
 /**
- * Created by atsticks on 29.03.16.
+ * A simple User object.
  */
 public class User {
+    /** The user ID. */
+    private final String userID;
+    /** The full name. */
+    private String fulLName;
+    /** The credentials. */
+    private String credentials;
+    /** The user's roles. */
+    private Set<String> roles = new HashSet<>();
+    /** The user's last login date. */
+    private Date loginDate = new Date();
+    /** The user's last logout date. */
+    private Date logoutDate = new Date();
 
-    private String userID = "-";
-    private String fulLName = ServiceContextManager.getServiceContext().getService(MessageProvider.class)
-            .getMessage("default.label.unknown");
-    private Date logInDate = new Date();
-
-    public User(String userID, String fullName){
-        this.userID = Objects.requireNonNull(userID);
-        this.fulLName = fullName;
+    /**
+     * Constructor.
+     * @param uid the user ID, not null.
+     * @param fullName the full name.
+     * @param credentials the credentials.
+     * @param roles its roles.
+     */
+    public User(String uid, String fullName, String credentials, String... roles){
+        this.userID = Objects.requireNonNull(uid);
+        this.fulLName = fullName!=null?fullName:userID;
         if(fullName==null){
             this.fulLName = userID;
         }
+        this.roles.addAll(Arrays.asList(roles));
+        this.credentials = credentials;
+    }
+
+    /**
+     * èPerforms a login, checking the credentials.
+     * @param credentials the credentials.
+     * @return true, if the user could be logged in.
+     */
+    public boolean login(String credentials){
+        if(this.credentials!=null){
+            this.loginDate = new Date();
+            return this.credentials.equals(credentials);
+        }
+        return credentials==null || credentials.isEmpty();
+    }
+
+    /**
+     * Checks if the user is currently logged in.
+     * @return true, if the user is currently logged in.
+     */
+    public boolean isLoggedin(){
+        long now = System.currentTimeMillis();
+        if(this.logoutDate!=null && this.logoutDate.getTime() < now){
+            return false;
+        }
+        return this.loginDate!=null && this.loginDate.getTime() < now;
+    }
+
+    /**
+     * Logs the user out.
+     */
+    public void logout(){
+        this.logoutDate = new Date();
     }
 
+    /**
+     * Get the user ID.
+     * @return the user ID, never null.
+     */
     public String getUserID() {
         return userID;
     }
 
+    /**
+     * Get the full name.
+     * @return the full name, never null.
+     */
     public String getFullName() {
         return fulLName;
     }
 
-    public String getLoginDate(){
-        return logInDate.toString();
+    /**
+     * Checks if the user has the given role.
+     * @param role the role to be checked, not null.
+     * @return true, if the user has the required role.
+     */
+    public boolean hasRole(String role){
+        return this.roles.contains(role);
+    }
+
+    /**
+     * Get the user's roles.
+     * @return the roles, never null.
+     */
+    public Set<String> getRoles(){
+        return Collections.unmodifiableSet(roles);
+    }
+
+    /**
+     * Get the last login timestamp.
+     * @return the last login date, or null.
+     */
+    public Date getLoginDate(){
+        return loginDate;
+    }
+
+    /**
+     * Get the last login timestamp.
+     * @return the last login date, or null.
+     */
+    public Date getLogoutDate(){
+        return logoutDate;
+    }
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "fulLName='" + fulLName + '\'' +
+                ", userID='" + userID + '\'' +
+                ", roles=" + roles +
+                ", loginDate=" + loginDate +
+                ", logoutDate=" + logoutDate +
+                '}';
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/VadiinApp.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/VadiinApp.java b/modules/ui/src/main/java/org/apache/tamaya/ui/VadiinApp.java
index 60f3d34..d763930 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/VadiinApp.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/VadiinApp.java
@@ -24,7 +24,7 @@ import com.vaadin.annotations.Title;
 import com.vaadin.server.Page;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.server.VaadinSession;
-import com.vaadin.ui.*;
+import com.vaadin.ui.UI;
 import org.apache.tamaya.ui.event.LogoutEvent;
 import org.apache.tamaya.ui.event.NavigationEvent;
 import org.apache.tamaya.ui.views.login.LoginEvent;
@@ -43,6 +43,11 @@ public class VadiinApp extends UI {
 
     private Content content = new Content();
 
+
+    public VadiinApp(){
+        super.setPollInterval(2000);
+    }
+
     @Override
     protected void init(VaadinRequest vaadinRequest) {
         setupEventBus();

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
b/modules/ui/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
index a236d55..83a0105 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/components/PageTitleUpdater.java
@@ -24,7 +24,9 @@ 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

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/event/LogoutEvent.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/event/LogoutEvent.java b/modules/ui/src/main/java/org/apache/tamaya/ui/event/LogoutEvent.java
index ec00a42..680acc3 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/event/LogoutEvent.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/event/LogoutEvent.java
@@ -18,5 +18,31 @@
  */
 package org.apache.tamaya.ui.event;
 
+import org.apache.tamaya.ui.User;
+
+import java.util.Objects;
+
+/**
+ * Event sent when the user has been logged out.
+ */
 public class LogoutEvent {
+
+    /** The user logged out. */
+    private User user;
+
+    /**
+     * Creates a new event.
+     * @param user the user logged out, not null.
+     */
+    public LogoutEvent(User user) {
+        this.user = Objects.requireNonNull(user);
+    }
+
+    /**
+     * Get the user logged out.
+     * @return the user logged out, not null.
+     */
+    public User getUser(){
+        return user;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/event/NavigationEvent.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/event/NavigationEvent.java b/modules/ui/src/main/java/org/apache/tamaya/ui/event/NavigationEvent.java
index 9d3b744..bb863be 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/event/NavigationEvent.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/event/NavigationEvent.java
@@ -19,14 +19,35 @@
 package org.apache.tamaya.ui.event;
 
 
+import java.util.Objects;
+
+/**
+ * Event sent when the user wants to navigate.
+ */
 public class NavigationEvent {
+    /** The target view. */
     private String viewName;
 
+    /**
+     * Constructor.
+     * @param viewName the target view, not null.
+     */
     public NavigationEvent(String viewName) {
-        this.viewName = viewName;
+        this.viewName = Objects.requireNonNull(viewName);
     }
 
+    /**
+     * Access the target view name.
+     * @return the target view name, never null.
+     */
     public String getViewName() {
         return viewName;
     }
+
+    @Override
+    public String toString() {
+        return "NavigationEvent{" +
+                "viewName='" + viewName + '\'' +
+                '}';
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
index 99521c4..78d6167 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfigurationBasedMessageProvider.java
@@ -19,15 +19,17 @@
 package org.apache.tamaya.ui.internal;
 
 import org.apache.tamaya.ConfigurationProvider;
-import org.apache.tamaya.spi.ConfigurationContext;
 import org.apache.tamaya.spi.ConfigurationContextBuilder;
-import org.apache.tamaya.spisupport.BasePropertySource;
 import org.apache.tamaya.spisupport.DefaultConfiguration;
 import org.apache.tamaya.ui.services.MessageProvider;
 
 import java.io.IOException;
 import java.net.URL;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
new file mode 100644
index 0000000..14af644
--- /dev/null
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/ConfiguredUserService.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tamaya.ui.internal;
+
+import org.apache.tamaya.ConfigurationProvider;
+import org.apache.tamaya.functions.ConfigurationFunctions;
+import org.apache.tamaya.ui.User;
+import org.apache.tamaya.ui.services.UserService;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * User service reading users and credentials from the configuration. Users are configured
as follows (e.g. using
+ * properties format):
+ * <pre>
+ * tamaya.users.admin.pwd=admin
+ * tamaya.users.admin.fullName=Administrator
+ * tamaya.users.admin.roles=admin
+ * tamaya.users.john.pwd=meymey
+ * tamaya.users.john.fullName=John Doe
+ * tamaya.users.john.roles=admin,user
+ * </pre>
+ */
+public class ConfiguredUserService implements UserService{
+
+    private Map<String, User> users = new ConcurrentHashMap<>();
+
+    /**
+     * Constructor reading the configuration and initializing the users table.
+     */
+    public ConfiguredUserService(){
+        // read from config
+        Map<String,String> config = ConfigurationProvider.getConfiguration().with(
+                ConfigurationFunctions.section("tamaya.users.", true)).getProperties();
+        for(Map.Entry<String,String> en:config.entrySet()){
+            if(en.getKey().endsWith(".pwd")){
+                String uid = en.getKey().substring(0,en.getKey().length()-4);
+                String pwd = en.getValue();
+                String fullName = config.get(uid+".fullName");
+                String roles = config.get(uid+".roles");
+                if(roles==null){
+                    roles="";
+                }
+                users.put(uid.toLowerCase(), new User(uid, fullName, pwd, roles.split(",")));
+            }
+        }
+
+    }
+
+    @Override
+    public User login(String userId, String credentials) {
+        User user = this.users.get(userId.toLowerCase());
+        if(user!=null && user.login(credentials)){
+            return user;
+        }
+        return null;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/internal/URLPropertySource.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/URLPropertySource.java
b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/URLPropertySource.java
index 0727515..83b4af4 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/internal/URLPropertySource.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/internal/URLPropertySource.java
@@ -1,3 +1,21 @@
+/*
+ * 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.internal;
 
 import org.apache.tamaya.spisupport.BasePropertySource;

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/ComponentView.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ComponentView.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ComponentView.java
index 7572510..a751e02 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ComponentView.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ComponentView.java
@@ -26,7 +26,11 @@ import com.vaadin.ui.Tree;
 import org.apache.tamaya.Configuration;
 import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.TypeLiteral;
-import org.apache.tamaya.spi.*;
+import org.apache.tamaya.spi.PropertyConverter;
+import org.apache.tamaya.spi.PropertyFilter;
+import org.apache.tamaya.spi.PropertySource;
+import org.apache.tamaya.spi.PropertyValueCombinationPolicy;
+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;
@@ -36,10 +40,15 @@ import javax.annotation.Priority;
 import java.util.List;
 import java.util.Map;
 
-
+/**
+ * View showing the current loaded system components.
+ */
 public class ComponentView extends VerticalSpacedLayout implements View {
 
 
+    /**
+     * Provider to register this view.
+     */
     @Priority(20)
     public static final class Provider implements ViewProvider{
 
@@ -99,12 +108,15 @@ public class ComponentView extends VerticalSpacedLayout implements View
{
         configTree.setChildrenAllowed("Configuration.class", false);
 
         configTree.addItem("ConfigurationContext.class");
-        configTree.setItemCaption("ConfigurationContext.class", "ConfigurationContext class
= " + config.getContext().getClass().getName());
+        configTree.setItemCaption("ConfigurationContext.class", "ConfigurationContext class
= " +
+                config.getContext().getClass().getName());
         configTree.setParent("ConfigurationContext.class", currentParent);
         configTree.setChildrenAllowed("ConfigurationContext.class", false);
 
         configTree.addItem("PropertyValueCombinationPolicy.class");
-        configTree.setItemCaption("PropertyValueCombinationPolicy.class", PropertyValueCombinationPolicy.class.getSimpleName()
+ " class = " + config.getContext().getPropertyValueCombinationPolicy().getClass().getName());
+        configTree.setItemCaption("PropertyValueCombinationPolicy.class",
+                PropertyValueCombinationPolicy.class.getSimpleName() + " class = " +
+                        config.getContext().getPropertyValueCombinationPolicy().getClass().getName());
         configTree.setParent("PropertyValueCombinationPolicy.class", currentParent);
         configTree.setChildrenAllowed("PropertyValueCombinationPolicy.class", false);
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
index e286bf2..1e32037 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ConfigView.java
@@ -21,8 +21,15 @@ package org.apache.tamaya.ui.views;
 import com.vaadin.navigator.View;
 import com.vaadin.navigator.ViewChangeListener;
 import com.vaadin.shared.ui.label.ContentMode;
-import com.vaadin.ui.*;
-import javafx.scene.control.TabPane;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TextArea;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.Tree;
+import com.vaadin.ui.VerticalLayout;
 import org.apache.tamaya.ConfigurationProvider;
 import org.apache.tamaya.spi.ServiceContextManager;
 import org.apache.tamaya.ui.UIConstants;
@@ -35,9 +42,14 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.TreeMap;
 
-
+/**
+ * View for evaluating the current convifugration tree.
+ */
 public class ConfigView extends VerticalSpacedLayout implements View {
 
+    /**
+     * Provider to register this view.
+     */
     @Priority(10)
     public static final class Provider implements ViewProvider{
 

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/ErrorView.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ErrorView.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ErrorView.java
index ef3fa2e..eef0db8 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/ErrorView.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/ErrorView.java
@@ -25,6 +25,9 @@ import com.vaadin.ui.Label;
 import com.vaadin.ui.VerticalLayout;
 import org.apache.tamaya.ui.UIConstants;
 
+/**
+ * View used for shoiwing unexpected errors.
+ */
 public class ErrorView extends VerticalLayout implements View {
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/HomeView.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/HomeView.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/HomeView.java
index 78297d2..d3154b9 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/HomeView.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/HomeView.java
@@ -31,9 +31,14 @@ import org.apache.tamaya.ui.services.MessageProvider;
 
 import javax.annotation.Priority;
 
-
+/**
+ * Home view containing a title and a description, used as default entry point of the UI
after login.
+ */
 public class HomeView extends VerticalSpacedLayout implements View {
 
+    /**
+     * Provider to bew registered providing this view to the UI module.
+     */
     @Priority(0)
     public static final class Provider implements ViewProvider{
 
@@ -59,6 +64,9 @@ public class HomeView extends VerticalSpacedLayout implements View {
         }
     }
 
+    /**
+     * Constructor.
+     */
     public HomeView() {
         Label caption = new Label("Welcome, " + CurrentUser.get().getUserID());
         Label description = new Label(
@@ -75,6 +83,6 @@ public class HomeView extends VerticalSpacedLayout implements View {
 
     @Override
     public void enter(ViewChangeListener.ViewChangeEvent event) {
-
+        // nothing to do
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginBox.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginBox.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginBox.java
index 049d885..73cf018 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginBox.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginBox.java
@@ -1,7 +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.tamaya.ui.views.login;
 
 import com.vaadin.event.ShortcutAction;
-import com.vaadin.ui.*;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.FormLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.PasswordField;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
 import org.apache.tamaya.spi.ServiceContextManager;
 import org.apache.tamaya.ui.UIConstants;
 import org.apache.tamaya.ui.User;
@@ -9,18 +36,11 @@ import org.apache.tamaya.ui.event.EventBus;
 import org.apache.tamaya.ui.services.MessageProvider;
 import org.apache.tamaya.ui.services.UserService;
 
-
+/**
+ * Login dialog centerd on the screen.
+ */
 public class LoginBox extends VerticalLayout {
 
-    private UserService userService = new UserService() {
-        @Override
-        public User login(String userId, String credentials) {
-            if("admin".equals(userId)){
-                return new User("admin", "Administrator");
-            }
-            return null;
-        }
-    }; // TODO Load
     private TextField username;
     private PasswordField password;
 
@@ -61,7 +81,7 @@ public class LoginBox extends VerticalLayout {
         Button forgotButton = new Button("Forgot", new Button.ClickListener() {
             @Override
             public void buttonClick(Button.ClickEvent clickEvent) {
-                Notification.show("Not implemented", Notification.Type.TRAY_NOTIFICATION);
+                Notification.show("Sorry, this feature is not yet implemented.", Notification.Type.TRAY_NOTIFICATION);
             }
         });
         Button loginButton = new Button("Login", new Button.ClickListener() {
@@ -80,11 +100,12 @@ public class LoginBox extends VerticalLayout {
     }
 
     private void login() {
-        User user = userService.login(username.getValue(), password.getValue());
+        User user = ServiceContextManager.getServiceContext().getService(UserService.class)
+                .login(username.getValue(), password.getValue());
         if(user!=null){
             EventBus.post(new LoginEvent(user));
         }else{
-            Notification.show("Login failed.", "Hint: use any non-empty strings", Notification.Type.WARNING_MESSAGE);
+            Notification.show("Login failed.", "Sorry the system could not log you in.",
Notification.Type.WARNING_MESSAGE);
             username.focus();
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginEvent.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginEvent.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginEvent.java
index b6ba2b4..004c545 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginEvent.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginEvent.java
@@ -1,15 +1,55 @@
+/*
+ * 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.views.login;
 
 import org.apache.tamaya.ui.User;
 
+import java.util.Objects;
+
+/**
+ * Event sent when a user has been authenticated.
+ */
 public class LoginEvent {
+    /** The user, not null. */
     private User user;
 
+    /**
+     * Creates a new event.
+     * @param user the user logged in, not null.
+     */
     public LoginEvent(User user) {
-        this.user = user;
+        this.user = Objects.requireNonNull(user);
     }
 
+    /**
+     * Get the user logged in.
+     * @return the user logged in, never null.
+     */
     public User getUser() {
         return user;
     }
+
+    @Override
+    public String toString() {
+        return "LoginEvent{" +
+                "user=" + user +
+                '}';
+    }
+
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginView.java
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginView.java b/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginView.java
index e1181d1..15730d3 100644
--- a/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginView.java
+++ b/modules/ui/src/main/java/org/apache/tamaya/ui/views/login/LoginView.java
@@ -1,10 +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.tamaya.ui.views.login;
 
 import com.vaadin.ui.Alignment;
 import com.vaadin.ui.VerticalLayout;
 
+/**
+ * View used for login the users.
+ */
 public class LoginView extends VerticalLayout {
 
+    /**
+     * Creates a new view.
+     */
     public LoginView() {
         setSizeFull();
         setDefaultComponentAlignment(Alignment.MIDDLE_CENTER);

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/resources/META-INF/javaconfiguration.properties
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/resources/META-INF/javaconfiguration.properties b/modules/ui/src/main/resources/META-INF/javaconfiguration.properties
new file mode 100644
index 0000000..98d7155
--- /dev/null
+++ b/modules/ui/src/main/resources/META-INF/javaconfiguration.properties
@@ -0,0 +1,21 @@
+#
+# 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 current 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.
+#
+tamaya.users.admin.pwd=admin
+tamaya.users.admin.fullName=Administrator
+tamaya.users.admin.roles=admin
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/modules/ui/src/main/resources/META-INF/services/org.apache.tamaya.ui.services.UserService
----------------------------------------------------------------------
diff --git a/modules/ui/src/main/resources/META-INF/services/org.apache.tamaya.ui.services.UserService
b/modules/ui/src/main/resources/META-INF/services/org.apache.tamaya.ui.services.UserService
new file mode 100644
index 0000000..109865f
--- /dev/null
+++ b/modules/ui/src/main/resources/META-INF/services/org.apache.tamaya.ui.services.UserService
@@ -0,0 +1,19 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy current 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.
+#
+org.apache.tamaya.ui.internal.ConfiguredUserService
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tamaya/blob/cb2987cb/sandbox/pom.xml
----------------------------------------------------------------------
diff --git a/sandbox/pom.xml b/sandbox/pom.xml
index 12a3760..a5831c7 100644
--- a/sandbox/pom.xml
+++ b/sandbox/pom.xml
@@ -39,7 +39,6 @@ under the License.
         <module>metamodels</module>
         <module>jodatime</module>
         <module>sysprops</module>
-        <module>ui</module>
         <module>remote</module>
     </modules>
 



Mime
View raw message