diff --git a/MIGRATION.md b/MIGRATION.md
index eacce864d..8db1ee57c 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -7,3 +7,7 @@
- hawkbit.server.email.support has changed to hawkbit.server.ui.links.support
- hawkbit.server.email.request.account has changed to hawkbit.server.ui.links.requestAccount
- hawkbit.server.im.login.url has changed to hawkbit.server.ui.links.userManagement
+
+### REST API model changes for clients
+- ENTITYPagedList classes have been removed; generic PagedList used instead (e.g. PagedList instead of TargetPagedList).
+- ENTITYsrest classes have been removed; List used instead (e.g. List instead of TargetsRest)
diff --git a/README.md b/README.md
index fb649633b..461e12e81 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,11 @@ see [hawkBit Wiki](https://github.com/eclipse/hawkbit/wiki)
* Having issues with hawkBit? Open a [GitHub issue](https://github.com/eclipse/hawkbit/issues).
* You can also check out our [Project Homepage](https://projects.eclipse.org/projects/iot.hawkbit) for further contact options.
+# hawkBit sandbox
+
+We offer a sandbox installation that is free for everyone to try out hawkBit. However, keep in mind that the sandbox database will be reset from time to time. It is also not possible to upload any artifacts into the sandbox. But you can use it to try out the Management UI, Management API and DDI API.
+
+https://hawkbit.eu-gb.mybluemix.net/UI/
# Compile, Run and Getting Started
diff --git a/deployHawkBitSandbox.sh b/deployHawkBitSandbox.sh
new file mode 100644
index 000000000..d774f4205
--- /dev/null
+++ b/deployHawkBitSandbox.sh
@@ -0,0 +1,20 @@
+#
+# 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
+#
+
+# This script allows the deployment of the complete hawkBit sandbox including
+# data example to a cloud foundry enviroment. Expects existing CF CLI
+# installation and login to be existing already.
+
+cd examples/hawkbit-example-app/target/
+cf push
+cd ../..
+java -jar hawkbit-mgmt-api-client/target/hawkbit-mgmt-api-client-0.2.0-SNAPSHOT.jar --hawkbit.url=hawkbit.eu-gb.mybluemix.net
+cd hawkbit-device-simulator/target/
+cf push
+cd ../../..
diff --git a/examples/README.md b/examples/README.md
index 3ad5ecf66..0d6e0c18a 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -1,7 +1,9 @@
# Examples
-Example projects that show how hawkBit can be used to create, run or access an hawkBit empowered update server.
+Example projects that show how _hawkBit_ can be used to create, run or access an _hawkBit_ empowered update server.
+
+- `hawkbit-device-simulator` : Simulates device software updates, leveraging the hawkBit device integration options.
+- `hawkbit-example-app` : Allows you to run a Spring Boot and hawkBit based update server. Includes all _hawkBit_ interfaces, i.e. DDI, DMF, Mgmt-API, Mgmt-UI.
+- `hawkbit-custom-theme-example` : Example for a customized theme for Management UI.
+- `hawkbit-mgmt-api-client` : Example client for the _hawkBit_ Management API.
-`hawkbit-device-simulator` : Simulates device software updates, leveraging the hawkBit device integration options.
-`hawkbit-example-app` : Allows you to run a Spring Boot and hawkBit based update server.
-`hawkbit-mgmt-api-client` : Example client for the hawkBit management API.
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..4b3f29814
--- /dev/null
+++ b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss
@@ -0,0 +1,19 @@
+/**
+ * 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 "../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/examples/hawkbit-device-simulator/README.md b/examples/hawkbit-device-simulator/README.md
index 869f80511..1ba29bb7e 100644
--- a/examples/hawkbit-device-simulator/README.md
+++ b/examples/hawkbit-device-simulator/README.md
@@ -2,7 +2,7 @@
The device simulator handles software update commands from the update server.
-## Run
+## Run on your own workstation
```
java -jar examples/hawkbit-device-simulator/target/hawkbit-device-simulator-*-SNAPSHOT.jar
```
@@ -11,6 +11,11 @@ Or:
run org.eclipse.hawkbit.simulator.DeviceSimulator
```
+## Deploy to cloud foundry environment
+
+- Go to ```target``` subfolder.
+- Run ```cf push```
+
## Notes
The simulator has user authentication enabled in **cloud profile**. Default credentials:
@@ -30,9 +35,9 @@ http://localhost:8083
```

-
+

-
+

@@ -54,12 +59,12 @@ Example: for 20 simulated devices (default)
http://localhost:8083/start
```
-Example: for 10 simulated devices that start with the name prefix "activeSim":
+Example: for 10 simulated devices that start with the name prefix "activeSim":
```
http://localhost:8083/start?amount=10&name=activeSim
```
-Example: for 5 simulated devices that start with the name prefix "ddi" using the Direct Device Integration API (http):
+Example: for 5 simulated devices that start with the name prefix "ddi" using the Direct Device Integration API (http):
```
http://localhost:8083/start?amount=5&name=ddi?api=ddi
```
diff --git a/examples/hawkbit-device-simulator/cf/manifest.yml b/examples/hawkbit-device-simulator/cf/manifest.yml
new file mode 100644
index 000000000..51a43ace6
--- /dev/null
+++ b/examples/hawkbit-device-simulator/cf/manifest.yml
@@ -0,0 +1,22 @@
+#
+# 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
+#
+
+---
+applications:
+- name: hawkbit-simulator
+ memory: 1024M
+ instances: 1
+ buildpack: https://github.com/cloudfoundry/java-buildpack
+ path: ${project.build.finalName}.jar
+ services:
+ - dmf-rabbit
+ env:
+ SPRING_PROFILES_ACTIVE: cloud,amqp
+ CF_STAGING_TIMEOUT: 15
+ CF_STARTUP_TIMEOUT: 15
diff --git a/examples/hawkbit-device-simulator/pom.xml b/examples/hawkbit-device-simulator/pom.xml
index a2575e9db..a23051124 100644
--- a/examples/hawkbit-device-simulator/pom.xml
+++ b/examples/hawkbit-device-simulator/pom.xml
@@ -42,6 +42,19 @@
+
+
+ src/main/resources
+
+
+ cf
+ true
+ ${project.build.directory}
+
+ manifest.yml
+
+
+
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java
index b8b5011aa..afc3a2569 100644
--- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java
@@ -14,6 +14,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import org.eclipse.hawkbit.simulator.AbstractSimulatedDevice.Protocol;
import org.eclipse.hawkbit.simulator.amqp.SpSenderService;
import org.eclipse.hawkbit.simulator.event.InitUpdate;
import org.eclipse.hawkbit.simulator.event.ProgressUpdate;
@@ -34,6 +35,9 @@ public class DeviceSimulatorUpdater {
@Autowired
private SpSenderService spSenderService;
+ @Autowired
+ private SimulatedDeviceFactory deviceFactory;
+
@Autowired
private EventBus eventbus;
@@ -58,7 +62,13 @@ public class DeviceSimulatorUpdater {
*/
public void startUpdate(final String tenant, final String id, final long actionId, final String swVersion,
final UpdaterCallback callback) {
- final AbstractSimulatedDevice device = repository.get(tenant, id);
+ AbstractSimulatedDevice device = repository.get(tenant, id);
+
+ // plug and play - non existing device will be auto created
+ if (device == null) {
+ device = repository.add(deviceFactory.createSimulatedDevice(id, tenant, Protocol.DMF_AMQP, -1, null, null));
+ }
+
device.setProgress(0.0);
device.setSwversion(swVersion);
eventbus.post(new InitUpdate(device));
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationController.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationController.java
index c1f358d89..426860d8b 100644
--- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationController.java
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationController.java
@@ -55,7 +55,7 @@ public class SimulationController {
* number of delay in milliseconds to delay polling of DDI
* devices
* @param gatewayToken
- * the hawkbit-update-server gatwaytoken in case authentication
+ * the hawkbit-update-server gatewaytoken in case authentication
* is enforced in hawkbit
* @return a response string that devices has been created
* @throws MalformedURLException
@@ -68,7 +68,7 @@ public class SimulationController {
@RequestParam(value = "endpoint", defaultValue = "http://localhost:8080") final String endpoint,
@RequestParam(value = "polldelay", defaultValue = "30") final int pollDelay,
@RequestParam(value = "gatewaytoken", defaultValue = "") final String gatewayToken)
- throws MalformedURLException {
+ throws MalformedURLException {
final Protocol protocol;
switch (api.toLowerCase()) {
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationProperties.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationProperties.java
new file mode 100644
index 000000000..354263934
--- /dev/null
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationProperties.java
@@ -0,0 +1,136 @@
+/**
+ * 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.simulator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.hawkbit.simulator.AbstractSimulatedDevice.Protocol;
+import org.hibernate.validator.constraints.NotEmpty;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+/**
+ * General simulator service properties.
+ *
+ */
+@Component
+@ConfigurationProperties("hawkbit.device.simulator")
+public class SimulationProperties {
+
+ /**
+ * List of tenants where the simulator should auto start simulations after
+ * startup.
+ */
+ private final List autostarts = new ArrayList<>();
+
+ public List getAutostarts() {
+ return this.autostarts;
+ }
+
+ /**
+ * Auto start configuration for simulation setups that the simulator begins
+ * after startup.
+ *
+ */
+ public static class Autostart {
+ /**
+ * Name prefix of simulated devices, followed by counter, e.g.
+ * simulated0, simulated1, simulated2....
+ */
+ private String name = "simulated";
+
+ /**
+ * Amount of simulated devices.
+ */
+ private int amount = 20;
+
+ /**
+ * Tenant name for the simulation.
+ */
+ @NotEmpty
+ private String tenant;
+
+ /**
+ * API for simulation.
+ */
+ private Protocol api = Protocol.DMF_AMQP;
+
+ /**
+ * Endpoint in case of DDI API based simulation.
+ */
+ private String endpoint = "http://localhost:8080";
+
+ /**
+ * Poll time in case of DDI API based simulation.
+ */
+ private int pollDelay = 30;
+
+ /**
+ * Optional gateway token for DDI API based simulation.
+ */
+ private String gatewayToken = "";
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ public int getAmount() {
+ return amount;
+ }
+
+ public void setAmount(final int amount) {
+ this.amount = amount;
+ }
+
+ public String getTenant() {
+ return tenant;
+ }
+
+ public void setTenant(final String tenant) {
+ this.tenant = tenant;
+ }
+
+ public Protocol getApi() {
+ return api;
+ }
+
+ public void setApi(final Protocol api) {
+ this.api = api;
+ }
+
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ public void setEndpoint(final String endpoint) {
+ this.endpoint = endpoint;
+ }
+
+ public int getPollDelay() {
+ return pollDelay;
+ }
+
+ public void setPollDelay(final int pollDelay) {
+ this.pollDelay = pollDelay;
+ }
+
+ public String getGatewayToken() {
+ return gatewayToken;
+ }
+
+ public void setGatewayToken(final String gatewayToken) {
+ this.gatewayToken = gatewayToken;
+ }
+ }
+}
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulatorStartup.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulatorStartup.java
new file mode 100644
index 000000000..faff1cc6c
--- /dev/null
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulatorStartup.java
@@ -0,0 +1,59 @@
+/**
+ * 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.simulator;
+
+import java.net.URL;
+
+import org.eclipse.hawkbit.simulator.amqp.SpSenderService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.ContextRefreshedEvent;
+import org.springframework.stereotype.Component;
+
+/**
+ * Execution of operations after startup. Set up of simulations.
+ *
+ */
+@Component
+public class SimulatorStartup implements ApplicationListener {
+ private static final Logger LOGGER = LoggerFactory.getLogger(SimulatorStartup.class);
+
+ @Autowired
+ private SimulationProperties simulationProperties;
+
+ @Autowired
+ private SpSenderService spSenderService;
+
+ @Autowired
+ private DeviceSimulatorRepository repository;
+
+ @Autowired
+ private SimulatedDeviceFactory deviceFactory;
+
+ @Override
+ public void onApplicationEvent(final ContextRefreshedEvent event) {
+ simulationProperties.getAutostarts().forEach(autostart -> {
+ for (int i = 0; i < autostart.getAmount(); i++) {
+ final String deviceId = autostart.getName() + i;
+ try {
+ repository.add(deviceFactory.createSimulatedDevice(deviceId, autostart.getTenant(),
+ autostart.getApi(), autostart.getPollDelay(), new URL(autostart.getEndpoint()),
+ autostart.getGatewayToken()));
+ } catch (final Exception e) {
+ LOGGER.error("Creation of simulated device at startup failed.", e);
+ }
+
+ spSenderService.createOrUpdateThing(autostart.getTenant(), deviceId);
+ }
+ });
+ }
+
+}
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java
index 492bb3857..bf5d723a8 100644
--- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpConfiguration.java
@@ -59,7 +59,8 @@ public class AmqpConfiguration {
}
/**
- * Create the receiver queue from sp. Receive messages from sp.
+ * Creates the receiver queue from update server for receiving message from
+ * update server.
*
* @return the queue
*/
@@ -70,7 +71,7 @@ public class AmqpConfiguration {
}
/**
- * Create the recevier exchange. Sp send messages to this exchange.
+ * Creates the receiver exchange for sending messages to update server.
*
* @return the exchange
*/
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpProperties.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpProperties.java
index f9e6ab23d..f58355980 100644
--- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpProperties.java
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/AmqpProperties.java
@@ -19,26 +19,25 @@ import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties("hawkbit.device.simulator.amqp")
public class AmqpProperties {
-
/**
* Queue for receiving DMF messages from update server.
*/
- private String receiverConnectorQueueFromSp;
+ private String receiverConnectorQueueFromSp = "simulator_receiver";
/**
* Exchange for sending DMF messages to update server.
*/
- private String senderForSpExchange;
+ private String senderForSpExchange = "simulator.replyTo";
/**
* Simulator dead letter queue.
*/
- private String deadLetterQueue;
+ private String deadLetterQueue = "simulator_deadletter";
/**
* Simulator dead letter exchange.
*/
- private String deadLetterExchange;
+ private String deadLetterExchange = "simulator.deadletter";
public String getReceiverConnectorQueueFromSp() {
return receiverConnectorQueueFromSp;
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java
index 1c314d56f..f22839422 100644
--- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java
@@ -26,14 +26,11 @@ import org.springframework.messaging.handler.annotation.Header;
import org.springframework.stereotype.Component;
/**
- * Handle all incoming Messages from SP.
- *
- *
+ * Handle all incoming Messages from hawkBit update server.
*
*/
@Component
public class SpReceiverService extends ReceiverService {
-
private static final Logger LOGGER = LoggerFactory.getLogger(ReceiverService.class);
public static final String SOFTWARE_MODULE_FIRMWARE = "firmware";
@@ -44,17 +41,6 @@ public class SpReceiverService extends ReceiverService {
/**
* Constructor.
- *
- * @param rabbitTemplate
- * the rabbit template
- * @param amqpProperties
- * the amqp properties
- * @param lwm2mSenderService
- * the lwm2mSenderService
- * @param spSenderService
- * the spSenderService
- * @param deviceUpdater
- * the updater service to simulate update process
*/
@Autowired
public SpReceiverService(final RabbitTemplate rabbitTemplate, final AmqpProperties amqpProperties,
@@ -62,12 +48,11 @@ public class SpReceiverService extends ReceiverService {
super(rabbitTemplate, amqpProperties);
this.spSenderService = spSenderService;
this.deviceUpdater = deviceUpdater;
-
}
/**
* Handle the incoming Message from Queue with the property
- * (com.bosch.sp.lwm2m.connector.amqp.receiverConnectorQueueFromSp).
+ * (hawkbit.device.simulator.amqp.receiverConnectorQueueFromSp).
*
* @param message
* the incoming message
diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java
index e1d6bd15b..28ad0eaa9 100644
--- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java
+++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java
@@ -154,6 +154,7 @@ public class SimulatorView extends VerticalLayout implements View {
public void pollCounterUpdate(final NextPollCounterUpdate update) {
final List devices = update.getDevices();
this.getUI().access(new Runnable() {
+
@Override
public void run() {
devices.forEach(device -> {
@@ -176,6 +177,7 @@ public class SimulatorView extends VerticalLayout implements View {
public void initUpdate(final InitUpdate update) {
final AbstractSimulatedDevice device = update.getDevice();
this.getUI().access(new Runnable() {
+
@Override
public void run() {
final BeanItem item = beanContainer.getItem(device.getId());
diff --git a/examples/hawkbit-device-simulator/src/main/resources/application.properties b/examples/hawkbit-device-simulator/src/main/resources/application.properties
index 56d0190a7..fbe7261be 100644
--- a/examples/hawkbit-device-simulator/src/main/resources/application.properties
+++ b/examples/hawkbit-device-simulator/src/main/resources/application.properties
@@ -7,18 +7,17 @@
# http://www.eclipse.org/legal/epl-v10.html
#
-
-#########################################################################################
-# PUBLIC configuration, i.e. can be changed by users at runtime (defaults provided here)
-#########################################################################################
-## Configuration for RabbitMQ communication
+## Configuration for DMF communication
hawkbit.device.simulator.amqp.receiverConnectorQueueFromSp=simulator_receiver
hawkbit.device.simulator.amqp.deadLetterQueue=simulator_deadletter
hawkbit.device.simulator.amqp.deadLetterExchange=simulator.deadletter
hawkbit.device.simulator.amqp.senderForSpExchange=simulator.replyTo
+## Configuration for simulations
+hawkbit.device.simulator.autostarts.[0].tenant=DEFAULT
-## Configuration for RabbitMQ integration
+
+## Configuration for local RabbitMQ integration
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtualHost=/
diff --git a/examples/hawkbit-example-app/README.md b/examples/hawkbit-example-app/README.md
index eaf30f306..ecbec93c3 100644
--- a/examples/hawkbit-example-app/README.md
+++ b/examples/hawkbit-example-app/README.md
@@ -1,7 +1,15 @@
# hawkBit Example Application
-The hawkBit example application is a standalone spring-boot application with an embedded servlet container to start the hawkBit.
+The hawkBit example application is a standalone spring-boot application with an embedded servlet container to host the hawkBit Update Server.
-## Run
+We have have described several options for you to get access to the example.
+
+## Try out the example application in our hawkBit sandbox on Bluemix
+- try out Management UI https://hawkbit.eu-gb.mybluemix.net/UI
+- try out Management API https://hawkbit.eu-gb.mybluemix.net/rest/v1/targets (don't forget basic auth header)
+- try out DDI API https://hawkbit.eu-gb.mybluemix.net/DEFAULT/controller/v1/MYTESTDEVICE
+
+## On your own workstation
+### Run
```
java -jar examples/hawkbit-example-app/target/hawkbit-example-app-*-SNAPSHOT.jar
```
@@ -10,6 +18,14 @@ Or:
run org eclipse.hawkbit.app.Start
```
-## Usage
-The UI can be accessed via _http://localhost:8080/UI_.
-The REST API can be accessed via _http://localhost:8080/rest/v1_.
+### Usage
+The Management UI can be accessed via http://localhost:8080/UI
+The Management API can be accessed via http://localhost:8080/rest/v1
+
+## Deploy example app to Cloud Foundry
+
+- Go to ```target``` subfolder.
+- Select one of the two manifests
+ - **manifest-simple.yml** for a standalone hawkBit installation with embedded H2.
+ - **manifest.yml** for a standalone hawkBit installation with embedded H2 and RabbitMQ service binding for DMF integration (note: this manifest is used for the sandbox above).
+- Run ```cf push``` against you cloud foundry environment.
diff --git a/examples/hawkbit-example-app/cf/manifest-simple.yml b/examples/hawkbit-example-app/cf/manifest-simple.yml
new file mode 100644
index 000000000..c87a533f4
--- /dev/null
+++ b/examples/hawkbit-example-app/cf/manifest-simple.yml
@@ -0,0 +1,20 @@
+#
+# 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
+#
+
+---
+applications:
+- name: hawkbit-simple
+ memory: 1024M
+ instances: 1
+ buildpack: https://github.com/cloudfoundry/java-buildpack
+ path: ${project.build.finalName}.jar
+ env:
+ SPRING_PROFILES_ACTIVE: cloudsandbox
+ CF_STAGING_TIMEOUT: 15
+ CF_STARTUP_TIMEOUT: 15
diff --git a/examples/hawkbit-example-app/cf/manifest.yml b/examples/hawkbit-example-app/cf/manifest.yml
new file mode 100644
index 000000000..2145f467d
--- /dev/null
+++ b/examples/hawkbit-example-app/cf/manifest.yml
@@ -0,0 +1,22 @@
+#
+# 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
+#
+
+---
+applications:
+- name: hawkbit
+ memory: 1024M
+ instances: 1
+ buildpack: https://github.com/cloudfoundry/java-buildpack
+ path: ${project.build.finalName}.jar
+ services:
+ - dmf-rabbit
+ env:
+ SPRING_PROFILES_ACTIVE: cloudsandbox,amqp
+ CF_STAGING_TIMEOUT: 15
+ CF_STARTUP_TIMEOUT: 15
diff --git a/examples/hawkbit-example-app/pom.xml b/examples/hawkbit-example-app/pom.xml
index 33624ffd7..a5c0f864d 100644
--- a/examples/hawkbit-example-app/pom.xml
+++ b/examples/hawkbit-example-app/pom.xml
@@ -39,6 +39,20 @@
+
+
+ src/main/resources
+
+
+ cf
+ true
+ ${project.build.directory}
+
+ manifest.yml
+ manifest-simple.yml
+
+
+
diff --git a/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyUI.java b/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyUI.java
index e55cb02d2..68d3b2fd9 100644
--- a/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyUI.java
+++ b/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyUI.java
@@ -9,6 +9,7 @@
package org.eclipse.hawkbit.app;
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;
@@ -33,7 +34,8 @@ 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) {
- super(new DelayedEventBusPushStrategy(eventBus, systemEventBus));
+ 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-example-app/src/main/resources/application-cloudsandbox.properties b/examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties
new file mode 100644
index 000000000..ecf71da41
--- /dev/null
+++ b/examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties
@@ -0,0 +1,10 @@
+#
+# 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
+#
+
+vaadin.servlet.productionMode=true
diff --git a/examples/hawkbit-mgmt-api-client/README.md b/examples/hawkbit-mgmt-api-client/README.md
index eff301e20..ac8e7a4cd 100644
--- a/examples/hawkbit-mgmt-api-client/README.md
+++ b/examples/hawkbit-mgmt-api-client/README.md
@@ -1,4 +1,4 @@
-# HawkBit management API example
+# hawkBit Management API example client
Example client that shows how to efficiently use the hawkBit management API.
@@ -36,4 +36,3 @@ In rollout mode:
* assigning software modules to distribution sets
* creating a rollout
* starting a rollout
-
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetResourceClient.java
index 00a9b3fba..5ac11e012 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the DistributionSet resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/distributionsets")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/distributionsets")
public interface DistributionSetResourceClient extends DistributionSetRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTagResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTagResourceClient.java
index ea9f5d28a..5fbdaf857 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTagResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTagResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the DistributionSetTag resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/distributionsettags")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/distributionsettags")
public interface DistributionSetTagResourceClient extends DistributionSetTagRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTypeResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTypeResourceClient.java
index 08d40dfa5..300f8ddcb 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTypeResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/DistributionSetTypeResourceClient.java
@@ -15,7 +15,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
* Client binding for the DistributionSetType resource of the management API.
*
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/distributionsettypes")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/distributionsettypes")
public interface DistributionSetTypeResourceClient extends DistributionSetTypeRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/RolloutResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/RolloutResourceClient.java
index 78b7413e7..aed3af7a2 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/RolloutResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/RolloutResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the Rollout resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/rollouts")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/rollouts")
public interface RolloutResourceClient extends RolloutRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleResourceClient.java
index 88e664d78..8610643ef 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the SoftwareModule resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/softwaremodules")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/softwaremodules")
public interface SoftwareModuleResourceClient extends SoftwareModuleRestAPI {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleTypeResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleTypeResourceClient.java
index 4896cb8d8..46410dd6c 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleTypeResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/SoftwareModuleTypeResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the oftwareModuleType resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/softwaremoduletypes")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/softwaremoduletypes")
public interface SoftwareModuleTypeResourceClient extends SoftwareModuleTypeRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetResourceClient.java
index a82aa5443..79385fea4 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the Target resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/targets")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/targets")
public interface TargetResourceClient extends TargetRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetTagResourceClient.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetTagResourceClient.java
index fee30c686..930931a87 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetTagResourceClient.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/TargetTagResourceClient.java
@@ -14,7 +14,7 @@ import org.springframework.cloud.netflix.feign.FeignClient;
/**
* Client binding for the TargetTag resource of the management API.
*/
-@FeignClient(url = "${hawkbit.endpoint.url:localhost:8080}/rest/v1/targettags")
+@FeignClient(url = "${hawkbit.url:localhost:8080}/rest/v1/targettags")
public interface TargetTagResourceClient extends TargetTagRestApi {
}
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetBuilder.java
index c821b106c..358cff0db 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetBuilder.java
@@ -16,11 +16,7 @@ import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRe
import com.google.common.collect.Lists;
/**
- *
* Builder pattern for building {@link DistributionSetRequestBodyPost}.
- *
- * @author Jonathan Knoblauch
- *
*/
public class DistributionSetBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetTypeBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetTypeBuilder.java
index e1da1f048..752834c7d 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetTypeBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/DistributionSetTypeBuilder.java
@@ -19,8 +19,6 @@ import com.google.common.collect.Lists;
/**
*
* Builder pattern for building {@link DistributionSetTypeRequestBodyPost}.
- *
- * @author Jonathan Knoblauch
*
*/
public class DistributionSetTypeBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/RolloutBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/RolloutBuilder.java
index bea0fd9a4..2e01e0ba2 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/RolloutBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/RolloutBuilder.java
@@ -15,8 +15,6 @@ import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutRestRequestBody;
/**
*
* Builder pattern for building {@link RolloutRestRequestBody}.
- *
- * @author Jonathan Knoblauch
*
*/
public class RolloutBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleAssigmentBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleAssigmentBuilder.java
index b209dbe8b..8d69db619 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleAssigmentBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleAssigmentBuilder.java
@@ -16,8 +16,6 @@ import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleAssi
/**
*
* Builder pattern for building {@link SoftwareModuleAssigmentRest}.
- *
- * @author Jonathan Knoblauch
*
*/
public class SoftwareModuleAssigmentBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleBuilder.java
index 30b85d901..4bbfd92b4 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleBuilder.java
@@ -19,8 +19,6 @@ import com.google.common.collect.Lists;
/**
*
* Builder pattern for building {@link SoftwareModuleRequestBodyPost}.
- *
- * @author Jonathan Knoblauch
*
*/
public class SoftwareModuleBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleTypeBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleTypeBuilder.java
index ce128d592..a6472f0a0 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleTypeBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/SoftwareModuleTypeBuilder.java
@@ -19,8 +19,6 @@ import com.google.common.collect.Lists;
/**
*
* Builder pattern for building {@link SoftwareModuleRequestBodyPost}.
- *
- * @author Jonathan Knoblauch
*
*/
public class SoftwareModuleTypeBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TagBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TagBuilder.java
index f3888de54..6f2eb3248 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TagBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TagBuilder.java
@@ -17,8 +17,6 @@ import com.google.common.collect.Lists;
/**
* Builder pattern for building {@link TagRequestBodyPut}.
- *
- * @author Jonathan Knoblauch
*
*/
public class TagBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TargetBuilder.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TargetBuilder.java
index 5123903d9..e496407e1 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TargetBuilder.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/resource/builder/TargetBuilder.java
@@ -19,8 +19,6 @@ import com.google.common.collect.Lists;
/**
*
* Builder pattern for building {@link TargetRequestBody}.
- *
- * @author Jonathan Knoblauch
*
*/
public class TargetBuilder {
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java
index 35b0f31ea..cd74c0474 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/CreateStartedRolloutExample.java
@@ -8,6 +8,8 @@
*/
package org.eclipse.hawkbit.mgmt.client.scenarios;
+import java.util.List;
+
import org.eclipse.hawkbit.mgmt.client.resource.DistributionSetResourceClient;
import org.eclipse.hawkbit.mgmt.client.resource.DistributionSetTypeResourceClient;
import org.eclipse.hawkbit.mgmt.client.resource.RolloutResourceClient;
@@ -21,10 +23,10 @@ import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleAssigmentB
import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleBuilder;
import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleTypeBuilder;
import org.eclipse.hawkbit.mgmt.client.resource.builder.TargetBuilder;
-import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetsRest;
+import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest;
import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutResponseBody;
-import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulesRest;
-import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest;
+import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest;
+import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -39,7 +41,7 @@ public class CreateStartedRolloutExample {
private static final String SM_MODULE_TYPE = "firmware";
/* known distribution set type name and key */
- private static final String DS_MODULE_TYPE = "firmware";
+ private static final String DS_MODULE_TYPE = SM_MODULE_TYPE;
@Autowired
private DistributionSetResourceClient distributionSetResource;
@@ -65,8 +67,9 @@ public class CreateStartedRolloutExample {
public void run() {
// create three SoftwareModuleTypes
- final SoftwareModuleTypesRest createdSoftwareModuleTypes = softwareModuleTypeResource.createSoftwareModuleTypes(
- new SoftwareModuleTypeBuilder().key(SM_MODULE_TYPE).name(SM_MODULE_TYPE).maxAssignments(1).build())
+ final List createdSoftwareModuleTypes = softwareModuleTypeResource
+ .createSoftwareModuleTypes(new SoftwareModuleTypeBuilder().key(SM_MODULE_TYPE).name(SM_MODULE_TYPE)
+ .maxAssignments(1).build())
.getBody();
// create one DistributionSetType
@@ -75,12 +78,12 @@ public class CreateStartedRolloutExample {
.getBody();
// create one DistributionSet
- final DistributionSetsRest distributionSetsRest = distributionSetResource.createDistributionSets(
+ final List distributionSetsRest = distributionSetResource.createDistributionSets(
new DistributionSetBuilder().name("rollout-example").version("1.0.0").type(DS_MODULE_TYPE).build())
.getBody();
// create three SoftwareModules
- final SoftwareModulesRest softwareModulesRest = softwareModuleResource
+ final List softwareModulesRest = softwareModuleResource
.createSoftwareModules(
new SoftwareModuleBuilder().name("firmware").version("1.0.0").type(SM_MODULE_TYPE).build())
.getBody();
diff --git a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/GettingStartedDefaultScenario.java b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/GettingStartedDefaultScenario.java
index 5767ab9e7..5873403f0 100644
--- a/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/GettingStartedDefaultScenario.java
+++ b/examples/hawkbit-mgmt-api-client/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/GettingStartedDefaultScenario.java
@@ -8,6 +8,8 @@
*/
package org.eclipse.hawkbit.mgmt.client.scenarios;
+import java.util.List;
+
import org.eclipse.hawkbit.mgmt.client.resource.DistributionSetResourceClient;
import org.eclipse.hawkbit.mgmt.client.resource.DistributionSetTypeResourceClient;
import org.eclipse.hawkbit.mgmt.client.resource.SoftwareModuleResourceClient;
@@ -17,9 +19,9 @@ import org.eclipse.hawkbit.mgmt.client.resource.builder.DistributionSetTypeBuild
import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleAssigmentBuilder;
import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleBuilder;
import org.eclipse.hawkbit.mgmt.client.resource.builder.SoftwareModuleTypeBuilder;
-import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetsRest;
-import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulesRest;
-import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest;
+import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest;
+import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest;
+import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -39,13 +41,13 @@ public class GettingStartedDefaultScenario {
private static final String SM_MODULE_TYPE = "gettingstarted";
/* known distribution set type name and key */
- private static final String DS_MODULE_TYPE = "gettingstarted";
+ private static final String DS_MODULE_TYPE = SM_MODULE_TYPE;
/* known distribution name of this getting started example */
private static final String SM_EXAMPLE_NAME = "gettingstarted-example";
/* known distribution name of this getting started example */
- private static final String DS_EXAMPLE_NAME = "gettingstarted-example";
+ private static final String DS_EXAMPLE_NAME = SM_EXAMPLE_NAME;
@Autowired
private DistributionSetResourceClient distributionSetResource;
@@ -68,8 +70,9 @@ public class GettingStartedDefaultScenario {
// create one SoftwareModuleTypes
LOGGER.info("Creating software module type {}", SM_MODULE_TYPE);
- final SoftwareModuleTypesRest createdSoftwareModuleTypes = softwareModuleTypeResource.createSoftwareModuleTypes(
- new SoftwareModuleTypeBuilder().key(SM_MODULE_TYPE).name(SM_MODULE_TYPE).maxAssignments(1).build())
+ final List createdSoftwareModuleTypes = softwareModuleTypeResource
+ .createSoftwareModuleTypes(new SoftwareModuleTypeBuilder().key(SM_MODULE_TYPE).name(SM_MODULE_TYPE)
+ .maxAssignments(1).build())
.getBody();
// create one DistributionSetType
@@ -83,17 +86,17 @@ public class GettingStartedDefaultScenario {
final String dsVersion3 = "2.1.0";
LOGGER.info("Creating distribution set {}:{}", DS_EXAMPLE_NAME, dsVersion1);
- final DistributionSetsRest distributionSetsRest1 = distributionSetResource.createDistributionSets(
+ final List distributionSetsRest1 = distributionSetResource.createDistributionSets(
new DistributionSetBuilder().name(DS_EXAMPLE_NAME).version(dsVersion1).type(DS_MODULE_TYPE).build())
.getBody();
LOGGER.info("Creating distribution set {}:{}", DS_EXAMPLE_NAME, dsVersion2);
- final DistributionSetsRest distributionSetsRest2 = distributionSetResource.createDistributionSets(
+ final List distributionSetsRest2 = distributionSetResource.createDistributionSets(
new DistributionSetBuilder().name(DS_EXAMPLE_NAME).version(dsVersion2).type(DS_MODULE_TYPE).build())
.getBody();
LOGGER.info("Creating distribution set {}:{}", DS_EXAMPLE_NAME, dsVersion3);
- final DistributionSetsRest distributionSetsRest3 = distributionSetResource.createDistributionSets(
+ final List distributionSetsRest3 = distributionSetResource.createDistributionSets(
new DistributionSetBuilder().name(DS_EXAMPLE_NAME).version(dsVersion3).type(DS_MODULE_TYPE).build())
.getBody();
@@ -103,15 +106,15 @@ public class GettingStartedDefaultScenario {
final String swVersion3 = "3";
LOGGER.info("Creating distribution set {}:{}", SM_EXAMPLE_NAME, swVersion1);
- final SoftwareModulesRest softwareModulesRest1 = softwareModuleResource.createSoftwareModules(
+ final List softwareModulesRest1 = softwareModuleResource.createSoftwareModules(
new SoftwareModuleBuilder().name(SM_EXAMPLE_NAME).version(swVersion1).type(SM_MODULE_TYPE).build())
.getBody();
LOGGER.info("Creating distribution set {}:{}", SM_EXAMPLE_NAME, swVersion2);
- final SoftwareModulesRest softwareModulesRest2 = softwareModuleResource.createSoftwareModules(
+ final List softwareModulesRest2 = softwareModuleResource.createSoftwareModules(
new SoftwareModuleBuilder().name(SM_EXAMPLE_NAME).version(swVersion2).type(SM_MODULE_TYPE).build())
.getBody();
LOGGER.info("Creating distribution set {}:{}", SM_EXAMPLE_NAME, swVersion3);
- final SoftwareModulesRest softwareModulesRest3 = softwareModuleResource.createSoftwareModules(
+ final List softwareModulesRest3 = softwareModuleResource.createSoftwareModules(
new SoftwareModuleBuilder().name(SM_EXAMPLE_NAME).version(swVersion3).type(SM_MODULE_TYPE).build())
.getBody();
diff --git a/hawkbit-artifact-repository-mongo/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStore.java b/hawkbit-artifact-repository-mongo/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStore.java
index 78658da91..6981834b4 100644
--- a/hawkbit-artifact-repository-mongo/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStore.java
+++ b/hawkbit-artifact-repository-mongo/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactStore.java
@@ -38,10 +38,7 @@ import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSFile;
/**
- * The file management which looks up all the file in the filestore.
- *
- *
- *
+ * The file management which looks up all the file in the file tore.
*
*/
public class ArtifactStore implements ArtifactRepository {
@@ -60,7 +57,7 @@ public class ArtifactStore implements ArtifactRepository {
private static final String MD5 = "md5";
/**
- * The mongoDB field which holds the SHA1 hash, stored in the metadata
+ * The mongoDB field which holds the SHA1 hash, stored in the meta data
* object.
*/
private static final String SHA1 = "sha1";
@@ -75,11 +72,10 @@ public class ArtifactStore implements ArtifactRepository {
/**
* Retrieves a {@link GridFSDBFile} from the store by it's SHA1 hash.
*
- * @param tenant
- * the tenant to retrieve the artifacts from, ignore case.
* @param sha1Hash
* the sha1-hash of the file to lookup.
- * @return The gridfs file object or {@code null} if no file exists.
+ *
+ * @return The DbArtifact object or {@code null} if no file exists.
*/
@Override
public DbArtifact getArtifactBySha1(final String sha1Hash) {
@@ -226,8 +222,7 @@ public class ArtifactStore implements ArtifactRepository {
* @return a paged list of artifacts mapped from the given dbFiles
*/
private List map(final List dbFiles) {
- final List collect = dbFiles.stream().map(dbFile -> map(dbFile)).collect(Collectors.toList());
- return collect;
+ return dbFiles.stream().map(dbFile -> map(dbFile)).collect(Collectors.toList());
}
/**
@@ -238,7 +233,7 @@ public class ArtifactStore implements ArtifactRepository {
* the tenant to retrieve the artifacts from, ignore case.
* @param sha1Hashes
* the sha1-hashes of the files to lookup.
- * @return list of artfiacts
+ * @return list of artifacts
*/
@Override
public List getArtifactsBySha1(final List sha1Hashes) {
diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/ui/UIAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/ui/UIAutoConfiguration.java
index ff73eff7b..be66904d5 100644
--- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/ui/UIAutoConfiguration.java
+++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/ui/UIAutoConfiguration.java
@@ -9,6 +9,9 @@
package org.eclipse.hawkbit.autoconfigure.ui;
import org.eclipse.hawkbit.DistributedResourceBundleMessageSource;
+import org.eclipse.hawkbit.ui.HawkbitEventProvider;
+import org.eclipse.hawkbit.ui.UIEventProvider;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.vaadin.spring.annotation.EnableVaadinExtensions;
@@ -17,9 +20,6 @@ import org.vaadin.spring.security.annotation.EnableVaadinSecurity;
/**
* The hawkbit-ui autoconfiguration.
- *
- *
- *
*/
@Configuration
@EnableVaadinSecurity
@@ -37,4 +37,15 @@ public class UIAutoConfiguration {
return new DistributedResourceBundleMessageSource();
}
+ /**
+ * A event provider bean which hold the supported events for the UI.
+ *
+ * @return the provider bean
+ */
+ @Bean
+ @ConditionalOnMissingBean
+ public UIEventProvider eventProvider() {
+ return new HawkbitEventProvider();
+ }
+
}
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/ControllerPollProperties.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/ControllerPollProperties.java
index c923963d2..0d70ae69d 100644
--- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/ControllerPollProperties.java
+++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/ControllerPollProperties.java
@@ -31,7 +31,7 @@ public class ControllerPollProperties {
* Maximum polling time that can be configured by a tenant in HH:MM:SS
* notation.
*/
- private String maxPollingTime = "23:59:00";
+ private String maxPollingTime = "23:59:59";
/**
* Minimum polling time that can be configured by a tenant in HH:MM:SS
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java
index b4c2dcdba..2385e0dfa 100644
--- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java
+++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifact.java
@@ -14,9 +14,6 @@ import java.io.OutputStream;
/**
* Database representation of artifact.
*
- *
- *
- *
*/
public class DbArtifact {
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java
index c16d3a620..5619a2292 100644
--- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java
+++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/model/DbArtifactHash.java
@@ -11,9 +11,6 @@ package org.eclipse.hawkbit.artifact.repository.model;
/**
* Database representation of artifact hash.
*
- *
- *
- *
*/
public class DbArtifactHash {
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java
index 8e7c46223..5968f4420 100644
--- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java
+++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java
@@ -36,8 +36,15 @@ public final class DurationHelper {
this.max = max;
}
+ /**
+ * Checks if the requested duration is in the defined min/max range.
+ *
+ * @param duration
+ * to checked
+ * @return true if in time range
+ */
public boolean isWithinRange(final Duration duration) {
- return duration.compareTo(min) > 0 && duration.compareTo(max) < 0;
+ return duration.compareTo(min) >= 0 && duration.compareTo(max) <= 0;
}
}
diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/TenantConfigurationKey.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/TenantConfigurationKey.java
index 32a7a8376..402185be3 100644
--- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/TenantConfigurationKey.java
+++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/TenantConfigurationKey.java
@@ -30,45 +30,60 @@ public enum TenantConfigurationKey {
/**
* boolean value {@code true} {@code false}.
*/
- AUTHENTICATION_MODE_HEADER_ENABLED("authentication.header.enabled", "hawkbit.server.ddi.security.authentication.header.enabled", Boolean.class, Boolean.FALSE.toString(), TenantConfigurationBooleanValidator.class),
+ AUTHENTICATION_MODE_HEADER_ENABLED("authentication.header.enabled",
+ "hawkbit.server.ddi.security.authentication.header.enabled", Boolean.class, Boolean.FALSE.toString(),
+ TenantConfigurationBooleanValidator.class),
/**
*
*/
- AUTHENTICATION_MODE_HEADER_AUTHORITY_NAME("authentication.header.authority", "hawkbit.server.ddi.security.authentication.header.authority", String.class, Boolean.FALSE.toString(), TenantConfigurationStringValidator.class),
+ AUTHENTICATION_MODE_HEADER_AUTHORITY_NAME("authentication.header.authority",
+ "hawkbit.server.ddi.security.authentication.header.authority", String.class, Boolean.FALSE.toString(),
+ TenantConfigurationStringValidator.class),
/**
* boolean value {@code true} {@code false}.
*/
- AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED("authentication.targettoken.enabled", "hawkbit.server.ddi.security.authentication.targettoken.enabled", Boolean.class, Boolean.FALSE.toString(), TenantConfigurationBooleanValidator.class),
+ AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED("authentication.targettoken.enabled",
+ "hawkbit.server.ddi.security.authentication.targettoken.enabled", Boolean.class, Boolean.FALSE.toString(),
+ TenantConfigurationBooleanValidator.class),
/**
* boolean value {@code true} {@code false}.
*/
- AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_ENABLED("authentication.gatewaytoken.enabled", "hawkbit.server.ddi.security.authentication.gatewaytoken.enabled", Boolean.class, Boolean.FALSE.toString(), TenantConfigurationBooleanValidator.class),
+ AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_ENABLED("authentication.gatewaytoken.enabled",
+ "hawkbit.server.ddi.security.authentication.gatewaytoken.enabled", Boolean.class, Boolean.FALSE.toString(),
+ TenantConfigurationBooleanValidator.class),
/**
* string value which holds the name of the security token key.
*/
- AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_NAME("authentication.gatewaytoken.name", "hawkbit.server.ddi.security.authentication.gatewaytoken.name", String.class, null, TenantConfigurationStringValidator.class),
+ AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_NAME("authentication.gatewaytoken.name",
+ "hawkbit.server.ddi.security.authentication.gatewaytoken.name", String.class, null,
+ TenantConfigurationStringValidator.class),
/**
* string value which holds the actual security-key of the gateway security
* token.
*/
- AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_KEY("authentication.gatewaytoken.key", "hawkbit.server.ddi.security.authentication.gatewaytoken.key", String.class, null, TenantConfigurationStringValidator.class),
+ AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_KEY("authentication.gatewaytoken.key",
+ "hawkbit.server.ddi.security.authentication.gatewaytoken.key", String.class, null,
+ TenantConfigurationStringValidator.class),
/**
* string value which holds the polling time interval in the format HH:mm:ss
*/
- POLLING_TIME_INTERVAL("pollingOverdueTime", "hawkbit.controller.pollingOverdueTime", String.class, null, TenantConfigurationPollingDurationValidator.class),
+ POLLING_TIME_INTERVAL("pollingTime", "hawkbit.controller.pollingTime", String.class, null,
+ TenantConfigurationPollingDurationValidator.class),
/**
* string value which holds the polling time interval in the format HH:mm:ss
*/
- POLLING_OVERDUE_TIME_INTERVAL("pollingTime", "hawkbit.controller.pollingTime", String.class, null, TenantConfigurationPollingDurationValidator.class),
+ POLLING_OVERDUE_TIME_INTERVAL("pollingOverdueTime", "hawkbit.controller.pollingOverdueTime", String.class, null,
+ TenantConfigurationPollingDurationValidator.class),
/**
* boolean value {@code true} {@code false}.
*/
- ANONYMOUS_DOWNLOAD_MODE_ENABLED("anonymous.download.enabled", "hawkbit.server.download.anonymous.enabled", Boolean.class, Boolean.FALSE.toString(), TenantConfigurationBooleanValidator.class);
+ ANONYMOUS_DOWNLOAD_MODE_ENABLED("anonymous.download.enabled", "hawkbit.server.download.anonymous.enabled",
+ Boolean.class, Boolean.FALSE.toString(), TenantConfigurationBooleanValidator.class);
private final String keyName;
private final String defaultKeyName;
diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpSenderService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpSenderService.java
index 6cb3dd9be..f44e2e9bb 100644
--- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpSenderService.java
+++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpSenderService.java
@@ -24,10 +24,10 @@ public interface AmqpSenderService {
*
* @param message
* the amqp message
- * @param uri
+ * @param replyTo
* the reply to uri
*/
- void sendMessage(Message message, URI uri);
+ void sendMessage(Message message, URI replyTo);
/**
* Extract the exchange from the uri. Default implementation removes the
diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java
index 8a054165b..76870ac93 100644
--- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java
+++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java
@@ -59,7 +59,7 @@ public class BaseAmqpService {
*/
@SuppressWarnings("unchecked")
public T convertMessage(final Message message, final Class clazz) {
- if (message == null || message.getBody() == null) {
+ if (isMessageBodyEmpty(message)) {
return null;
}
message.getMessageProperties().getHeaders().put(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME,
@@ -67,6 +67,10 @@ public class BaseAmqpService {
return (T) rabbitTemplate.getMessageConverter().fromMessage(message);
}
+ private boolean isMessageBodyEmpty(final Message message) {
+ return message == null || message.getBody() == null || message.getBody().length == 0;
+ }
+
/**
* Is needed to convert a incoming message to is originally list object
* type.
@@ -79,7 +83,7 @@ public class BaseAmqpService {
*/
@SuppressWarnings("unchecked")
public List convertMessageList(final Message message, final Class clazz) {
- if (message == null || message.getBody() == null) {
+ if (isMessageBodyEmpty(message)) {
return Collections.emptyList();
}
message.getMessageProperties().getHeaders().put(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME,
@@ -105,7 +109,7 @@ public class BaseAmqpService {
}
protected final void logAndThrowMessageError(final Message message, final String error) {
- LOGGER.error("Error \"{}\" reported by message {}", error, message.getMessageProperties().getMessageId());
+ LOGGER.warn("Error \"{}\" reported by message: {}", error, message);
throw new IllegalArgumentException(error);
}
diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java
index 9586633bf..244544b64 100644
--- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java
+++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java
@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.amqp;
import java.net.URI;
+import org.eclipse.hawkbit.util.IpUtil;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
@@ -33,8 +34,12 @@ public class DefaultAmqpSenderService implements AmqpSenderService {
}
@Override
- public void sendMessage(final Message message, final URI uri) {
- internalAmqpTemplate.send(extractExchange(uri), null, message);
+ public void sendMessage(final Message message, final URI replyTo) {
+ if (!IpUtil.isAmqpUri(replyTo)) {
+ return;
+ }
+
+ internalAmqpTemplate.send(extractExchange(replyTo), null, message);
}
}
diff --git a/hawkbit-http-security/src/test/java/org/eclipse/hawkbit/security/PreAuthTokenSourceTrustAuthenticationProviderTest.java b/hawkbit-http-security/src/test/java/org/eclipse/hawkbit/security/PreAuthTokenSourceTrustAuthenticationProviderTest.java
index fb961f9b2..eb4cacf33 100644
--- a/hawkbit-http-security/src/test/java/org/eclipse/hawkbit/security/PreAuthTokenSourceTrustAuthenticationProviderTest.java
+++ b/hawkbit-http-security/src/test/java/org/eclipse/hawkbit/security/PreAuthTokenSourceTrustAuthenticationProviderTest.java
@@ -9,6 +9,7 @@
package org.eclipse.hawkbit.security;
import static org.fest.assertions.Assertions.assertThat;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.when;
import org.junit.Test;
@@ -20,6 +21,7 @@ import org.springframework.security.authentication.InsufficientAuthenticationExc
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken;
+import ru.yandex.qatools.allure.annotations.Description;
import ru.yandex.qatools.allure.annotations.Features;
import ru.yandex.qatools.allure.annotations.Stories;
@@ -38,11 +40,8 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest {
@Mock
private TenantAwareWebAuthenticationDetails webAuthenticationDetailsMock;
- /**
- * Testing in case the containing controllerId in the URI request path does
- * not accord with the controllerId in the request header.
- */
- @Test(expected = BadCredentialsException.class)
+ @Test
+ @Description("Testing in case the containing controllerId in the URI request path does not accord with the controllerId in the request header.")
public void principalAndCredentialsNotTheSameThrowsAuthenticationException() {
final String principal = "controllerIdURL";
final String credentials = "controllerIdHeader";
@@ -51,15 +50,17 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest {
token.setDetails(webAuthenticationDetailsMock);
// test, should throw authentication exception
- underTestWithoutSourceIpCheck.authenticate(token);
+ try {
+ underTestWithoutSourceIpCheck.authenticate(token);
+ fail("Should not work with wrong credentials");
+ } catch (final BadCredentialsException e) {
+
+ }
+
}
- /**
- * Testing that the controllerId within the URI request path is the same
- * with the controllerId within the request header and no source IP check is
- * in place.
- */
@Test
+ @Description("Testing that the controllerId within the URI request path is the same with the controllerId within the request header and no source IP check is in place.")
public void principalAndCredentialsAreTheSameWithNoSourceIpCheckIsSuccessful() {
final String principal = "controllerId";
final String credentials = "controllerId";
@@ -71,12 +72,8 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest {
assertThat(authenticate.isAuthenticated()).isTrue();
}
- /**
- * Testing that the controllerId in the URI request match with the
- * controllerId in the request header but the request are not coming from a
- * trustful source.
- */
- @Test(expected = InsufficientAuthenticationException.class)
+ @Test
+ @Description("Testing that the controllerId in the URI request match with the controllerId in the request header but the request are not coming from a trustful source.")
public void priniciapAndCredentialsAreTheSameButSourceIpRequestNotMatching() {
final String remoteAddress = "192.168.1.1";
final String principal = "controllerId";
@@ -88,16 +85,17 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest {
when(webAuthenticationDetailsMock.getRemoteAddress()).thenReturn(remoteAddress);
// test, should throw authentication exception
- final Authentication authenticate = underTestWithSourceIpCheck.authenticate(token);
- assertThat(authenticate.isAuthenticated()).isTrue();
+
+ try {
+ underTestWithSourceIpCheck.authenticate(token);
+ fail("as source is not trusted.");
+ } catch (final InsufficientAuthenticationException e) {
+
+ }
}
- /**
- * Testing that the controllerId in the URI request match with the
- * controllerId in the request header and the source Ip is matching the
- * allowed remote IP address.
- */
- @Test()
+ @Test
+ @Description("Testing that the controllerId in the URI request match with the controllerId in the request header and the source Ip is matching the allowed remote IP address.")
public void priniciapAndCredentialsAreTheSameAndSourceIpIsTrusted() {
final String principal = "controllerId";
final String credentials = "controllerId";
@@ -112,7 +110,7 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest {
assertThat(authenticate.isAuthenticated()).isTrue();
}
- @Test()
+ @Test
public void priniciapAndCredentialsAreTheSameAndSourceIpIsWithinList() {
final String[] trustedIPAddresses = new String[] { "192.168.1.1", "192.168.1.2", REQUEST_SOURCE_IP,
"192.168.1.3" };
@@ -148,6 +146,11 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest {
// test, should throw authentication exception
final Authentication authenticate = underTestWithList.authenticate(token);
- assertThat(authenticate.isAuthenticated()).isTrue();
+ try {
+ assertThat(authenticate.isAuthenticated()).isTrue();
+ fail("as source is not trusted.");
+ } catch (final InsufficientAuthenticationException e) {
+
+ }
}
}
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.hibernatehibernate-validator
+
+ javax.validation
+ validation-api
+ com.google.guavaguava
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/Constants.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/Constants.java
index 5f3f772b0..ef0b70438 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/Constants.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/Constants.java
@@ -11,9 +11,6 @@ package org.eclipse.hawkbit;
/**
* A constant class which holds only static constants used within the SP server.
*
- *
- *
- *
*/
public final class Constants {
@@ -27,7 +24,7 @@ public final class Constants {
public static final int MAX_ENTRIES_IN_STATEMENT = 999;
/**
- * constant class only private constructor.
+ * Constant class only private constructor.
*/
private Constants() {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java
index bf805f3dd..8ef427dcf 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/RepositoryApplicationConfiguration.java
@@ -13,8 +13,8 @@ import java.util.Map;
import org.eclipse.hawkbit.aspects.ExceptionMappingAspectHandler;
import org.eclipse.hawkbit.repository.SystemManagement;
-import org.eclipse.hawkbit.repository.model.helper.AfterTransactionCommitExecutorHolder;
import org.eclipse.hawkbit.repository.TenantConfigurationManagement;
+import org.eclipse.hawkbit.repository.model.helper.AfterTransactionCommitExecutorHolder;
import org.eclipse.hawkbit.repository.model.helper.CacheManagerHolder;
import org.eclipse.hawkbit.repository.model.helper.SecurityTokenGeneratorHolder;
import org.eclipse.hawkbit.repository.model.helper.SystemManagementHolder;
@@ -127,23 +127,11 @@ public class RepositoryApplicationConfiguration extends JpaBaseConfiguration {
return new ExceptionMappingAspectHandler();
}
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration#
- * createJpaVendorAdapter()
- */
@Override
protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
return new EclipseLinkJpaVendorAdapter();
}
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration#
- * getVendorProperties()
- */
@Override
protected Map getVendorProperties() {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/aspects/ExceptionMappingAspectHandler.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/aspects/ExceptionMappingAspectHandler.java
index 75145778e..3824ae80f 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/aspects/ExceptionMappingAspectHandler.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/aspects/ExceptionMappingAspectHandler.java
@@ -167,11 +167,6 @@ public class ExceptionMappingAspectHandler implements Ordered {
return null;
}
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.core.Ordered#getOrder()
- */
@Override
public int getOrder() {
return 1;
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityChangeEventListener.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityChangeEventListener.java
index b25a72fbc..0a19d2edb 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityChangeEventListener.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityChangeEventListener.java
@@ -20,7 +20,7 @@ import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent;
import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent;
import org.eclipse.hawkbit.executor.AfterTransactionCommitExecutor;
import org.eclipse.hawkbit.repository.TargetRepository;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
import org.eclipse.hawkbit.repository.model.Target;
import org.eclipse.hawkbit.repository.model.TargetInfo;
import org.eclipse.hawkbit.tenancy.TenantAware;
@@ -31,7 +31,7 @@ import com.google.common.eventbus.EventBus;
/**
* An aspect implementation which wraps the necessary repository services for
- * saving {@link BaseEntity}s to publish create or update events.
+ * saving {@link TenantAwareBaseEntity}s to publish create or update events.
*
*
*
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityPropertyChangeListener.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityPropertyChangeListener.java
index 8b632ee6a..28b5e677c 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityPropertyChangeListener.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityPropertyChangeListener.java
@@ -18,9 +18,9 @@ import org.eclipse.hawkbit.eventbus.event.RolloutGroupPropertyChangeEvent;
import org.eclipse.hawkbit.eventbus.event.RolloutPropertyChangeEvent;
import org.eclipse.hawkbit.executor.AfterTransactionCommitExecutor;
import org.eclipse.hawkbit.repository.model.Action;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
import org.eclipse.hawkbit.repository.model.Rollout;
import org.eclipse.hawkbit.repository.model.RolloutGroup;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
import org.eclipse.hawkbit.repository.model.helper.AfterTransactionCommitExecutorHolder;
import org.eclipse.hawkbit.repository.model.helper.EventBusHolder;
import org.eclipse.persistence.descriptors.DescriptorEvent;
@@ -36,13 +36,7 @@ import com.google.common.eventbus.EventBus;
*
*/
public class EntityPropertyChangeListener extends DescriptorEventAdapter {
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.persistence.descriptors.DescriptorEventAdapter#postInsert
- * (org.eclipse.persistence.descriptors.DescriptorEvent)
- */
+
@Override
public void postInsert(final DescriptorEvent event) {
if (event.getObject().getClass().equals(Action.class)) {
@@ -56,45 +50,30 @@ public class EntityPropertyChangeListener extends DescriptorEventAdapter {
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.persistence.descriptors.DescriptorEventAdapter#postUpdate
- * (org.eclipse.persistence.descriptors.DescriptorEvent)
- */
@Override
public void postUpdate(final DescriptorEvent event) {
if (event.getObject().getClass().equals(Action.class)) {
- getAfterTransactionCommmitExecutor().afterCommit(
- () -> getEventBus()
- .post(new ActionPropertyChangeEvent((Action) event.getObject(), getChangeSet(Action.class,
- event))));
+ getAfterTransactionCommmitExecutor().afterCommit(() -> getEventBus().post(
+ new ActionPropertyChangeEvent((Action) event.getObject(), getChangeSet(Action.class, event))));
} else if (event.getObject().getClass().equals(Rollout.class)) {
- getAfterTransactionCommmitExecutor().afterCommit(
- () -> getEventBus().post(
- new RolloutPropertyChangeEvent((Rollout) event.getObject(), getChangeSet(Rollout.class,
- event))));
+ getAfterTransactionCommmitExecutor().afterCommit(() -> getEventBus().post(
+ new RolloutPropertyChangeEvent((Rollout) event.getObject(), getChangeSet(Rollout.class, event))));
} else if (event.getObject().getClass().equals(RolloutGroup.class)) {
getAfterTransactionCommmitExecutor().afterCommit(
- () -> getEventBus().post(
- new RolloutGroupPropertyChangeEvent((RolloutGroup) event.getObject(), getChangeSet(
- RolloutGroup.class, event))));
+ () -> getEventBus().post(new RolloutGroupPropertyChangeEvent((RolloutGroup) event.getObject(),
+ getChangeSet(RolloutGroup.class, event))));
}
}
- private Map.Values> getChangeSet(
+ private Map.Values> getChangeSet(
final Class clazz, final DescriptorEvent event) {
final T rolloutGroup = clazz.cast(event.getObject());
final ObjectChangeSet changeSet = ((UpdateObjectQuery) event.getQuery()).getObjectChangeSet();
- return changeSet
- .getChanges()
- .stream()
- .filter(record -> record instanceof DirectToFieldChangeRecord)
+ return changeSet.getChanges().stream().filter(record -> record instanceof DirectToFieldChangeRecord)
.map(record -> (DirectToFieldChangeRecord) record)
- .collect(
- Collectors.toMap(record -> record.getAttribute(), record -> new AbstractPropertyChangeEvent(
- rolloutGroup, null).new Values(record.getOldValue(), record.getNewValue())));
+ .collect(Collectors.toMap(record -> record.getAttribute(),
+ record -> new AbstractPropertyChangeEvent(rolloutGroup, null).new Values(
+ record.getOldValue(), record.getNewValue())));
}
private AfterTransactionCommitExecutor getAfterTransactionCommmitExecutor() {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractBaseEntityEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractBaseEntityEvent.java
index 7d0973f74..d27669ade 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractBaseEntityEvent.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractBaseEntityEvent.java
@@ -8,18 +8,19 @@
*/
package org.eclipse.hawkbit.eventbus.event;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
/**
- * An abstract definition class for {@link EntityEvent} for {@link BaseEntity}s,
- * which holds the {@link BaseEntity}.
+ * An abstract definition class for {@link EntityEvent} for
+ * {@link TenantAwareBaseEntity}s, which holds the {@link TenantAwareBaseEntity}
+ * .
*
*
*
* @param
- * the type of the {@link BaseEntity}
+ * the type of the {@link TenantAwareBaseEntity}
*/
-public abstract class AbstractBaseEntityEvent extends AbstractDistributedEvent
+public abstract class AbstractBaseEntityEvent extends AbstractDistributedEvent
implements EntityEvent {
/**
@@ -37,33 +38,16 @@ public abstract class AbstractBaseEntityEvent extends Abst
this.entity = baseEntity;
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.hawkbit.server.eventbus.event.EntityEvent#getEntity()
- */
@Override
public E getEntity() {
return entity;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.hawkbit.server.eventbus.event.EntityEvent#getEntity(java.lang
- * .Class)
- */
@Override
public T getEntity(final Class entityClass) {
return entityClass.cast(entity);
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.hawkbit.server.eventbus.event.EntityEvent#getTenant()
- */
@Override
public String getTenant() {
return entity.getTenant();
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEntityBulkEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEntityBulkEvent.java
index 0a0ce88ce..56f3e585a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEntityBulkEvent.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEntityBulkEvent.java
@@ -11,7 +11,7 @@ package org.eclipse.hawkbit.eventbus.event;
import java.util.Arrays;
import java.util.List;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
/**
*
@@ -19,7 +19,7 @@ import org.eclipse.hawkbit.repository.model.BaseEntity;
*
* @param
*/
-public abstract class AbstractEntityBulkEvent implements EntityBulkEvent {
+public abstract class AbstractEntityBulkEvent implements EntityBulkEvent {
private static final long serialVersionUID = 1L;
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractPropertyChangeEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractPropertyChangeEvent.java
index 8a596eeb5..795f6ff88 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractPropertyChangeEvent.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractPropertyChangeEvent.java
@@ -10,14 +10,14 @@ package org.eclipse.hawkbit.eventbus.event;
import java.util.Map;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
/**
* Property change event.
*
* @param
*/
-public class AbstractPropertyChangeEvent extends AbstractBaseEntityEvent {
+public class AbstractPropertyChangeEvent extends AbstractBaseEntityEvent {
private static final long serialVersionUID = -3671601415138242311L;
private final transient Map changeSet;
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java
index 9a8a485b4..e10b9a51f 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/DistributionSetTagAssigmentResultEvent.java
@@ -8,14 +8,14 @@
*/
package org.eclipse.hawkbit.eventbus.event;
-import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult;
+import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
/**
* A event for assignment target tag.
*/
public class DistributionSetTagAssigmentResultEvent {
- private final DistributionSetTagAssigmentResult assigmentResult;
+ private final DistributionSetTagAssignmentResult assigmentResult;
/**
* Constructor.
@@ -23,11 +23,11 @@ public class DistributionSetTagAssigmentResultEvent {
* @param assigmentResult
* the assignment result-
*/
- public DistributionSetTagAssigmentResultEvent(final DistributionSetTagAssigmentResult assigmentResult) {
+ public DistributionSetTagAssigmentResultEvent(final DistributionSetTagAssignmentResult assigmentResult) {
this.assigmentResult = assigmentResult;
}
- public DistributionSetTagAssigmentResult getAssigmentResult() {
+ public DistributionSetTagAssignmentResult getAssigmentResult() {
return assigmentResult;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/EntityBulkEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/EntityBulkEvent.java
index 2004d3017..eac1b6bb9 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/EntityBulkEvent.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/EntityBulkEvent.java
@@ -11,7 +11,7 @@ package org.eclipse.hawkbit.eventbus.event;
import java.io.Serializable;
import java.util.List;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
/**
* An event interface which declares event types that an entities has been
@@ -20,7 +20,7 @@ import org.eclipse.hawkbit.repository.model.BaseEntity;
* @param
* the entity type
*/
-public interface EntityBulkEvent extends Serializable, Event {
+public interface EntityBulkEvent extends Serializable, Event {
/**
* A typesafe way to retrieve the the entities from the event, which might
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java
index 405595de0..6bdc3aebd 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetTagAssigmentResultEvent.java
@@ -8,14 +8,14 @@
*/
package org.eclipse.hawkbit.eventbus.event;
-import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult;
+import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
/**
* A event for assignment target tag.
*/
public class TargetTagAssigmentResultEvent {
- private final TargetTagAssigmentResult assigmentResult;
+ private final TargetTagAssignmentResult assigmentResult;
/**
* Constructor.
@@ -23,11 +23,11 @@ public class TargetTagAssigmentResultEvent {
* @param assigmentResult
* the assignment result-
*/
- public TargetTagAssigmentResultEvent(final TargetTagAssigmentResult assigmentResult) {
+ public TargetTagAssigmentResultEvent(final TargetTagAssignmentResult assigmentResult) {
this.assigmentResult = assigmentResult;
}
- public TargetTagAssigmentResult getAssigmentResult() {
+ public TargetTagAssignmentResult getAssigmentResult() {
return assigmentResult;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/BaseEntityRepository.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/BaseEntityRepository.java
index 539d20f71..2b4de2b81 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/BaseEntityRepository.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/BaseEntityRepository.java
@@ -10,14 +10,14 @@ package org.eclipse.hawkbit.repository;
import java.io.Serializable;
-import org.eclipse.hawkbit.repository.model.BaseEntity;
+import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.transaction.annotation.Transactional;
/**
- * Command repository operations for all {@link BaseEntity}s.
+ * Command repository operations for all {@link TenantAwareBaseEntity}s.
*
*
*
@@ -29,11 +29,11 @@ import org.springframework.transaction.annotation.Transactional;
*/
@NoRepositoryBean
@Transactional(readOnly = true)
-public interface BaseEntityRepository
+public interface BaseEntityRepository
extends PagingAndSortingRepository {
/**
- * Deletes all {@link BaseEntity} of a given tenant.
+ * Deletes all {@link TenantAwareBaseEntity} of a given tenant.
*
* @param tenant
* to delete data from
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java
index 7131bbe0a..0bb94bd72 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ControllerManagement.java
@@ -376,16 +376,9 @@ public class ControllerManagement {
switch (actionStatus.getStatus()) {
case ERROR:
mergedTarget = deploymentManagement.updateTargetInfo(mergedTarget, TargetUpdateStatus.ERROR, false);
- // set action inactive
- mergedAction.setActive(false);
- mergedAction.setStatus(Status.ERROR);
- mergedTarget.setAssignedDistributionSet(null);
- targetManagement.updateTarget(mergedTarget);
+ handleErrorOnAction(mergedAction, mergedTarget);
break;
case FINISHED:
- // set action inactive
- mergedAction.setActive(false);
- mergedAction.setStatus(Status.FINISHED);
handleFinishedAndStoreInTargetStatus(mergedTarget, mergedAction);
break;
case CANCELED:
@@ -404,6 +397,13 @@ public class ControllerManagement {
return actionRepository.save(mergedAction);
}
+ private void handleErrorOnAction(final Action mergedAction, final Target mergedTarget) {
+ mergedAction.setActive(false);
+ mergedAction.setStatus(Status.ERROR);
+ mergedTarget.setAssignedDistributionSet(null);
+ targetManagement.updateTarget(mergedTarget);
+ }
+
private void checkForToManyStatusEntries(final Action action) {
if (securityProperties.getDos().getMaxStatusEntriesPerAction() > 0) {
@@ -420,6 +420,8 @@ public class ControllerManagement {
}
private void handleFinishedAndStoreInTargetStatus(final Target target, final Action action) {
+ action.setActive(false);
+ action.setStatus(Status.FINISHED);
final TargetInfo targetInfo = target.getTargetInfo();
final DistributionSet ds = entityManager.merge(action.getDistributionSet());
targetInfo.setInstalledDistributionSet(ds);
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java
index 3e61e4499..8b1df00da 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetAssignmentResult.java
@@ -55,7 +55,7 @@ public class DistributionSetAssignmentResult extends AssignmentResult {
* @return the assignedTargets
*/
public List getAssignedTargets() {
- return targetManagement.findTargetsByControllerID(assignedTargets);
+ return targetManagement.findTargetByControllerID(assignedTargets);
}
/**
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java
index 8b07c9bf8..8bee7c703 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java
@@ -38,7 +38,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata;
import org.eclipse.hawkbit.repository.model.DistributionSetMetadata_;
import org.eclipse.hawkbit.repository.model.DistributionSetTag;
-import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult;
+import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult;
import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.DistributionSetTypeElement;
import org.eclipse.hawkbit.repository.model.DistributionSet_;
@@ -68,9 +68,6 @@ import com.google.common.eventbus.EventBus;
/**
* Business facade for managing the {@link DistributionSet}s.
*
- *
- *
- *
*/
@Transactional(readOnly = true)
@Validated
@@ -140,15 +137,15 @@ public class DistributionSetManagement {
* @param sets
* to toggle for
* @param tag
- * to toogle
- * @return {@link DistributionSetTagAssigmentResult} with all metadata of
+ * to toggle
+ * @return {@link DistributionSetTagAssignmentResult} with all meta data of
* the assignment outcome.
*/
@Modifying
@Transactional
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
- public DistributionSetTagAssigmentResult toggleTagAssignment(@NotEmpty final List sets,
+ public DistributionSetTagAssignmentResult toggleTagAssignment(@NotEmpty final List sets,
@NotNull final DistributionSetTag tag) {
return toggleTagAssignment(sets.stream().map(ds -> ds.getId()).collect(Collectors.toList()), tag.getName());
}
@@ -163,44 +160,44 @@ public class DistributionSetManagement {
* to toggle for
* @param tagName
* to toggle
- * @return {@link DistributionSetTagAssigmentResult} with all metadata of
+ * @return {@link DistributionSetTagAssignmentResult} with all meta data of
* the assignment outcome.
*/
@Modifying
@Transactional
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
- public DistributionSetTagAssigmentResult toggleTagAssignment(@NotEmpty final Collection dsIds,
+ public DistributionSetTagAssignmentResult toggleTagAssignment(@NotEmpty final Collection dsIds,
@NotNull final String tagName) {
final Iterable sets = findDistributionSetListWithDetails(dsIds);
final DistributionSetTag myTag = tagManagement.findDistributionSetTag(tagName);
- DistributionSetTagAssigmentResult result = null;
- final List allDSs = new ArrayList<>();
+ DistributionSetTagAssignmentResult result;
+ final List toBeChangedDSs = new ArrayList<>();
for (final DistributionSet set : sets) {
if (set.getTags().add(myTag)) {
- allDSs.add(set);
+ toBeChangedDSs.add(set);
}
}
- // unassigment case
- if (allDSs.isEmpty()) {
+ // un-assignment case
+ if (toBeChangedDSs.isEmpty()) {
for (final DistributionSet set : sets) {
if (set.getTags().remove(myTag)) {
- allDSs.add(set);
+ toBeChangedDSs.add(set);
}
}
- result = new DistributionSetTagAssigmentResult(dsIds.size() - allDSs.size(), 0, allDSs.size(),
- Collections.emptyList(), distributionSetRepository.save(allDSs), myTag);
+ result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), 0,
+ toBeChangedDSs.size(), Collections.emptyList(), distributionSetRepository.save(toBeChangedDSs),
+ myTag);
} else {
- result = new DistributionSetTagAssigmentResult(dsIds.size() - allDSs.size(), allDSs.size(), 0,
- distributionSetRepository.save(allDSs), Collections.emptyList(), myTag);
+ result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), toBeChangedDSs.size(),
+ 0, distributionSetRepository.save(toBeChangedDSs), Collections.emptyList(), myTag);
}
- final DistributionSetTagAssigmentResult resultAssignment = result;
- afterCommit
- .afterCommit(() -> eventBus.post(new DistributionSetTagAssigmentResultEvent(resultAssignment)));
+ final DistributionSetTagAssignmentResult resultAssignment = result;
+ afterCommit.afterCommit(() -> eventBus.post(new DistributionSetTagAssigmentResultEvent(resultAssignment)));
// no reason to persist the tag
entityManager.detach(myTag);
@@ -352,6 +349,9 @@ public class DistributionSetManagement {
public List createDistributionSets(@NotNull final Iterable distributionSets) {
for (final DistributionSet ds : distributionSets) {
prepareDsSave(ds);
+ if (ds.getType() == null) {
+ ds.setType(systemManagement.getTenantMetadata().getDefaultDsType());
+ }
}
return distributionSetRepository.save(distributionSets);
}
@@ -437,7 +437,7 @@ public class DistributionSetManagement {
* @param spec
* of the search
* @param pageable
- * parametsr for paging
+ * parameter for paging
*
* @return the found {@link SoftwareModuleType}s
*/
@@ -762,7 +762,7 @@ public class DistributionSetManagement {
if (distributionSetMetadataRepository.exists(metadata.getId())) {
throwMetadataKeyAlreadyExists(metadata.getId().getKey());
}
- // merge base software module so optLockRevision gets updated and audit
+ // merge base distribution set so optLockRevision gets updated and audit
// log written because
// modifying metadata is modifying the base distribution set itself for
// auditing purposes.
@@ -870,7 +870,7 @@ public class DistributionSetManagement {
cb) -> cb.and(
cb.equal(root.get(DistributionSetMetadata_.distributionSet)
.get(DistributionSet_.id), distributionSetId),
- spec.toPredicate(root, query, cb)),
+ spec.toPredicate(root, query, cb)),
pageable);
}
@@ -916,7 +916,7 @@ public class DistributionSetManagement {
@Transactional
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_REPOSITORY)
public List createDistributionSetTypes(@NotNull final Collection types) {
- return types.stream().map(type -> createDistributionSetType(type)).collect(Collectors.toList());
+ return types.stream().map(this::createDistributionSetType).collect(Collectors.toList());
}
/**
@@ -1060,7 +1060,7 @@ public class DistributionSetManagement {
afterCommit.afterCommit(() -> {
- final DistributionSetTagAssigmentResult result = new DistributionSetTagAssigmentResult(0, save.size(), 0,
+ final DistributionSetTagAssignmentResult result = new DistributionSetTagAssignmentResult(0, save.size(), 0,
save, Collections.emptyList(), tag);
eventBus.post(new DistributionSetTagAssigmentResultEvent(result));
});
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/NoCountPagingRepository.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/NoCountPagingRepository.java
index 79f54a3f0..0624f269a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/NoCountPagingRepository.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/NoCountPagingRepository.java
@@ -29,9 +29,6 @@ import org.springframework.stereotype.Repository;
* Workaround as spring data does not provide a {@link Slice} based
* {@link JpaRepository#findAll()}.
*
- *
- *
- *
*/
@Repository
public class NoCountPagingRepository {
@@ -104,15 +101,6 @@ public class NoCountPagingRepository {
super(domainClass, em);
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.springframework.data.jpa.repository.support.SimpleJpaRepository#
- * readPage(javax.persistence .TypedQuery,
- * org.springframework.data.domain.Pageable,
- * org.springframework.data.jpa.domain.Specification)
- */
@Override
protected Page readPage(final TypedQuery query, final Pageable pageable, final Specification spec) {
query.setFirstResult(pageable.getOffset());
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ReportManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ReportManagement.java
index eab926b4b..b95664d8f 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ReportManagement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/ReportManagement.java
@@ -458,11 +458,6 @@ public class ReportManagement {
return name;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
@@ -471,11 +466,6 @@ public class ReportManagement {
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) { // NOSONAR - as this is
// generated
@@ -499,11 +489,6 @@ public class ReportManagement {
return true;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
return "DSName [name=" + name + "]";
@@ -523,9 +508,6 @@ public class ReportManagement {
/**
* Return DateTypes.
- *
- *
- *
*/
public static final class DateTypes implements Serializable {
/**
@@ -585,12 +567,6 @@ public class ReportManagement {
private static final long serialVersionUID = 1L;
private static final String DATE_PATTERN = "yyyy-MM";
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.hawkbit.server.repository.ReportManagement.DateType#
- * format(java. lang.String)
- */
@Override
public LocalDate format(final String s) {
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DATE_PATTERN);
@@ -598,23 +574,11 @@ public class ReportManagement {
return ym.atDay(1);
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.hawkbit.server.repository.ReportManagement.DateType#
- * h2Format()
- */
@Override
public String h2Format() {
return DATE_PATTERN;
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.hawkbit.server.repository.ReportManagement.DateType#
- * mySqlFormat( )
- */
@Override
public String mySqlFormat() {
return "%Y-%m";
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java
index 1f610d29c..384353b8e 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java
@@ -59,11 +59,7 @@ import com.google.common.base.Strings;
import com.google.common.collect.Sets;
/**
- * Business facade for managing the deployable {@link SoftwareModule}s.
- *
- *
- *
- *
+ * Business facade for managing {@link SoftwareModule}s.
*
*/
@Transactional(readOnly = true)
@@ -99,7 +95,7 @@ public class SoftwareManagement {
private ArtifactManagement artifactManagement;
/**
- * Updates existing {@link SoftwareModule}. Updateable values are
+ * Updates existing {@link SoftwareModule}. Update-able values are
* {@link SoftwareModule#getDescription()}
* {@link SoftwareModule#getVendor()}.
*
@@ -119,17 +115,21 @@ public class SoftwareManagement {
final SoftwareModule module = softwareModuleRepository.findOne(sm.getId());
+ boolean updated = false;
if (null == sm.getDescription() || !sm.getDescription().equals(module.getDescription())) {
module.setDescription(sm.getDescription());
+ updated = true;
}
if (null == sm.getVendor() || !sm.getVendor().equals(module.getVendor())) {
module.setVendor(sm.getVendor());
+ updated = true;
}
- return softwareModuleRepository.save(module);
+
+ return updated ? softwareModuleRepository.save(module) : module;
}
/**
- * Updates existing {@link SoftwareModuleType}. Updatable value is
+ * Updates existing {@link SoftwareModuleType}. Update-able value is
* {@link SoftwareModuleType#getDescription()} and
* {@link SoftwareModuleType#getColour()}.
*
@@ -145,13 +145,16 @@ public class SoftwareManagement {
final SoftwareModuleType type = softwareModuleTypeRepository.findOne(sm.getId());
+ boolean updated = false;
if (sm.getDescription() != null && !sm.getDescription().equals(type.getDescription())) {
type.setDescription(sm.getDescription());
+ updated = true;
}
if (sm.getColour() != null && !sm.getColour().equals(type.getColour())) {
type.setColour(sm.getColour());
+ updated = true;
}
- return softwareModuleTypeRepository.save(type);
+ return updated ? softwareModuleTypeRepository.save(type) : type;
}
/**
@@ -256,19 +259,21 @@ public class SoftwareManagement {
}
/**
- * retrieves {@link SoftwareModule}s by their name AND version.
+ * retrieves {@link SoftwareModule} by their name AND version AND type..
*
* @param name
* of the {@link SoftwareModule}
* @param version
* of the {@link SoftwareModule}
- * @return the found {@link SoftwareModule}s
+ * @param type
+ * of the {@link SoftwareModule}
+ * @return the found {@link SoftwareModule} or null
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
- public List findSoftwareModuleByNameAndVersion(@NotEmpty final String name,
- @NotEmpty final String version) {
+ public SoftwareModule findSoftwareModuleByNameAndVersion(@NotEmpty final String name,
+ @NotEmpty final String version, @NotNull final SoftwareModuleType type) {
- return softwareModuleRepository.findByNameAndVersion(name, version);
+ return softwareModuleRepository.findOneByNameAndVersionAndType(name, version, type);
}
/**
@@ -491,21 +496,27 @@ public class SoftwareManagement {
/**
* Filter {@link SoftwareModule}s with given
* {@link SoftwareModule#getName()} or {@link SoftwareModule#getVersion()}
- * and {@link SoftwareModule#getType()} that are not marked as deleted.
+ * search text and {@link SoftwareModule#getType()} that are not marked as
+ * deleted and sort them by means of given distribution set related modules
+ * on top of the list.
+ *
+ * After that the modules are sorted by {@link SoftwareModule#getName()} and
+ * {@link SoftwareModule#getVersion()} in ascending order.
*
* @param pageable
* page parameter
* @param orderByDistributionId
- * the ID of distribution set to be order by
+ * the ID of distribution set to be ordered on top
* @param searchText
- * to be filtered as "like" on {@link SoftwareModule#getName()}
+ * filtered as "like" on {@link SoftwareModule#getName()}
* @param type
- * to be filtered as "like" on {@link SoftwareModule#getType()}
+ * filtered as "equal" on {@link SoftwareModule#getType()}
* @return the page of found {@link SoftwareModule}
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
- public Slice findSoftwareModuleOrderByDistribution(@NotNull final Pageable pageable,
- @NotNull final Long orderByDistributionId, final String searchText, final SoftwareModuleType type) {
+ public Slice findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc(
+ @NotNull final Pageable pageable, @NotNull final Long orderByDistributionId, final String searchText,
+ final SoftwareModuleType type) {
final List resultList = new ArrayList<>();
final int pageSize = pageable.getPageSize();
@@ -522,7 +533,7 @@ public class SoftwareManagement {
assignedRoot, assignedQuery, cb,
cb.equal(assignedDsJoin.get(DistributionSet_.id), orderByDistributionId));
// if we have some predicates then add it to the where clause of the
- // multiselect
+ // multi select
assignedQuery.where(specPredicate);
assignedQuery.orderBy(cb.asc(assignedRoot.get(SoftwareModule_.name)),
cb.asc(assignedRoot.get(SoftwareModule_.version)));
@@ -546,7 +557,7 @@ public class SoftwareManagement {
unassignedQuery.distinct(true);
final Root unassignedRoot = unassignedQuery.from(SoftwareModule.class);
- Predicate[] unassignedSpec = null;
+ Predicate[] unassignedSpec;
if (!assignedSoftwareModules.isEmpty()) {
unassignedSpec = specificationsToPredicate(buildSpecificationList(searchText, type), unassignedRoot,
unassignedQuery, cb, cb.not(unassignedRoot.get(SoftwareModule_.id)
@@ -709,8 +720,8 @@ public class SoftwareManagement {
@Modifying
@Transactional
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_CREATE_REPOSITORY)
- public List createSoftwareModuleTypes(@NotNull final Collection types) {
- return types.stream().map(type -> createSoftwareModuleType(type)).collect(Collectors.toList());
+ public List createSoftwareModuleType(@NotNull final Collection types) {
+ return types.stream().map(this::createSoftwareModuleType).collect(Collectors.toList());
}
/**
@@ -826,7 +837,7 @@ public class SoftwareManagement {
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_REPOSITORY)
public SoftwareModuleMetadata updateSoftwareModuleMetadata(@NotNull final SoftwareModuleMetadata metadata) {
// check if exists otherwise throw entity not found exception
- findOne(metadata.getId());
+ findSoftwareModuleMetadata(metadata.getId());
// touch it to update the lock revision because we are modifying the
// software module
// indirectly
@@ -884,7 +895,7 @@ public class SoftwareManagement {
cb) -> cb.and(
cb.equal(root.get(SoftwareModuleMetadata_.softwareModule)
.get(SoftwareModule_.id), softwareModuleId),
- spec.toPredicate(root, query, cb)),
+ spec.toPredicate(root, query, cb)),
pageable);
}
@@ -899,7 +910,7 @@ public class SoftwareManagement {
* in case the meta data does not exists for the given key
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
- public SoftwareModuleMetadata findOne(@NotNull final SwMetadataCompositeKey id) {
+ public SoftwareModuleMetadata findSoftwareModuleMetadata(@NotNull final SwMetadataCompositeKey id) {
final SoftwareModuleMetadata findOne = softwareModuleMetadataRepository.findOne(id);
if (findOne == null) {
throw new EntityNotFoundException("Metadata with key '" + id.getKey() + "' does not exist");
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java
index ccadb028a..d70e8226f 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareModuleRepository.java
@@ -43,15 +43,19 @@ public interface SoftwareModuleRepository
Long countByType(SoftwareModuleType type);
/**
- * Retrieves {@link SoftwareModule}s by filtering on name AND version.
+ * Retrieves {@link SoftwareModule} by filtering on name AND version AND
+ * type (which is unique per tenant.
*
* @param name
* to be filtered on
* @param version
* to be filtered on
- * @return the found {@link SoftwareModule}s with the given name AND verion
+ * @param type
+ * to be filtered on
+ * @return the found {@link SoftwareModule} with the given name AND version
+ * AND type
*/
- List findByNameAndVersion(String name, String version);
+ SoftwareModule findOneByNameAndVersionAndType(String name, String version, SoftwareModuleType type);
/**
* deletes the {@link SoftwareModule}s with the given IDs.
@@ -81,6 +85,8 @@ public interface SoftwareModuleRepository
Page findByAssignedTo(Pageable pageable, DistributionSet set);
/**
+ *
+ *
* @param set
* to search for
* @return all {@link SoftwareModule}s that are assigned to given
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SystemManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SystemManagement.java
index 77b48a3cd..5577e1d61 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SystemManagement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SystemManagement.java
@@ -310,8 +310,6 @@ public class SystemManagement {
}
private DistributionSetType createStandardSoftwareDataSetup() {
-
- // Edge Controller Linux standard setup
final SoftwareModuleType eclApp = softwareModuleTypeRepository.save(new SoftwareModuleType("application",
"ECL Application", "Edge Controller Linux base application type", 1));
final SoftwareModuleType eclOs = softwareModuleTypeRepository
@@ -327,13 +325,11 @@ public class SystemManagement {
"Standard Edge Controller Linux distribution set type. OS only.").addMandatoryModuleType(eclOs)
.addOptionalModuleType(eclApp));
- final DistributionSetType defaultType = distributionSetTypeRepository
+ return distributionSetTypeRepository
.save(new DistributionSetType("ecl_os_app_jvm", "OS with optional app and jvm",
"Standard Edge Controller Linux distribution set type. OS with optional application.")
.addMandatoryModuleType(eclOs).addOptionalModuleType(eclApp)
.addOptionalModuleType(eclJvm));
-
- return defaultType;
}
/**
@@ -343,18 +339,8 @@ public class SystemManagement {
* default types we need to use the tenant the current tenant which is
* currently created and not the one currently in the {@link TenantAware}.
*
- *
- *
*/
private class CurrentTenantKeyGenerator implements KeyGenerator {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.springframework.cache.interceptor.KeyGenerator#generate(java.lang
- * .Object, java.lang.reflect.Method, java.lang.Object[])
- */
@Override
public Object generate(final Object target, final Method method, final Object... params) {
final String initialTenantCreation = createInitialTenant.get();
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java
index e790d0a5e..0e0e474b2 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java
@@ -43,7 +43,7 @@ import org.eclipse.hawkbit.repository.model.TargetIdName;
import org.eclipse.hawkbit.repository.model.TargetInfo;
import org.eclipse.hawkbit.repository.model.TargetInfo_;
import org.eclipse.hawkbit.repository.model.TargetTag;
-import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult;
+import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult;
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
import org.eclipse.hawkbit.repository.model.Target_;
import org.eclipse.hawkbit.repository.rsql.RSQLUtility;
@@ -53,7 +53,6 @@ import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.SliceImpl;
@@ -74,8 +73,6 @@ import com.google.common.eventbus.EventBus;
/**
* Business service facade for managing {@link Target}s.
*
- *
- *
*/
@Transactional(readOnly = true)
@Validated
@@ -157,7 +154,7 @@ public class TargetManagement {
* @return List of found{@link Target}s
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
- public List findTargetsByControllerID(@NotEmpty final Collection controllerIDs) {
+ public List findTargetByControllerID(@NotEmpty final Collection controllerIDs) {
return targetRepository.findAll(TargetSpecifications.byControllerIdWithStatusAndAssignedInJoin(controllerIDs));
}
@@ -333,10 +330,10 @@ public class TargetManagement {
}
/**
- * retrieves {@link Target}s by the assigned {@link DistributionSet} without
+ * Retrieves {@link Target}s by the assigned {@link DistributionSet} without
* details, i.e. NO {@link Target#getTags()} and
- * {@link Target#getActiveActions()} possible including the filtering based
- * on the given {@code spec}.
+ * {@link Target#getActiveActions()} possible including additional filtering
+ * based on the given {@code spec}.
*
* @param distributionSetID
* the ID of the {@link DistributionSet}
@@ -376,7 +373,8 @@ public class TargetManagement {
/**
* retrieves {@link Target}s by the installed {@link DistributionSet}without
* details, i.e. NO {@link Target#getTags()} and
- * {@link Target#getActiveActions()} possible.
+ * {@link Target#getActiveActions()} possible including additional filtering
+ * based on the given {@code spec}.
*
* @param distributionSetId
* the ID of the {@link DistributionSet}
@@ -492,7 +490,7 @@ public class TargetManagement {
if (!Strings.isNullOrEmpty(searchText)) {
specList.add(TargetSpecifications.likeNameOrDescriptionOrIp(searchText));
}
- if (selectTargetWithNoTag || (tagNames != null && tagNames.length > 0)) {
+ if (selectTargetWithNoTag != null && (selectTargetWithNoTag || (tagNames != null && tagNames.length > 0))) {
specList.add(TargetSpecifications.hasTags(tagNames, selectTargetWithNoTag));
}
return specList;
@@ -536,7 +534,7 @@ public class TargetManagement {
@Transactional
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
- public TargetTagAssigmentResult toggleTagAssignment(@NotEmpty final List targets,
+ public TargetTagAssignmentResult toggleTagAssignment(@NotEmpty final List targets,
@NotNull final TargetTag tag) {
return toggleTagAssignment(
targets.stream().map(target -> target.getControllerId()).collect(Collectors.toList()), tag.getName());
@@ -558,7 +556,7 @@ public class TargetManagement {
@Transactional
@NotNull
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_UPDATE_TARGET)
- public TargetTagAssigmentResult toggleTagAssignment(@NotEmpty final Collection targetIds,
+ public TargetTagAssignmentResult toggleTagAssignment(@NotEmpty final Collection targetIds,
@NotNull final String tagName) {
final TargetTag tag = targetTagRepository.findByNameEquals(tagName);
final List alreadyAssignedTargets = targetRepository.findByTagNameAndControllerIdIn(tagName, targetIds);
@@ -568,7 +566,7 @@ public class TargetManagement {
// all are already assigned -> unassign
if (alreadyAssignedTargets.size() == allTargets.size()) {
alreadyAssignedTargets.forEach(target -> target.getTags().remove(tag));
- final TargetTagAssigmentResult result = new TargetTagAssigmentResult(0, 0, alreadyAssignedTargets.size(),
+ final TargetTagAssignmentResult result = new TargetTagAssignmentResult(0, 0, alreadyAssignedTargets.size(),
Collections.emptyList(), alreadyAssignedTargets, tag);
afterCommit.afterCommit(() -> eventBus.post(new TargetTagAssigmentResultEvent(result)));
@@ -578,7 +576,7 @@ public class TargetManagement {
allTargets.removeAll(alreadyAssignedTargets);
// some or none are assigned -> assign
allTargets.forEach(target -> target.getTags().add(tag));
- final TargetTagAssigmentResult result = new TargetTagAssigmentResult(alreadyAssignedTargets.size(),
+ final TargetTagAssignmentResult result = new TargetTagAssignmentResult(alreadyAssignedTargets.size(),
allTargets.size(), 0, targetRepository.save(allTargets), Collections.emptyList(), tag);
afterCommit.afterCommit(() -> eventBus.post(new TargetTagAssigmentResultEvent(result)));
@@ -609,7 +607,7 @@ public class TargetManagement {
final List save = targetRepository.save(allTargets);
afterCommit.afterCommit(() -> {
- final TargetTagAssigmentResult assigmentResult = new TargetTagAssigmentResult(0, save.size(), 0, save,
+ final TargetTagAssignmentResult assigmentResult = new TargetTagAssignmentResult(0, save.size(), 0, save,
Collections.emptyList(), tag);
eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
});
@@ -622,7 +620,7 @@ public class TargetManagement {
final List save = targetRepository.save(targets);
afterCommit.afterCommit(() -> {
- final TargetTagAssigmentResult assigmentResult = new TargetTagAssigmentResult(0, 0, save.size(),
+ final TargetTagAssignmentResult assigmentResult = new TargetTagAssignmentResult(0, 0, save.size(),
Collections.emptyList(), save, tag);
eventBus.post(new TargetTagAssigmentResultEvent(assigmentResult));
});
@@ -812,14 +810,12 @@ public class TargetManagement {
}
/**
- * finds all {@link Target#getControllerId()} for all the given parameters.
+ * Finds all targets for all the given parameters but returns not the full
+ * target but {@link TargetIdName}.
*
* @param pageRequest
* the pageRequest to enhance the query for paging and sorting
- * @param filterByDistributionId
- * to find targets having the {@link DistributionSet} as
- * installed or assigned. Set to null in case this
- * is not required.
+ *
* @param filterByStatus
* find targets having this {@link TargetUpdateStatus}s. Set to
* null in case this is not required.
@@ -827,28 +823,38 @@ public class TargetManagement {
* to find targets having the text anywhere in name or
* description. Set null in case this is not
* required.
+ * @param installedOrAssignedDistributionSetId
+ * to find targets having the {@link DistributionSet} as
+ * installed or assigned. Set to null in case this
+ * is not required.
* @param filterByTagNames
* to find targets which are having any one in this tag names.
* Set null in case this is not required.
* @param selectTargetWithNoTag
* flag to select targets with no tag assigned
*
- * @return the found {@link Target}s
+ * @return the found {@link TargetIdName}s
*/
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
- public List findAllTargetIdsByFilters(final PageRequest pageRequest,
- final Long filterByDistributionId, final Collection filterByStatus,
- final String filterBySearchText, final Boolean selectTargetWithNoTag, final String... filterByTagNames) {
+ public List findAllTargetIdsByFilters(@NotNull final Pageable pageRequest,
+ final Collection filterByStatus, final String filterBySearchText,
+ final Long installedOrAssignedDistributionSetId, final Boolean selectTargetWithNoTag,
+ final String... filterByTagNames) {
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
final CriteriaQuery
*
- *
- *
- *
- *
*/
@Entity
@Table(name = "sp_distribution_set", uniqueConstraints = {
@@ -67,14 +63,14 @@ public class DistributionSet extends NamedVersionedEntity {
@ManyToMany(targetEntity = SoftwareModule.class, fetch = FetchType.LAZY)
@JoinTable(name = "sp_ds_module", joinColumns = {
- @JoinColumn(name = "ds_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_module_ds") ) }, inverseJoinColumns = {
- @JoinColumn(name = "module_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_module_module") ) })
+ @JoinColumn(name = "ds_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_module_ds")) }, inverseJoinColumns = {
+ @JoinColumn(name = "module_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_module_module")) })
private final Set modules = new HashSet<>();
@ManyToMany(targetEntity = DistributionSetTag.class)
@JoinTable(name = "sp_ds_dstag", joinColumns = {
- @JoinColumn(name = "ds", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstag_ds") ) }, inverseJoinColumns = {
- @JoinColumn(name = "TAG", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstag_tag") ) })
+ @JoinColumn(name = "ds", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstag_ds")) }, inverseJoinColumns = {
+ @JoinColumn(name = "TAG", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstag_tag")) })
private Set tags = new HashSet<>();
@Column(name = "deleted")
@@ -95,7 +91,7 @@ public class DistributionSet extends NamedVersionedEntity {
private final List metadata = new ArrayList<>();
@ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "ds_id", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstype_ds") )
+ @JoinColumn(name = "ds_id", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_dstype_ds"))
private DistributionSetType type;
@Column(name = "complete")
@@ -130,75 +126,34 @@ public class DistributionSet extends NamedVersionedEntity {
if (moduleList != null) {
moduleList.forEach(this::addModule);
}
- complete = type.checkComplete(this);
+ if (this.type != null) {
+ complete = this.type.checkComplete(this);
+ }
}
public Set getTags() {
return tags;
}
- /**
- * @return the deleted
- */
public boolean isDeleted() {
return deleted;
}
/**
- * @return the metadata
+ * @return immutable list of meta data elements.
*/
public List getMetadata() {
- return metadata;
+ return Collections.unmodifiableList(metadata);
}
- /**
- * @return the actions
- */
public List getActions() {
return actions;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = super.hashCode();
- result = prime * result + this.getClass().getName().hashCode();
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (!super.equals(obj)) {
- return false;
- }
- if (!(obj instanceof DistributionSet)) {
- return false;
- }
-
- return true;
- }
-
public boolean isRequiredMigrationStep() {
return requiredMigrationStep;
}
- /**
- * @param deleted
- * the deleted to set
- */
public DistributionSet setDeleted(final boolean deleted) {
this.deleted = deleted;
return this;
@@ -209,10 +164,6 @@ public class DistributionSet extends NamedVersionedEntity {
return this;
}
- /**
- * @param tags
- * the tags to set
- */
public DistributionSet setTags(final Set tags) {
this.tags = tags;
return this;
@@ -232,11 +183,6 @@ public class DistributionSet extends NamedVersionedEntity {
return installedAtTargets;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
return "DistributionSet [getName()=" + getName() + ", getOptLockRevision()=" + getOptLockRevision()
@@ -322,7 +268,7 @@ public class DistributionSet extends NamedVersionedEntity {
* Searches through modules for the given type.
*
* @param type
- * to seach for
+ * to search for
* @return SoftwareModule of given type or null if not in the
* list.
*/
@@ -337,26 +283,15 @@ public class DistributionSet extends NamedVersionedEntity {
return null;
}
- /**
- * @return the type
- */
public DistributionSetType getType() {
return type;
}
- /**
- * @param type
- * the type to set
- */
public void setType(final DistributionSetType type) {
this.type = type;
}
- /**
- * @return the complete
- */
public boolean isComplete() {
return complete;
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetIdName.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetIdName.java
index a7eb8e517..f8662567a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetIdName.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetIdName.java
@@ -15,9 +15,6 @@ import java.io.Serializable;
*
*/
public class DistributionSetIdName implements Serializable {
- /**
- *
- */
private static final long serialVersionUID = 1L;
private final Long id;
@@ -39,9 +36,6 @@ public class DistributionSetIdName implements Serializable {
this.version = version;
}
- /**
- * @return the id
- */
public Long getId() {
return id;
}
@@ -50,40 +44,27 @@ public class DistributionSetIdName implements Serializable {
return version;
}
- /**
- * @return the name
- */
public String getName() {
return name;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
- public int hashCode() { // NOSONAR - as this is generated
+ public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (id == null ? 0 : id.hashCode());
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
- public boolean equals(final Object obj) { // NOSONAR - as this is generated
+ public boolean equals(final Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
- if (getClass() != obj.getClass()) {
+ if (!(obj instanceof DistributionSetIdName)) {
return false;
}
final DistributionSetIdName other = (DistributionSetIdName) obj;
@@ -97,11 +78,6 @@ public class DistributionSetIdName implements Serializable {
return true;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
// only return the ID because it's used in vaadin for setting the item
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetMetadata.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetMetadata.java
index b0627f0db..7b2e637b9 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetMetadata.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetMetadata.java
@@ -23,20 +23,13 @@ import javax.persistence.ManyToOne;
import javax.persistence.Table;
/**
- * Metadata for {@link DistributionSet}.
- *
- *
- *
+ * Meta data for {@link DistributionSet}.
*
*/
@IdClass(DsMetadataCompositeKey.class)
@Entity
@Table(name = "sp_ds_metadata")
public class DistributionSetMetadata implements Serializable {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
@Id
@@ -49,11 +42,11 @@ public class DistributionSetMetadata implements Serializable {
@Id
@ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "ds_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_metadata_ds") )
+ @JoinColumn(name = "ds_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_metadata_ds"))
private DistributionSet distributionSet;
public DistributionSetMetadata() {
-
+ // Default constructor for JPA.
}
/**
@@ -73,49 +66,66 @@ public class DistributionSetMetadata implements Serializable {
return new DsMetadataCompositeKey(distributionSet, key);
}
- /**
- * @return the key
- */
public String getKey() {
return key;
}
- /**
- * @param key
- * the key to set
- */
public void setKey(final String key) {
this.key = key;
}
- /**
- * @param distributionSet
- * the distributionSet to set
- */
public void setDistributionSet(final DistributionSet distributionSet) {
this.distributionSet = distributionSet;
}
- /**
- * @return the value
- */
public String getValue() {
return value;
}
- /**
- * @param value
- * the value to set
- */
public void setValue(final String value) {
this.value = value;
}
- /**
- * @return the distributionSet
- */
public DistributionSet getDistributionSet() {
return distributionSet;
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (distributionSet == null ? 0 : distributionSet.hashCode());
+ result = prime * result + (key == null ? 0 : key.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof DistributionSetMetadata)) {
+ return false;
+ }
+ final DistributionSetMetadata other = (DistributionSetMetadata) obj;
+ if (distributionSet == null) {
+ if (other.distributionSet != null) {
+ return false;
+ }
+ } else if (!distributionSet.equals(other.distributionSet)) {
+ return false;
+ }
+ if (key == null) {
+ if (other.key != null) {
+ return false;
+ }
+ } else if (!key.equals(other.key)) {
+ return false;
+ }
+ return true;
+ }
+
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTag.java
index 63a858a7d..137fde5b9 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTag.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTag.java
@@ -21,16 +21,11 @@ import javax.persistence.UniqueConstraint;
* A {@link DistributionSetTag} is used to describe DistributionSet attributes
* and use them also for filtering the DistributionSet list.
*
- *
- *
- *
- *
- *
*/
@Entity
@Table(name = "sp_distributionset_tag", indexes = {
@Index(name = "sp_idx_distribution_set_tag_prim", columnList = "tenant,id") }, uniqueConstraints = @UniqueConstraint(columnNames = {
- "name", "tenant" }, name = "uk_ds_tag") )
+ "name", "tenant" }, name = "uk_ds_tag"))
public class DistributionSetTag extends Tag {
private static final long serialVersionUID = 1L;
@@ -69,11 +64,6 @@ public class DistributionSetTag extends Tag {
return assignedToDistributionSet;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
@@ -82,16 +72,8 @@ public class DistributionSetTag extends Tag {
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) { // NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
if (!super.equals(obj)) {
return false;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssigmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java
similarity index 80%
rename from hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssigmentResult.java
rename to hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java
index d7ed57305..eddd10c1b 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssigmentResult.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java
@@ -11,10 +11,10 @@ package org.eclipse.hawkbit.repository.model;
import java.util.List;
/**
- * Result object for {@link DistributionSetTag} assigments.
+ * Result object for {@link DistributionSetTag} assignments.
*
*/
-public class DistributionSetTagAssigmentResult extends AssignmentResult {
+public class DistributionSetTagAssignmentResult extends AssignmentResult {
private final int unassigned;
private final List assignedDs;
@@ -37,7 +37,7 @@ public class DistributionSetTagAssigmentResult extends AssignmentResult {
* @param distributionSetTag
* the assigned or unassigned tag
*/
- public DistributionSetTagAssigmentResult(final int alreadyAssigned, final int assigned, final int unassigned,
+ public DistributionSetTagAssignmentResult(final int alreadyAssigned, final int assigned, final int unassigned,
final List assignedDs, final List unassignedDs,
final DistributionSetTag distributionSetTag) {
super(assigned, alreadyAssigned);
@@ -47,30 +47,18 @@ public class DistributionSetTagAssigmentResult extends AssignmentResult {
this.distributionSetTag = distributionSetTag;
}
- /**
- * @return the unassigned
- */
public int getUnassigned() {
return unassigned;
}
- /**
- * @return the distributionSetTag
- */
public DistributionSetTag getDistributionSetTag() {
return distributionSetTag;
}
- /**
- * @return the assignedDs
- */
public List getAssignedDs() {
return assignedDs;
}
- /**
- * @return the unassignedDs
- */
public List getUnassignedDs() {
return unassignedDs;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetType.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetType.java
index e1c7e61ea..61d2fc58c 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetType.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetType.java
@@ -27,9 +27,6 @@ import javax.persistence.UniqueConstraint;
* A distribution set type defines which software module types can or have to be
* {@link DistributionSet}.
*
- *
- *
- *
*/
@Entity
@Table(name = "sp_distribution_set_type", indexes = {
@@ -38,10 +35,6 @@ import javax.persistence.UniqueConstraint;
@UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_dst_name"),
@UniqueConstraint(columnNames = { "type_key", "tenant" }, name = "uk_dst_key") })
public class DistributionSetType extends NamedEntity {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
@OneToMany(targetEntity = DistributionSetTypeElement.class, cascade = {
@@ -59,7 +52,7 @@ public class DistributionSetType extends NamedEntity {
private boolean deleted = false;
public DistributionSetType() {
- // default public constructor
+ // default public constructor for JPA
}
/**
@@ -91,7 +84,7 @@ public class DistributionSetType extends NamedEntity {
public DistributionSetType(final String key, final String name, final String description, final String color) {
super(name, description);
this.key = key;
- this.colour = color;
+ colour = color;
}
/**
@@ -256,17 +249,10 @@ public class DistributionSetType extends NamedEntity {
return this;
}
- /**
- * @return the key
- */
public String getKey() {
return key;
}
- /**
- * @param key
- * the key to set
- */
public void setKey(final String key) {
this.key = key;
}
@@ -282,19 +268,10 @@ public class DistributionSetType extends NamedEntity {
.containsAll(getMandatoryModuleTypes());
}
- /**
- *
- * @return the DistributionSet type color
- */
public String getColour() {
return colour;
}
- /**
- *
- * @param colour
- * the col
- */
public void setColour(final String colour) {
this.colour = colour;
}
@@ -303,11 +280,6 @@ public class DistributionSetType extends NamedEntity {
return elements;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
return "DistributionSetType [key=" + key + ", isDeleted()=" + isDeleted() + ", getId()=" + getId() + "]";
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElement.java
index 0d892f6da..8414a6f1a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElement.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElement.java
@@ -25,17 +25,10 @@ import javax.persistence.Table;
* Relation element between a {@link DistributionSetType} and its
* {@link SoftwareModuleType} elements.
*
- *
- *
- *
*/
@Entity
@Table(name = "sp_ds_type_element")
public class DistributionSetTypeElement implements Serializable {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
@EmbeddedId
@@ -46,18 +39,16 @@ public class DistributionSetTypeElement implements Serializable {
@MapsId("dsType")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
- @JoinColumn(name = "distribution_set_type", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_type_element_dstype") )
+ @JoinColumn(name = "distribution_set_type", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_type_element_dstype"))
private DistributionSetType dsType;
@MapsId("smType")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
- @JoinColumn(name = "software_module_type", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_type_element_smtype") )
+ @JoinColumn(name = "software_module_type", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_ds_type_element_smtype"))
private SoftwareModuleType smType;
- /**
- * Default constructor.
- */
public DistributionSetTypeElement() {
+ // Default constructor for JPA
}
/**
@@ -74,38 +65,30 @@ public class DistributionSetTypeElement implements Serializable {
public DistributionSetTypeElement(final DistributionSetType dsType, final SoftwareModuleType smType,
final boolean mandatory) {
super();
- this.key = new DistributionSetTypeElementCompositeKey(dsType, smType);
+ key = new DistributionSetTypeElementCompositeKey(dsType, smType);
this.dsType = dsType;
this.smType = smType;
this.mandatory = mandatory;
}
- /**
- * @return the mandatory
- */
public boolean isMandatory() {
return mandatory;
}
- /**
- * @return the dsType
- */
public DistributionSetType getDsType() {
return dsType;
}
- /**
- * @return the smType
- */
public SoftwareModuleType getSmType() {
return smType;
}
- /**
- * @return the key
- */
public DistributionSetTypeElementCompositeKey getKey() {
return key;
}
+ @Override
+ public String toString() {
+ return "DistributionSetTypeElement [mandatory=" + mandatory + ", dsType=" + dsType + ", smType=" + smType + "]";
+ }
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElementCompositeKey.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElementCompositeKey.java
index c819d4e52..2ee1aba0d 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElementCompositeKey.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElementCompositeKey.java
@@ -15,17 +15,9 @@ import javax.persistence.Embeddable;
/**
* Composite key for {@link DistributionSetTypeElement}.
- *
- *
- *
- *
*/
@Embeddable
public class DistributionSetTypeElementCompositeKey implements Serializable {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
@Column(name = "distribution_set_type", nullable = false)
@@ -54,34 +46,19 @@ public class DistributionSetTypeElementCompositeKey implements Serializable {
this.smType = smType.getId();
}
- /**
- * @return the dsType
- */
public Long getDsType() {
return dsType;
}
- /**
- * @param dsType
- * the dsType to set
- */
public void setDsType(final Long dsType) {
this.dsType = dsType;
}
- /**
- * @return the smType
- */
public Long getSmType() {
return smType;
}
- /**
- * @param smType
- * the smType to set
- */
public void setSmType(final Long smType) {
this.smType = smType;
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DsMetadataCompositeKey.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DsMetadataCompositeKey.java
index f26a66ab9..adc37d65a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DsMetadataCompositeKey.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DsMetadataCompositeKey.java
@@ -13,24 +13,17 @@ import java.io.Serializable;
/**
* The DistributionSet Metadata composite key which contains the meta data key
* and the ID of the DistributionSet itself.
- *
- *
*
*/
public final class DsMetadataCompositeKey implements Serializable {
- /**
- *
- */
private static final long serialVersionUID = 1L;
private String key;
private Long distributionSet;
- /**
- *
- */
public DsMetadataCompositeKey() {
+ // Default constructor for JPA.
}
/**
@@ -44,55 +37,31 @@ public final class DsMetadataCompositeKey implements Serializable {
this.key = key;
}
- /**
- * @return the key
- */
public String getKey() {
return key;
}
- /**
- * @param key
- * the key to set
- */
public void setKey(final String key) {
this.key = key;
}
- /**
- * @return the distributionSet
- */
public Long getDistributionSet() {
return distributionSet;
}
- /**
- * @param distributionSet
- * the distributionSet to set
- */
public void setDistributionSet(final Long distributionSet) {
this.distributionSet = distributionSet;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((distributionSet == null) ? 0 : distributionSet.hashCode());
- result = prime * result + ((key == null) ? 0 : key.hashCode());
+ result = prime * result + (distributionSet == null ? 0 : distributionSet.hashCode());
+ result = prime * result + (key == null ? 0 : key.hashCode());
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) { // NOSONAR - as this is generated
// code
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifact.java
index 35e0c4e99..898c685a5 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifact.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifact.java
@@ -22,12 +22,9 @@ import javax.persistence.Table;
import javax.validation.constraints.NotNull;
/**
- * External artifact representation with all the necessray informattion to
+ * External artifact representation with all the necessary information to
* generate an artifact {@link URL} at runtime.
*
- *
- *
- *
*/
@Table(name = "sp_external_artifact", indexes = {
@Index(name = "sp_idx_external_artifact_prim", columnList = "id,tenant") })
@@ -36,7 +33,7 @@ public class ExternalArtifact extends Artifact {
private static final long serialVersionUID = 1L;
@ManyToOne
- @JoinColumn(name = "provider", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_art_to_ext_provider") )
+ @JoinColumn(name = "provider", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_art_to_ext_provider"))
private ExternalArtifactProvider externalArtifactProvider;
@Column(name = "url_suffix", length = 512)
@@ -44,7 +41,7 @@ public class ExternalArtifact extends Artifact {
// CascadeType.PERSIST as we register ourself at the BSM
@ManyToOne(optional = false, cascade = { CascadeType.PERSIST })
- @JoinColumn(name = "software_module", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_external_assigned_sm") )
+ @JoinColumn(name = "software_module", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_external_assigned_sm"))
private SoftwareModule softwareModule;
/**
@@ -84,18 +81,11 @@ public class ExternalArtifact extends Artifact {
return softwareModule;
}
- /**
- * @param softwareModule
- * the softwareModule to set
- */
public final void setSoftwareModule(final SoftwareModule softwareModule) {
this.softwareModule = softwareModule;
this.softwareModule.addArtifact(this);
}
- /**
- * @return the externalArtifactProvider
- */
public ExternalArtifactProvider getExternalArtifactProvider() {
return externalArtifactProvider;
}
@@ -104,17 +94,10 @@ public class ExternalArtifact extends Artifact {
return new StringBuilder().append(externalArtifactProvider.getBasePath()).append(urlSuffix).toString();
}
- /**
- * @return the urlSuffix
- */
public String getUrlSuffix() {
return urlSuffix;
}
- /**
- * @param externalArtifactProvider
- * the externalArtifactProvider to set
- */
public void setExternalArtifactProvider(final ExternalArtifactProvider externalArtifactProvider) {
this.externalArtifactProvider = externalArtifactProvider;
}
@@ -127,11 +110,6 @@ public class ExternalArtifact extends Artifact {
this.urlSuffix = urlSuffix;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() { // NOSONAR - as this is generated
final int prime = 31;
@@ -140,16 +118,8 @@ public class ExternalArtifact extends Artifact {
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) { // NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
if (!super.equals(obj)) {
return false;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifactProvider.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifactProvider.java
index 56d92c8e1..9fa8714ac 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifactProvider.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ExternalArtifactProvider.java
@@ -15,11 +15,8 @@ import javax.persistence.Table;
/**
* External repositories for artifact storage. The SP server provides URLs for
- * the targets to download rom these external ressources but does not access
- * thenm itself.
- *
- *
- *
+ * the targets to download from these external resources but does not access
+ * them itself.
*
*/
@Table(name = "sp_external_provider", indexes = {
@@ -60,67 +57,20 @@ public class ExternalArtifactProvider extends NamedEntity {
basePath = "";
}
- /**
- * @return the basePath
- */
public String getBasePath() {
return basePath;
}
- /**
- * @return the defaultSuffix
- */
public String getDefaultSuffix() {
return defaultSuffix;
}
- /**
- * @param basePath
- * the basePath to set
- */
public void setBasePath(final String basePath) {
this.basePath = basePath;
}
- /**
- * @param defaultSuffix
- * the defaultSuffix to set
- */
public void setDefaultSuffix(final String defaultSuffix) {
this.defaultSuffix = defaultSuffix;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() { // NOSONAR - as this is generated
- final int prime = 31;
- int result = super.hashCode();
- result = prime * result + this.getClass().getName().hashCode();
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(final Object obj) { // NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
- if (!super.equals(obj)) {
- return false;
- }
- if (!(obj instanceof ExternalArtifactProvider)) {
- return false;
- }
-
- return true;
- }
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/LocalArtifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/LocalArtifact.java
index baa4ee1f0..8afcdc168 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/LocalArtifact.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/LocalArtifact.java
@@ -46,7 +46,7 @@ public class LocalArtifact extends Artifact {
private String filename;
@ManyToOne(optional = false, cascade = { CascadeType.PERSIST })
- @JoinColumn(name = "software_module", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_assigned_sm") )
+ @JoinColumn(name = "software_module", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_assigned_sm"))
private SoftwareModule softwareModule;
/**
@@ -73,11 +73,6 @@ public class LocalArtifact extends Artifact {
this.filename = filename;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() { // NOSONAR - as this is generated
final int prime = 31;
@@ -86,16 +81,8 @@ public class LocalArtifact extends Artifact {
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) { // NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
if (!super.equals(obj)) {
return false;
}
@@ -106,33 +93,20 @@ public class LocalArtifact extends Artifact {
return true;
}
- /**
- * @return the softwareModule
- */
@Override
public SoftwareModule getSoftwareModule() {
return softwareModule;
}
- /**
- * @param softwareModule
- * the softwareModule to set
- */
public final void setSoftwareModule(final SoftwareModule softwareModule) {
this.softwareModule = softwareModule;
this.softwareModule.addArtifact(this);
}
- /**
- * @return the gridFsFileName
- */
public String getGridFsFileName() {
return gridFsFileName;
}
- /**
- * @return the filename
- */
public String getFilename() {
return filename;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java
index 0cebd0362..e14d88161 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java
@@ -12,17 +12,11 @@ import javax.persistence.Column;
import javax.persistence.MappedSuperclass;
/**
- * {@link BaseEntity} extension for all entities that are named in addition to
- * their technical ID.
- *
- *
- *
- *
- *
- *
+ * {@link TenantAwareBaseEntity} extension for all entities that are named in
+ * addition to their technical ID.
*/
@MappedSuperclass
-public abstract class NamedEntity extends BaseEntity {
+public abstract class NamedEntity extends TenantAwareBaseEntity {
private static final long serialVersionUID = 1L;
@Column(name = "name", nullable = false, length = 64)
@@ -40,7 +34,7 @@ public abstract class NamedEntity extends BaseEntity {
/**
* Parameterized constructor.
- *
+ *
* @param name
* of the {@link NamedEntity}
* @param description
@@ -66,5 +60,4 @@ public abstract class NamedEntity extends BaseEntity {
public void setName(final String name) {
this.name = name;
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedVersionedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedVersionedEntity.java
index 77819ed46..fa56da197 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedVersionedEntity.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedVersionedEntity.java
@@ -14,11 +14,6 @@ import javax.persistence.MappedSuperclass;
/**
* Extension for {@link NamedEntity} that are versioned.
*
- *
- *
- *
- *
- *
*/
@MappedSuperclass
public abstract class NamedVersionedEntity extends NamedEntity {
@@ -29,7 +24,7 @@ public abstract class NamedVersionedEntity extends NamedEntity {
/**
* parameterized constructor.
- *
+ *
* @param name
* of the entity
* @param version
@@ -52,5 +47,4 @@ public abstract class NamedVersionedEntity extends NamedEntity {
public void setVersion(final String version) {
this.version = version;
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java
index 83e541ed5..a7f9b10cb 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java
@@ -36,20 +36,20 @@ import org.eclipse.hawkbit.repository.model.Action.ActionType;
@Entity
@Table(name = "sp_rollout", indexes = {
@Index(name = "sp_idx_rollout_01", columnList = "tenant,name") }, uniqueConstraints = @UniqueConstraint(columnNames = {
- "name", "tenant" }, name = "uk_rollout") )
+ "name", "tenant" }, name = "uk_rollout"))
public class Rollout extends NamedEntity {
private static final long serialVersionUID = 1L;
@OneToMany(targetEntity = RolloutGroup.class)
- @JoinColumn(name = "rollout", insertable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rollout_rolloutgroup") )
+ @JoinColumn(name = "rollout", insertable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rollout_rolloutgroup"))
private List rolloutGroups;
@Column(name = "target_filter", length = 1024, nullable = false)
private String targetFilterQuery;
@ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rolltout_ds") )
+ @JoinColumn(name = "distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rolltout_ds"))
private DistributionSet distributionSet;
@Column(name = "status")
@@ -79,159 +79,86 @@ public class Rollout extends NamedEntity {
@Transient
private transient TotalTargetCountStatus totalTargetCountStatus;
- /**
- * @return the distributionSet
- */
public DistributionSet getDistributionSet() {
return distributionSet;
}
- /**
- * @param distributionSet
- * the distributionSet to set
- */
public void setDistributionSet(final DistributionSet distributionSet) {
this.distributionSet = distributionSet;
}
- /**
- * @return the rolloutGroups
- */
public List getRolloutGroups() {
return rolloutGroups;
}
- /**
- * @param rolloutGroups
- * the rolloutGroups to set
- */
public void setRolloutGroups(final List rolloutGroups) {
this.rolloutGroups = rolloutGroups;
}
- /**
- * @return the targetFilterQuery
- */
public String getTargetFilterQuery() {
return targetFilterQuery;
}
- /**
- * @param targetFilterQuery
- * the targetFilterQuery to set
- */
public void setTargetFilterQuery(final String targetFilterQuery) {
this.targetFilterQuery = targetFilterQuery;
}
- /**
- * @return the status
- */
public RolloutStatus getStatus() {
return status;
}
- /**
- * @param status
- * the status to set
- */
public void setStatus(final RolloutStatus status) {
this.status = status;
}
- /**
- * @return the lastCheck
- */
public long getLastCheck() {
return lastCheck;
}
- /**
- * @param lastCheck
- * the lastCheck to set
- */
public void setLastCheck(final long lastCheck) {
this.lastCheck = lastCheck;
}
- /**
- * @return the actionType
- */
public ActionType getActionType() {
return actionType;
}
- /**
- * @param actionType
- * the actionType to set
- */
public void setActionType(final ActionType actionType) {
this.actionType = actionType;
}
- /**
- * @return the forcedTime
- */
public long getForcedTime() {
return forcedTime;
}
- /**
- * @param forcedTime
- * the forcedTime to set
- */
public void setForcedTime(final long forcedTime) {
this.forcedTime = forcedTime;
}
- /**
- * @return the totalTargets
- */
public long getTotalTargets() {
return totalTargets;
}
- /**
- * @param totalTargets
- * the totalTargets to set
- */
public void setTotalTargets(final long totalTargets) {
this.totalTargets = totalTargets;
}
- /**
- * @return the rolloutGroupsTotal
- */
public int getRolloutGroupsTotal() {
return rolloutGroupsTotal;
}
- /**
- * @param rolloutGroupsTotal
- * the rolloutGroupsTotal to set
- */
public void setRolloutGroupsTotal(final int rolloutGroupsTotal) {
this.rolloutGroupsTotal = rolloutGroupsTotal;
}
- /**
- * @return the rolloutGroupsCreated
- */
public int getRolloutGroupsCreated() {
return rolloutGroupsCreated;
}
- /**
- * @param rolloutGroupsCreated
- * the rolloutGroupsCreated to set
- */
public void setRolloutGroupsCreated(final int rolloutGroupsCreated) {
this.rolloutGroupsCreated = rolloutGroupsCreated;
}
- /**
- * @return the totalTargetCountStatus
- */
public TotalTargetCountStatus getTotalTargetCountStatus() {
if (totalTargetCountStatus == null) {
totalTargetCountStatus = new TotalTargetCountStatus(totalTargets);
@@ -239,10 +166,6 @@ public class Rollout extends NamedEntity {
return totalTargetCountStatus;
}
- /**
- * @param totalTargetCountStatus
- * the totalTargetCountStatus to set
- */
public void setTotalTargetCountStatus(final TotalTargetCountStatus totalTargetCountStatus) {
this.totalTargetCountStatus = totalTargetCountStatus;
}
@@ -256,7 +179,7 @@ public class Rollout extends NamedEntity {
/**
*
- * @author Michael Hirsch
+ * State machine for rollout.
*
*/
public enum RolloutStatus {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutGroup.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutGroup.java
index dcb95b254..5aa30126c 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutGroup.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutGroup.java
@@ -34,13 +34,13 @@ import javax.persistence.UniqueConstraint;
@Entity
@Table(name = "sp_rolloutgroup", indexes = {
@Index(name = "sp_idx_rolloutgroup_01", columnList = "tenant,name") }, uniqueConstraints = @UniqueConstraint(columnNames = {
- "name", "rollout", "tenant" }, name = "uk_rolloutgroup") )
+ "name", "rollout", "tenant" }, name = "uk_rolloutgroup"))
public class RolloutGroup extends NamedEntity {
private static final long serialVersionUID = 1L;
@ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "rollout", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rolloutgroup_rollout") )
+ @JoinColumn(name = "rollout", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_rolloutgroup_rollout"))
private Rollout rollout;
@Column(name = "status")
@@ -210,8 +210,7 @@ public class RolloutGroup extends NamedEntity {
}
/**
- *
- * @author Michael Hirsch
+ * Rollout goup state machine.
*
*/
public enum RolloutGroupStatus {
@@ -477,5 +476,4 @@ public class RolloutGroup extends NamedEntity {
return this;
}
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutTargetGroupId.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutTargetGroupId.java
index 41850424b..88226142a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutTargetGroupId.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutTargetGroupId.java
@@ -12,14 +12,9 @@ import java.io.Serializable;
/**
* Combined unique key of the table {@link RolloutTargetGroup}.
- *
- * @author Michael Hirsch
*
*/
public class RolloutTargetGroupId implements Serializable {
- /**
- *
- */
private static final long serialVersionUID = 1L;
private Long rolloutGroup;
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModule.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModule.java
index 49e73f749..327bff3db 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModule.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModule.java
@@ -33,17 +33,12 @@ import org.eclipse.persistence.annotations.CascadeOnDelete;
/**
* Base Software Module that is supported by OS level provisioning mechanism on
- * the edge controller, e.g. OS, JVM, AgentHub
- *
- *
- *
- *
- *
+ * the edge controller, e.g. OS, JVM, AgentHub.
*
*/
@Entity
@Table(name = "sp_base_software_module", uniqueConstraints = @UniqueConstraint(columnNames = { "module_type", "name",
- "version", "tenant" }, name = "uk_base_sw_mod") , indexes = {
+ "version", "tenant" }, name = "uk_base_sw_mod"), indexes = {
@Index(name = "sp_idx_base_sw_module_01", columnList = "tenant,deleted,name,version"),
@Index(name = "sp_idx_base_sw_module_02", columnList = "tenant,deleted,module_type"),
@Index(name = "sp_idx_base_sw_module_prim", columnList = "tenant,id") })
@@ -52,7 +47,7 @@ public class SoftwareModule extends NamedVersionedEntity {
private static final long serialVersionUID = 1L;
@ManyToOne
- @JoinColumn(name = "module_type", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_module_type") )
+ @JoinColumn(name = "module_type", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_module_type"))
private SoftwareModuleType type;
@ManyToMany(mappedBy = "modules", targetEntity = DistributionSet.class, fetch = FetchType.LAZY)
@@ -213,17 +208,10 @@ public class SoftwareModule extends NamedVersionedEntity {
return type;
}
- /**
- * @return the deleted
- */
public boolean isDeleted() {
return deleted;
}
- /**
- * @param deleted
- * the deleted to set
- */
public void setDeleted(final boolean deleted) {
this.deleted = deleted;
}
@@ -233,55 +221,16 @@ public class SoftwareModule extends NamedVersionedEntity {
}
/**
- * @return the metadata
+ * @return immutable list of meta data elements.
*/
public List getMetadata() {
- return metadata;
+ return Collections.unmodifiableList(metadata);
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
- return "SoftwareModule [type=" + type + ", deleted=" + deleted + ", getVersion()=" + getVersion()
- + ", getOptLockRevision()=" + getOptLockRevision() + ", getId()=" + getId() + ", getType()="
- + getType().getName() + "]";
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() { // NOSONAR - as this is generated
- final int prime = 31;
- int result = super.hashCode();
- result = prime * result + this.getClass().getName().hashCode();
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(final Object obj) { // NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
- if (!super.equals(obj)) {
- return false;
- }
- if (!(obj instanceof SoftwareModule)) {
- return false;
- }
-
- return true;
+ return "SoftwareModule [deleted=" + deleted + ", name=" + getName() + ", version=" + getVersion()
+ + ", revision=" + getOptLockRevision() + ", Id=" + getId() + ", type=" + getType().getName() + "]";
}
/**
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleIdName.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleIdName.java
index 8658de3c8..c59d42c5f 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleIdName.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleIdName.java
@@ -13,8 +13,6 @@ import java.io.Serializable;
/**
* To hold software module name and Id.
*
- *
- *
*/
public class SoftwareModuleIdName implements Serializable {
@@ -35,25 +33,14 @@ public class SoftwareModuleIdName implements Serializable {
this.name = name;
}
- /**
- * @return the id
- */
public Long getId() {
return id;
}
- /**
- * @return the name
- */
public String getName() {
return name;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {// NOSONAR - as this is generated
final int prime = 31;
@@ -62,11 +49,6 @@ public class SoftwareModuleIdName implements Serializable {
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) {// NOSONAR - as this is generated
if (this == obj) {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleMetadata.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleMetadata.java
index dfc1ecfa7..c7af1f2ae 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleMetadata.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleMetadata.java
@@ -24,18 +24,11 @@ import javax.persistence.Table;
/**
* Metadata for {@link SoftwareModule}.
*
- *
- *
- *
*/
@IdClass(SwMetadataCompositeKey.class)
@Entity
@Table(name = "sp_sw_metadata")
public class SoftwareModuleMetadata implements Serializable {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
@Id
@@ -50,18 +43,21 @@ public class SoftwareModuleMetadata implements Serializable {
@JoinColumn(name = "sw_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_metadata_sw"))
private SoftwareModule softwareModule;
+ /**
+ * Default constructor for JPA.
+ */
public SoftwareModuleMetadata() {
-
+ // default constructor for JPA.
}
/**
* Standard constructor.
*
* @param key
- * of the metadata element
+ * of the meta data element
* @param softwareModule
* @param value
- * of the metadata element
+ * of the meta data element
*/
public SoftwareModuleMetadata(final String key, final SoftwareModule softwareModule, final String value) {
this.key = key;
@@ -69,56 +65,75 @@ public class SoftwareModuleMetadata implements Serializable {
this.value = value;
}
- /**
- * @return the id
- */
public SwMetadataCompositeKey getId() {
return new SwMetadataCompositeKey(softwareModule, key);
}
- /**
- * @return the value
- */
public String getValue() {
return value;
}
- /**
- * @param value
- * the value to set
- */
public void setValue(final String value) {
this.value = value;
}
- /**
- * @return the softwareModule
- */
public SoftwareModule getSoftwareModule() {
return softwareModule;
}
- /**
- * @param softwareModule
- * the softwareModule to set
- */
public void setSoftwareModule(final SoftwareModule softwareModule) {
this.softwareModule = softwareModule;
}
- /**
- * @return the key
- */
public String getKey() {
return key;
}
- /**
- * @param key
- * the key to set
- */
public void setKey(final String key) {
this.key = key;
}
+ @Override
+ public String toString() {
+ return "SoftwareModuleMetadata [key=" + key + ", value=" + value + ", softwareModule=" + softwareModule + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((key == null) ? 0 : key.hashCode());
+ result = prime * result + ((softwareModule == null) ? 0 : softwareModule.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof SoftwareModuleMetadata)) {
+ return false;
+ }
+ final SoftwareModuleMetadata other = (SoftwareModuleMetadata) obj;
+ if (key == null) {
+ if (other.key != null) {
+ return false;
+ }
+ } else if (!key.equals(other.key)) {
+ return false;
+ }
+ if (softwareModule == null) {
+ if (other.softwareModule != null) {
+ return false;
+ }
+ } else if (!softwareModule.equals(other.softwareModule)) {
+ return false;
+ }
+ return true;
+ }
+
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleType.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleType.java
index 49427b9ea..f31b74ff6 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleType.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleType.java
@@ -17,9 +17,6 @@ import javax.persistence.UniqueConstraint;
/**
* Type of a software modules.
*
- *
- *
- *
*/
@Entity
@Table(name = "sp_software_module_type", indexes = {
@@ -28,9 +25,6 @@ import javax.persistence.UniqueConstraint;
@UniqueConstraint(columnNames = { "type_key", "tenant" }, name = "uk_smt_type_key"),
@UniqueConstraint(columnNames = { "name", "tenant" }, name = "uk_smt_name") })
public class SoftwareModuleType extends NamedEntity {
- /**
- *
- */
private static final long serialVersionUID = 1L;
@Column(name = "type_key", nullable = false, length = 64)
@@ -92,48 +86,26 @@ public class SoftwareModuleType extends NamedEntity {
super();
}
- /**
- * @return the key
- */
public String getKey() {
return key;
}
- /**
- * @return the max
- */
public int getMaxAssignments() {
return maxAssignments;
}
- /**
- * @return the deleted
- */
public boolean isDeleted() {
return deleted;
}
- /**
- * @param deleted
- * the deleted to set
- */
public void setDeleted(final boolean deleted) {
this.deleted = deleted;
}
- /**
- *
- * @return the software type color
- */
public String getColour() {
return colour;
}
- /**
- *
- * @param colour
- * the col
- */
public void setColour(final String colour) {
this.colour = colour;
}
@@ -142,5 +114,4 @@ public class SoftwareModuleType extends NamedEntity {
public String toString() {
return "SoftwareModuleType [key=" + key + ", getName()=" + getName() + ", getId()=" + getId() + "]";
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SwMetadataCompositeKey.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SwMetadataCompositeKey.java
index 2518e4b1b..90b3779a1 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SwMetadataCompositeKey.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SwMetadataCompositeKey.java
@@ -11,16 +11,10 @@ package org.eclipse.hawkbit.repository.model;
import java.io.Serializable;
/**
- * The Software Module Metadata composite key which contains the meta data key
+ * The Software Module meta data composite key which contains the meta data key
* and the ID of the software module itself.
- *
- *
- *
*/
public final class SwMetadataCompositeKey implements Serializable {
- /**
- *
- */
private static final long serialVersionUID = 1L;
private String key;
@@ -28,9 +22,10 @@ public final class SwMetadataCompositeKey implements Serializable {
private Long softwareModule;
/**
- *
- */
+ * Default constructor for JPA.
+ */
public SwMetadataCompositeKey() {
+ // Default constructor for JPA.
}
/**
@@ -74,25 +69,15 @@ public final class SwMetadataCompositeKey implements Serializable {
this.softwareModule = softwareModule;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((key == null) ? 0 : key.hashCode());
- result = prime * result + ((softwareModule == null) ? 0 : softwareModule.hashCode());
+ result = prime * result + (key == null ? 0 : key.hashCode());
+ result = prime * result + (softwareModule == null ? 0 : softwareModule.hashCode());
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) { // NOSONAR - as this is generated
// code
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Tag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Tag.java
index c03a02f3e..23489ea12 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Tag.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Tag.java
@@ -14,14 +14,9 @@ import javax.persistence.MappedSuperclass;
import org.springframework.hateoas.Identifiable;
/**
- * A Tag can be used as describing and organisational meta information for any
+ * A Tag can be used as describing and organizational meta information for any
* kind of entity.
*
- *
- *
- *
- *
- *
*/
@MappedSuperclass
public abstract class Tag extends NamedEntity implements Identifiable {
@@ -57,14 +52,8 @@ public abstract class Tag extends NamedEntity implements Identifiable {
this.colour = colour;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
return "Tag [getOptLockRevision()=" + getOptLockRevision() + ", getId()=" + getId() + "]";
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Target.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Target.java
index 07a97ebcf..5f37fb653 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Target.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Target.java
@@ -56,11 +56,6 @@ import org.springframework.data.domain.Persistable;
* {@link TargetStatus#REGISTERED}, i.e. a target {@link DistributionSet} .
*
*
- *
- *
- *
- *
- *
*/
@Entity
@Table(name = "sp_target", indexes = {
@@ -117,7 +112,7 @@ public class Target extends NamedEntity implements Persistable {
/**
* Constructor.
- *
+ *
* @param controllerId
* controller ID of the {@link Target}
*/
@@ -136,28 +131,6 @@ public class Target extends NamedEntity implements Persistable {
securityToken = null;
}
- @Override
- public boolean equals(final Object obj) {// NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Target other = (Target) obj;
- if (controllerId == null) {
- if (other.controllerId != null) {
- return false;
- }
- } else if (!controllerId.equals(other.controllerId)) {
- return false;
- }
- return true;
- }
-
public DistributionSet getAssignedDistributionSet() {
return assignedDistributionSet;
}
@@ -170,37 +143,18 @@ public class Target extends NamedEntity implements Persistable {
return tags;
}
- @Override
- public int hashCode() { // NOSONAR - as this is generated
- final int prime = 31;
- int result = 1;
- result = prime * result + (controllerId == null ? 0 : controllerId.hashCode());
- return result;
- }
-
public void setAssignedDistributionSet(final DistributionSet assignedDistributionSet) {
this.assignedDistributionSet = assignedDistributionSet;
}
- /**
- * @param controllerId
- * the controllerId to set
- */
public void setControllerId(final String controllerId) {
this.controllerId = controllerId;
}
- /**
- * @param tags
- * the tags to set
- */
public void setTags(final Set tags) {
this.tags = tags;
}
- /**
- * @return the actions
- */
public List getActions() {
return actions;
}
@@ -209,11 +163,6 @@ public class Target extends NamedEntity implements Persistable {
return new TargetIdName(getId(), getControllerId(), getName());
}
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.data.domain.Persistable#isNew()
- */
@Override
@Transient
public boolean isNew() {
@@ -261,11 +210,6 @@ public class Target extends NamedEntity implements Persistable {
this.securityToken = securityToken;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
return "Target [controllerId=" + controllerId + ", getId()=" + getId() + "]";
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java
index 8d76b7ae5..021b9ca7f 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetFilterQuery.java
@@ -15,18 +15,14 @@ import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
/**
- *
+ * Stored target filter.
*
*/
@Entity
@Table(name = "sp_target_filter_query", indexes = {
@Index(name = "sp_idx_target_filter_query_01", columnList = "tenant,name") }, uniqueConstraints = @UniqueConstraint(columnNames = {
- "name", "tenant" }, name = "uk_tenant_custom_filter_name") )
-public class TargetFilterQuery extends BaseEntity {
- /**
- *
- *
- */
+ "name", "tenant" }, name = "uk_tenant_custom_filter_name"))
+public class TargetFilterQuery extends TenantAwareBaseEntity {
private static final long serialVersionUID = 7493966984413479089L;
@Column(name = "name", length = 64)
@@ -36,8 +32,7 @@ public class TargetFilterQuery extends BaseEntity {
private String query;
public TargetFilterQuery() {
- name = null;
- query = null;
+ // Default constructor for JPA.
}
public TargetFilterQuery(final String name, final String query) {
@@ -45,63 +40,19 @@ public class TargetFilterQuery extends BaseEntity {
this.query = query;
}
- /**
- * @return the name
- */
public String getName() {
return name;
}
- /**
- * @param name
- * the name to set
- */
public void setName(final String name) {
this.name = name;
}
- /**
- * @return the query
- */
public String getQuery() {
return query;
}
- /**
- * @param query
- * the query to set
- */
public void setQuery(final String query) {
this.query = query;
}
-
- @Override
- public boolean equals(final Object obj) {// NOSONAR - as this is generated
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final TargetFilterQuery other = (TargetFilterQuery) obj;
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- return true;
- }
-
- @Override
- public int hashCode() { // NOSONAR - as this is generated
- final int prime = 31;
- int result = 1;
- result = prime * result + (name == null ? 0 : name.hashCode());
- return result;
- }
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetIdName.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetIdName.java
index f7a63b775..26a74e9bb 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetIdName.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetIdName.java
@@ -13,19 +13,12 @@ import java.io.Serializable;
/**
* ID class of the {@link Target} which contains the
* {@link Target#getControllerId()} and the {@link Target#getName()} in one
- * object. Often it's necessary to remeber the IDs of the {@link Target} and the
- * resolve for e.g. the UI the name of the target, this is very costly
+ * object. Often it's necessary to remember the IDs of the {@link Target} and
+ * the resolve for e.g. the UI the name of the target, this is very costly
* operation, so it's much better if the ID and the name of the {@link Target}
* is already in memory available.
- *
- *
- *
- *
*/
public class TargetIdName implements Serializable {
- /**
- *
- */
private static final long serialVersionUID = 1L;
private final long targetId;
@@ -46,61 +39,34 @@ public class TargetIdName implements Serializable {
this.name = name;
}
- /**
- * @return the controller id
- */
public String getControllerId() {
return controllerId;
}
- /**
- * @return the name
- */
public String getName() {
return name;
}
- /**
- * @param id
- * the id to set
- */
public void setControllerId(final String id) {
- this.controllerId = id;
+ controllerId = id;
}
- /**
- * @param name
- * the name to set
- */
public void setName(final String name) {
this.name = name;
}
- /**
- * @return the targetId
- */
public long getTargetId() {
return targetId;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + (int) (targetId ^ (targetId >>> 32));
+ result = prime * result + (int) (targetId ^ targetId >>> 32);
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) {
if (this == obj) {
@@ -119,11 +85,6 @@ public class TargetIdName implements Serializable {
return true;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
// only return the ID because it's used in vaadin for setting the item
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetInfo.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetInfo.java
index 09d9fed28..47f52579a 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetInfo.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetInfo.java
@@ -54,19 +54,11 @@ import org.springframework.data.domain.Persistable;
* modifying the {@link Target} itself when a controller reports it's
* {@link #lastTargetQuery} for example.
*
- *
- *
- *
*/
@Table(name = "sp_target_info", indexes = {
@Index(name = "sp_idx_target_info_02", columnList = "target_id,update_status") })
@Entity
-// @DynamicUpdate
public class TargetInfo implements Persistable, Serializable {
-
- /**
- *
- */
private static final long serialVersionUID = 1L;
private static final Logger LOG = LoggerFactory.getLogger(TargetInfo.class);
@@ -81,9 +73,6 @@ public class TargetInfo implements Persistable, Serializable {
@OneToOne(cascade = { CascadeType.MERGE, CascadeType.REMOVE }, fetch = FetchType.LAZY, targetEntity = Target.class)
@JoinColumn(name = "target_id", nullable = false, updatable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_targ_stat_targ"))
@MapsId
- // use deprecated annotation until HHH-8862 is fixed
- // @SuppressWarnings( "deprecation" )
- // @org.hibernate.annotations.ForeignKey( name = "fk_targ_stat_targ" )
private Target target;
@Column(name = "address", length = 512)
@@ -111,9 +100,7 @@ public class TargetInfo implements Persistable, Serializable {
@MapKeyColumn(name = "attribute_key", nullable = false, length = 32)
@CollectionTable(name = "sp_target_attributes", joinColumns = {
@JoinColumn(name = "target_id") }, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_targ_attrib_target"))
- // use deprecated annotation until HHH-8862 is fixed
- // @org.hibernate.annotations.ForeignKey( name = "fk_targ_attrib_target" )
private final Map controllerAttributes = Collections.synchronizedMap(new HashMap());
// set default request controller attributes to true, because we want to
@@ -124,7 +111,7 @@ public class TargetInfo implements Persistable, Serializable {
/**
* Constructor for {@link TargetStatus}.
- *
+ *
* @param target
* related to this status.
*/
@@ -138,21 +125,11 @@ public class TargetInfo implements Persistable, Serializable {
targetId = null;
}
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.data.domain.Persistable#getId()
- */
@Override
public Long getId() {
return targetId;
}
- /*
- * (non-Javadoc)
- *
- * @see org.springframework.data.domain.Persistable#isNew()
- */
@Override
@Transient
public boolean isNew() {
@@ -198,114 +175,62 @@ public class TargetInfo implements Persistable, Serializable {
this.address = address;
}
- /**
- * @return the targetId
- */
public Long getTargetId() {
return targetId;
}
- /**
- * @param targetId
- * the targetId to set
- */
public void setTargetId(final Long targetId) {
this.targetId = targetId;
}
- /**
- * @return the target
- */
public Target getTarget() {
return target;
}
- /**
- * @param target
- * the target to set
- */
public void setTarget(final Target target) {
this.target = target;
}
- /**
- * @return the lastTargetQuery
- */
public Long getLastTargetQuery() {
return lastTargetQuery;
}
- /**
- * @param lastTargetQuery
- * the lastTargetQuery to set
- */
public void setLastTargetQuery(final Long lastTargetQuery) {
this.lastTargetQuery = lastTargetQuery;
}
- /**
- * @param requestControllerAttributes
- * the requestControllerAttributes to set
- */
public void setRequestControllerAttributes(final boolean requestControllerAttributes) {
this.requestControllerAttributes = requestControllerAttributes;
}
- /**
- * @return the controllerAttributes
- */
public Map getControllerAttributes() {
return controllerAttributes;
}
- /**
- * @return the requestControllerAttributes
- */
public boolean isRequestControllerAttributes() {
return requestControllerAttributes;
}
- /**
- * @return the installationDate
- */
public Long getInstallationDate() {
return installationDate;
}
- /**
- * @param installationDate
- * the installationDate to set
- */
public void setInstallationDate(final Long installationDate) {
this.installationDate = installationDate;
}
- /**
- * @return the updateStatus
- */
public TargetUpdateStatus getUpdateStatus() {
return updateStatus;
}
- /**
- * @param updateStatus
- * the updateStatus to set
- */
public void setUpdateStatus(final TargetUpdateStatus updateStatus) {
this.updateStatus = updateStatus;
}
- /**
- * @return the installedDistributionSet
- */
public DistributionSet getInstalledDistributionSet() {
return installedDistributionSet;
}
- /**
- * @param installedDistributionSet
- * the installedDistributionSet to set
- */
public void setInstalledDistributionSet(final DistributionSet installedDistributionSet) {
this.installedDistributionSet = installedDistributionSet;
}
@@ -338,8 +263,6 @@ public class TargetInfo implements Persistable, Serializable {
* The poll time object which holds all the necessary information around the
* target poll time, e.g. the last poll time, the next poll time and the
* overdue poll time.
- *
- *
*
*/
public static final class PollStatus {
@@ -359,7 +282,7 @@ public class TargetInfo implements Persistable, Serializable {
/**
* calculates if the target poll time is overdue and the target has not
* been polled in the configured poll time interval.
- *
+ *
* @return {@code true} if the current time is after the poll time
* overdue date otherwise {@code false}.
*/
@@ -386,15 +309,48 @@ public class TargetInfo implements Persistable, Serializable {
return currentDate;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
@Override
public String toString() {
return "PollTime [lastPollDate=" + lastPollDate + ", nextPollDate=" + nextPollDate + ", overdueDate="
+ overdueDate + ", currentDate=" + currentDate + "]";
}
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((target == null) ? 0 : target.hashCode());
+ result = prime * result + ((targetId == null) ? 0 : targetId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof TargetInfo)) {
+ return false;
+ }
+ final TargetInfo other = (TargetInfo) obj;
+ if (target == null) {
+ if (other.target != null) {
+ return false;
+ }
+ } else if (!target.equals(other.target)) {
+ return false;
+ }
+ if (targetId == null) {
+ if (other.targetId != null) {
+ return false;
+ }
+ } else if (!targetId.equals(other.targetId)) {
+ return false;
+ }
+ return true;
+ }
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java
index 781bf9d16..5a5a310d0 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java
@@ -21,16 +21,11 @@ import javax.persistence.UniqueConstraint;
* A {@link TargetTag} is used to describe Target attributes and use them also
* for filtering the target list.
*
- *
- *
- *
- *
- *
*/
@Entity
@Table(name = "sp_target_tag", indexes = {
@Index(name = "sp_idx_target_tag_prim", columnList = "tenant,id") }, uniqueConstraints = @UniqueConstraint(columnNames = {
- "name", "tenant" }, name = "uk_targ_tag") )
+ "name", "tenant" }, name = "uk_targ_tag"))
public class TargetTag extends Tag {
private static final long serialVersionUID = 1L;
@@ -65,18 +60,10 @@ public class TargetTag extends Tag {
super();
}
- /**
- * @return the assignedToTargets
- */
public List getAssignedToTargets() {
return assignedToTargets;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
@@ -85,16 +72,8 @@ public class TargetTag extends Tag {
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
if (!super.equals(obj)) {
return false;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssigmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java
similarity index 82%
rename from hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssigmentResult.java
rename to hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java
index b12b80d58..789e6adf2 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssigmentResult.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java
@@ -11,13 +11,10 @@ package org.eclipse.hawkbit.repository.model;
import java.util.List;
/**
- * Result object for {@link TargetTag} assigments.
- *
- *
- *
+ * Result object for {@link TargetTag} assignments.
*
*/
-public class TargetTagAssigmentResult extends AssignmentResult {
+public class TargetTagAssignmentResult extends AssignmentResult {
private final int unassigned;
private final List assignedTargets;
@@ -40,7 +37,7 @@ public class TargetTagAssigmentResult extends AssignmentResult {
* @param targetTag
* the assigned or unassigned tag
*/
- public TargetTagAssigmentResult(final int alreadyAssigned, final int assigned, final int unassigned,
+ public TargetTagAssignmentResult(final int alreadyAssigned, final int assigned, final int unassigned,
final List assignedTargets, final List unassignedTargets, final TargetTag targetTag) {
super(assigned, alreadyAssigned);
this.unassigned = unassigned;
@@ -49,23 +46,14 @@ public class TargetTagAssigmentResult extends AssignmentResult {
this.targetTag = targetTag;
}
- /**
- * @return the unassigned
- */
public int getUnassigned() {
return unassigned;
}
- /**
- * @return the assignedTargets
- */
public List getAssignedTargets() {
return assignedTargets;
}
- /**
- * @return the unassignedTargets
- */
public List getUnassignedTargets() {
return unassignedTargets;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetUpdateStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetUpdateStatus.java
index cecbf8339..7721dabda 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetUpdateStatus.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetUpdateStatus.java
@@ -13,11 +13,6 @@ package org.eclipse.hawkbit.repository.model;
* status. A {@link Target} can have only one status. independent of the number
* of {@link UpdateAction}s that have to be applied.
*
- *
- *
- *
- *
- *
*/
public enum TargetUpdateStatus {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetWithActionStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetWithActionStatus.java
index a75141658..ec09da3d5 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetWithActionStatus.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetWithActionStatus.java
@@ -30,32 +30,18 @@ public class TargetWithActionStatus {
this.target = target;
}
- /**
- * @return the target
- */
public Target getTarget() {
return target;
}
- /**
- * @return the status
- */
public Status getStatus() {
return status;
}
- /**
- * @param target
- * the target to set
- */
public void setTarget(final Target target) {
this.target = target;
}
- /**
- * @param status
- * the status to set
- */
public void setStatus(final Status status) {
this.status = status;
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java
new file mode 100644
index 000000000..d03a4938a
--- /dev/null
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java
@@ -0,0 +1,113 @@
+/**
+ * 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.repository.model;
+
+import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.PrePersist;
+
+import org.eclipse.hawkbit.repository.exception.TenantNotExistException;
+import org.eclipse.hawkbit.repository.model.helper.SystemManagementHolder;
+import org.eclipse.hawkbit.repository.model.helper.TenantAwareHolder;
+import org.eclipse.persistence.annotations.Multitenant;
+import org.eclipse.persistence.annotations.MultitenantType;
+import org.eclipse.persistence.annotations.TenantDiscriminatorColumn;
+
+/**
+ * Holder of the base attributes common to all tenant aware entities.
+ *
+ */
+@MappedSuperclass
+@TenantDiscriminatorColumn(name = "tenant", length = 40)
+@Multitenant(MultitenantType.SINGLE_TABLE)
+public abstract class TenantAwareBaseEntity extends BaseEntity {
+ private static final long serialVersionUID = 1L;
+
+ @Column(name = "tenant", nullable = false, insertable = false, updatable = false, length = 40)
+ private String tenant;
+
+ /**
+ * Default constructor needed for JPA entities.
+ */
+ public TenantAwareBaseEntity() {
+ // Default constructor needed for JPA entities.
+ }
+
+ /**
+ * PrePersist listener method for all {@link TenantAwareBaseEntity}
+ * entities.
+ */
+ @PrePersist
+ public void prePersist() {
+ // before persisting the entity check the current ID of the tenant by
+ // using the TenantAware
+ // service
+ final String currentTenant = SystemManagementHolder.getInstance().currentTenant();
+ if (currentTenant == null) {
+ throw new TenantNotExistException("Tenant "
+ + TenantAwareHolder.getInstance().getTenantAware().getCurrentTenant()
+ + " does not exists, cannot create entity " + this.getClass() + " with id " + super.getId());
+ }
+ setTenant(currentTenant.toUpperCase());
+ }
+
+ public String getTenant() {
+ return tenant;
+ }
+
+ public void setTenant(final String tenant) {
+ this.tenant = tenant;
+ }
+
+ @Override
+ public String toString() {
+ return "BaseEntity [id=" + super.getId() + "]";
+ }
+
+ /**
+ * Tenant aware entities extend the equals/hashcode strategy with the tenant
+ * name. That would allow for instance in a multi-schema based data
+ * separation setup to have the same primary key for different entities of
+ * different tenants.
+ *
+ * @see org.eclipse.hawkbit.repository.model.BaseEntity#hashCode()
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + (tenant == null ? 0 : tenant.hashCode());
+ return result;
+ }
+
+ /**
+ * Tenant aware entities extend the equals/hashcode strategy with the tenant
+ * name. That would allow for instance in a multi-schema based data
+ * separation setup to have the same primary key for different entities of
+ * different tenants.
+ *
+ * @see org.eclipse.hawkbit.repository.model.BaseEntity#equals(java.lang.Object)
+ */
+ @Override
+ public boolean equals(final Object obj) {
+ if (!super.equals(obj)) {
+ return false;
+ }
+ final TenantAwareBaseEntity other = (TenantAwareBaseEntity) obj;
+ if (tenant == null) {
+ if (other.tenant != null) {
+ return false;
+ }
+ } else if (!tenant.equals(other.tenant)) {
+ return false;
+ }
+ return true;
+ }
+
+}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java
index d571a2ea7..5a938563b 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java
@@ -19,18 +19,11 @@ import javax.persistence.UniqueConstraint;
/**
* A JPA entity which stores the tenant specific configuration.
*
- *
- *
- *
*/
@Entity
@Table(name = "sp_tenant_configuration", uniqueConstraints = @UniqueConstraint(columnNames = { "conf_key",
- "tenant" }, name = "uk_tenant_key") )
-public class TenantConfiguration extends BaseEntity implements Serializable {
-
- /**
- *
- */
+ "tenant" }, name = "uk_tenant_key"))
+public class TenantConfiguration extends TenantAwareBaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Column(name = "conf_key", length = 128)
@@ -44,7 +37,7 @@ public class TenantConfiguration extends BaseEntity implements Serializable {
* JPA default constructor.
*/
public TenantConfiguration() {
-
+ // JPA default constructor.
}
/**
@@ -59,75 +52,20 @@ public class TenantConfiguration extends BaseEntity implements Serializable {
}
- /**
- * @return the key
- */
public String getKey() {
return key;
}
- /**
- * @param key
- * the key to set
- */
public void setKey(final String key) {
this.key = key;
}
- /**
- * @return the value
- */
public String getValue() {
return value;
}
- /**
- * @param value
- * the value to set
- */
public void setValue(final String value) {
this.value = value;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((key == null) ? 0 : key.hashCode());
- return result;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(final Object obj) { // NOSONAR - as this is generated
- // code
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final TenantConfiguration other = (TenantConfiguration) obj;
- if (key == null) {
- if (other.key != null) {
- return false;
- }
- } else if (!key.equals(other.key)) {
- return false;
- }
- return true;
- }
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfigurationValue.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfigurationValue.java
index d8483e12f..37e00e247 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfigurationValue.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfigurationValue.java
@@ -89,7 +89,7 @@ public class TenantConfigurationValue {
*/
public static TenantConfigurationValueBuilder builder() {
- return new TenantConfigurationValueBuilder();
+ return new TenantConfigurationValueBuilder<>();
}
/**
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java
index e86bfe8a4..a9572c21c 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java
@@ -8,76 +8,45 @@
*/
package org.eclipse.hawkbit.repository.model;
-import java.io.Serializable;
-
-import javax.persistence.Access;
-import javax.persistence.AccessType;
import javax.persistence.Column;
import javax.persistence.ConstraintMode;
import javax.persistence.Entity;
+import javax.persistence.EntityManager;
import javax.persistence.FetchType;
import javax.persistence.ForeignKey;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
-import javax.persistence.Version;
-
-import org.springframework.data.annotation.CreatedBy;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedBy;
-import org.springframework.data.annotation.LastModifiedDate;
/**
- * Tenant metadata that is configured globally for the entire tenant. This
- * entity is
- *
- *
+ * Tenant entity with meta data that is configured globally for the entire
+ * tenant. This entity is not tenant aware to allow the system to access it
+ * through the {@link EntityManager} even before the actual tenant exists.
*
+ * Entities owned by the tenant are based on {@link TenantAwareBaseEntity}.
*
*/
-@Access(AccessType.FIELD)
@Table(name = "sp_tenant", indexes = {
@Index(name = "sp_idx_tenant_prim", columnList = "tenant,id") }, uniqueConstraints = {
@UniqueConstraint(columnNames = { "tenant" }, name = "uk_tenantmd_tenant") })
@Entity
-public class TenantMetaData implements Serializable {
-
- /**
- *
- */
+public class TenantMetaData extends BaseEntity {
private static final long serialVersionUID = 1L;
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "id")
- private Long id;
-
@Column(name = "tenant", nullable = false, length = 40)
private String tenant;
- private String createdBy;
- private String lastModifiedBy;
- private Long createdAt;
- private Long lastModifiedAt;
-
- @Version
- @Column(name = "optlock_revision")
- private long optLockRevision;
-
@OneToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "default_ds_type", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_tenant_md_default_ds_type") )
- // use deprecated annotation until HHH-8862 is fixed
- @SuppressWarnings("deprecation")
- // @org.hibernate.annotations.ForeignKey( name =
- // "fk_tenant_md_default_ds_type" )
+ @JoinColumn(name = "default_ds_type", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_tenant_md_default_ds_type"))
private DistributionSetType defaultDsType;
+ /**
+ * Default constructor needed for JPA entities.
+ */
public TenantMetaData() {
+ // Default constructor needed for JPA entities.
}
/**
@@ -93,167 +62,39 @@ public class TenantMetaData implements Serializable {
this.tenant = tenant;
}
- /**
- * @return the defaultDsType
- */
public DistributionSetType getDefaultDsType() {
return defaultDsType;
}
- /**
- * Set the DistributionSet for a tenant.
- *
- * @param defaultDsType
- * the new default DistributionSet
- */
public void setDefaultDsType(final DistributionSetType defaultDsType) {
this.defaultDsType = defaultDsType;
}
- /**
- * @return the id
- */
- public Long getId() {
- return id;
- }
-
- /**
- * @param id
- * the id to set
- */
- public void setId(final Long id) {
- this.id = id;
- }
-
- @Access(AccessType.PROPERTY)
- @Column(name = "created_at", insertable = true, updatable = false)
- public Long getCreatedAt() {
- return createdAt;
- }
-
- @Access(AccessType.PROPERTY)
- @Column(name = "created_by", insertable = true, updatable = false, length = 40)
- public String getCreatedBy() {
- return createdBy;
- }
-
- @Access(AccessType.PROPERTY)
- @Column(name = "last_modified_at", insertable = false, updatable = true)
- public Long getLastModifiedAt() {
- return lastModifiedAt;
- }
-
- @Access(AccessType.PROPERTY)
- @Column(name = "last_modified_by", insertable = false, updatable = true, length = 40)
- public String getLastModifiedBy() {
- return lastModifiedBy;
- }
-
- /**
- * @param createdBy
- * the createdBy to set
- */
- @CreatedBy
- public void setCreatedBy(final String createdBy) {
- this.createdBy = createdBy;
- }
-
- /**
- * @param lastModifiedBy
- * the lastModifiedBy to set
- */
- @LastModifiedBy
- public void setLastModifiedBy(final String lastModifiedBy) {
- this.lastModifiedBy = lastModifiedBy;
- }
-
- /**
- * @param createdAt
- * the createdAt to set
- */
- @CreatedDate
- public void setCreatedAt(final Long createdAt) {
- this.createdAt = createdAt;
- }
-
- /**
- * @param lastModifiedAt
- * the lastModifiedAt to set
- */
- @LastModifiedDate
- public void setLastModifiedAt(final Long lastModifiedAt) {
- this.lastModifiedAt = lastModifiedAt;
- }
-
- /**
- * @return the optLockRevision
- */
- public long getOptLockRevision() {
- return optLockRevision;
- }
-
- /**
- * @param optLockRevision
- * the optLockRevision to set
- */
- public void setOptLockRevision(final long optLockRevision) {
- this.optLockRevision = optLockRevision;
- }
-
- /**
- * @return the tenant
- */
public String getTenant() {
return tenant;
}
- /**
- * @param tenant
- * the tenant to set
- */
public void setTenant(final String tenant) {
this.tenant = tenant;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
@Override
public int hashCode() {
final int prime = 31;
- int result = 1;
- result = prime * result + ((id == null) ? 0 : id.hashCode());
+ int result = super.hashCode();
+ result = prime * result + this.getClass().getName().hashCode();
return result;
}
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
@Override
- public boolean equals(final Object obj) { // NOSONAR - as this is generated
- // code
- if (this == obj) {
- return true;
- }
- if (obj == null) {
+ public boolean equals(final Object obj) {
+ if (!super.equals(obj)) {
return false;
}
- if (getClass() != obj.getClass()) {
- return false;
- }
- final TenantMetaData other = (TenantMetaData) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
+ if (!(obj instanceof TenantMetaData)) {
return false;
}
+
return true;
}
-
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/rsql/RSQLUtility.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/rsql/RSQLUtility.java
index 03f213fef..c2ed5f900 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/rsql/RSQLUtility.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/rsql/RSQLUtility.java
@@ -139,14 +139,6 @@ public final class RSQLUtility {
this.enumType = enumType;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.springframework.data.jpa.domain.Specification#toPredicate(javax.
- * persistence.criteria .Root, javax.persistence.criteria.CriteriaQuery,
- * javax.persistence.criteria.CriteriaBuilder)
- */
@Override
public Predicate toPredicate(final Root root, final CriteriaQuery> query, final CriteriaBuilder cb) {
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetSpecification.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetSpecification.java
index 4150229c6..b95f0b8e7 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetSpecification.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetSpecification.java
@@ -11,13 +11,11 @@ package org.eclipse.hawkbit.repository.specifications;
import java.util.Collection;
import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.ListJoin;
import javax.persistence.criteria.Path;
import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
import javax.persistence.criteria.SetJoin;
import org.eclipse.hawkbit.repository.model.DistributionSet;
@@ -33,9 +31,7 @@ import org.springframework.data.jpa.domain.Specification;
/**
* Specifications class for {@link DistributionSet}s. The class provides Spring
- * Data JPQL Specifications
- *
- *
+ * Data JPQL Specifications.
*
*/
public final class DistributionSetSpecification {
@@ -53,16 +49,8 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification isDeleted(final Boolean isDeleted) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSet_.deleted), isDeleted);
- return predicate;
- }
- };
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSet_.deleted), isDeleted);
- return spec;
}
/**
@@ -75,16 +63,8 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification isCompleted(final Boolean isCompleted) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSet_.complete), isCompleted);
- return predicate;
- }
- };
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSet_.complete), isCompleted);
- return spec;
}
/**
@@ -96,21 +76,15 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification byId(final Long distid) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
+ return (targetRoot, query, cb) -> {
+ final Predicate predicate = cb.equal(targetRoot. get(DistributionSet_.id), distid);
+ targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
+ targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
+ targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
+ query.distinct(true);
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSet_.id), distid);
- targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
- targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
- targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
- query.distinct(true);
-
- return predicate;
- }
+ return predicate;
};
- return spec;
}
/**
@@ -122,20 +96,14 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification byIds(final Collection distids) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
-
- final Predicate predicate = targetRoot. get(DistributionSet_.id).in(distids);
- targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
- targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
- targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
- query.distinct(true);
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final Predicate predicate = targetRoot. get(DistributionSet_.id).in(distids);
+ targetRoot.fetch(DistributionSet_.modules, JoinType.LEFT);
+ targetRoot.fetch(DistributionSet_.tags, JoinType.LEFT);
+ targetRoot.fetch(DistributionSet_.type, JoinType.LEFT);
+ query.distinct(true);
+ return predicate;
};
- return spec;
}
/**
@@ -147,21 +115,10 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification likeNameOrDescriptionOrVersion(final String subString) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb
- .or(cb.like(cb.lower(targetRoot. get(DistributionSet_.name)), subString.toLowerCase()),
- cb.like(cb.lower(targetRoot. get(DistributionSet_.version)),
- subString.toLowerCase()),
- cb.like(cb.lower(targetRoot. get(DistributionSet_.description)),
- subString.toLowerCase()));
- return predicate;
- }
- };
-
- return spec;
+ return (targetRoot, query, cb) -> cb.or(
+ cb.like(cb.lower(targetRoot. get(DistributionSet_.name)), subString.toLowerCase()),
+ cb.like(cb.lower(targetRoot. get(DistributionSet_.version)), subString.toLowerCase()),
+ cb.like(cb.lower(targetRoot. get(DistributionSet_.description)), subString.toLowerCase()));
}
/**
@@ -176,19 +133,13 @@ public final class DistributionSetSpecification {
*/
public static Specification hasTags(final Collection tagNames,
final Boolean selectDSWithNoTag) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final SetJoin tags = targetRoot.join(DistributionSet_.tags,
- JoinType.LEFT);
- final Predicate predicate = getPredicate(tags, tagNames, selectDSWithNoTag, cb);
- query.distinct(true);
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final SetJoin tags = targetRoot.join(DistributionSet_.tags,
+ JoinType.LEFT);
+ final Predicate predicate = getPredicate(tags, tagNames, selectDSWithNoTag, cb);
+ query.distinct(true);
+ return predicate;
};
-
- return spec;
}
private static Predicate getPredicate(final SetJoin tags,
@@ -218,20 +169,10 @@ public final class DistributionSetSpecification {
*/
public static Specification equalsNameAndVersionIgnoreCase(final String name,
final String version) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.and(
- // formatter:off
- cb.equal(cb.lower(targetRoot. get(DistributionSet_.name)), name.toLowerCase()),
- cb.equal(cb.lower(targetRoot. get(DistributionSet_.version)), version.toLowerCase()));
- // formatter:on
- return predicate;
- }
- };
+ return (targetRoot, query, cb) -> cb.and(
+ cb.equal(cb.lower(targetRoot. get(DistributionSet_.name)), name.toLowerCase()),
+ cb.equal(cb.lower(targetRoot. get(DistributionSet_.version)), version.toLowerCase()));
- return spec;
}
/**
@@ -243,16 +184,8 @@ public final class DistributionSetSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification byType(final DistributionSetType type) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSet_.type), type);
- return predicate;
- }
- };
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSet_.type), type);
- return spec;
}
/**
@@ -263,18 +196,12 @@ public final class DistributionSetSpecification {
* installed to the given targetId
*/
public static Specification installedTarget(final String installedTargetId) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root dsRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final ListJoin installedTargetJoin = dsRoot
- .join(DistributionSet_.installedAtTargets, JoinType.INNER);
- final Join targetJoin = installedTargetJoin.join(TargetInfo_.target);
- return cb.equal(targetJoin.get(Target_.controllerId), installedTargetId);
- }
+ return (dsRoot, query, cb) -> {
+ final ListJoin installedTargetJoin = dsRoot
+ .join(DistributionSet_.installedAtTargets, JoinType.INNER);
+ final Join targetJoin = installedTargetJoin.join(TargetInfo_.target);
+ return cb.equal(targetJoin.get(Target_.controllerId), installedTargetId);
};
-
- return spec;
}
/**
@@ -285,16 +212,11 @@ public final class DistributionSetSpecification {
* assigned to the given targetId
*/
public static Specification assignedTarget(final String assignedTargetId) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root dsRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final ListJoin assignedTargetJoin = dsRoot
- .join(DistributionSet_.assignedToTargets, JoinType.INNER);
- return cb.equal(assignedTargetJoin.get(Target_.controllerId), assignedTargetId);
- }
+ return (dsRoot, query, cb) -> {
+ final ListJoin assignedTargetJoin = dsRoot.join(DistributionSet_.assignedToTargets,
+ JoinType.INNER);
+ return cb.equal(assignedTargetJoin.get(Target_.controllerId), assignedTargetId);
};
- return spec;
}
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetTypeSpecification.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetTypeSpecification.java
index 1caa5ef59..13776deb0 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetTypeSpecification.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/DistributionSetTypeSpecification.java
@@ -8,22 +8,14 @@
*/
package org.eclipse.hawkbit.repository.specifications;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
import org.eclipse.hawkbit.repository.model.DistributionSet;
import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.DistributionSetType_;
import org.springframework.data.jpa.domain.Specification;
/**
- *
- *
- *
- *
- *
+ * Specifications class for {@link DistributionSetType}s. The class provides
+ * Spring Data JPQL Specifications.
*/
public final class DistributionSetTypeSpecification {
private DistributionSetTypeSpecification() {
@@ -40,16 +32,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSetType} {@link Specification}
*/
public static Specification isDeleted(final Boolean isDeleted) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSetType_.deleted), isDeleted);
- return predicate;
- }
- };
-
- return spec;
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSetType_.deleted), isDeleted);
}
/**
@@ -62,16 +45,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification byId(final Long distid) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
-
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSetType_.id), distid);
- return predicate;
- }
- };
- return spec;
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSetType_.id), distid);
}
/**
@@ -84,16 +58,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification byName(final String name) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
-
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSetType_.name), name);
- return predicate;
- }
- };
- return spec;
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSetType_.name), name);
}
/**
@@ -106,16 +71,7 @@ public final class DistributionSetTypeSpecification {
* @return the {@link DistributionSet} {@link Specification}
*/
public static Specification byKey(final String key) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
-
- final Predicate predicate = cb.equal(targetRoot. get(DistributionSetType_.key), key);
- return predicate;
- }
- };
- return spec;
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(DistributionSetType_.key), key);
}
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/SoftwareModuleSpecification.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/SoftwareModuleSpecification.java
index 2311f59f6..680f97778 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/SoftwareModuleSpecification.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/SoftwareModuleSpecification.java
@@ -8,10 +8,7 @@
*/
package org.eclipse.hawkbit.repository.specifications;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
@@ -22,8 +19,6 @@ import org.springframework.data.jpa.domain.Specification;
* Specifications class for {@link SoftwareModule}s. The class provides Spring
* Data JPQL Specifications
*
- *
- *
*/
public final class SoftwareModuleSpecification {
private SoftwareModuleSpecification() {
@@ -39,38 +34,21 @@ public final class SoftwareModuleSpecification {
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification byId(final Long moduleId) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
-
- final Predicate predicate = cb.equal(targetRoot. get(SoftwareModule_.id), moduleId);
- targetRoot.fetch(SoftwareModule_.type);
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final Predicate predicate = cb.equal(targetRoot. get(SoftwareModule_.id), moduleId);
+ targetRoot.fetch(SoftwareModule_.type);
+ return predicate;
};
- return spec;
}
/**
- * {@link Specification} for retrieving {@link SoftwareModule}s by its
- * DELETED attribute.
+ * {@link Specification} for retrieving {@link SoftwareModule}s where its
+ * DELETED attribute is false.
*
- * @param isDeleted
- * TRUE/FALSE are compared to the attribute DELETED. If NULL the
- * attribute is ignored
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification isDeletedFalse() {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root swRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.equal(swRoot. get(SoftwareModule_.deleted), Boolean.FALSE);
- return predicate;
- }
- };
- return spec;
+ return (swRoot, query, cb) -> cb.equal(swRoot. get(SoftwareModule_.deleted), Boolean.FALSE);
}
/**
@@ -82,18 +60,9 @@ public final class SoftwareModuleSpecification {
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification likeNameOrVersion(final String subString) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.or(
- cb.like(cb.lower(targetRoot. get(SoftwareModule_.name)), subString.toLowerCase()),
- cb.like(cb.lower(targetRoot. get(SoftwareModule_.version)), subString.toLowerCase()));
- return predicate;
- }
- };
-
- return spec;
+ return (targetRoot, query, cb) -> cb.or(
+ cb.like(cb.lower(targetRoot. get(SoftwareModule_.name)), subString.toLowerCase()),
+ cb.like(cb.lower(targetRoot. get(SoftwareModule_.version)), subString.toLowerCase()));
}
/**
@@ -105,16 +74,7 @@ public final class SoftwareModuleSpecification {
* @return the {@link SoftwareModule} {@link Specification}
*/
public static Specification equalType(final SoftwareModuleType type) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.equal(targetRoot. get(SoftwareModule_.type), type);
- return predicate;
- }
- };
-
- return spec;
+ return (targetRoot, query, cb) -> cb.equal(targetRoot. get(SoftwareModule_.type), type);
}
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetFilterQuerySpecification.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetFilterQuerySpecification.java
index c92da7ed1..0b600c849 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetFilterQuerySpecification.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetFilterQuerySpecification.java
@@ -8,17 +8,13 @@
*/
package org.eclipse.hawkbit.repository.specifications;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
import org.eclipse.hawkbit.repository.model.TargetFilterQuery_;
import org.springframework.data.jpa.domain.Specification;
/**
- *
+ * Specifications class for {@link TargetFilterQuery}s. The class provides
+ * Spring Data JPQL Specifications.
*
*/
public class TargetFilterQuerySpecification {
@@ -27,16 +23,9 @@ public class TargetFilterQuerySpecification {
}
public static Specification likeName(final String searchText) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetFilterQueryRoot,
- final CriteriaQuery> query, final CriteriaBuilder cb) {
- final String searchTextToLower = searchText.toLowerCase();
- final Predicate predicate = cb.like(cb.lower(targetFilterQueryRoot.get(TargetFilterQuery_.name)),
- searchTextToLower);
- return predicate;
- }
+ return (targetFilterQueryRoot, query, cb) -> {
+ final String searchTextToLower = searchText.toLowerCase();
+ return cb.like(cb.lower(targetFilterQueryRoot.get(TargetFilterQuery_.name)), searchTextToLower);
};
- return spec;
}
}
diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetSpecifications.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetSpecifications.java
index fb0e5740e..de894d3a3 100644
--- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetSpecifications.java
+++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/specifications/TargetSpecifications.java
@@ -12,7 +12,6 @@ import java.util.Collection;
import java.util.List;
import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Join;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Path;
@@ -36,8 +35,6 @@ import org.springframework.data.jpa.domain.Specification;
* Specifications class for {@link Target}s. The class provides Spring Data JPQL
* Specifications.
*
- *
- *
*/
public final class TargetSpecifications {
private TargetSpecifications() {
@@ -54,18 +51,12 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification byControllerIdWithStatusAndTagsInJoin(final Collection controllerIDs) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
- targetRoot.fetch(Target_.tags, JoinType.LEFT);
- query.distinct(true);
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
+ targetRoot.fetch(Target_.tags, JoinType.LEFT);
+ query.distinct(true);
+ return predicate;
};
-
- return spec;
}
/**
@@ -79,18 +70,12 @@ public final class TargetSpecifications {
*/
public static Specification byControllerIdWithStatusAndAssignedInJoin(
final Collection controllerIDs) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
+ return (targetRoot, query, cb) -> {
- final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
- targetRoot.fetch(Target_.assignedDistributionSet);
- return predicate;
- }
+ final Predicate predicate = targetRoot.get(Target_.controllerId).in(controllerIDs);
+ targetRoot.fetch(Target_.assignedDistributionSet);
+ return predicate;
};
-
- return spec;
}
/**
@@ -106,24 +91,18 @@ public final class TargetSpecifications {
*/
public static Specification hasTargetUpdateStatus(final Collection updateStatus,
final boolean fetch) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- if (!query.getResultType().isAssignableFrom(Long.class)) {
- if (fetch) {
- targetRoot.fetch(Target_.targetInfo);
- } else {
- targetRoot.join(Target_.targetInfo);
- }
- return targetRoot.get(Target_.targetInfo).get(TargetInfo_.updateStatus).in(updateStatus);
+ return (targetRoot, query, cb) -> {
+ if (!query.getResultType().isAssignableFrom(Long.class)) {
+ if (fetch) {
+ targetRoot.fetch(Target_.targetInfo);
+ } else {
+ targetRoot.join(Target_.targetInfo);
}
- final Join targetInfoJoin = targetRoot.join(Target_.targetInfo);
- return targetInfoJoin.get(TargetInfo_.updateStatus).in(updateStatus);
+ return targetRoot.get(Target_.targetInfo).get(TargetInfo_.updateStatus).in(updateStatus);
}
+ final Join targetInfoJoin = targetRoot.join(Target_.targetInfo);
+ return targetInfoJoin.get(TargetInfo_.updateStatus).in(updateStatus);
};
-
- return spec;
}
/**
@@ -135,18 +114,11 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification likeNameOrDescriptionOrIp(final String searchText) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final String searchTextToLower = searchText.toLowerCase();
- final Predicate predicate = cb.or(cb.like(cb.lower(targetRoot.get(Target_.name)), searchTextToLower),
- cb.like(cb.lower(targetRoot.get(Target_.description)), searchTextToLower));
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final String searchTextToLower = searchText.toLowerCase();
+ return cb.or(cb.like(cb.lower(targetRoot.get(Target_.name)), searchTextToLower),
+ cb.like(cb.lower(targetRoot.get(Target_.description)), searchTextToLower));
};
-
- return spec;
}
/**
@@ -158,21 +130,14 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification hasInstalledOrAssignedDistributionSet(@NotNull final Long distributionId) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Join targetInfoJoin = targetRoot.join(Target_.targetInfo);
- final Predicate predicate = cb.or(
- cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
- distributionId),
- cb.equal(targetRoot. get(Target_.assignedDistributionSet)
- .get(DistributionSet_.id), distributionId));
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final Join targetInfoJoin = targetRoot.join(Target_.targetInfo);
+ return cb.or(
+ cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
+ distributionId),
+ cb.equal(targetRoot. get(Target_.assignedDistributionSet).get(DistributionSet_.id),
+ distributionId));
};
-
- return spec;
}
/**
@@ -187,18 +152,11 @@ public final class TargetSpecifications {
*/
public static Specification hasControllerIdAndAssignedDistributionSetIdNot(final List tIDs,
@NotNull final Long distributionId) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = cb.and(targetRoot.get(Target_.controllerId).in(tIDs),
+ return (targetRoot, query, cb) -> cb
+ .and(targetRoot.get(Target_.controllerId).in(tIDs),
cb.or(cb.notEqual(targetRoot. get(Target_.assignedDistributionSet)
.get(DistributionSet_.id), distributionId),
- cb.isNull(targetRoot. get(Target_.assignedDistributionSet))));
- return predicate;
- }
- };
- return spec;
+ cb.isNull(targetRoot. get(Target_.assignedDistributionSet))));
}
/**
@@ -212,16 +170,11 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification hasTags(final String[] tagNames, final Boolean selectTargetWithNoTag) {
- final Specification spec = new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Predicate predicate = getPredicate(targetRoot, cb, selectTargetWithNoTag, tagNames);
- query.distinct(true);
- return predicate;
- }
+ return (targetRoot, query, cb) -> {
+ final Predicate predicate = getPredicate(targetRoot, cb, selectTargetWithNoTag, tagNames);
+ query.distinct(true);
+ return predicate;
};
- return spec;
}
private static Predicate getPredicate(final Root targetRoot, final CriteriaBuilder cb,
@@ -248,15 +201,9 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification hasAssignedDistributionSet(final Long distributionSetId) {
- return new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- return cb.equal(
- targetRoot. get(Target_.assignedDistributionSet).get(DistributionSet_.id),
- distributionSetId);
- }
- };
+ return (targetRoot, query, cb) -> cb.equal(
+ targetRoot. get(Target_.assignedDistributionSet).get(DistributionSet_.id),
+ distributionSetId);
}
/**
@@ -268,14 +215,10 @@ public final class TargetSpecifications {
* @return the {@link Target} {@link Specification}
*/
public static Specification hasInstalledDistributionSet(final Long distributionSetId) {
- return new Specification() {
- @Override
- public Predicate toPredicate(final Root targetRoot, final CriteriaQuery> query,
- final CriteriaBuilder cb) {
- final Join targetInfoJoin = targetRoot.join(Target_.targetInfo);
- return cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
- distributionSetId);
- }
+ return (targetRoot, query, cb) -> {
+ final Join targetInfoJoin = targetRoot.join(Target_.targetInfo);
+ return cb.equal(targetInfoJoin.get(TargetInfo_.installedDistributionSet).get(DistributionSet_.id),
+ distributionSetId);
};
}
}
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java
index befcd6a8a..1787d29e4 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java
@@ -95,7 +95,7 @@ public class TestDataUtil {
return distributionSetManagement.createDistributionSet(
buildDistributionSet(suffix != null && suffix.length() > 0 ? suffix : "DS", version,
findOrCreateDistributionSetType(distributionSetManagement, "ecl_os_app_jvm",
- "OC mandatory App/JVM optional", mand, opt),
+ "OS mandatory App/JVM optional", mand, opt),
os, jvm, ah).setRequiredMigrationStep(isRequiredMigrationStep));
}
@@ -143,7 +143,7 @@ public class TestDataUtil {
}
public static List generateDistributionSetTags(final int number) {
- final List result = new ArrayList();
+ final List result = new ArrayList<>();
for (int i = 0; i < number; i++) {
result.add(new DistributionSetTag("tag" + i, "tagdesc" + i, "" + i));
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ActionTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ActionTest.java
index 9bd532b5e..937a544a7 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ActionTest.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ActionTest.java
@@ -33,12 +33,10 @@ public class ActionTest {
final Action timeforcedAction = new Action();
timeforcedAction.setActionType(ActionType.TIMEFORCED);
timeforcedAction.setForcedTime(timeForceTimeAt);
- final int knownHashCode = timeforcedAction.hashCode();
assertThat(timeforcedAction.isForce()).isFalse();
// wait until timeforce time is hit
Thread.sleep(sleepTime + 100);
assertThat(timeforcedAction.isForce()).isTrue();
- assertThat(timeforcedAction.hashCode()).isNotEqualTo(knownHashCode);
}
}
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementNoMongoDbTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementNoMongoDbTest.java
index dd1e171ca..30f4093c2 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementNoMongoDbTest.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementNoMongoDbTest.java
@@ -8,6 +8,8 @@
*/
package org.eclipse.hawkbit.repository;
+import static org.junit.Assert.fail;
+
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -37,7 +39,7 @@ public class ArtifactManagementNoMongoDbTest extends AbstractIntegrationTest {
System.setProperty("spring.data.mongodb.port", "1020");
}
- @Test(expected = ArtifactUploadFailedException.class)
+ @Test
@Description("Checks if the expected ArtifactUploadFailedException is thrown in case of MongoDB down")
public void createLocalArtifactWithMongoDbDown() throws IOException {
SoftwareModule sm = new SoftwareModule(softwareManagement.findSoftwareModuleTypeByKey("os"), "name 1",
@@ -46,7 +48,12 @@ public class ArtifactManagementNoMongoDbTest extends AbstractIntegrationTest {
final byte random[] = RandomStringUtils.random(5 * 1024).getBytes();
- artifactManagement.createLocalArtifact(new ByteArrayInputStream(random), sm.getId(), "file1", false);
+ try {
+ artifactManagement.createLocalArtifact(new ByteArrayInputStream(random), sm.getId(), "file1", false);
+ fail("Should not have worked with MongoDb down.");
+ } catch (final ArtifactUploadFailedException e) {
+
+ }
}
}
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementTest.java
index 2929110dd..7c801a571 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementTest.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ArtifactManagementTest.java
@@ -352,11 +352,16 @@ public class ArtifactManagementTest extends AbstractIntegrationTestWithMongoDB {
artifactManagement.loadLocalArtifactBinary(result).getFileInputStream()));
}
- @Test(expected = InsufficientPermissionException.class)
+ @Test
@WithUser(allSpPermissions = true, removeFromAllPermission = { SpPermission.DOWNLOAD_REPOSITORY_ARTIFACT })
@Description("Trys and fails to load an artifact without required permission. Checks if expected InsufficientPermissionException is thrown.")
public void loadLocalArtifactBinaryWithoutDownloadArtifactThrowsPermissionDenied() {
- artifactManagement.loadLocalArtifactBinary(new LocalArtifact());
+ try {
+ artifactManagement.loadLocalArtifactBinary(new LocalArtifact());
+ fail("Should not have worked with missing permission.");
+ } catch (final InsufficientPermissionException e) {
+
+ }
}
@Test
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java
index a3913da2b..d77c137b1 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java
@@ -43,7 +43,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest {
distributionSetManagement);
Target savedTarget = targetManagement.createTarget(target);
- final List toAssign = new ArrayList();
+ final List toAssign = new ArrayList<>();
toAssign.add(savedTarget);
assertThat(savedTarget.getTargetInfo().getUpdateStatus()).isEqualTo(TargetUpdateStatus.UNKNOWN);
@@ -75,7 +75,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest {
}
@Test
- @Description("Register a controller which not exist")
+ @Description("Register a controller which does not exist")
public void testfindOrRegisterTargetIfItDoesNotexist() {
final Target target = controllerManagament.findOrRegisterTargetIfItDoesNotexist("AA", null);
assertThat(target).as("target should not be null").isNotNull();
@@ -84,11 +84,12 @@ public class ControllerManagementTest extends AbstractIntegrationTest {
assertThat(target).as("Target should be the equals").isEqualTo(sameTarget);
assertThat(targetRepository.count()).as("Only 1 target should be registred").isEqualTo(1L);
+ // throws exception
try {
controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null);
- fail("target with empty controller id should not be registred");
+ fail("should fail as target does not exist");
} catch (final ConstraintViolationException e) {
- // ok
+
}
}
@@ -101,7 +102,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest {
final DistributionSet ds = TestDataUtil.generateDistributionSet("", softwareManagement,
distributionSetManagement);
Target savedTarget = targetManagement.createTarget(target);
- final List toAssign = new ArrayList();
+ final List toAssign = new ArrayList<>();
toAssign.add(savedTarget);
savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedTargets().iterator().next();
Action savedAction = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0);
@@ -124,7 +125,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest {
final ActionStatus actionStatusMessage3 = new ActionStatus(savedAction, Action.Status.FINISHED,
System.currentTimeMillis());
actionStatusMessage3.addMessage("finish");
- savedAction = controllerManagament.addUpdateActionStatus(actionStatusMessage3, savedAction);
+ controllerManagament.addUpdateActionStatus(actionStatusMessage3, savedAction);
targetManagement.findTargetByControllerID("Rabbit").getTargetInfo().getUpdateStatus();
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java
index dd674d3a3..83db4ed96 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DeploymentManagementTest.java
@@ -18,6 +18,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
import org.eclipse.hawkbit.AbstractIntegrationTest;
import org.eclipse.hawkbit.Constants;
@@ -386,7 +387,7 @@ public class DeploymentManagementTest extends AbstractIntegrationTest {
.createTargets(TestDataUtil.buildTargetFixtures(10, myCtrlIDPref, "first description"));
final String myDeployedCtrlIDPref = "myDeployedCtrlID";
- final List savedDeployedTargets = targetManagement
+ List savedDeployedTargets = targetManagement
.createTargets(TestDataUtil.buildTargetFixtures(20, myDeployedCtrlIDPref, "first description"));
final DistributionSet ds = TestDataUtil.generateDistributionSet("", softwareManagement,
@@ -399,6 +400,10 @@ public class DeploymentManagementTest extends AbstractIntegrationTest {
final Iterable allFoundTargets = targetManagement.findTargetsAll(pageReq).getContent();
+ // get final updated version of targets
+ savedDeployedTargets = targetManagement.findTargetByControllerID(
+ savedDeployedTargets.stream().map(target -> target.getControllerId()).collect(Collectors.toList()));
+
assertThat(allFoundTargets).as("founded targets are wrong").containsAll(savedDeployedTargets)
.containsAll(savedNakedTargets);
assertThat(savedDeployedTargets).as("saved target are wrong")
@@ -602,8 +607,12 @@ public class DeploymentManagementTest extends AbstractIntegrationTest {
.assignDistributionSet(dsA, deployResWithDsB.getDeployedTargets()).getAssignedTargets();
actionRepository.findByDistributionSet(pageRequest, dsA).getContent().get(1);
- assertThat(deployed2DS).as("deployed ds is wrong").containsAll(deployResWithDsB.getDeployedTargets());
- assertThat(deployed2DS).as("deployed ds is wrong").hasSameSizeAs(deployResWithDsB.getDeployedTargets());
+ // get final updated version of targets
+ final List deployResWithDsBTargets = targetManagement.findTargetByControllerID(deployResWithDsB
+ .getDeployedTargets().stream().map(target -> target.getControllerId()).collect(Collectors.toList()));
+
+ assertThat(deployed2DS).as("deployed ds is wrong").containsAll(deployResWithDsBTargets);
+ assertThat(deployed2DS).as("deployed ds is wrong").hasSameSizeAs(deployResWithDsBTargets);
for (final Target t_ : deployed2DS) {
final Target t = targetManagement.findTargetByControllerID(t_.getControllerId());
diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementForDSTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java
similarity index 91%
rename from hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementForDSTest.java
rename to hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java
index 30f4a8cb0..90cecfc14 100644
--- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementForDSTest.java
+++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java
@@ -33,6 +33,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag;
import org.eclipse.hawkbit.repository.model.DistributionSetType;
import org.eclipse.hawkbit.repository.model.SoftwareModule;
import org.eclipse.hawkbit.repository.model.Target;
+import org.fest.assertions.core.Condition;
import org.junit.Test;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -44,15 +45,12 @@ import ru.yandex.qatools.allure.annotations.Features;
import ru.yandex.qatools.allure.annotations.Stories;
/**
- * {@link SoftwareManagement} test focused on {@link DistributionSet} and
- * {@link DistributionSetType} related stuff.
- *
- *
+ * {@link DistributionSetManagement} tests.
*
*/
@Features("Component Tests - Repository")
-@Stories("Software Management")
-public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
+@Stories("DistributionSet Management")
+public class DistributionSetManagementTest extends AbstractIntegrationTest {
@Test
@Description("Tests the successfull module update of unused distribution set type which is in fact allowed.")
@@ -102,7 +100,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.isEqualTo("test123");
}
- @Test(expected = EntityReadOnlyException.class)
+ @Test
@Description("Tests the unsuccessfull update of used distribution set type (module addition).")
public void addModuleToAssignedDistributionSetTypeFails() {
final DistributionSetType nonUpdatableType = distributionSetManagement
@@ -113,10 +111,17 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.createDistributionSet(new DistributionSet("newtypesoft", "1", "", nonUpdatableType, null));
nonUpdatableType.addMandatoryModuleType(osType);
- distributionSetManagement.updateDistributionSetType(nonUpdatableType);
+
+ try {
+ distributionSetManagement.updateDistributionSetType(nonUpdatableType);
+ fail("Should not have worked as DS is in use.");
+ } catch (final EntityReadOnlyException e) {
+
+ }
+
}
- @Test(expected = EntityReadOnlyException.class)
+ @Test
@Description("Tests the unsuccessfull update of used distribution set type (module removal).")
public void removeModuleToAssignedDistributionSetTypeFails() {
DistributionSetType nonUpdatableType = distributionSetManagement
@@ -130,7 +135,12 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.createDistributionSet(new DistributionSet("newtypesoft", "1", "", nonUpdatableType, null));
nonUpdatableType.removeModuleType(osType.getId());
- nonUpdatableType = distributionSetManagement.updateDistributionSetType(nonUpdatableType);
+ try {
+ distributionSetManagement.updateDistributionSetType(nonUpdatableType);
+ fail("Should not have worked as DS is in use.");
+ } catch (final EntityReadOnlyException e) {
+
+ }
}
@Test
@@ -152,22 +162,68 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.createDistributionSetType(new DistributionSetType("softdeleted", "to be deletd", ""));
assertThat(distributionSetTypeRepository.findAll()).contains(softDelete);
- final DistributionSet dsNewType = distributionSetManagement
- .createDistributionSet(new DistributionSet("newtypesoft", "1", "", softDelete, null));
+ distributionSetManagement.createDistributionSet(new DistributionSet("newtypesoft", "1", "", softDelete, null));
distributionSetManagement.deleteDistributionSetType(softDelete);
assertThat(distributionSetManagement.findDistributionSetTypeByKey("softdeleted").isDeleted()).isEqualTo(true);
}
- // TODO: kzimmerm: test N+1
-
- @Test(expected = EntityAlreadyExistsException.class)
+ @Test
@Description("Ensures that it is not possible to create a DS that already exists (unique constraint is on name,version for DS).")
public void createDuplicateDistributionSetsFailsWithException() {
TestDataUtil.generateDistributionSet("a", softwareManagement, distributionSetManagement);
- TestDataUtil.generateDistributionSet("a", softwareManagement, distributionSetManagement);
+ try {
+ TestDataUtil.generateDistributionSet("a", softwareManagement, distributionSetManagement);
+ fail("Should not have worked as DS with same UK already exists.");
+ } catch (final EntityAlreadyExistsException e) {
+ }
+ }
+
+ @Test
+ @Description("Verfies that a DS is of default type if not specified explicitly at creation time.")
+ public void createDistributionSetWithImplicitType() {
+ final DistributionSet set = distributionSetManagement
+ .createDistributionSet(new DistributionSet("newtypesoft", "1", "", null, null));
+
+ assertThat(set.getType()).as("Type should be equal to default type of tenant")
+ .isEqualTo(systemManagement.getTenantMetadata().getDefaultDsType());
+
+ }
+
+ @Test
+ @Description("Verfies that multiple DS are of default type if not specified explicitly at creation time.")
+ public void createMultipleDistributionSetsWithImplicitType() {
+
+ List sets = new ArrayList<>();
+ for (int i = 0; i < 10; i++) {
+ sets.add(new DistributionSet("another DS" + i, "X" + i, "", null, null));
+ }
+
+ sets = distributionSetManagement.createDistributionSets(sets);
+
+ assertThat(sets).as("Type should be equal to default type of tenant").are(new Condition() {
+ @Override
+ public boolean matches(final DistributionSet value) {
+ return value.getType().equals(systemManagement.getTenantMetadata().getDefaultDsType());
+ }
+ });
+
+ }
+
+ @Test
+ @Description("Verfies that a DS entity cannot be used for creation.")
+ public void createDistributionSetFailsOnExistingEntity() {
+ final DistributionSet set = distributionSetManagement
+ .createDistributionSet(new DistributionSet("newtypesoft", "1", "", null, null));
+
+ try {
+ distributionSetManagement.createDistributionSet(set);
+ fail("Should not have worked to create based on a persisted entity.");
+ } catch (final EntityAlreadyExistsException e) {
+
+ }
}
@Test
@@ -244,17 +300,22 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
}
}
- @Test(expected = DistributionSetTypeUndefinedException.class)
+ @Test
@Description("Ensures that it is not possible to add a software module to a set that has no type defined.")
public void updateDistributionSetModuleWithUndefinedTypeFails() {
final DistributionSet testSet = new DistributionSet();
final SoftwareModule module = new SoftwareModule(appType, "agent-hub2", "1.0.5", null, "");
// update data
- testSet.addModule(module);
+ try {
+ testSet.addModule(module);
+ fail("Should not have worked as DS type is undefined.");
+ } catch (final DistributionSetTypeUndefinedException e) {
+
+ }
}
- @Test(expected = UnsupportedSoftwareModuleForThisDistributionSetException.class)
+ @Test
@Description("Ensures that it is not possible to add a software module that is not defined of the DS's type.")
public void updateDistributionSetUnsupportedModuleFails() {
final DistributionSet set = new DistributionSet("agent-hub2", "1.0.5", "desc",
@@ -262,7 +323,12 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
final SoftwareModule module = new SoftwareModule(appType, "agent-hub2", "1.0.5", null, "");
// update data
- set.addModule(module);
+ try {
+ set.addModule(module);
+ fail("Should not have worked as module type is not in DS type.");
+ } catch (final UnsupportedSoftwareModuleForThisDistributionSetException e) {
+
+ }
}
@Test
@@ -561,7 +627,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.findDistributionSetsByFilters(pageReq, distributionSetFilterBuilder.build()).getContent()).hasSize(0);
// combine deleted and complete and type
- expected = new ArrayList();
+ expected = new ArrayList<>();
expected.addAll(ds100Group1);
expected.addAll(ds100Group2);
distributionSetFilterBuilder = getDistributionSetFilterBuilder().setIsDeleted(Boolean.FALSE)
@@ -570,7 +636,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.findDistributionSetsByFilters(pageReq, distributionSetFilterBuilder.build()).getContent()).hasSize(200)
.containsOnly(expected.toArray(new DistributionSet[0]));
- expected = new ArrayList();
+ expected = new ArrayList<>();
expected.add(dsDeleted);
distributionSetFilterBuilder = getDistributionSetFilterBuilder().setIsComplete(Boolean.TRUE)
.setType(standardDsType).setIsDeleted(Boolean.TRUE);
@@ -583,7 +649,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
assertThat(distributionSetManagement
.findDistributionSetsByFilters(pageReq, distributionSetFilterBuilder.build()).getContent()).hasSize(0);
- expected = new ArrayList();
+ expected = new ArrayList<>();
expected.add(dsNewType);
distributionSetFilterBuilder = getDistributionSetFilterBuilder().setIsComplete(Boolean.TRUE).setType(newType);
assertThat(distributionSetManagement
@@ -591,7 +657,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.containsOnly(expected.toArray(new DistributionSet[0]));
// combine deleted and complete and type and text
- expected = new ArrayList();
+ expected = new ArrayList<>();
expected.addAll(ds100Group2);
distributionSetFilterBuilder = getDistributionSetFilterBuilder().setIsComplete(Boolean.TRUE)
.setType(standardDsType).setSearchText("%test2");
@@ -615,7 +681,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.findDistributionSetsByFilters(pageReq, distributionSetFilterBuilder.build()).getContent()).hasSize(0);
// combine deleted and complete and type and text and tag
- expected = new ArrayList();
+ expected = new ArrayList<>();
expected.addAll(ds100Group2);
distributionSetFilterBuilder = getDistributionSetFilterBuilder().setIsComplete(true).setType(standardDsType)
.setSearchText("%test2").setTagNames(Lists.newArrayList(dsTagA.getName()));
@@ -637,7 +703,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
private List sendUpdateActionStatusToTargets(final DistributionSet dsA, final Iterable targs,
final Status status, final String... msgs) {
- final List result = new ArrayList();
+ final List result = new ArrayList<>();
for (final Target t : targs) {
final List findByTarget = actionRepository.findByTarget(t);
for (final Action action : findByTarget) {
@@ -730,7 +796,7 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
dsAssigned.getVersion());
final Target target = new Target("4712");
final Target savedTarget = targetManagement.createTarget(target);
- final List toAssign = new ArrayList();
+ final List toAssign = new ArrayList<>();
toAssign.add(savedTarget);
deploymentManagement.assignDistributionSet(dsAssigned, toAssign);
@@ -744,38 +810,6 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest {
.getTotalElements()).isEqualTo(2);
}
- /**
- * helper method which re-orders a list as expected. Re-orders the given
- * distribution set in the order as given and returns a new list with the
- * new order.
- *
- * @param dsThree
- * @param buildDistributionSets
- * @return
- */
- private List