diff --git a/examples/hawkbit-custom-theme-example/README.md b/examples/hawkbit-custom-theme-example/README.md
new file mode 100644
index 000000000..5a6a571c8
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/README.md
@@ -0,0 +1 @@
+Theme customization example for Eclipse hawkBit. See wiki for the theme customization guide.
\ No newline at end of file
diff --git a/examples/hawkbit-custom-theme-example/pom.xml b/examples/hawkbit-custom-theme-example/pom.xml
new file mode 100644
index 000000000..7caa99ba2
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/pom.xml
@@ -0,0 +1,112 @@
+
+
+ 4.0.0
+
+ org.eclipse.hawkbit
+ hawkbit-examples-parent
+ 0.2.0-SNAPSHOT
+
+ hawkbit-custom-theme-example
+ hawkBit :: Custom Theme Example App
+
+
+
+
+ com.vaadin
+ vaadin-maven-plugin
+ ${vaadin.plugin.version}
+
+ src/main/resources
+
+
+
+
+ update-theme
+ compile-theme
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ repackage
+
+
+ ${baseDir}
+ false
+ org.eclipse.hawkbit.app.Start
+ JAR
+
+
+
+
+
+
+
+
+
+
+ org.eclipse.hawkbit
+ hawkbit-autoconfigure
+ ${project.version}
+
+
+ org.eclipse.hawkbit
+ hawkbit-ui
+ ${project.version}
+
+
+ org.eclipse.hawkbit
+ hawkbit-security-integration
+ ${project.version}
+
+
+ org.eclipse.hawkbit
+ hawkbit-http-security
+ ${project.version}
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
+ org.springframework.security
+ spring-security-aspects
+
+
+ com.h2database
+ h2
+
+
+
+
diff --git a/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java b/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java
new file mode 100644
index 000000000..c31086a70
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2015 Bosch Software Innovations GmbH and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.hawkbit.app;
+
+import org.eclipse.hawkbit.ui.login.HawkbitLoginUI;
+import org.eclipse.hawkbit.ui.themes.HawkbitTheme;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.annotations.Title;
+import com.vaadin.spring.annotation.SpringUI;
+
+/**
+ * Example hawkBit login UI implementation.
+ *
+ * A {@link SpringUI} annotated class must be present in the classpath for the
+ * login path. The easiest way to get an hawkBit login UI running is to extend
+ * the {@link HawkbitLoginUI} and to annotated it with {@link SpringUI} as in
+ * this example to the defined {@link HawkbitTheme#LOGIN_UI_PATH}.
+ *
+ */
+@SpringUI(path = HawkbitTheme.LOGIN_UI_PATH)
+@Title("hawkBit Theme example")
+@Theme(value = "exampletheme")
+public class MyLoginUI extends HawkbitLoginUI {
+
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyUI.java b/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyUI.java
new file mode 100644
index 000000000..5ef632d10
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyUI.java
@@ -0,0 +1,45 @@
+package org.eclipse.hawkbit.app;
+/**
+ * Copyright (c) 2015 Bosch Software Innovations GmbH and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+
+import org.eclipse.hawkbit.ui.HawkbitUI;
+import org.eclipse.hawkbit.ui.UIEventProvider;
+import org.eclipse.hawkbit.ui.push.DelayedEventBusPushStrategy;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.google.common.eventbus.EventBus;
+import com.vaadin.annotations.Push;
+import com.vaadin.annotations.Theme;
+import com.vaadin.annotations.Title;
+import com.vaadin.shared.communication.PushMode;
+import com.vaadin.shared.ui.ui.Transport;
+import com.vaadin.spring.annotation.SpringUI;
+
+/**
+ * Example hawkBit UI implementation.
+ *
+ * A {@link SpringUI} annotated class must be present in the classpath. The
+ * easiest way to get an hawkBit UI running is to extend the {@link HawkbitUI}
+ * and to annotated it with {@link SpringUI} as in this example.
+ *
+ */
+@SpringUI
+@Push(value = PushMode.AUTOMATIC, transport = Transport.WEBSOCKET)
+@Title("hawkBit Theme example")
+@Theme(value = "exampletheme")
+public class MyUI extends HawkbitUI {
+
+ private static final long serialVersionUID = 1L;
+
+ @Autowired
+ public MyUI(final EventBus systemEventBus, final org.vaadin.spring.events.EventBus.SessionEventBus eventBus,
+ final UIEventProvider provider) {
+ super(new DelayedEventBusPushStrategy(eventBus, systemEventBus, provider));
+ }
+}
diff --git a/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/Start.java b/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/Start.java
new file mode 100644
index 000000000..1c4c5d32d
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/Start.java
@@ -0,0 +1,36 @@
+package org.eclipse.hawkbit.app;
+/**
+ * Copyright (c) 2015 Bosch Software Innovations GmbH and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+
+import org.eclipse.hawkbit.RepositoryApplicationConfiguration;
+import org.eclipse.hawkbit.autoconfigure.security.EnableHawkbitManagedSecurityConfiguration;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Import;
+
+/**
+ * A {@link SpringBootApplication} annotated class with a main method to start.
+ * The minimal configuration for the stand alone hawkBit server.
+ *
+ */
+@SpringBootApplication
+@Import({ RepositoryApplicationConfiguration.class })
+@EnableHawkbitManagedSecurityConfiguration
+public class Start {
+
+ /**
+ * Main method to start the spring-boot application.
+ *
+ * @param args
+ * the VM arguments.
+ */
+ public static void main(final String[] args) {
+ SpringApplication.run(Start.class, args);
+ }
+}
diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/.gitignore b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/.gitignore
new file mode 100644
index 000000000..1cdd02b74
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/.gitignore
@@ -0,0 +1,2 @@
+/addons.scss
+/styles.css
diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/customstyles/examplevariables.scss b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/customstyles/examplevariables.scss
new file mode 100644
index 000000000..6bf201f9c
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/customstyles/examplevariables.scss
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2015 Bosch Software Innovations GmbH and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+
+$dark-gray: #848484;
+
+//Example color change
+$hawkbit-primary-color: $dark-gray;
+$hawkbit-primary-color-light: #D8D8D8;
+$app-selection-item-selection-color: $dark-gray;
+$app-focus-color: $dark-gray;
+$app-selection-color: $dark-gray;
+$tag-text-color: $dark-gray;
+$tab-sheet-caption-color: $dark-gray;
+$table-details-tab-font-color: $dark-gray;
+$widget-caption-color: $dark-gray;
+$accordion-action-history-title-color: $dark-gray;
+$menu-title-bg-color: $dark-gray;
+$button-icon-color: $dark-gray;
\ No newline at end of file
diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/images/profile-pic-57px.jpg b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/images/profile-pic-57px.jpg
new file mode 100644
index 000000000..d730cb5f6
Binary files /dev/null and b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/images/profile-pic-57px.jpg differ
diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/layouts/footer.html b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/layouts/footer.html
new file mode 100644
index 000000000..f2ac781ba
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/layouts/footer.html
@@ -0,0 +1,29 @@
+
+
+
+
+
diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss
new file mode 100644
index 000000000..2407a73fb
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss
@@ -0,0 +1,10 @@
+@import "../hawkbit/customstyles/hawkbitvariables";
+@import "customstyles/examplevariables";
+@import "../hawkbit/hawkbittheme";
+@import "addons";
+
+// This file prefixes all rules with the theme name to avoid causing conflicts with other themes.
+.exampletheme {
+ @include addons;
+ @include hawkbittheme;
+}
diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/application.properties b/examples/hawkbit-custom-theme-example/src/main/resources/application.properties
new file mode 100644
index 000000000..3ffb51bd0
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/resources/application.properties
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2015 Bosch Software Innovations GmbH and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+
+# UI demo account
+hawkbit.server.ui.demo.password=admin
+hawkbit.server.ui.demo.user=admin
+hawkbit.server.ui.demo.tenant=DEFAULT
+
+# UI help links
+hawkbit.server.ui.links.documentation.root=https://github.com/eclipse/hawkbit
diff --git a/hawkbit-repository/pom.xml b/hawkbit-repository/pom.xml
index 7259262de..b70e00f28 100644
--- a/hawkbit-repository/pom.xml
+++ b/hawkbit-repository/pom.xml
@@ -67,6 +67,10 @@
org.hibernate
hibernate-validator
+
+ javax.validation
+ validation-api
+
com.google.guava
guava
diff --git a/hawkbit-rest-api/pom.xml b/hawkbit-rest-api/pom.xml
index be9abafac..703d6caf3 100644
--- a/hawkbit-rest-api/pom.xml
+++ b/hawkbit-rest-api/pom.xml
@@ -24,7 +24,6 @@
javax.validation
validation-api
- 1.1.0.Final
org.springframework.hateoas
diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/images/profile-pic-300px.jpg b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/images/profile-pic-300px.jpg
deleted file mode 100644
index 664afaa35..000000000
Binary files a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/images/profile-pic-300px.jpg and /dev/null differ
diff --git a/pom.xml b/pom.xml
index f42236d07..0c3207c13 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,6 +84,7 @@
+ 1.1.0.Final
1.4
2.0M10
1.4.22
@@ -419,6 +420,11 @@
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
javax.el
javax.el-api