From e236984d94ecbf9d8d7b89bcd2cde6fdb51f15bf Mon Sep 17 00:00:00 2001 From: asharani-murugesh Date: Mon, 21 Mar 2016 13:02:23 +0100 Subject: [PATCH 01/63] Deployment view - tags :Fixed N+1 query issue Bug fix: Deleted tag displayed in tag layout Signed-off-by: asharani-murugesh --- .../ui/artifacts/smtype/SMTypeFilterButtons.java | 4 ++-- .../detailslayout/SoftwareModuleDetailsTable.java | 1 - .../common/filterlayout/AbstractFilterButtons.java | 9 +++++---- .../distributions/disttype/DSTypeFilterButtons.java | 5 ++--- .../smtype/DistSMTypeFilterButtons.java | 5 ++--- .../ui/management/dstag/DistributionTagButtons.java | 10 +++------- .../management/targettag/TargetTagFilterButtons.java | 12 ++++-------- .../hawkbit/ui/push/DelayedEventBusPushStrategy.java | 4 +++- 8 files changed, 21 insertions(+), 29 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java index 9f2aa9602..857b27a7e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java @@ -97,9 +97,9 @@ public class SMTypeFilterButtons extends AbstractFilterButtons { } @Override - protected boolean isClickedByDefault(final Long buttonId) { + protected boolean isClickedByDefault(final String typeName) { return artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().isPresent() && artifactUploadState - .getSoftwareModuleFilters().getSoftwareModuleType().get().getId().equals(buttonId); + .getSoftwareModuleFilters().getSoftwareModuleType().get().getName().equals(typeName); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleDetailsTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleDetailsTable.java index 8def18034..40acb6581 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleDetailsTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleDetailsTable.java @@ -161,7 +161,6 @@ public class SoftwareModuleDetailsTable extends Table { if (null != distributionSet) { if (isUnassignSoftModAllowed && permissionChecker.hasUpdateDistributionPermission()) { try { - distributionSetManagement.checkDistributionSetAlreadyUse(distributionSet); isTargetAssigned = false; } catch (final EntityLockedException exception) { isTargetAssigned = true; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java index 6ed10166f..e95797fb4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java @@ -114,7 +114,7 @@ public abstract class AbstractFilterButtons extends Table { typeButton.addClickListener(event -> filterButtonClickBehaviour.processFilterButtonClick(event)); if (typeButton.getData().equals(SPUIDefinitions.NO_TAG_BUTTON_ID) && isNoTagSateSelected()) { filterButtonClickBehaviour.setDefaultClickedButton(typeButton); - } else if (id != null && isClickedByDefault(id)) { + } else if (id != null && isClickedByDefault(name)) { filterButtonClickBehaviour.setDefaultClickedButton(typeButton); } final DragAndDropWrapper wrapper = createDragAndDropWrapper(typeButton, name, id); @@ -205,10 +205,11 @@ public abstract class AbstractFilterButtons extends Table { /** * Check if button should be displayed as clicked by default. * - * @param id - * @return + * @param buttonCaption + * button caption + * @return true if button is clicked */ - protected abstract boolean isClickedByDefault(final Long buttonId); + protected abstract boolean isClickedByDefault(final String buttonCaption); /** * Get filter button Id. diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java index cd36918e8..aa35c0622 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java @@ -79,10 +79,9 @@ public class DSTypeFilterButtons extends AbstractFilterButtons { } @Override - protected boolean isClickedByDefault(final Long buttonId) { - + protected boolean isClickedByDefault(final String typeName) { return manageDistUIState.getManageDistFilters().getClickedDistSetType() != null - && manageDistUIState.getManageDistFilters().getClickedDistSetType().getId().equals(buttonId); + && manageDistUIState.getManageDistFilters().getClickedDistSetType().getName().equals(typeName); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java index d3251cf9b..f086fed2c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java @@ -82,10 +82,9 @@ public class DistSMTypeFilterButtons extends AbstractFilterButtons { } @Override - protected boolean isClickedByDefault(final Long buttonId) { - + protected boolean isClickedByDefault(final String typeName) { return manageDistUIState.getSoftwareModuleFilters().getSoftwareModuleType().isPresent() - && manageDistUIState.getSoftwareModuleFilters().getSoftwareModuleType().get().getId().equals(buttonId); + && manageDistUIState.getSoftwareModuleFilters().getSoftwareModuleType().get().getName().equals(typeName); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java index 98c48d235..5e613c682 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.ui.management.dstag; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.annotation.PreDestroy; @@ -16,7 +17,6 @@ import javax.annotation.PreDestroy; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent; -import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.model.DistributionSetTag; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtonClickBehaviour; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons; @@ -58,9 +58,6 @@ public class DistributionTagButtons extends AbstractFilterButtons { @Autowired private DistributionTagDropEvent spDistTagDropEvent; - @Autowired - private transient TagManagement tagMgmtService; - @Autowired private ManagementUIState managementUIState; @@ -121,10 +118,9 @@ public class DistributionTagButtons extends AbstractFilterButtons { } @Override - protected boolean isClickedByDefault(final Long buttonId) { - final DistributionSetTag dsTagObject = tagMgmtService.findDistributionSetTagById(buttonId); + protected boolean isClickedByDefault(final String tagName) { return null != managementUIState.getDistributionTableFilters().getDistSetTags() - && managementUIState.getDistributionTableFilters().getDistSetTags().contains(dsTagObject.getName()); + && managementUIState.getDistributionTableFilters().getDistSetTags().contains(tagName); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java index 9d93962da..9571233e4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java @@ -15,11 +15,11 @@ import java.util.stream.Collectors; import javax.annotation.PreDestroy; +import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent; import org.eclipse.hawkbit.repository.SpPermissionChecker; -import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetTag; @@ -70,9 +70,6 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { @Autowired private ManagementUIState managementUIState; - @Autowired - private transient TagManagement tagMgmtService; - @Autowired private ManagementViewAcceptCriteria managementViewAcceptCriteria; @@ -139,10 +136,9 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { } @Override - protected boolean isClickedByDefault(final Long buttonId) { - final TargetTag newTagClickedObj = tagMgmtService.findTargetTagById(buttonId); - return managementUIState.getTargetTableFilters().getClickedTargetTags() != null && managementUIState - .getTargetTableFilters().getClickedTargetTags().contains(newTagClickedObj.getName()); + protected boolean isClickedByDefault(final String tagName) { + return managementUIState.getTargetTableFilters().getClickedTargetTags() != null + && managementUIState.getTargetTableFilters().getClickedTargetTags().contains(tagName); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java index 87fcbe922..56ffdd95b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java @@ -20,6 +20,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; +import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.EntityEvent; import org.eclipse.hawkbit.eventbus.event.RolloutChangeEvent; import org.eclipse.hawkbit.eventbus.event.RolloutGroupChangeEvent; @@ -27,6 +28,7 @@ import org.eclipse.hawkbit.eventbus.event.TargetCreatedEvent; import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; +import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent; import org.eclipse.hawkbit.im.authentication.TenantAwareAuthenticationDetails; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,7 +78,7 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { */ private static final Set> UI_EVENTS = Sets.newHashSet(TargetInfoUpdateEvent.class, TargetCreatedEvent.class, TargetDeletedEvent.class, RolloutChangeEvent.class, RolloutGroupChangeEvent.class, - TargetTagCreatedBulkEvent.class, DistributionSetTagCreatedBulkEvent.class); + TargetTagCreatedBulkEvent.class, DistributionSetTagCreatedBulkEvent.class,TargetTagDeletedEvent.class,DistributionSetTagDeletedEvent.class); /** * Constructor. From 2739fee158ad6526457c7272b6d171696174bc5e Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 22 Mar 2016 14:56:41 +0100 Subject: [PATCH 02/63] Upgraded Vaadin to 7.6.4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 2415b9935..f42236d07 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ 1.0.0 0.0.6.RELEASE - 7.6.3 + 7.6.4 ${vaadin.version} 7.4.0.1 2.2.0 From 24b2469c8417987e701bb25f47a9b78dbe78c3a8 Mon Sep 17 00:00:00 2001 From: asharani-murugesh Date: Wed, 23 Mar 2016 09:43:29 +0100 Subject: [PATCH 03/63] Removed unused imports Signed-off-by: asharani-murugesh --- .../java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java | 3 --- .../hawkbit/ui/management/dstag/DistributionTagButtons.java | 1 - .../eclipse/hawkbit/ui/management/targettable/TargetTable.java | 1 - .../ui/management/targettag/TargetTagFilterButtons.java | 1 - 4 files changed, 6 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java index 7cd276258..6ac205cf2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java @@ -12,10 +12,7 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import com.vaadin.data.Container; import com.vaadin.data.Container.Indexed; -import com.vaadin.shared.ui.grid.HeightMode; import com.vaadin.ui.Grid; -import com.vaadin.ui.Label; -import com.vaadin.ui.themes.ValoTheme; /** * Abstract table class. diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java index 5e613c682..287071fe8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java @@ -9,7 +9,6 @@ package org.eclipse.hawkbit.ui.management.dstag; import java.util.HashMap; -import java.util.List; import java.util.Map; import javax.annotation.PreDestroy; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 960553a6a..1ed0a400e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -15,7 +15,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java index 9571233e4..d47376d0d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java @@ -15,7 +15,6 @@ import java.util.stream.Collectors; import javax.annotation.PreDestroy; -import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent; From 6ee66dc4e17dcb27a41c4be359a26aa3b26a204c Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 23 Mar 2016 14:09:40 +0100 Subject: [PATCH 04/63] Put BaseEntity below tenant aware and unaware entities --- .../hawkbit/simulator/ui/SimulatorView.java | 2 + .../artifact/repository/ArtifactStore.java | 17 +- .../artifact/repository/model/DbArtifact.java | 3 - .../repository/model/DbArtifactHash.java | 3 - .../java/org/eclipse/hawkbit/Constants.java | 5 +- .../eventbus/EntityChangeEventListener.java | 4 +- .../EntityPropertyChangeListener.java | 4 +- .../event/AbstractBaseEntityEvent.java | 10 +- .../event/AbstractEntityBulkEvent.java | 4 +- .../event/AbstractPropertyChangeEvent.java | 4 +- .../eventbus/event/EntityBulkEvent.java | 4 +- .../repository/BaseEntityRepository.java | 8 +- .../repository/DistributionSetManagement.java | 7 +- .../hawkbit/repository/SystemManagement.java | 4 +- .../hawkbit/repository/model/Action.java | 2 +- .../repository/model/ActionStatus.java | 36 +--- .../hawkbit/repository/model/Artifact.java | 2 +- .../hawkbit/repository/model/BaseEntity.java | 107 +--------- .../hawkbit/repository/model/NamedEntity.java | 4 +- .../repository/model/TargetFilterQuery.java | 2 +- .../model/TenantAwareBaseEntity.java | 108 ++++++++++ .../repository/model/TenantConfiguration.java | 6 +- .../model/TenantConfigurationValue.java | 2 +- .../repository/model/TenantMetaData.java | 202 ++---------------- .../TargetManagementSearchTest.java | 4 +- .../resources/application-test.properties | 3 +- .../rest/resource/RestModelMapper.java | 4 +- 27 files changed, 178 insertions(+), 383 deletions(-) create mode 100644 hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java 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/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-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-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/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..5fd4ba27d 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,7 +18,7 @@ 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.TenantAwareBaseEntity; import org.eclipse.hawkbit.repository.model.Rollout; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.helper.AfterTransactionCommitExecutorHolder; @@ -83,7 +83,7 @@ public class EntityPropertyChangeListener extends DescriptorEventAdapter { } } - 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(); 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..15864eb8f 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,18 @@ */ 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 { /** 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/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/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/DistributionSetManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java index 8b07c9bf8..8df29956b 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 @@ -176,7 +176,7 @@ public class DistributionSetManagement { final Iterable sets = findDistributionSetListWithDetails(dsIds); final DistributionSetTag myTag = tagManagement.findDistributionSetTag(tagName); - DistributionSetTagAssigmentResult result = null; + DistributionSetTagAssigmentResult result; final List allDSs = new ArrayList<>(); for (final DistributionSet set : sets) { if (set.getTags().add(myTag)) { @@ -199,8 +199,7 @@ public class DistributionSetManagement { } final DistributionSetTagAssigmentResult resultAssignment = result; - afterCommit - .afterCommit(() -> eventBus.post(new DistributionSetTagAssigmentResultEvent(resultAssignment))); + afterCommit.afterCommit(() -> eventBus.post(new DistributionSetTagAssigmentResultEvent(resultAssignment))); // no reason to persist the tag entityManager.detach(myTag); @@ -870,7 +869,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); } 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..559b71498 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 @@ -327,13 +327,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; } /** diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index c19b947de..17a7965dd 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -52,7 +52,7 @@ import org.eclipse.persistence.annotations.CascadeOnDelete; @NamedEntityGraph(name = "Action.all", attributeNodes = { @NamedAttributeNode("distributionSet"), @NamedAttributeNode(value = "target", subgraph = "target.ds") }, subgraphs = @NamedSubgraph(name = "target.ds", attributeNodes = @NamedAttributeNode("assignedDistributionSet") ) ) }) @Entity -public class Action extends BaseEntity implements Comparable { +public class Action extends TenantAwareBaseEntity implements Comparable { private static final long serialVersionUID = 1L; /** diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java index 2b0effae9..0fdec839b 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java @@ -41,7 +41,7 @@ import com.google.common.base.Splitter; @Index(name = "sp_idx_action_status_prim", columnList = "tenant,id") }) @NamedEntityGraph(name = "ActionStatus.withMessages", attributeNodes = { @NamedAttributeNode("messages") }) @Entity -public class ActionStatus extends BaseEntity { +public class ActionStatus extends TenantAwareBaseEntity { /** * @@ -52,7 +52,7 @@ public class ActionStatus extends BaseEntity { private Long occurredAt; @ManyToOne(fetch = FetchType.LAZY, optional = false) - @JoinColumn(name = "action", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_act_stat_action") ) + @JoinColumn(name = "action", nullable = false, foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_act_stat_action")) private Action action; @Column(name = "status") @@ -60,7 +60,7 @@ public class ActionStatus extends BaseEntity { @CascadeOnDelete @ElementCollection(fetch = FetchType.LAZY, targetClass = String.class) - @CollectionTable(name = "sp_action_status_messages", joinColumns = @JoinColumn(name = "action_status_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_stat_msg_act_stat") ) , indexes = { + @CollectionTable(name = "sp_action_status_messages", joinColumns = @JoinColumn(name = "action_status_id", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_stat_msg_act_stat")), indexes = { @Index(name = "sp_idx_action_status_msgs_01", columnList = "action_status_id") }) @Column(name = "detail_message", length = 512) private final List messages = new ArrayList<>(); @@ -103,66 +103,46 @@ public class ActionStatus extends BaseEntity { } /** - * - */ + * JPA default constructor. + */ public ActionStatus() { + // JPA default constructor. } - /** - * @return the occurredAt - */ public Long getOccurredAt() { return occurredAt; } - /** - * @param occurredAt - * the occurredAt to set - */ public void setOccurredAt(final Long occurredAt) { this.occurredAt = occurredAt; } /** - * Adds message. + * Adds message including splitting in case it exceeds 512 length. * * @param message * to add */ public final void addMessage(final String message) { - Splitter.fixedLength(512).split(message).forEach(chunk -> messages.add(chunk)); + Splitter.fixedLength(512).split(message).forEach(messages::add); } public List getMessages() { return messages; } - /** - * @return the action - */ public Action getAction() { return action; } - /** - * @param action - * the action to set - */ public void setAction(final Action action) { this.action = action; } - /** - * @return the status - */ public Status getStatus() { return status; } - /** - * @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/Artifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java index 4b868f9a2..5d829e4d6 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java @@ -20,7 +20,7 @@ import javax.persistence.MappedSuperclass; * */ @MappedSuperclass -public abstract class Artifact extends BaseEntity { +public abstract class Artifact extends TenantAwareBaseEntity { private static final long serialVersionUID = 1L; @Column(name = "sha1_hash", length = 40, nullable = true) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java index 72d25be6c..964cbb728 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java @@ -18,17 +18,10 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.MappedSuperclass; -import javax.persistence.PrePersist; import javax.persistence.Version; import org.eclipse.hawkbit.eventbus.CacheFieldEntityListener; import org.eclipse.hawkbit.eventbus.EntityPropertyChangeListener; -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; import org.springframework.data.annotation.CreatedBy; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedBy; @@ -37,18 +30,12 @@ import org.springframework.data.jpa.domain.support.AuditingEntityListener; import org.springframework.hateoas.Identifiable; /** - * Holder of all base attributes common to all entities. - * - * - * - * + * Holder of the base attributes common to all entities. * */ @MappedSuperclass @Access(AccessType.FIELD) @EntityListeners({ AuditingEntityListener.class, CacheFieldEntityListener.class, EntityPropertyChangeListener.class }) -@TenantDiscriminatorColumn(name = "tenant", length = 40) -@Multitenant(MultitenantType.SINGLE_TABLE) public abstract class BaseEntity implements Serializable, Identifiable { private static final long serialVersionUID = 1L; @@ -66,44 +53,11 @@ public abstract class BaseEntity implements Serializable, Identifiable { @Column(name = "optlock_revision") private long optLockRevision; - @Column(name = "tenant", nullable = false, insertable = false, updatable = false, length = 40) - private String tenant; - /** - * - */ + * Default constructor needed for JPA entities. + */ public BaseEntity() { - - } - - /** - * @param entity - * the entity to copy - */ - public BaseEntity(final BaseEntity entity) { - id = entity.id; - createdAt = entity.createdAt; - createdBy = entity.createdBy; - lastModifiedAt = entity.lastModifiedAt; - lastModifiedBy = entity.lastModifiedBy; - optLockRevision = entity.optLockRevision; - } - - /** - * PrePersist listener method for all {@link BaseEntity} 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 " + id); - } - setTenant(currentTenant.toUpperCase()); + // Default constructor needed for JPA entities. } @Access(AccessType.PROPERTY) @@ -130,37 +84,21 @@ public abstract class BaseEntity implements Serializable, Identifiable { 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; @@ -170,52 +108,20 @@ public abstract class BaseEntity implements Serializable, Identifiable { return optLockRevision; } - /** - * @return the tenant - */ - public String getTenant() { - return tenant; - } - - /** - * @param tenant - * the tenant to set - */ - public void setTenant(final String tenant) { - this.tenant = tenant; - } - - /** - * @return the id - */ @Override public Long getId() { return id; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ @Override public String toString() { return "BaseEntity [id=" + id + "]"; } - /** - * @param id - * the id to set - */ public void setId(final Long id) { this.id = id; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ @Override public int hashCode() { // NOSONAR - as this is generated code final int prime = 31; @@ -225,11 +131,6 @@ public abstract class BaseEntity implements Serializable, Identifiable { 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/NamedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java index 0cebd0362..30446a0bf 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,7 +12,7 @@ import javax.persistence.Column; import javax.persistence.MappedSuperclass; /** - * {@link BaseEntity} extension for all entities that are named in addition to + * {@link TenantAwareBaseEntity} extension for all entities that are named in addition to * their technical ID. * * @@ -22,7 +22,7 @@ import javax.persistence.MappedSuperclass; * */ @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) 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..f14fc26e2 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 @@ -22,7 +22,7 @@ import javax.persistence.UniqueConstraint; @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 { +public class TargetFilterQuery extends TenantAwareBaseEntity { /** * * 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..755ab793e --- /dev/null +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java @@ -0,0 +1,108 @@ +/** + * 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.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.PrePersist; + +import org.eclipse.hawkbit.eventbus.CacheFieldEntityListener; +import org.eclipse.hawkbit.eventbus.EntityPropertyChangeListener; +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; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +/** + * Holder of the base attributes common to all tenant aware entities. + * + */ +@MappedSuperclass +@EntityListeners({ AuditingEntityListener.class, CacheFieldEntityListener.class, EntityPropertyChangeListener.class }) +@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() + "]"; + } + + @Override + public int hashCode() { // NOSONAR - as this is generated + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((tenant == null) ? 0 : tenant.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { // NOSONAR - as this is generated + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + 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..972ea1ffe 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 @@ -25,8 +25,8 @@ import javax.persistence.UniqueConstraint; */ @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 { /** * @@ -44,7 +44,7 @@ public class TenantConfiguration extends BaseEntity implements Serializable { * JPA default constructor. */ public TenantConfiguration() { - + // JPA default constructor. } /** 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..5b75bd0bd 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,20 @@ 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()); - 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 TenantMetaData other = (TenantMetaData) obj; - if (id == null) { - if (other.id != null) { - return false; - } - } else if (!id.equals(other.id)) { - return false; - } - return true; - } - } diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java index 34aa223c3..93806e626 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java @@ -20,7 +20,7 @@ import org.eclipse.hawkbit.TestDataUtil; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.ActionStatus; -import org.eclipse.hawkbit.repository.model.BaseEntity; +import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetTag; @@ -207,7 +207,7 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final Slice result = targetManagement.findTargetsAllOrderByLinkedDistributionSet(pageReq, ds.getId(), null, null, null, Boolean.FALSE, null); - final Comparator byId = (e1, e2) -> Long.compare(e2.getId(), e1.getId()); + final Comparator byId = (e1, e2) -> Long.compare(e2.getId(), e1.getId()); assertThat(result.getNumberOfElements()).isEqualTo(9); final List expected = new ArrayList(); diff --git a/hawkbit-repository/src/test/resources/application-test.properties b/hawkbit-repository/src/test/resources/application-test.properties index b1904f911..0882d901c 100644 --- a/hawkbit-repository/src/test/resources/application-test.properties +++ b/hawkbit-repository/src/test/resources/application-test.properties @@ -13,7 +13,7 @@ spring.data.mongodb.port=28017 hawkbit.server.ddi.security.authentication.header.enabled=true hawkbit.server.ddi.security.authentication.gatewaytoken.name=TestToken -hawkbit.server.artifact.repo.upload.maxFileSize=5MB +multipart.max-file-size=5MB hawkbit.server.security.dos.maxStatusEntriesPerAction=100 @@ -26,7 +26,6 @@ spring.datasource.username=sa spring.datasource.password=sa flyway.enabled=true -flyway.initOnMigrate=true flyway.sqlMigrationSuffix=${spring.jpa.database}.sql #spring.jpa.show-sql=true diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java index 52668f1f1..24f717004 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java @@ -8,7 +8,7 @@ */ package org.eclipse.hawkbit.rest.resource; -import org.eclipse.hawkbit.repository.model.BaseEntity; +import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.rest.resource.model.BaseEntityRest; import org.eclipse.hawkbit.rest.resource.model.NamedEntityRest; @@ -28,7 +28,7 @@ final class RestModelMapper { } - static void mapBaseToBase(final BaseEntityRest response, final BaseEntity base) { + static void mapBaseToBase(final BaseEntityRest response, final TenantAwareBaseEntity base) { response.setCreatedBy(base.getCreatedBy()); response.setLastModifiedBy(base.getLastModifiedBy()); if (base.getCreatedAt() != null) { From 84519b77ab5b593a88be79c959cf2f058935e500 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Wed, 23 Mar 2016 15:12:12 +0100 Subject: [PATCH 05/63] Disable to set the current page first item id Signed-off-by: SirWayne --- .../java/org/eclipse/hawkbit/app/MyUI.java | 3 +- .../org/eclipse/hawkbit/ui/EventProvider.java | 16 +++ .../hawkbit/ui/HawkbitEventProvider.java | 43 ++++++++ .../management/targettable/TargetTable.java | 6 +- .../ui/push/DelayedEventBusPushStrategy.java | 102 ++++++++++++------ 5 files changed, 130 insertions(+), 40 deletions(-) create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java 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..bbb348961 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 @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.app; +import org.eclipse.hawkbit.ui.HawkbitEventProvider; import org.eclipse.hawkbit.ui.HawkbitUI; import org.eclipse.hawkbit.ui.push.DelayedEventBusPushStrategy; import org.springframework.beans.factory.annotation.Autowired; @@ -34,6 +35,6 @@ public class MyUI extends HawkbitUI { @Autowired public MyUI(final EventBus systemEventBus, final org.vaadin.spring.events.EventBus.SessionEventBus eventBus) { - super(new DelayedEventBusPushStrategy(eventBus, systemEventBus)); + super(new DelayedEventBusPushStrategy(eventBus, systemEventBus, new HawkbitEventProvider())); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java new file mode 100644 index 000000000..0ae83af01 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java @@ -0,0 +1,16 @@ +/** + * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. + */ +package org.eclipse.hawkbit.ui; + +import java.util.Set; + +/** + * + */ +public interface EventProvider { + + Set> getSingleEvents(); + + Set> getBulkEvents(); +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java new file mode 100644 index 000000000..8600b8e20 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java @@ -0,0 +1,43 @@ +/** + * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. + */ +package org.eclipse.hawkbit.ui; + +import java.util.Set; + +import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; +import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent; +import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent; +import org.eclipse.hawkbit.eventbus.event.RolloutChangeEvent; +import org.eclipse.hawkbit.eventbus.event.RolloutGroupChangeEvent; +import org.eclipse.hawkbit.eventbus.event.TargetCreatedEvent; +import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; +import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent; +import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; + +import com.google.common.collect.Sets; + +/** + * @author Dennis Melzer + * + */ +public class HawkbitEventProvider implements EventProvider { + + private static final Set> SINGLE_EVENTS = Sets.newHashSet(TargetTagCreatedBulkEvent.class, + DistributionSetTagCreatedBulkEvent.class, DistributionSetTagDeletedEvent.class, + DistributionSetTagUpdateEvent.class, RolloutGroupChangeEvent.class, RolloutChangeEvent.class); + + private static final Set> BULD_EVENTS = Sets.newHashSet(TargetCreatedEvent.class, + TargetInfoUpdateEvent.class, TargetDeletedEvent.class); + + @Override + public Set> getSingleEvents() { + return SINGLE_EVENTS; + } + + @Override + public Set> getBulkEvents() { + return BULD_EVENTS; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 960553a6a..b8b59cb91 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -15,7 +15,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -141,8 +140,6 @@ public class TargetTable extends AbstractTable implements Handler { private Boolean isTargetPinned = Boolean.FALSE; private ShortcutAction actionSelectAll; private ShortcutAction actionUnSelectAll; - - @Override @PostConstruct @@ -349,7 +346,8 @@ public class TargetTable extends AbstractTable implements Handler { @Override protected Object getItemIdToSelect() { if (managementUIState.getSelectedTargetIdName().isPresent()) { - setCurrentPageFirstItemId(managementUIState.getLastSelectedTargetIdName()); + LOG.info("****** getItemIdToSelect *********"); + // setCurrentPageFirstItemId(managementUIState.getLastSelectedTargetIdName()); return managementUIState.getSelectedTargetIdName().get(); } return null; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java index 87fcbe922..5ac9362fe 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.ui.push; +import java.time.Instant; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -19,15 +20,10 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.EntityEvent; -import org.eclipse.hawkbit.eventbus.event.RolloutChangeEvent; -import org.eclipse.hawkbit.eventbus.event.RolloutGroupChangeEvent; -import org.eclipse.hawkbit.eventbus.event.TargetCreatedEvent; -import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; -import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent; -import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; +import org.eclipse.hawkbit.eventbus.event.Event; import org.eclipse.hawkbit.im.authentication.TenantAwareAuthenticationDetails; +import org.eclipse.hawkbit.ui.EventProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.context.SecurityContext; @@ -36,7 +32,6 @@ import org.springframework.security.web.context.HttpSessionSecurityContextReposi import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventBus.SessionEventBus; -import com.google.common.collect.Sets; import com.google.common.eventbus.AllowConcurrentEvents; import com.google.common.eventbus.Subscribe; import com.vaadin.server.VaadinSession; @@ -71,12 +66,7 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { private ScheduledFuture jobHandle; - /** - * only events defined in the set are dispatched to the session event bus. - */ - private static final Set> UI_EVENTS = Sets.newHashSet(TargetInfoUpdateEvent.class, - TargetCreatedEvent.class, TargetDeletedEvent.class, RolloutChangeEvent.class, RolloutGroupChangeEvent.class, - TargetTagCreatedBulkEvent.class, DistributionSetTagCreatedBulkEvent.class); + private final EventProvider eventProvider; /** * Constructor. @@ -88,9 +78,10 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { * back-end */ public DelayedEventBusPushStrategy(final SessionEventBus eventBus, - final com.google.common.eventbus.EventBus systemEventBus) { + final com.google.common.eventbus.EventBus systemEventBus, final EventProvider eventProvider) { this.eventBus = eventBus; this.systemEventBus = systemEventBus; + this.eventProvider = eventProvider; } /** @@ -105,12 +96,22 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { @AllowConcurrentEvents public void dispatch(final org.eclipse.hawkbit.eventbus.event.Event event) { // to dispatch too many events which are not interested on the UI - if (UI_EVENTS.contains(event.getClass()) && !queue.offer(event)) { + if (!isEventProvided(event)) { + LOG.trace("Event is not supported in the UI!!! Dropped event is {}", event); + return; + } + + if (!queue.offer(event)) { LOG.warn("Deque limit is reached, cannot add more events!!! Dropped event is {}", event); return; } } + private boolean isEventProvided(final org.eclipse.hawkbit.eventbus.event.Event event) { + return eventProvider.getSingleEvents().contains(event.getClass()) + || eventProvider.getBulkEvents().contains(event.getClass()); + } + @Override public void init(final UI vaadinUI) { LOG.debug("Initialize delayed event push strategy"); @@ -152,6 +153,9 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { return false; } + private static int addAccess = 0; + private static int startAccess = 0; + private final class DispatchRunnable implements Runnable { private final UI vaadinUI; @@ -206,38 +210,66 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { final SecurityContext oldContext = SecurityContextHolder.getContext(); try { SecurityContextHolder.setContext(userContext); + + // TODO viele kleine access? + addAccess++; + final int endAddAccess = addAccess; + LOG.info("Add Access to runnable{}", addAccess); vaadinUI.access(() -> { + startAccess++; + final int currentAccess = startAccess; + LOG.info("Started Access {}", currentAccess); + final Instant startAcess = Instant.now(); + if (vaadinSession.getState() != State.OPEN) { return; } - fowardEvents(events, userContext); - - // send a list of events, because ui performance issues - publishEventAsList(events, userContext, TargetInfoUpdateEvent.class); - publishEventAsList(events, userContext, TargetCreatedEvent.class); - publishEventAsList(events, userContext, TargetDeletedEvent.class); + fowardSingleEvents(events, userContext); + fowardBulkEvents(events, userContext); + berechneDauer(startAcess, "End Access " + currentAccess); }); + + LOG.info("End add Access to runnable{}", endAddAccess); } finally { SecurityContextHolder.setContext(oldContext); } } - private void publishEventAsList(final List events, - final SecurityContext userContext, final Class eventType) { - final List bulkEvents = events.stream() - .filter(event -> DelayedEventBusPushStrategy.this.eventSecurityCheck(userContext, event) - && eventType.isInstance(event)) - .collect(Collectors.toList()); - if (bulkEvents.isEmpty()) { - return; - } - eventBus.publish(vaadinUI, bulkEvents); + private void berechneDauer(final Instant start, final String methode) { + final Instant end = Instant.now(); + final long second = end.getEpochSecond() - start.getEpochSecond(); + LOG.info("Dauer {} {} sekunden.", methode, second); } - private void fowardEvents(final List events, + private void fowardBulkEvents(final List events, final SecurityContext userContext) { - events.stream().filter(event -> DelayedEventBusPushStrategy.this.eventSecurityCheck(userContext, event)) - .forEach(event -> eventBus.publish(vaadinUI, event)); + final Set> filterBulkEvenTypes = events.stream().map(Event::getClass) + .filter(eventClass -> eventProvider.getBulkEvents().contains(eventClass)) + .collect(Collectors.toSet()); + publishBulkEvent(events, userContext, filterBulkEvenTypes); + } + + private void publishBulkEvent(final List events, + final SecurityContext userContext, final Set> filterBulkEvenTypes) { + for (final Class bulkType : filterBulkEvenTypes) { + final List listBulkEvents = events.stream() + .filter(event -> DelayedEventBusPushStrategy.this.eventSecurityCheck(userContext, event) + && bulkType.isInstance(event)) + .collect(Collectors.toList()); + if (!listBulkEvents.isEmpty()) { + LOG.info("Publish bulk event"); + eventBus.publish(vaadinUI, listBulkEvents); + } + } + } + + private void fowardSingleEvents(final List events, + final SecurityContext userContext) { + events.stream().filter(event -> DelayedEventBusPushStrategy.this.eventSecurityCheck(userContext, event) + && eventProvider.getSingleEvents().contains(event.getClass())).forEach(event -> { + LOG.info("Publish single event"); + eventBus.publish(vaadinUI, event); + }); } } From 9ff0f008225cfaab9092db2cb2ab89c7a3471826 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 23 Mar 2016 16:12:56 +0100 Subject: [PATCH 06/63] Remove REST API boilerplate Was used in the past for Swagger generation. --- MIGRATION.md | 4 + .../CreateStartedRolloutExample.java | 17 +- .../GettingStartedDefaultScenario.java | 25 +- .../resource/api/DistributionSetRestApi.java | 17 +- .../api/DistributionSetTagRestApi.java | 6 +- .../api/DistributionSetTypeRestApi.java | 12 +- .../rest/resource/api/RolloutRestApi.java | 9 +- .../resource/api/SoftwareModuleRestAPI.java | 13 +- .../api/SoftwareModuleTypeRestApi.java | 7 +- .../rest/resource/api/TargetRestApi.java | 16 +- .../rest/resource/api/TargetTagRestApi.java | 6 +- .../rest/resource/model/PagedList.java | 13 +- .../model/action/ActionPagedList.java | 48 --- .../model/action/ActionStatusPagedList.java | 54 ---- .../model/action/ActionStatusRest.java | 3 - .../model/action/ActionStatussRest.java | 277 ------------------ .../model/artifact/ArtifactsRest.java | 273 ----------------- .../DistributionSetPagedList.java | 39 --- .../distributionset/DistributionSetsRest.java | 277 ------------------ .../DistributionSetTypePagedList.java | 40 --- .../DistributionSetTypesRest.java | 274 ----------------- .../rolloutgroup/RolloutGroupPagedList.java | 35 --- .../SoftwareModulePagedList.java | 39 --- .../softwaremodule/SoftwareModulesRest.java | 277 ------------------ .../SoftwareModuleTypePagedList.java | 39 --- .../SoftwareModuleTypeRest.java | 3 - .../SoftwareModuleTypesRest.java | 274 ----------------- ...DistributionSetTagAssigmentResultRest.java | 16 +- .../tag/TargetTagAssigmentResultRest.java | 16 +- .../model/target/TargetPagedList.java | 39 --- .../resource/model/target/TargetsRest.java | 269 ----------------- .../rest/resource/DistributionSetMapper.java | 5 +- .../resource/DistributionSetResource.java | 31 +- .../resource/DistributionSetTagResource.java | 6 +- .../resource/DistributionSetTypeMapper.java | 12 +- .../resource/DistributionSetTypeResource.java | 29 +- .../rest/resource/RestModelMapper.java | 2 +- .../rest/resource/RolloutResource.java | 15 +- .../rest/resource/SoftwareModuleMapper.java | 13 +- .../rest/resource/SoftwareModuleResource.java | 12 +- .../resource/SoftwareModuleTypeMapper.java | 5 +- .../resource/SoftwareModuleTypeResource.java | 11 +- .../hawkbit/rest/resource/TargetMapper.java | 22 +- .../hawkbit/rest/resource/TargetResource.java | 24 +- .../rest/resource/TargetTagResource.java | 6 +- 45 files changed, 177 insertions(+), 2453 deletions(-) delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionPagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusPagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatussRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/artifact/ArtifactsRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetPagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetsRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypePagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypesRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rolloutgroup/RolloutGroupPagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulePagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulesRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypePagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypesRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetPagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetsRest.java 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/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..e92f81326 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; @@ -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..d17048dea 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; @@ -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-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java index 05d377950..f7e7a35b7 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java @@ -14,16 +14,15 @@ import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; -import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetPagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; -import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetsRest; import org.eclipse.hawkbit.rest.resource.model.distributionset.TargetAssignmentRequestBody; import org.eclipse.hawkbit.rest.resource.model.distributionset.TargetAssignmentResponseBody; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleAssigmentRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulePagedList; -import org.eclipse.hawkbit.rest.resource.model.target.TargetPagedList; +import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest; +import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -58,7 +57,7 @@ public interface DistributionSetRestApi { * JsonResponseExceptionHandler is handling the response. */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getDistributionSets( + public ResponseEntity> getDistributionSets( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -93,7 +92,7 @@ public interface DistributionSetRestApi { */ @RequestMapping(method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createDistributionSets( + public ResponseEntity> createDistributionSets( @RequestBody final List sets); /** @@ -148,7 +147,7 @@ public interface DistributionSetRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{distributionSetId}/assignedTargets", produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getAssignedTargets( + public ResponseEntity> getAssignedTargets( @PathVariable("distributionSetId") final Long distributionSetId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @@ -179,7 +178,7 @@ public interface DistributionSetRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{distributionSetId}/installedTargets", produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getInstalledTargets( + public ResponseEntity> getInstalledTargets( @PathVariable("distributionSetId") final Long distributionSetId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @@ -357,7 +356,7 @@ public interface DistributionSetRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{distributionSetId}/assignedSM", produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getAssignedSoftwareModules( + public ResponseEntity> getAssignedSoftwareModules( @PathVariable("distributionSetId") final Long distributionSetId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java index d99368dc2..d86b90d6a 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java @@ -11,7 +11,7 @@ package org.eclipse.hawkbit.rest.resource.api; import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; -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.tag.AssignedDistributionSetRequestBody; import org.eclipse.hawkbit.rest.resource.model.tag.DistributionSetTagAssigmentResultRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; @@ -137,7 +137,7 @@ public interface DistributionSetTagRestApi { * exists. */ @RequestMapping(method = RequestMethod.GET, value = RestConstants.DISTRIBUTIONSET_REQUEST_MAPPING) - public ResponseEntity getAssignedDistributionSets( + public ResponseEntity> getAssignedDistributionSets( @PathVariable("distributionsetTagId") final Long distributionsetTagId); /** @@ -175,7 +175,7 @@ public interface DistributionSetTagRestApi { * exists. */ @RequestMapping(method = RequestMethod.POST, value = RestConstants.DISTRIBUTIONSET_REQUEST_MAPPING) - public ResponseEntity assignDistributionSets( + public ResponseEntity> assignDistributionSets( @PathVariable("distributionsetTagId") final Long distributionsetTagId, @RequestBody final List assignedDSRequestBodies); diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTypeRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTypeRestApi.java index 9bed7f4f8..1900d8d7d 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTypeRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTypeRestApi.java @@ -12,13 +12,11 @@ import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; import org.eclipse.hawkbit.rest.resource.model.IdRest; -import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypePagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRest; -import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypesRest; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -57,7 +55,7 @@ public interface DistributionSetTypeRestApi { * response. */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getDistributionSetTypes( + public ResponseEntity> getDistributionSetTypes( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -119,7 +117,7 @@ public interface DistributionSetTypeRestApi { */ @RequestMapping(method = RequestMethod.POST, consumes = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createDistributionSetTypes( + public ResponseEntity> createDistributionSetTypes( @RequestBody final List distributionSetTypes); /** @@ -133,7 +131,7 @@ public interface DistributionSetTypeRestApi { @RequestMapping(method = RequestMethod.GET, value = "/{distributionSetTypeId}/" + RestConstants.DISTRIBUTIONSETTYPE_V1_MANDATORY_MODULE_TYPES, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getMandatoryModules( + public ResponseEntity> getMandatoryModules( @PathVariable("distributionSetTypeId") final Long distributionSetTypeId); /** @@ -181,7 +179,7 @@ public interface DistributionSetTypeRestApi { @RequestMapping(method = RequestMethod.GET, value = "/{distributionSetTypeId}/" + RestConstants.DISTRIBUTIONSETTYPE_V1_OPTIONAL_MODULE_TYPES, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getOptionalModules( + public ResponseEntity> getOptionalModules( @PathVariable("distributionSetTypeId") final Long distributionSetTypeId); /** diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java index fe1c7caa5..5fcfd3b56 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java @@ -9,12 +9,12 @@ package org.eclipse.hawkbit.rest.resource.api; import org.eclipse.hawkbit.rest.resource.RestConstants; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutPagedList; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutResponseBody; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutRestRequestBody; -import org.eclipse.hawkbit.rest.resource.model.rolloutgroup.RolloutGroupPagedList; import org.eclipse.hawkbit.rest.resource.model.rolloutgroup.RolloutGroupResponseBody; -import org.eclipse.hawkbit.rest.resource.model.target.TargetPagedList; +import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -154,7 +154,8 @@ public interface RolloutRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{rolloutId}/deploygroups", produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getRolloutGroups(@PathVariable("rolloutId") final Long rolloutId, + public ResponseEntity> getRolloutGroups( + @PathVariable("rolloutId") final Long rolloutId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -200,7 +201,7 @@ public interface RolloutRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{rolloutId}/deploygroups/{groupId}/targets", produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getRolloutGroupTargets(@PathVariable("rolloutId") final Long rolloutId, + public ResponseEntity> getRolloutGroupTargets(@PathVariable("rolloutId") final Long rolloutId, @PathVariable("groupId") final Long groupId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java index 0662c43ba..b68ea6086 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java @@ -13,13 +13,11 @@ import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactRest; -import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactsRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulePagedList; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulesRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -79,7 +77,8 @@ public interface SoftwareModuleRestAPI { @RequestMapping(method = RequestMethod.GET, value = "/{softwareModuleId}/artifacts", produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) @ResponseBody - public ResponseEntity getArtifacts(@PathVariable("softwareModuleId") final Long softwareModuleId); + public ResponseEntity> getArtifacts( + @PathVariable("softwareModuleId") final Long softwareModuleId); /** * Handles the GET request of retrieving a single Artifact meta data @@ -134,7 +133,7 @@ public interface SoftwareModuleRestAPI { * JsonResponseExceptionHandler is handling the response. */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getSoftwareModules( + public ResponseEntity> getSoftwareModules( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -168,7 +167,7 @@ public interface SoftwareModuleRestAPI { */ @RequestMapping(method = RequestMethod.POST, consumes = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createSoftwareModules( + public ResponseEntity> createSoftwareModules( @RequestBody final List softwareModules); /** @@ -187,7 +186,7 @@ public interface SoftwareModuleRestAPI { @RequestBody final SoftwareModuleRequestBodyPut restSoftwareModule); /** - * Handles the DELETE request for a single softwaremodule. + * Handles the DELETE request for a single software module. * * @param softwareModuleId * the ID of the module to retrieve diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleTypeRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleTypeRestApi.java index 0c4756a04..a98e35a32 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleTypeRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleTypeRestApi.java @@ -11,11 +11,10 @@ package org.eclipse.hawkbit.rest.resource.api; import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypePagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -52,7 +51,7 @@ public interface SoftwareModuleTypeRestApi { * JsonResponseExceptionHandler is handling the response. */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getTypes( + public ResponseEntity> getTypes( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -113,7 +112,7 @@ public interface SoftwareModuleTypeRestApi { */ @RequestMapping(method = RequestMethod.POST, consumes = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createSoftwareModuleTypes( + public ResponseEntity> createSoftwareModuleTypes( @RequestBody final List softwareModuleTypes); } diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetRestApi.java index 9d63a520f..48e242f81 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetRestApi.java @@ -11,16 +11,14 @@ package org.eclipse.hawkbit.rest.resource.api; import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; -import org.eclipse.hawkbit.rest.resource.model.action.ActionPagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.action.ActionRest; -import org.eclipse.hawkbit.rest.resource.model.action.ActionStatusPagedList; +import org.eclipse.hawkbit.rest.resource.model.action.ActionStatusRest; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; import org.eclipse.hawkbit.rest.resource.model.target.DistributionSetAssigmentRest; import org.eclipse.hawkbit.rest.resource.model.target.TargetAttributes; -import org.eclipse.hawkbit.rest.resource.model.target.TargetPagedList; import org.eclipse.hawkbit.rest.resource.model.target.TargetRequestBody; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; -import org.eclipse.hawkbit.rest.resource.model.target.TargetsRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -70,7 +68,7 @@ public interface TargetRestApi { */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getTargets( + public ResponseEntity> getTargets( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -89,7 +87,7 @@ public interface TargetRestApi { */ @RequestMapping(method = RequestMethod.POST, consumes = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createTargets(@RequestBody final List targets); + public ResponseEntity> createTargets(@RequestBody final List targets); /** * Handles the PUT request of updating a target. The ID is within the URL @@ -160,7 +158,7 @@ public interface TargetRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{targetId}/actions", produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getActionHistory(@PathVariable("targetId") final String targetId, + public ResponseEntity> getActionHistory(@PathVariable("targetId") final String targetId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -225,8 +223,8 @@ public interface TargetRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{targetId}/actions/{actionId}/status", produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getActionStatusList(@PathVariable("targetId") final String targetId, - @PathVariable("actionId") final Long actionId, + public ResponseEntity> getActionStatusList( + @PathVariable("targetId") final String targetId, @PathVariable("actionId") final Long actionId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam); diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java index 59770db08..ac82fbd5c 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; import org.eclipse.hawkbit.rest.resource.model.tag.TargetTagAssigmentResultRest; -import org.eclipse.hawkbit.rest.resource.model.target.TargetsRest; +import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -129,7 +129,7 @@ public interface TargetTagRestApi { * in case the given {@code targetTagId} doesn't exists. */ @RequestMapping(method = RequestMethod.GET, value = RestConstants.TARGET_TAG_TAGERTS_REQUEST_MAPPING) - public ResponseEntity getAssignedTargets(@PathVariable("targetTagId") final Long targetTagId); + public ResponseEntity> getAssignedTargets(@PathVariable("targetTagId") final Long targetTagId); /** * Handles the POST request to toggle the assignment of targets by the given @@ -163,7 +163,7 @@ public interface TargetTagRestApi { * in case the given {@code targetTagId} doesn't exists. */ @RequestMapping(method = RequestMethod.POST, value = RestConstants.TARGET_TAG_TAGERTS_REQUEST_MAPPING) - public ResponseEntity assignTargets(@PathVariable("targetTagId") final Long targetTagId, + public ResponseEntity> assignTargets(@PathVariable("targetTagId") final Long targetTagId, @RequestBody final List assignedTargetRequestBodies); /** diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java index 082015b5c..880ee0c16 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java @@ -20,19 +20,18 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; /** * A list representation with meta data for pagination, e.g. containing the - * total elements. The content of the acutal list is stored in the - * {@link #content} field. + * total elements and size of content. The content of the actual list is stored + * in the {@link #content} field. * * @param * the type of elements in this list * - * - * */ @JsonIgnoreProperties(ignoreUnknown = true) @JsonInclude(Include.NON_NULL) public class PagedList extends ResourceSupport { + private final List content; private final long totalElements; private final int size; @@ -50,6 +49,7 @@ public class PagedList extends ResourceSupport { public PagedList(@NotNull final List content, final long total) { this.size = content.size(); this.totalElements = total; + this.content = content; } /** @@ -65,4 +65,9 @@ public class PagedList extends ResourceSupport { public long getTotal() { return totalElements; } + + public List getContent() { + return content; + } + } diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionPagedList.java deleted file mode 100644 index 27b36779a..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionPagedList.java +++ /dev/null @@ -1,48 +0,0 @@ -/** - * 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.rest.resource.model.action; - -import java.util.Collections; -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list rest model for {@link ErrorAction} to RESTful API representation. - * - */ -public class ActionPagedList extends PagedList { - - private final List content; - - /** - * Empty default constructor. - */ - public ActionPagedList() { - super(Collections.emptyList(), 0); - this.content = Collections.emptyList(); - } - - /** - * @param content - * @param total - */ - public ActionPagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusPagedList.java deleted file mode 100644 index d9f19b98e..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusPagedList.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * 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.rest.resource.model.action; - -import java.util.Collections; -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -/** - * Paged list rest model for ActionStatus to RESTful API representation. - * - * - * - * - */ -@JsonIgnoreProperties(ignoreUnknown = true) -public class ActionStatusPagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - public ActionStatusPagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * Default constructor. - */ - public ActionStatusPagedList() { - super(Collections.emptyList(), 0); - this.content = Collections.emptyList(); - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusRest.java index 1f08afe49..e5af39bac 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusRest.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatusRest.java @@ -18,9 +18,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; /** * A json annotated rest model for ActionStatus to RESTful API representation. * - * - * - * */ @JsonInclude(Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatussRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatussRest.java deleted file mode 100644 index b3f3207b4..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionStatussRest.java +++ /dev/null @@ -1,277 +0,0 @@ -/** - * 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.rest.resource.model.action; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * A list representation of the ActionStatus because Spring MVC cannot handle - * plain lists interfaces as request body. - * - * - * - * - */ -public class ActionStatussRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final ActionStatusRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public ActionStatusRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public ActionStatusRest set(final int index, final ActionStatusRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final ActionStatusRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public ActionStatusRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/artifact/ArtifactsRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/artifact/ArtifactsRest.java deleted file mode 100644 index 172e4d315..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/artifact/ArtifactsRest.java +++ /dev/null @@ -1,273 +0,0 @@ -/** - * 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.rest.resource.model.artifact; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * List representation of the {@link ArtifactRest}. - * - */ -public class ArtifactsRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final ArtifactRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public ArtifactRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public ArtifactRest set(final int index, final ArtifactRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final ArtifactRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public ArtifactRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetPagedList.java deleted file mode 100644 index b7ad1eddb..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetPagedList.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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.rest.resource.model.distributionset; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list for SoftwareModule. - * - */ -public class DistributionSetPagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - public DistributionSetPagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetsRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetsRest.java deleted file mode 100644 index ce7b4d1f1..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionset/DistributionSetsRest.java +++ /dev/null @@ -1,277 +0,0 @@ -/** - * 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.rest.resource.model.distributionset; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * List representation of the {@link DistributionSetRest} because Spring MVC - * cannot handle plain lists interfaces as request body. - * - * - * - * - */ -public class DistributionSetsRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final DistributionSetRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public DistributionSetRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public DistributionSetRest set(final int index, final DistributionSetRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final DistributionSetRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public DistributionSetRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypePagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypePagedList.java deleted file mode 100644 index 57b15f5e8..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypePagedList.java +++ /dev/null @@ -1,40 +0,0 @@ -/** - * 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.rest.resource.model.distributionsettype; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list for DistributionSetType. - * - * - */ -public class DistributionSetTypePagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - public DistributionSetTypePagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypesRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypesRest.java deleted file mode 100644 index f3cd42a85..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/distributionsettype/DistributionSetTypesRest.java +++ /dev/null @@ -1,274 +0,0 @@ -/** - * 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.rest.resource.model.distributionsettype; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * List representation of the {@link DistributionSetTypeRest} because Spring MVC - * cannot handle plain lists interfaces as request body. - * - */ -public class DistributionSetTypesRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final DistributionSetTypeRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public DistributionSetTypeRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public DistributionSetTypeRest set(final int index, final DistributionSetTypeRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final DistributionSetTypeRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public DistributionSetTypeRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rolloutgroup/RolloutGroupPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rolloutgroup/RolloutGroupPagedList.java deleted file mode 100644 index a341ac6ba..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rolloutgroup/RolloutGroupPagedList.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 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.rest.resource.model.rolloutgroup; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list for Rollout. - * - */ -public class RolloutGroupPagedList extends PagedList { - - private final List content; - - public RolloutGroupPagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulePagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulePagedList.java deleted file mode 100644 index a49f41dc9..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulePagedList.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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.rest.resource.model.softwaremodule; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list for SoftwareModule. - * - */ -public class SoftwareModulePagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - public SoftwareModulePagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulesRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulesRest.java deleted file mode 100644 index b40c98d36..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremodule/SoftwareModulesRest.java +++ /dev/null @@ -1,277 +0,0 @@ -/** - * 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.rest.resource.model.softwaremodule; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * List representation of the {@link SoftwareModuleRest} because Spring MVC - * cannot handle plain lists interfaces as request body. - * - * - * - * - */ -public class SoftwareModulesRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final SoftwareModuleRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public SoftwareModuleRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public SoftwareModuleRest set(final int index, final SoftwareModuleRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final SoftwareModuleRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public SoftwareModuleRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypePagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypePagedList.java deleted file mode 100644 index 7e85cdca9..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypePagedList.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * 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.rest.resource.model.softwaremoduletype; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list for SoftwareModuleType. - * - */ -public class SoftwareModuleTypePagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - public SoftwareModuleTypePagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypeRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypeRest.java index 6478eb790..ed05c1ee4 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypeRest.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypeRest.java @@ -19,9 +19,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; * A json annotated rest model for SoftwareModuleType to RESTful API * representation. * - * - * - * */ @JsonInclude(Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypesRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypesRest.java deleted file mode 100644 index 91f440187..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/softwaremoduletype/SoftwareModuleTypesRest.java +++ /dev/null @@ -1,274 +0,0 @@ -/** - * 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.rest.resource.model.softwaremoduletype; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * List representation of the {@link SoftwareModuleTypeRest} because Spring MVC - * cannot handle plain lists interfaces as request body. - * - */ -public class SoftwareModuleTypesRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final SoftwareModuleTypeRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public SoftwareModuleTypeRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public SoftwareModuleTypeRest set(final int index, final SoftwareModuleTypeRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final SoftwareModuleTypeRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public SoftwareModuleTypeRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/DistributionSetTagAssigmentResultRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/DistributionSetTagAssigmentResultRest.java index 1d0b51e72..2078fe891 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/DistributionSetTagAssigmentResultRest.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/DistributionSetTagAssigmentResultRest.java @@ -8,7 +8,9 @@ */ package org.eclipse.hawkbit.rest.resource.model.tag; -import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetsRest; +import java.util.List; + +import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; @@ -25,24 +27,24 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class DistributionSetTagAssigmentResultRest { @JsonProperty - private DistributionSetsRest assignedDistributionSets; + private List assignedDistributionSets; @JsonProperty - private DistributionSetsRest unassignedDistributionSets; + private List unassignedDistributionSets; - public DistributionSetsRest getAssignedDistributionSets() { + public List getAssignedDistributionSets() { return assignedDistributionSets; } - public DistributionSetsRest getUnassignedDistributionSets() { + public List getUnassignedDistributionSets() { return unassignedDistributionSets; } - public void setAssignedDistributionSets(final DistributionSetsRest assignedDistributionSets) { + public void setAssignedDistributionSets(final List assignedDistributionSets) { this.assignedDistributionSets = assignedDistributionSets; } - public void setUnassignedDistributionSets(final DistributionSetsRest unassignedDistributionSets) { + public void setUnassignedDistributionSets(final List unassignedDistributionSets) { this.unassignedDistributionSets = unassignedDistributionSets; } diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TargetTagAssigmentResultRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TargetTagAssigmentResultRest.java index 928a72460..30d47cc90 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TargetTagAssigmentResultRest.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TargetTagAssigmentResultRest.java @@ -8,7 +8,9 @@ */ package org.eclipse.hawkbit.rest.resource.model.tag; -import org.eclipse.hawkbit.rest.resource.model.target.TargetsRest; +import java.util.List; + +import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; @@ -25,24 +27,24 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class TargetTagAssigmentResultRest { @JsonProperty - private TargetsRest assignedTargets; + private List assignedTargets; @JsonProperty - private TargetsRest unassignedTargets; + private List unassignedTargets; - public void setAssignedTargets(final TargetsRest assignedTargets) { + public void setAssignedTargets(final List assignedTargets) { this.assignedTargets = assignedTargets; } - public TargetsRest getAssignedTargets() { + public List getAssignedTargets() { return assignedTargets; } - public void setUnassignedTargets(final TargetsRest unassignedTargets) { + public void setUnassignedTargets(final List unassignedTargets) { this.unassignedTargets = unassignedTargets; } - public TargetsRest getUnassignedTargets() { + public List getUnassignedTargets() { return unassignedTargets; } diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetPagedList.java deleted file mode 100644 index d7bb5ccca..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetPagedList.java +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (c) 2011-2015 Bosch Software Innovations GmbH, Germany. All rights reserved. - */ -package org.eclipse.hawkbit.rest.resource.model.target; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Paged list for targets. - * - */ -public class TargetPagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - @JsonCreator - public TargetPagedList(@JsonProperty("content") final List content, - @JsonProperty("total") final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetsRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetsRest.java deleted file mode 100644 index 6344ee93b..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/target/TargetsRest.java +++ /dev/null @@ -1,269 +0,0 @@ -/** - * Copyright (c) 2011-2015 Bosch Software Innovations GmbH, Germany. All rights reserved. - */ -package org.eclipse.hawkbit.rest.resource.model.target; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * A list representation of the {@link TargetRest} because Spring MVC cannot - * handle plain lists interfaces as request body. - * - */ -public class TargetsRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final TargetRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public TargetRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public TargetRest set(final int index, final TargetRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final TargetRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public TargetRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetMapper.java index 9ae133dd5..8051146a1 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetMapper.java @@ -27,7 +27,6 @@ import org.eclipse.hawkbit.rest.resource.api.DistributionSetTypeRestApi; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; -import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetsRest; import org.eclipse.hawkbit.rest.resource.model.distributionset.TargetAssignmentResponseBody; /** @@ -193,8 +192,8 @@ public final class DistributionSetMapper { return result; } - static DistributionSetsRest toResponseDistributionSets(final Iterable sets) { - final DistributionSetsRest response = new DistributionSetsRest(); + static List toResponseDistributionSets(final Iterable sets) { + final List response = new ArrayList<>(); if (sets != null) { for (final DistributionSet set : sets) { diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java index a4c71378d..4d5f47612 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java @@ -34,16 +34,15 @@ import org.eclipse.hawkbit.rest.resource.api.DistributionSetRestApi; import org.eclipse.hawkbit.rest.resource.helper.RestResourceConversionHelper; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; -import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetPagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; -import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetsRest; import org.eclipse.hawkbit.rest.resource.model.distributionset.TargetAssignmentRequestBody; import org.eclipse.hawkbit.rest.resource.model.distributionset.TargetAssignmentResponseBody; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleAssigmentRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulePagedList; -import org.eclipse.hawkbit.rest.resource.model.target.TargetPagedList; +import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest; +import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.eclipse.hawkbit.tenancy.TenantAware; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -81,7 +80,7 @@ public class DistributionSetResource implements DistributionSetRestApi { private DistributionSetManagement distributionSetManagement; @Override - public ResponseEntity getDistributionSets(final int pagingOffsetParam, + public ResponseEntity> getDistributionSets(final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); @@ -98,7 +97,7 @@ public class DistributionSetResource implements DistributionSetRestApi { } final List rest = DistributionSetMapper.toResponseFromDsList(findDsPage.getContent()); - return new ResponseEntity<>(new DistributionSetPagedList(rest, findDsPage.getTotalElements()), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, findDsPage.getTotalElements()), HttpStatus.OK); } @Override @@ -109,7 +108,7 @@ public class DistributionSetResource implements DistributionSetRestApi { } @Override - public ResponseEntity createDistributionSets( + public ResponseEntity> createDistributionSets( final List sets) { LOG.debug("creating {} distribution sets", sets.size()); @@ -155,8 +154,8 @@ public class DistributionSetResource implements DistributionSetRestApi { } @Override - public ResponseEntity getAssignedTargets(final Long distributionSetId, final int pagingOffsetParam, - final int pagingLimitParam, final String sortParam, final String rsqlParam) { + public ResponseEntity> getAssignedTargets(final Long distributionSetId, + final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { // check if distribution set exists otherwise throw exception // immediately @@ -175,12 +174,12 @@ public class DistributionSetResource implements DistributionSetRestApi { targetsAssignedDS = this.targetManagement.findTargetByAssignedDistributionSet(distributionSetId, pageable); } - return new ResponseEntity<>(new TargetPagedList(TargetMapper.toResponse(targetsAssignedDS.getContent()), + return new ResponseEntity<>(new PagedList<>(TargetMapper.toResponse(targetsAssignedDS.getContent()), targetsAssignedDS.getTotalElements()), HttpStatus.OK); } @Override - public ResponseEntity getInstalledTargets(final Long distributionSetId, + public ResponseEntity> getInstalledTargets(final Long distributionSetId, final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { // check if distribution set exists otherwise throw exception // immediately @@ -200,7 +199,7 @@ public class DistributionSetResource implements DistributionSetRestApi { pageable); } - return new ResponseEntity<>(new TargetPagedList(TargetMapper.toResponse(targetsInstalledDS.getContent()), + return new ResponseEntity<>(new PagedList(TargetMapper.toResponse(targetsInstalledDS.getContent()), targetsInstalledDS.getTotalElements()), HttpStatus.OK); } @@ -323,7 +322,7 @@ public class DistributionSetResource implements DistributionSetRestApi { } @Override - public ResponseEntity getAssignedSoftwareModules(final Long distributionSetId, + public ResponseEntity> getAssignedSoftwareModules(final Long distributionSetId, final int pagingOffsetParam, final int pagingLimitParam, final String sortParam) { // check if distribution set exists otherwise throw exception // immediately @@ -334,10 +333,8 @@ public class DistributionSetResource implements DistributionSetRestApi { final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting); final Page softwaremodules = this.softwareManagement.findSoftwareModuleByAssignedTo(pageable, foundDs); - return new ResponseEntity<>( - new SoftwareModulePagedList(SoftwareModuleMapper.toResponse(softwaremodules.getContent()), - softwaremodules.getTotalElements()), - HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(SoftwareModuleMapper.toResponse(softwaremodules.getContent()), + softwaremodules.getTotalElements()), HttpStatus.OK); } private DistributionSet findDistributionSetWithExceptionIfNotFound(final Long distributionSetId) { diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java index c395863ab..63b864758 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java @@ -20,7 +20,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag; import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetTagRestApi; -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.tag.AssignedDistributionSetRequestBody; import org.eclipse.hawkbit.rest.resource.model.tag.DistributionSetTagAssigmentResultRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; @@ -121,7 +121,7 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { } @Override - public ResponseEntity getAssignedDistributionSets(final Long distributionsetTagId) { + public ResponseEntity> getAssignedDistributionSets(final Long distributionsetTagId) { final DistributionSetTag tag = findDistributionTagById(distributionsetTagId); return new ResponseEntity<>( DistributionSetMapper.toResponseDistributionSets(tag.getAssignedToDistributionSet()), HttpStatus.OK); @@ -151,7 +151,7 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { } @Override - public ResponseEntity assignDistributionSets(final Long distributionsetTagId, + public ResponseEntity> assignDistributionSets(final Long distributionsetTagId, final List assignedDSRequestBodies) { LOG.debug("Assign DistributionSet {} for ds tag {}", assignedDSRequestBodies.size(), distributionsetTagId); final DistributionSetTag tag = findDistributionTagById(distributionsetTagId); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeMapper.java index b32302705..409caf01d 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeMapper.java @@ -21,15 +21,11 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.rest.resource.api.DistributionSetTypeRestApi; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRest; -import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypesRest; /** * A mapper which maps repository model to RESTful model representation and * back. * - * - * - * */ final class DistributionSetTypeMapper { @@ -63,7 +59,7 @@ final class DistributionSetTypeMapper { } return smType; - }).forEach(softmType -> result.addMandatoryModuleType(softmType)); + }).forEach(result::addMandatoryModuleType); // Add optional smsRest.getOptionalmodules().stream().map(opt -> { @@ -74,13 +70,13 @@ final class DistributionSetTypeMapper { } return smType; - }).forEach(softmType -> result.addOptionalModuleType(softmType)); + }).forEach(result::addOptionalModuleType); return result; } - static DistributionSetTypesRest toTypesResponse(final List types) { - final DistributionSetTypesRest response = new DistributionSetTypesRest(); + static List toTypesResponse(final List types) { + final List response = new ArrayList<>(); for (final DistributionSetType dsType : types) { response.add(toResponse(dsType)); } diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeResource.java index a5c8544fb..f7346a6ff 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTypeResource.java @@ -21,13 +21,11 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetTypeRestApi; import org.eclipse.hawkbit.rest.resource.model.IdRest; -import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypePagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypeRest; -import org.eclipse.hawkbit.rest.resource.model.distributionsettype.DistributionSetTypesRest; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -56,7 +54,7 @@ public class DistributionSetTypeResource implements DistributionSetTypeRestApi { private DistributionSetManagement distributionSetManagement; @Override - public ResponseEntity getDistributionSetTypes( + public ResponseEntity> getDistributionSetTypes( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -81,7 +79,7 @@ public class DistributionSetTypeResource implements DistributionSetTypeRestApi { final List rest = DistributionSetTypeMapper .toListResponse(findModuleTypessAll.getContent()); - return new ResponseEntity<>(new DistributionSetTypePagedList(rest, countModulesAll), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, countModulesAll), HttpStatus.OK); } @Override @@ -119,7 +117,7 @@ public class DistributionSetTypeResource implements DistributionSetTypeRestApi { } @Override - public ResponseEntity createDistributionSetTypes( + public ResponseEntity> createDistributionSetTypes( @RequestBody final List distributionSetTypes) { final List createdSoftwareModules = distributionSetManagement.createDistributionSetTypes( @@ -139,14 +137,12 @@ public class DistributionSetTypeResource implements DistributionSetTypeRestApi { } @Override - public ResponseEntity getMandatoryModules(@PathVariable final Long distributionSetTypeId) { + public ResponseEntity> getMandatoryModules( + @PathVariable final Long distributionSetTypeId) { final DistributionSetType foundType = findDistributionSetTypeWithExceptionIfNotFound(distributionSetTypeId); - - final SoftwareModuleTypesRest rest = new SoftwareModuleTypesRest(); - - rest.addAll(SoftwareModuleTypeMapper.toListResponse(foundType.getMandatoryModuleTypes())); - return new ResponseEntity<>(rest, HttpStatus.OK); + return new ResponseEntity<>(SoftwareModuleTypeMapper.toListResponse(foundType.getMandatoryModuleTypes()), + HttpStatus.OK); } @Override @@ -182,14 +178,13 @@ public class DistributionSetTypeResource implements DistributionSetTypeRestApi { } @Override - public ResponseEntity getOptionalModules(@PathVariable final Long distributionSetTypeId) { + public ResponseEntity> getOptionalModules( + @PathVariable final Long distributionSetTypeId) { final DistributionSetType foundType = findDistributionSetTypeWithExceptionIfNotFound(distributionSetTypeId); - final SoftwareModuleTypesRest rest = new SoftwareModuleTypesRest(); - - rest.addAll(SoftwareModuleTypeMapper.toListResponse(foundType.getOptionalModuleTypes())); - return new ResponseEntity<>(rest, HttpStatus.OK); + return new ResponseEntity<>(SoftwareModuleTypeMapper.toListResponse(foundType.getOptionalModuleTypes()), + HttpStatus.OK); } @Override diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java index 24f717004..9616d0e86 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RestModelMapper.java @@ -8,8 +8,8 @@ */ package org.eclipse.hawkbit.rest.resource; -import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; import org.eclipse.hawkbit.repository.model.NamedEntity; +import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; import org.eclipse.hawkbit.rest.resource.model.BaseEntityRest; import org.eclipse.hawkbit.rest.resource.model.NamedEntityRest; diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java index e00d07191..2267cb836 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java @@ -28,12 +28,11 @@ import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupSuccessCond import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.RolloutRestApi; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutPagedList; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutResponseBody; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutRestRequestBody; -import org.eclipse.hawkbit.rest.resource.model.rolloutgroup.RolloutGroupPagedList; import org.eclipse.hawkbit.rest.resource.model.rolloutgroup.RolloutGroupResponseBody; -import org.eclipse.hawkbit.rest.resource.model.target.TargetPagedList; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -168,8 +167,8 @@ public class RolloutResource implements RolloutRestApi { } @Override - public ResponseEntity getRolloutGroups(final Long rolloutId, final int pagingOffsetParam, - final int pagingLimitParam, final String sortParam, final String rsqlParam) { + public ResponseEntity> getRolloutGroups(final Long rolloutId, + final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { final Rollout rollout = findRolloutOrThrowException(rolloutId); final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); @@ -188,8 +187,7 @@ public class RolloutResource implements RolloutRestApi { final List rest = RolloutMapper .toResponseRolloutGroup(findRolloutGroupsAll.getContent()); - return new ResponseEntity<>(new RolloutGroupPagedList(rest, findRolloutGroupsAll.getTotalElements()), - HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, findRolloutGroupsAll.getTotalElements()), HttpStatus.OK); } @Override @@ -200,7 +198,7 @@ public class RolloutResource implements RolloutRestApi { } @Override - public ResponseEntity getRolloutGroupTargets(final Long rolloutId, final Long groupId, + public ResponseEntity> getRolloutGroupTargets(final Long rolloutId, final Long groupId, final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { findRolloutOrThrowException(rolloutId); final RolloutGroup rolloutGroup = findRolloutGroupOrThrowException(groupId); @@ -222,7 +220,8 @@ public class RolloutResource implements RolloutRestApi { rolloutGroupTargets = pageTargets; } final List rest = TargetMapper.toResponse(rolloutGroupTargets.getContent()); - return new ResponseEntity<>(new TargetPagedList(rest, rolloutGroupTargets.getTotalElements()), HttpStatus.OK); + return new ResponseEntity<>(new PagedList(rest, rolloutGroupTargets.getTotalElements()), + HttpStatus.OK); } private Rollout findRolloutOrThrowException(final Long rolloutId) { diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleMapper.java index 1a3ce603f..01dfae9cd 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleMapper.java @@ -26,18 +26,13 @@ import org.eclipse.hawkbit.rest.resource.api.SoftwareModuleTypeRestApi; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactHash; import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactRest; -import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactsRest; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulesRest; /** * A mapper which maps repository model to RESTful model representation and * back. * - * - * - * */ public final class SoftwareModuleMapper { private SoftwareModuleMapper() { @@ -102,8 +97,8 @@ public final class SoftwareModuleMapper { return mappedList; } - static SoftwareModulesRest toResponseSoftwareModules(final Iterable softwareModules) { - final SoftwareModulesRest response = new SoftwareModulesRest(); + static List toResponseSoftwareModules(final Iterable softwareModules) { + final List response = new ArrayList<>(); for (final SoftwareModule softwareModule : softwareModules) { response.add(toResponse(softwareModule)); } @@ -192,8 +187,8 @@ public final class SoftwareModuleMapper { return artifactRest; } - static ArtifactsRest artifactsToResponse(final List artifacts) { - final ArtifactsRest mappedList = new ArtifactsRest(); + static List artifactsToResponse(final List artifacts) { + final List mappedList = new ArrayList<>(); if (artifacts != null) { for (final Artifact artifact : artifacts) { diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java index dfbac1a6f..e165fca20 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java @@ -24,13 +24,11 @@ import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.SoftwareModuleRestAPI; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactRest; -import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactsRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulePagedList; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModulesRest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -93,7 +91,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { } @Override - public ResponseEntity getArtifacts(@PathVariable final Long softwareModuleId) { + public ResponseEntity> getArtifacts(@PathVariable final Long softwareModuleId) { final SoftwareModule module = findSoftwareModuleWithExceptionIfNotFound(softwareModuleId, null); return new ResponseEntity<>(SoftwareModuleMapper.artifactsToResponse(module.getArtifacts()), HttpStatus.OK); @@ -120,7 +118,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { } @Override - public ResponseEntity getSoftwareModules( + public ResponseEntity> getSoftwareModules( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -144,7 +142,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { } final List rest = SoftwareModuleMapper.toResponse(findModulesAll.getContent()); - return new ResponseEntity<>(new SoftwareModulePagedList(rest, countModulesAll), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, countModulesAll), HttpStatus.OK); } @Override @@ -155,7 +153,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { } @Override - public ResponseEntity createSoftwareModules( + public ResponseEntity> createSoftwareModules( @RequestBody final List softwareModules) { LOG.debug("creating {} softwareModules", softwareModules.size()); final Iterable createdSoftwareModules = softwareManagement diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeMapper.java index bd2c5f1c1..b6525948c 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeMapper.java @@ -19,7 +19,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.rest.resource.api.SoftwareModuleTypeRestApi; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest; /** * A mapper which maps repository model to RESTful model representation and @@ -50,8 +49,8 @@ final class SoftwareModuleTypeMapper { smsRest.getMaxAssignments()); } - static SoftwareModuleTypesRest toTypesResponse(final List types) { - final SoftwareModuleTypesRest response = new SoftwareModuleTypesRest(); + static List toTypesResponse(final List types) { + final List response = new ArrayList<>(); for (final SoftwareModuleType softwareModule : types) { response.add(toResponse(softwareModule)); } diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java index 4259dcc90..7dda79690 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java @@ -18,11 +18,10 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.SoftwareModuleTypeRestApi; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypePagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypeRest; -import org.eclipse.hawkbit.rest.resource.model.softwaremoduletype.SoftwareModuleTypesRest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -43,8 +42,8 @@ public class SoftwareModuleTypeResource implements SoftwareModuleTypeRestApi { private SoftwareManagement softwareManagement; @Override - public ResponseEntity getTypes(final int pagingOffsetParam, final int pagingLimitParam, - final String sortParam, final String rsqlParam) { + public ResponseEntity> getTypes(final int pagingOffsetParam, + final int pagingLimitParam, final String sortParam, final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam); @@ -65,7 +64,7 @@ public class SoftwareModuleTypeResource implements SoftwareModuleTypeRestApi { final List rest = SoftwareModuleTypeMapper .toListResponse(findModuleTypessAll.getContent()); - return new ResponseEntity<>(new SoftwareModuleTypePagedList(rest, countModulesAll), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, countModulesAll), HttpStatus.OK); } @Override @@ -99,7 +98,7 @@ public class SoftwareModuleTypeResource implements SoftwareModuleTypeRestApi { } @Override - public ResponseEntity createSoftwareModuleTypes( + public ResponseEntity> createSoftwareModuleTypes( final List softwareModuleTypes) { final List createdSoftwareModules = this.softwareManagement diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java index b6c6c1539..0cb3c72a3 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java @@ -27,18 +27,16 @@ import org.eclipse.hawkbit.rest.resource.api.TargetRestApi; import org.eclipse.hawkbit.rest.resource.model.PollStatusRest; import org.eclipse.hawkbit.rest.resource.model.action.ActionRest; import org.eclipse.hawkbit.rest.resource.model.action.ActionStatusRest; -import org.eclipse.hawkbit.rest.resource.model.action.ActionStatussRest; import org.eclipse.hawkbit.rest.resource.model.action.ActionsRest; import org.eclipse.hawkbit.rest.resource.model.target.TargetRequestBody; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; -import org.eclipse.hawkbit.rest.resource.model.target.TargetsRest; /** * A mapper which maps repository model to RESTful model representation and * back. * */ -final public class TargetMapper { +public final class TargetMapper { private TargetMapper() { // Utility class @@ -64,7 +62,7 @@ final public class TargetMapper { } /** - * Add the pollstatus to a target response. + * Add the poll status to a target response. * * @param target * the target @@ -91,8 +89,8 @@ final public class TargetMapper { * the targets * @return the response */ - public static TargetsRest toResponseWithLinksAndPollStatus(final Iterable targets) { - final TargetsRest mappedList = new TargetsRest(); + public static List toResponseWithLinksAndPollStatus(final Iterable targets) { + final List mappedList = new ArrayList<>(); if (targets != null) { for (final Target target : targets) { final TargetRest response = toResponse(target); @@ -111,8 +109,8 @@ final public class TargetMapper { * list of targets * @return the response */ - public static TargetsRest toResponse(final Iterable targets) { - final TargetsRest mappedList = new TargetsRest(); + public static List toResponse(final Iterable targets) { + final List mappedList = new ArrayList<>(); if (targets != null) { for (final Target target : targets) { final TargetRest response = toResponse(target); @@ -184,12 +182,12 @@ final public class TargetMapper { return target; } - static ActionStatussRest toActionStatusRestResponse(final Action action, final List actionStatus) { - final ActionStatussRest mappedList = new ActionStatussRest(); + static List toActionStatusRestResponse(final List actionStatus) { + final List mappedList = new ArrayList<>(); if (actionStatus != null) { for (final ActionStatus status : actionStatus) { - final ActionStatusRest response = toResponse(action, status); + final ActionStatusRest response = toResponse(status); mappedList.add(response); } } @@ -293,7 +291,7 @@ final public class TargetMapper { return result; } - private static ActionStatusRest toResponse(final Action action, final ActionStatus actionStatus) { + private static ActionStatusRest toResponse(final ActionStatus actionStatus) { final ActionStatusRest result = new ActionStatusRest(); result.setMessages(actionStatus.getMessages()); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java index faa31a7cc..3c79c936c 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java @@ -29,16 +29,14 @@ import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetRestApi; import org.eclipse.hawkbit.rest.resource.api.TargetRestApi; import org.eclipse.hawkbit.rest.resource.helper.RestResourceConversionHelper; -import org.eclipse.hawkbit.rest.resource.model.action.ActionPagedList; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.action.ActionRest; -import org.eclipse.hawkbit.rest.resource.model.action.ActionStatusPagedList; +import org.eclipse.hawkbit.rest.resource.model.action.ActionStatusRest; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; import org.eclipse.hawkbit.rest.resource.model.target.DistributionSetAssigmentRest; import org.eclipse.hawkbit.rest.resource.model.target.TargetAttributes; -import org.eclipse.hawkbit.rest.resource.model.target.TargetPagedList; import org.eclipse.hawkbit.rest.resource.model.target.TargetRequestBody; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; -import org.eclipse.hawkbit.rest.resource.model.target.TargetsRest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -77,7 +75,7 @@ public class TargetResource implements TargetRestApi { } @Override - public ResponseEntity getTargets(final int pagingOffsetParam, final int pagingLimitParam, + public ResponseEntity> getTargets(final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); @@ -98,11 +96,11 @@ public class TargetResource implements TargetRestApi { } final List rest = TargetMapper.toResponse(findTargetsAll.getContent()); - return new ResponseEntity<>(new TargetPagedList(rest, countTargetsAll), HttpStatus.OK); + return new ResponseEntity<>(new PagedList(rest, countTargetsAll), HttpStatus.OK); } @Override - public ResponseEntity createTargets(final List targets) { + public ResponseEntity> createTargets(final List targets) { LOG.debug("creating {} targets", targets.size()); final Iterable createdTargets = this.targetManagement.createTargets(TargetMapper.fromRequest(targets)); LOG.debug("{} targets created, return status {}", targets.size(), HttpStatus.CREATED); @@ -147,7 +145,7 @@ public class TargetResource implements TargetRestApi { } @Override - public ResponseEntity getActionHistory(final String targetId, final int pagingOffsetParam, + public ResponseEntity> getActionHistory(final String targetId, final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { final Target foundTarget = findTargetWithExceptionIfNotFound(targetId); @@ -169,7 +167,7 @@ public class TargetResource implements TargetRestApi { } return new ResponseEntity<>( - new ActionPagedList(TargetMapper.toResponse(targetId, activeActions.getContent()), totalActionCount), + new PagedList<>(TargetMapper.toResponse(targetId, activeActions.getContent()), totalActionCount), HttpStatus.OK); } @@ -220,7 +218,7 @@ public class TargetResource implements TargetRestApi { } @Override - public ResponseEntity getActionStatusList(final String targetId, final Long actionId, + public ResponseEntity> getActionStatusList(final String targetId, final Long actionId, final int pagingOffsetParam, final int pagingLimitParam, final String sortParam) { final Target target = findTargetWithExceptionIfNotFound(targetId); @@ -238,10 +236,8 @@ public class TargetResource implements TargetRestApi { final Page statusList = this.deploymentManagement.findActionStatusByAction( new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting), action, true); - return new ResponseEntity<>( - new ActionStatusPagedList(TargetMapper.toActionStatusRestResponse(action, statusList.getContent()), - statusList.getTotalElements()), - HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(TargetMapper.toActionStatusRestResponse(statusList.getContent()), + statusList.getTotalElements()), HttpStatus.OK); } diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java index 76209a958..0e4bf9ec9 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java @@ -26,7 +26,7 @@ import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; import org.eclipse.hawkbit.rest.resource.model.tag.TargetTagAssigmentResultRest; -import org.eclipse.hawkbit.rest.resource.model.target.TargetsRest; +import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -118,7 +118,7 @@ public class TargetTagResource implements TargetTagRestApi { } @Override - public ResponseEntity getAssignedTargets(final Long targetTagId) { + public ResponseEntity> getAssignedTargets(final Long targetTagId) { final TargetTag targetTag = findTargetTagById(targetTagId); return new ResponseEntity<>(TargetMapper.toResponseWithLinksAndPollStatus(targetTag.getAssignedToTargets()), HttpStatus.OK); @@ -140,7 +140,7 @@ public class TargetTagResource implements TargetTagRestApi { } @Override - public ResponseEntity assignTargets(final Long targetTagId, + public ResponseEntity> assignTargets(final Long targetTagId, final List assignedTargetRequestBodies) { LOG.debug("Assign Targets {} for target tag {}", assignedTargetRequestBodies.size(), targetTagId); final TargetTag targetTag = findTargetTagById(targetTagId); From 7e75b79cbec808bf3cad9b5a6883427e8880468d Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 12:00:07 +0100 Subject: [PATCH 07/63] Add a event provider which hold the repository events which are provided by the ui. fix the performance issue. Issue was the selection of targets. The table needs very long to calculate the scroll position. Signed-off-by: SirWayne --- .../autoconfigure/ui/UIAutoConfiguration.java | 15 ++++- .../hawkbit/repository/RolloutScheduler.java | 42 +++++++------- .../org/eclipse/hawkbit/ui/EventProvider.java | 16 ------ .../hawkbit/ui/HawkbitEventProvider.java | 37 +++++++----- .../eclipse/hawkbit/ui/UIEventProvider.java | 56 +++++++++++++++++++ .../management/targettable/TargetTable.java | 41 ++------------ .../ui/push/DelayedEventBusPushStrategy.java | 43 +++----------- 7 files changed, 124 insertions(+), 126 deletions(-) delete mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java 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..7b3302533 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,8 @@ 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.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.vaadin.spring.annotation.EnableVaadinExtensions; @@ -17,9 +19,6 @@ import org.vaadin.spring.security.annotation.EnableVaadinSecurity; /** * The hawkbit-ui autoconfiguration. - * - * - * */ @Configuration @EnableVaadinSecurity @@ -37,4 +36,14 @@ public class UIAutoConfiguration { return new DistributedResourceBundleMessageSource(); } + /** + * A event provider bean which hold the supported events for the UI. + * + * @return the provider bean + */ + @Bean + public UIEventProvider eventProvider() { + return new HawkbitEventProvider(); + } + } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java index 6671ad896..9b45e661f 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java @@ -8,8 +8,6 @@ */ package org.eclipse.hawkbit.repository; -import java.util.List; - import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.tenancy.TenantAware; import org.slf4j.Logger; @@ -56,25 +54,25 @@ public class RolloutScheduler { */ @Scheduled(initialDelayString = RolloutProperties.Scheduler.PROP_SCHEDULER_DELAY_PLACEHOLDER, fixedDelayString = RolloutProperties.Scheduler.PROP_SCHEDULER_DELAY_PLACEHOLDER) public void rolloutScheduler() { - logger.debug("rollout schedule checker has been triggered."); - // run this code in system code privileged to have the necessary - // permission to query and create entities. - systemSecurityContext.runAsSystem(() -> { - // workaround eclipselink that is currently not possible to - // execute a query without multitenancy if MultiTenant - // annotation is used. - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458. So - // iterate through all tenants and execute the rollout check for - // each tenant seperately. - final List tenants = systemManagement.findTenants(); - logger.info("Checking rollouts for {} tenants", tenants.size()); - for (final String tenant : tenants) { - tenantAware.runAsTenant(tenant, () -> { - rolloutManagement.checkRunningRollouts(rolloutProperties.getScheduler().getFixedDelay()); - return null; - }); - } - return null; - }); + // logger.debug("rollout schedule checker has been triggered."); + // // run this code in system code privileged to have the necessary + // // permission to query and create entities. + // systemSecurityContext.runAsSystem(() -> { + // // workaround eclipselink that is currently not possible to + // // execute a query without multitenancy if MultiTenant + // // annotation is used. + // // https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458. So + // // iterate through all tenants and execute the rollout check for + // // each tenant seperately. + // final List tenants = systemManagement.findTenants(); + // logger.info("Checking rollouts for {} tenants", tenants.size()); + // for (final String tenant : tenants) { + // tenantAware.runAsTenant(tenant, () -> { + // rolloutManagement.checkRunningRollouts(rolloutProperties.getScheduler().getFixedDelay()); + // return null; + // }); + // } + // return null; + // }); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java deleted file mode 100644 index 0ae83af01..000000000 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/EventProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. - */ -package org.eclipse.hawkbit.ui; - -import java.util.Set; - -/** - * - */ -public interface EventProvider { - - Set> getSingleEvents(); - - Set> getBulkEvents(); -} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java index 8600b8e20..8afb46ba7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java @@ -3,11 +3,13 @@ */ package org.eclipse.hawkbit.ui; +import java.util.HashSet; import java.util.Set; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent; +import org.eclipse.hawkbit.eventbus.event.Event; import org.eclipse.hawkbit.eventbus.event.RolloutChangeEvent; import org.eclipse.hawkbit.eventbus.event.RolloutGroupChangeEvent; import org.eclipse.hawkbit.eventbus.event.TargetCreatedEvent; @@ -15,29 +17,38 @@ import org.eclipse.hawkbit.eventbus.event.TargetDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetInfoUpdateEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; -import com.google.common.collect.Sets; - /** - * @author Dennis Melzer - * + * The default hawkbit event provider. */ -public class HawkbitEventProvider implements EventProvider { +public class HawkbitEventProvider implements UIEventProvider { - private static final Set> SINGLE_EVENTS = Sets.newHashSet(TargetTagCreatedBulkEvent.class, - DistributionSetTagCreatedBulkEvent.class, DistributionSetTagDeletedEvent.class, - DistributionSetTagUpdateEvent.class, RolloutGroupChangeEvent.class, RolloutChangeEvent.class); + private static final Set> SINGLE_EVENTS = new HashSet<>(); - private static final Set> BULD_EVENTS = Sets.newHashSet(TargetCreatedEvent.class, - TargetInfoUpdateEvent.class, TargetDeletedEvent.class); + static { + SINGLE_EVENTS.add(TargetTagCreatedBulkEvent.class); + SINGLE_EVENTS.add(DistributionSetTagCreatedBulkEvent.class); + SINGLE_EVENTS.add(DistributionSetTagDeletedEvent.class); + SINGLE_EVENTS.add(DistributionSetTagUpdateEvent.class); + SINGLE_EVENTS.add(RolloutGroupChangeEvent.class); + SINGLE_EVENTS.add(RolloutChangeEvent.class); + } + + private static final Set> BULK_EVENTS = new HashSet<>(); + + static { + BULK_EVENTS.add(TargetCreatedEvent.class); + BULK_EVENTS.add(TargetInfoUpdateEvent.class); + BULK_EVENTS.add(TargetDeletedEvent.class); + } @Override - public Set> getSingleEvents() { + public Set> getSingleEvents() { return SINGLE_EVENTS; } @Override - public Set> getBulkEvents() { - return BULD_EVENTS; + public Set> getBulkEvents() { + return BULK_EVENTS; } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java new file mode 100644 index 000000000..65f907d94 --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java @@ -0,0 +1,56 @@ +/** + * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. + */ +package org.eclipse.hawkbit.ui; + +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.eclipse.hawkbit.eventbus.event.Event; + +/** + * The UI event provider hold all supported repository events which will + * delegated to the UI. A event type can delegated as single event or bulk + * event. Bulk event means, that all events from one type is collected by the + * provider. The delegater and delegated as a list of this events. + */ +public interface UIEventProvider { + + /** + * Return all supported repository single event types. All events which this + * type are delegated to the UI as single event. + * + * @return list of provided event types. Should not be null + */ + default Set> getSingleEvents() { + return Collections.emptySet(); + } + + /** + * Return all supported repository bulk event types. All events which this + * type are delegated to the UI as a list. This list contains all collected + * events from one type. + * + * @return list of provided bulk event types. Should not be null + */ + default Set> getBulkEvents() { + return Collections.emptySet(); + } + + /** + * Return all filtered bulk event types by the given events. The default + * maps the events by class. + * + * @param allEvents + * the events + * @return list of provided bulk event types which are filtered. Should not + * be null + */ + default Set> getFilteredBulkEventsType(final List allEvents) { + return allEvents.stream().map(Event::getClass).filter(eventClass -> getBulkEvents().contains(eventClass)) + .collect(Collectors.toSet()); + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index b8b59cb91..66417986f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -104,12 +104,11 @@ import com.vaadin.ui.themes.ValoTheme; @ViewScope public class TargetTable extends AbstractTable implements Handler { + private static final Logger LOG = LoggerFactory.getLogger(TargetTable.class); private static final String TARGET_PINNED = "targetPinned"; private static final long serialVersionUID = -2300392868806614568L; - private static final Logger LOG = LoggerFactory.getLogger(TargetTable.class); - private static final int PROPERTY_DEPT = 3; private static final String ITEMID = "itemId"; private static final String ACTION_NOT_ALLOWED_MSG = "message.action.not.allowed"; @@ -326,39 +325,20 @@ public class TargetTable extends AbstractTable implements Handler { (source, itemId, columnId) -> getTagetPollTime(itemId)); } - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.server.ui.common.table.AbstractTable# - * isFirstRowSelectedOnLoad () - */ @Override protected boolean isFirstRowSelectedOnLoad() { return !managementUIState.getSelectedTargetIdName().isPresent() || managementUIState.getSelectedTargetIdName().get().isEmpty(); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.table.AbstractTable#getItemIdToSelect() - */ @Override protected Object getItemIdToSelect() { if (managementUIState.getSelectedTargetIdName().isPresent()) { - LOG.info("****** getItemIdToSelect *********"); - // setCurrentPageFirstItemId(managementUIState.getLastSelectedTargetIdName()); return managementUIState.getSelectedTargetIdName().get(); } return null; } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.table.AbstractTable#onValueChange() - */ @Override protected void onValueChange() { eventBus.publish(this, DragEvent.HIDE_DROP_HINT); @@ -378,23 +358,11 @@ public class TargetTable extends AbstractTable implements Handler { } } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.table.AbstractTable#isMaximized() - */ @Override protected boolean isMaximized() { return managementUIState.isTargetTableMaximized(); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.table.AbstractTable#getTableVisibleColumns - * () - */ @Override protected List getTableVisibleColumns() { final List columnList = new ArrayList<>(); @@ -451,14 +419,13 @@ public class TargetTable extends AbstractTable implements Handler { } else { shouldRefreshTargets = true; } - unselect(targetIdName); } + if (shouldRefreshTargets) { refreshOnDelete(); - } else { - targetContainer.commit(); - selectRow(); } + + unSelectAll(); } private void refreshOnDelete() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java index 5ac9362fe..4d267167e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/push/DelayedEventBusPushStrategy.java @@ -8,7 +8,6 @@ */ package org.eclipse.hawkbit.ui.push; -import java.time.Instant; import java.util.LinkedList; import java.util.List; import java.util.Set; @@ -21,9 +20,8 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.eclipse.hawkbit.eventbus.event.EntityEvent; -import org.eclipse.hawkbit.eventbus.event.Event; import org.eclipse.hawkbit.im.authentication.TenantAwareAuthenticationDetails; -import org.eclipse.hawkbit.ui.EventProvider; +import org.eclipse.hawkbit.ui.UIEventProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.security.core.context.SecurityContext; @@ -66,7 +64,7 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { private ScheduledFuture jobHandle; - private final EventProvider eventProvider; + private final UIEventProvider eventProvider; /** * Constructor. @@ -78,7 +76,7 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { * back-end */ public DelayedEventBusPushStrategy(final SessionEventBus eventBus, - final com.google.common.eventbus.EventBus systemEventBus, final EventProvider eventProvider) { + final com.google.common.eventbus.EventBus systemEventBus, final UIEventProvider eventProvider) { this.eventBus = eventBus; this.systemEventBus = systemEventBus; this.eventProvider = eventProvider; @@ -153,9 +151,6 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { return false; } - private static int addAccess = 0; - private static int startAccess = 0; - private final class DispatchRunnable implements Runnable { private final UI vaadinUI; @@ -211,41 +206,21 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { try { SecurityContextHolder.setContext(userContext); - // TODO viele kleine access? - addAccess++; - final int endAddAccess = addAccess; - LOG.info("Add Access to runnable{}", addAccess); vaadinUI.access(() -> { - startAccess++; - final int currentAccess = startAccess; - LOG.info("Started Access {}", currentAccess); - final Instant startAcess = Instant.now(); - if (vaadinSession.getState() != State.OPEN) { return; } fowardSingleEvents(events, userContext); fowardBulkEvents(events, userContext); - berechneDauer(startAcess, "End Access " + currentAccess); }); - - LOG.info("End add Access to runnable{}", endAddAccess); } finally { SecurityContextHolder.setContext(oldContext); } } - private void berechneDauer(final Instant start, final String methode) { - final Instant end = Instant.now(); - final long second = end.getEpochSecond() - start.getEpochSecond(); - LOG.info("Dauer {} {} sekunden.", methode, second); - } - private void fowardBulkEvents(final List events, final SecurityContext userContext) { - final Set> filterBulkEvenTypes = events.stream().map(Event::getClass) - .filter(eventClass -> eventProvider.getBulkEvents().contains(eventClass)) - .collect(Collectors.toSet()); + final Set> filterBulkEvenTypes = eventProvider.getFilteredBulkEventsType(events); publishBulkEvent(events, userContext, filterBulkEvenTypes); } @@ -257,7 +232,6 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { && bulkType.isInstance(event)) .collect(Collectors.toList()); if (!listBulkEvents.isEmpty()) { - LOG.info("Publish bulk event"); eventBus.publish(vaadinUI, listBulkEvents); } } @@ -265,11 +239,10 @@ public class DelayedEventBusPushStrategy implements EventPushStrategy { private void fowardSingleEvents(final List events, final SecurityContext userContext) { - events.stream().filter(event -> DelayedEventBusPushStrategy.this.eventSecurityCheck(userContext, event) - && eventProvider.getSingleEvents().contains(event.getClass())).forEach(event -> { - LOG.info("Publish single event"); - eventBus.publish(vaadinUI, event); - }); + events.stream() + .filter(event -> DelayedEventBusPushStrategy.this.eventSecurityCheck(userContext, event) + && eventProvider.getSingleEvents().contains(event.getClass())) + .forEach(event -> eventBus.publish(vaadinUI, event)); } } From b837defb13c3e8b48775163bf1a1e144c5a231c0 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 12:12:28 +0100 Subject: [PATCH 08/63] Revert uncomment code Signed-off-by: SirWayne --- .../hawkbit/repository/RolloutScheduler.java | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java index 9b45e661f..6671ad896 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/RolloutScheduler.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.repository; +import java.util.List; + import org.eclipse.hawkbit.security.SystemSecurityContext; import org.eclipse.hawkbit.tenancy.TenantAware; import org.slf4j.Logger; @@ -54,25 +56,25 @@ public class RolloutScheduler { */ @Scheduled(initialDelayString = RolloutProperties.Scheduler.PROP_SCHEDULER_DELAY_PLACEHOLDER, fixedDelayString = RolloutProperties.Scheduler.PROP_SCHEDULER_DELAY_PLACEHOLDER) public void rolloutScheduler() { - // logger.debug("rollout schedule checker has been triggered."); - // // run this code in system code privileged to have the necessary - // // permission to query and create entities. - // systemSecurityContext.runAsSystem(() -> { - // // workaround eclipselink that is currently not possible to - // // execute a query without multitenancy if MultiTenant - // // annotation is used. - // // https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458. So - // // iterate through all tenants and execute the rollout check for - // // each tenant seperately. - // final List tenants = systemManagement.findTenants(); - // logger.info("Checking rollouts for {} tenants", tenants.size()); - // for (final String tenant : tenants) { - // tenantAware.runAsTenant(tenant, () -> { - // rolloutManagement.checkRunningRollouts(rolloutProperties.getScheduler().getFixedDelay()); - // return null; - // }); - // } - // return null; - // }); + logger.debug("rollout schedule checker has been triggered."); + // run this code in system code privileged to have the necessary + // permission to query and create entities. + systemSecurityContext.runAsSystem(() -> { + // workaround eclipselink that is currently not possible to + // execute a query without multitenancy if MultiTenant + // annotation is used. + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=355458. So + // iterate through all tenants and execute the rollout check for + // each tenant seperately. + final List tenants = systemManagement.findTenants(); + logger.info("Checking rollouts for {} tenants", tenants.size()); + for (final String tenant : tenants) { + tenantAware.runAsTenant(tenant, () -> { + rolloutManagement.checkRunningRollouts(rolloutProperties.getScheduler().getFixedDelay()); + return null; + }); + } + return null; + }); } } From cbefcb2f53109fab8808e911e549e3e2e06b4d90 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 12:14:08 +0100 Subject: [PATCH 09/63] Add commit Signed-off-by: SirWayne --- .../eclipse/hawkbit/ui/management/targettable/TargetTable.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 66417986f..74e93ab6b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -423,6 +423,8 @@ public class TargetTable extends AbstractTable implements Handler { if (shouldRefreshTargets) { refreshOnDelete(); + } else { + targetContainer.commit(); } unSelectAll(); From 18b4ac338d3c08e074a4b0f72ac1fc006bbd5677 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 12:38:06 +0100 Subject: [PATCH 10/63] Reselect items after deletion Signed-off-by: SirWayne --- .../ui/management/targettable/TargetTable.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 74e93ab6b..4b57f48c6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -426,8 +426,23 @@ public class TargetTable extends AbstractTable implements Handler { } else { targetContainer.commit(); } + reSelectItemsAfterDeletionEvent(); + } + private void reSelectItemsAfterDeletionEvent() { + Set values = new HashSet<>(); + if (isMultiSelect()) { + values = new HashSet<>((Set) getValue()); + } else { + values.add(getValue()); + } unSelectAll(); + + for (final Object value : values) { + if (getVisibleItemIds().contains(value)) { + select(value); + } + } } private void refreshOnDelete() { From 45f6fb80a389fa514fad891b23948555b4c50a2c Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 12:59:29 +0100 Subject: [PATCH 11/63] Fix event provider autowiring Signed-off-by: SirWayne --- .../src/main/java/org/eclipse/hawkbit/app/MyUI.java | 7 ++++--- .../hawkbit/autoconfigure/ui/UIAutoConfiguration.java | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) 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 bbb348961..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 @@ -8,8 +8,8 @@ */ package org.eclipse.hawkbit.app; -import org.eclipse.hawkbit.ui.HawkbitEventProvider; 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; @@ -34,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, new HawkbitEventProvider())); + 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/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 7b3302533..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 @@ -11,6 +11,7 @@ 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; @@ -42,6 +43,7 @@ public class UIAutoConfiguration { * @return the provider bean */ @Bean + @ConditionalOnMissingBean public UIEventProvider eventProvider() { return new HawkbitEventProvider(); } From 53fbe367e479a84575002d4be2ecb6031cd18c43 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 13:16:37 +0100 Subject: [PATCH 12/63] Sonar fix Signed-off-by: SirWayne --- .../src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java index 65f907d94..25890f9f1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java @@ -49,8 +49,7 @@ public interface UIEventProvider { * be null */ default Set> getFilteredBulkEventsType(final List allEvents) { - return allEvents.stream().map(Event::getClass).filter(eventClass -> getBulkEvents().contains(eventClass)) - .collect(Collectors.toSet()); + return allEvents.stream().map(Event::getClass).filter(getBulkEvents()::contains).collect(Collectors.toSet()); } } From 5232058433ffa98ec62be88eedaedb849601e5d5 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 17:24:58 +0100 Subject: [PATCH 13/63] Add license header Signed-off-by: SirWayne --- .../org/eclipse/hawkbit/ui/HawkbitEventProvider.java | 9 +++++++-- .../java/org/eclipse/hawkbit/ui/UIEventProvider.java | 7 ++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java index 8afb46ba7..885576fef 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java @@ -1,6 +1,11 @@ /** - * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. - */ + * 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.ui; import java.util.HashSet; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java index 25890f9f1..5663ce897 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UIEventProvider.java @@ -1,5 +1,10 @@ /** - * Copyright (c) 2011-2016 Bosch Software Innovations GmbH, Germany. All rights reserved. + * 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.ui; From c14d534fe143e3cd842b3e58db974c45ae2eb39d Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 24 Mar 2016 18:04:56 +0100 Subject: [PATCH 14/63] Add license header Signed-off-by: SirWayne --- .../org/eclipse/hawkbit/ui/HawkbitEventProvider.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java index 885576fef..f026378b9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java @@ -1,11 +1,11 @@ /** * 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 -*/ + * + * 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.ui; import java.util.HashSet; From f237a1e508d60983e7089087b02fe87cdcb5ea25 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Fri, 25 Mar 2016 16:24:42 +0100 Subject: [PATCH 15/63] Added tests for software management - while at it I renamed also a few methods to fit into the overall pattern --- .../repository/SoftwareManagement.java | 53 ++- .../repository/SoftwareModuleRepository.java | 2 + .../hawkbit/repository/SystemManagement.java | 2 - .../model/CustomSoftwareModule.java | 40 ++ .../repository/model/SoftwareModule.java | 24 +- .../model/SoftwareModuleMetadata.java | 87 ++-- .../repository/SoftwareManagementTest.java | 447 ++++++++++++++++-- .../rest/resource/SoftwareModuleResource.java | 2 +- .../resource/SoftwareModuleTypeResource.java | 2 +- .../resource/SoftwareModuleResourceTest.java | 8 +- .../smtable/SwModuleBeanQuery.java | 7 +- 11 files changed, 564 insertions(+), 110 deletions(-) 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..b51019338 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; } /** @@ -255,6 +258,10 @@ public class SoftwareManagement { return artifactManagement.findSoftwareModuleById(id); } + // TODO: discuss this method, does not seem to make sense to search by name + // and version without type. It also makes no sense to return collection + // here. It should be a single result based on ytpe,name,version (like the + // constraint). /** * retrieves {@link SoftwareModule}s by their name AND version. * @@ -491,12 +498,17 @@ 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()} * @param type @@ -504,8 +516,9 @@ public class SoftwareManagement { * @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 findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc( + @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 +535,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 +559,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 +722,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 +839,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 +897,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 +912,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..44682da64 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 @@ -81,6 +81,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 559b71498..31f5f1c18 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 diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java index 96c7cdd62..b68f9df49 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java @@ -52,4 +52,44 @@ public class CustomSoftwareModule implements Serializable { public boolean isAssigned() { return assigned; } + + @Override + public String toString() { + return "CustomSoftwareModule [softwareModule=" + softwareModule + ", assigned=" + assigned + "]"; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (assigned ? 1231 : 1237); + 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 (getClass() != obj.getClass()) { + return false; + } + final CustomSoftwareModule other = (CustomSoftwareModule) obj; + if (assigned != other.assigned) { + 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/SoftwareModule.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModule.java index 49e73f749..7b0c03c0e 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 @@ -43,7 +43,7 @@ import org.eclipse.persistence.annotations.CascadeOnDelete; */ @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 +52,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) @@ -239,23 +239,12 @@ public class SoftwareModule extends NamedVersionedEntity { return 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() + "]"; + return "SoftwareModule [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; @@ -264,11 +253,6 @@ public class SoftwareModule extends NamedVersionedEntity { 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..4ffbd2c10 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,9 +24,6 @@ import javax.persistence.Table; /** * Metadata for {@link SoftwareModule}. * - * - * - * */ @IdClass(SwMetadataCompositeKey.class) @Entity @@ -50,18 +47,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 +69,83 @@ 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()); + result = prime * result + ((value == null) ? 0 : value.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + 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; + } + if (value == null) { + if (other.value != null) { + return false; + } + } else if (!value.equals(other.value)) { + return false; + } + return true; + } + } diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java index 49776e392..c295c57ce 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java @@ -14,7 +14,6 @@ import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -24,14 +23,18 @@ import org.eclipse.hawkbit.AbstractIntegrationTestWithMongoDB; import org.eclipse.hawkbit.RandomGeneratedInputStream; import org.eclipse.hawkbit.TestDataUtil; import org.eclipse.hawkbit.WithUser; +import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; +import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Artifact; +import org.eclipse.hawkbit.repository.model.CustomSoftwareModule; import org.eclipse.hawkbit.repository.model.DistributionSet; -import org.eclipse.hawkbit.repository.model.DistributionSetTag; +import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.LocalArtifact; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleMetadata; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; +import org.eclipse.hawkbit.repository.model.SwMetadataCompositeKey; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.junit.Test; @@ -51,6 +54,143 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Software Management") public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { + @Test + @Description("Try to update non updatable fields results in repository doing nothing.") + public void updateTypeNonUpdateableFieldsFails() { + final SoftwareModuleType created = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test-key", "test-name", "test-desc", 1)); + + created.setName("a new name"); + final SoftwareModuleType updated = softwareManagement.updateSoftwareModuleType(created); + + assertThat(updated.getOptLockRevision()) + .as("Expected version number of updated entitity to be equal to created version") + .isEqualTo(created.getOptLockRevision()); + } + + @Test + @Description("Calling update without changing fields results in no recorded change in the repository including unchanged audit fields.") + public void updateNothingResultsInUnchangedRepositoryForType() { + final SoftwareModuleType created = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test-key", "test-name", "test-desc", 1)); + + final SoftwareModuleType updated = softwareManagement.updateSoftwareModuleType(created); + + assertThat(updated.getOptLockRevision()) + .as("Expected version number of updated entitity to be equal to created version") + .isEqualTo(created.getOptLockRevision()); + } + + @Test + @Description("Calling update for changed fields results in change in the repository.") + public void updateSoftareModuleTypeFieldsToNewValue() { + final SoftwareModuleType created = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test-key", "test-name", "test-desc", 1)); + + created.setDescription("changed"); + created.setColour("changed"); + + final SoftwareModuleType updated = softwareManagement.updateSoftwareModuleType(created); + + assertThat(updated.getOptLockRevision()).as("Expected version number of updated entitity is") + .isEqualTo(created.getOptLockRevision() + 1); + assertThat(updated.getDescription()).as("Updated description is").isEqualTo("changed"); + assertThat(updated.getColour()).as("Updated vendor is").isEqualTo("changed"); + } + + @Test + @Description("Try to update non updatable fields results in repository doing nothing.") + public void updateNonUpdateableFieldsFails() { + final SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", null, "")); + + ah.setName("a new name"); + final SoftwareModule updated = softwareManagement.updateSoftwareModule(ah); + + assertThat(updated.getOptLockRevision()) + .as("Expected version number of updated entitity to be equal to created version") + .isEqualTo(ah.getOptLockRevision()); + } + + @Test + @Description("Calling update without changing fields results in no recorded change in the repository including unchanged audit fields.") + public void updateNothingResultsInUnchangedRepository() { + final SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", null, "")); + + final SoftwareModule updated = softwareManagement.updateSoftwareModule(ah); + + assertThat(updated.getOptLockRevision()) + .as("Expected version number of updated entitity to be equal to created version") + .isEqualTo(ah.getOptLockRevision()); + } + + @Test + @Description("Calling update for changed fields results in change in the repository.") + public void updateSoftareModuleFieldsToNewValue() { + final SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", "test desc", "test vendor")); + + ah.setDescription("changed"); + ah.setVendor("changed"); + final SoftwareModule updated = softwareManagement.updateSoftwareModule(ah); + + assertThat(updated.getOptLockRevision()).as("Expected version number of updated entitity is") + .isEqualTo(ah.getOptLockRevision() + 1); + assertThat(updated.getDescription()).as("Updated description is").isEqualTo("changed"); + assertThat(updated.getVendor()).as("Updated vendor is").isEqualTo("changed"); + } + + @Test(expected = EntityAlreadyExistsException.class) + @Description("Create Software Module call fails when called for existing entity.") + public void createModuleCallFailsForExistingModule() { + final SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", "test desc", "test vendor")); + softwareManagement.createSoftwareModule(ah); + } + + @Test(expected = EntityAlreadyExistsException.class) + @Description("Create Software Modules call fails when called for existing entities.") + public void createModulesCallFailsForExistingModule() { + final List modules = softwareManagement.createSoftwareModule( + Lists.newArrayList(new SoftwareModule(appType, "agent-hub", "1.0.1", "test desc", "test vendor"), + new SoftwareModule(appType, "agent-hub", "1.0.2", "test desc", "test vendor"))); + softwareManagement.createSoftwareModule(modules); + } + + @Test(expected = EntityAlreadyExistsException.class) + @Description("Create Software Module Type call fails when called for existing entity.") + public void createModuleTypeCallFailsForExistingType() { + final SoftwareModuleType created = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test-key", "test-name", "test-desc", 1)); + softwareManagement.createSoftwareModuleType(created); + } + + @Test(expected = EntityAlreadyExistsException.class) + @Description("Create Software Module Types call fails when called for existing entities.") + public void createModuleTypesCallFailsForExistingTypes() { + final List created = softwareManagement.createSoftwareModuleType( + Lists.newArrayList(new SoftwareModuleType("test-key", "test-name", "test-desc", 1), + new SoftwareModuleType("test-key2", "test-name", "test-desc", 1))); + softwareManagement.createSoftwareModuleType(created); + } + + @Test + @Description("Calling update for changing fields to null results in change in the repository.") + public void eraseSoftareModuleFields() { + final SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", "test desc", "test vendor")); + + ah.setDescription(null); + ah.setVendor(null); + final SoftwareModule updated = softwareManagement.updateSoftwareModule(ah); + + assertThat(updated.getOptLockRevision()).as("Expected version number of updated entitity is") + .isEqualTo(ah.getOptLockRevision() + 1); + assertThat(updated.getDescription()).as("Updated description is").isNull(); + assertThat(updated.getVendor()).as("Updated vendor is").isNull(); + } + @Test @Description("searched for software modules based on the various filter options, e.g. name,desc,type, version.") public void findSoftwareModuleByFilters() { @@ -105,7 +245,7 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { @Test @Description("Searches for software modules based on a list of IDs.") - public void findSoftwareModulesByIdAndType() { + public void findSoftwareModulesById() { final List modules = new ArrayList(); @@ -118,6 +258,54 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { assertThat(softwareManagement.findSoftwareModulesById(modules)).hasSize(2); } + @Test + @Description("Searches for software modules by type.") + public void findSoftwareModulesByType() { + // found in test + final SoftwareModule one = softwareManagement + .createSoftwareModule(new SoftwareModule(osType, "one", "one", null, "")); + final SoftwareModule two = softwareManagement + .createSoftwareModule(new SoftwareModule(osType, "two", "two", null, "")); + // ignored + softwareManagement.deleteSoftwareModule( + softwareManagement.createSoftwareModule(new SoftwareModule(osType, "deleted", "deleted", null, ""))); + softwareManagement.createSoftwareModule(new SoftwareModule(appType, "three", "3.0.2", null, "")); + + assertThat(softwareManagement.findSoftwareModulesByType(pageReq, osType).getContent()) + .as("Expected to find the following number of modules:").hasSize(2).as("with the following elements") + .contains(two, one); + } + + @Test + @Description("Counts all software modules in the repsitory that are not marked as deleted.") + public void countSoftwareModulesAll() { + // found in test + softwareManagement.createSoftwareModule(new SoftwareModule(osType, "one", "one", null, "")); + softwareManagement.createSoftwareModule(new SoftwareModule(appType, "two", "two", null, "")); + // ignored + softwareManagement.deleteSoftwareModule( + softwareManagement.createSoftwareModule(new SoftwareModule(osType, "deleted", "deleted", null, ""))); + + assertThat(softwareManagement.countSoftwareModulesAll()).as("Expected to find the following number of modules:") + .isEqualTo(2); + } + + @Test + @Description("Counts for software modules by type.") + public void countSoftwareModulesByType() { + // found in test + softwareManagement.createSoftwareModule(new SoftwareModule(osType, "one", "one", null, "")); + softwareManagement.createSoftwareModule(new SoftwareModule(osType, "two", "two", null, "")); + + // ignored + softwareManagement.deleteSoftwareModule( + softwareManagement.createSoftwareModule(new SoftwareModule(osType, "deleted", "deleted", null, ""))); + softwareManagement.createSoftwareModule(new SoftwareModule(appType, "three", "3.0.2", null, "")); + + assertThat(softwareManagement.countSoftwareModulesByType(osType)) + .as("Expected to find the following number of modules:").isEqualTo(2); + } + @Test @Description("Tests the successfull deletion of software module types. Both unused (hard delete) and used ones (soft delete).") public void deleteAssignedAndUnassignedSoftwareModuleTypes() { @@ -419,32 +607,184 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { } } - /** - * - * @param findAll - * @return - */ - @SuppressWarnings("rawtypes") - private Collection iterable2Collection(final Iterable iterable) { - final Collection col = new ArrayList(); - for (final Object o : iterable) { - col.add(o); - } - return col; + @Test + @Description("Test verfies that results are returned based on given filter parameters and in the specified order.") + public void findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc() { + // test meta data + final SoftwareModuleType testType = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + final DistributionSetType testDsType = distributionSetManagement + .createDistributionSetType(new DistributionSetType("key", "name", "desc").addMandatoryModuleType(osType) + .addOptionalModuleType(testType)); + + // found in test + final SoftwareModule unassigned = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "asis", "found", null, "")); + final SoftwareModule one = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "found", "b", null, "")); + final SoftwareModule two = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "found", "c", null, "")); + final SoftwareModule differentName = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "differentname", "d", null, "")); + + // ignored + final SoftwareModule deleted = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "deleted", "deleted", null, "")); + final SoftwareModule four = softwareManagement + .createSoftwareModule(new SoftwareModule(osType, "sdfjhsdj", "e", null, "")); + + final DistributionSet set = distributionSetManagement.createDistributionSet(new DistributionSet("set", "1", + "desc", testDsType, Lists.newArrayList(one, two, deleted, four, differentName))); + softwareManagement.deleteSoftwareModule(deleted); + + // with filter on name, version and module type + assertThat(softwareManagement.findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc(pageReq, + set.getId(), "found", testType).getContent()) + .as("Found modules with given name, given module type and the assigned ones first") + .containsExactly(new CustomSoftwareModule(one, true), new CustomSoftwareModule(two, true), + new CustomSoftwareModule(unassigned, false)); + + // with filter on module type only + assertThat(softwareManagement.findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc(pageReq, + set.getId(), null, testType).getContent()) + .as("Found modules with given module type and the assigned ones first").containsExactly( + new CustomSoftwareModule(differentName, true), new CustomSoftwareModule(one, true), + new CustomSoftwareModule(two, true), new CustomSoftwareModule(unassigned, false)); + + // without any filter + assertThat(softwareManagement + .findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc(pageReq, set.getId(), null, null) + .getContent()).as("Found modules with the assigned ones first").containsExactly( + new CustomSoftwareModule(differentName, true), new CustomSoftwareModule(one, true), + new CustomSoftwareModule(two, true), new CustomSoftwareModule(four, true), + new CustomSoftwareModule(unassigned, false)); } - /** - * - */ - private void printDSTags() { - System.out.println("=============================================================================="); - for (final DistributionSet d : distributionSetRepository.findAll()) { - System.out.printf("%s\t[", d.getName()); - for (final DistributionSetTag t : d.getTags()) { - System.out.printf("%s ", t.getName()); - } - System.out.println("]"); - } + @Test + @Description("Checks that number of modules is returned as expected based on given filters.") + public void countSoftwareModuleByFilters() { + + // test meta data + final SoftwareModuleType testType = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + final DistributionSetType testDsType = distributionSetManagement + .createDistributionSetType(new DistributionSetType("key", "name", "desc").addMandatoryModuleType(osType) + .addOptionalModuleType(testType)); + + // test modules + softwareManagement.createSoftwareModule(new SoftwareModule(testType, "asis", "found", null, "")); + final SoftwareModule one = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "found", "b", null, "")); + final SoftwareModule two = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "found", "c", null, "")); + final SoftwareModule differentName = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "differentname", "d", null, "")); + final SoftwareModule four = softwareManagement + .createSoftwareModule(new SoftwareModule(osType, "found", "3.0.2", null, "")); + + // one soft deleted + final SoftwareModule deleted = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "deleted", "deleted", null, "")); + distributionSetManagement.createDistributionSet(new DistributionSet("set", "1", "desc", testDsType, + Lists.newArrayList(one, two, deleted, four, differentName))); + softwareManagement.deleteSoftwareModule(deleted); + + // test + assertThat(softwareManagement.countSoftwareModuleByFilters("found", testType)) + .as("Number of modules with given name or version and type").isEqualTo(3); + assertThat(softwareManagement.countSoftwareModuleByFilters(null, testType)) + .as("Number of modules with given type").isEqualTo(4); + assertThat(softwareManagement.countSoftwareModuleByFilters(null, null)).as("Number of modules overall") + .isEqualTo(5); + } + + @Test + @Description("Verfies that all undeleted software modules are found in the repository.") + public void countSoftwareModuleTypesAll() { + final SoftwareModuleType testType = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + final DistributionSetType testDsType = distributionSetManagement + .createDistributionSetType(new DistributionSetType("key", "name", "desc").addMandatoryModuleType(osType) + .addOptionalModuleType(testType)); + final SoftwareModule four = softwareManagement + .createSoftwareModule(new SoftwareModule(osType, "found", "3.0.2", null, "")); + + // one soft deleted + final SoftwareModule deleted = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "deleted", "deleted", null, "")); + distributionSetManagement.createDistributionSet( + new DistributionSet("set", "1", "desc", testDsType, Lists.newArrayList(deleted, four))); + softwareManagement.deleteSoftwareModule(deleted); + + assertThat(softwareManagement.countSoftwareModulesAll()).as("Number of undeleted modules").isEqualTo(1); + assertThat(softwareModuleRepository.count()).as("Number of all modules").isEqualTo(2); + } + + @Test + @Description("Checks that software module typeis found based on given name.") + public void findSoftwareModuleTypeByName() { + final SoftwareModuleType found = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + softwareManagement.createSoftwareModuleType(new SoftwareModuleType("thetype2", "anothername", "desc", 100)); + + assertThat(softwareManagement.findSoftwareModuleTypeByName("thename")).as("Type with given name") + .isEqualTo(found); + } + + @Test(expected = EntityAlreadyExistsException.class) + @Description("Verfies that it is not possible to create a type that alrady exists.") + public void createSoftwareModuleTypeFailsWithExistingEntity() { + final SoftwareModuleType created = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + softwareManagement.createSoftwareModuleType(created); + } + + @Test(expected = EntityAlreadyExistsException.class) + @Description("Verfies that it is not possible to create a list of types where one already exists.") + public void createSoftwareModuleTypesFailsWithExistingEntity() { + final SoftwareModuleType created = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + softwareManagement.createSoftwareModuleType( + Lists.newArrayList(created, new SoftwareModuleType("anothertype", "anothername", "desc", 100))); + } + + @Test + @Description("Verfies that multiple types are created as requested.") + public void createMultipleoftwareModuleTypes() { + final List created = softwareManagement + .createSoftwareModuleType(Lists.newArrayList(new SoftwareModuleType("thetype", "thename", "desc", 100), + new SoftwareModuleType("thetype2", "thename2", "desc2", 100))); + + assertThat(created.size()).as("Number of created types").isEqualTo(2); + assertThat(softwareManagement.countSoftwareModuleTypesAll()).as("Number of types in repository").isEqualTo(5); + } + + @Test + @Description("Verfies that sofwtare modules are resturned that are assigned to given DS.") + public void findSoftwareModuleByAssignedTo() { + // test meta data + final SoftwareModuleType testType = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); + final DistributionSetType testDsType = distributionSetManagement + .createDistributionSetType(new DistributionSetType("key", "name", "desc").addMandatoryModuleType(osType) + .addOptionalModuleType(testType)); + + // test modules + softwareManagement.createSoftwareModule(new SoftwareModule(testType, "asis", "found", null, "")); + final SoftwareModule one = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "found", "b", null, "")); + final SoftwareModule two = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "found", "c", null, "")); + + // one soft deleted + final SoftwareModule deleted = softwareManagement + .createSoftwareModule(new SoftwareModule(testType, "deleted", "deleted", null, "")); + final DistributionSet set = distributionSetManagement.createDistributionSet( + new DistributionSet("set", "1", "desc", testDsType, Lists.newArrayList(one, deleted))); + softwareManagement.deleteSoftwareModule(deleted); + + assertThat(softwareManagement.findSoftwareModuleByAssignedTo(pageReq, set).getContent()) + .as("Found this number of modules").hasSize(2); } @Test @@ -479,6 +819,22 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { assertThat(softwareModuleMetadata.get(0).getSoftwareModule().getId()).isEqualTo(ah.getId()); } + @Test(expected = EntityAlreadyExistsException.class) + @Description("Checks that metadata for a software module cannot be created for an existing key.") + public void createSoftwareModuleMetadataFailsIfKeyExists() { + + final String knownKey1 = "myKnownKey1"; + final String knownValue1 = "myKnownValue1"; + final String knownValue2 = "myKnownValue2"; + + final SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", null, "")); + + softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue1)); + + softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue2)); + } + @Test @WithUser(allSpPermissions = true) @Description("Checks that metadata for a software module can be updated.") @@ -525,6 +881,43 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { assertThat(updated.getSoftwareModule().getId()).isEqualTo(ah.getId()); } + @Test + @Description("Verfies that existing metadata can be deleted.") + public void deleteSoftwareModuleMetadata() { + final String knownKey1 = "myKnownKey1"; + final String knownValue1 = "myKnownValue1"; + + SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", null, "")); + + ah = softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue1)) + .getSoftwareModule(); + + assertThat(softwareManagement.findSoftwareModuleById(ah.getId()).getMetadata()) + .as("Contains the created metadata element") + .containsExactly(new SoftwareModuleMetadata(knownKey1, ah, knownValue1)); + + softwareManagement.deleteSoftwareModuleMetadata(new SwMetadataCompositeKey(ah, knownKey1)); + assertThat(softwareManagement.findSoftwareModuleById(ah.getId()).getMetadata()).as("Metadata elemenets are") + .isEmpty(); + } + + @Test(expected = EntityNotFoundException.class) + @Description("Verfies that non existing metadata find results in exception.") + public void findSoftwareModuleMetadataFailsIfEntryDoesNotExist() { + final String knownKey1 = "myKnownKey1"; + final String knownValue1 = "myKnownValue1"; + + SoftwareModule ah = softwareManagement + .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", null, "")); + + ah = softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue1)) + .getSoftwareModule(); + + softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(ah, "doesnotexist")); + + } + @Test @Description("Queries and loads the metadata related to a given software module.") public void findAllSoftwareModuleMetadataBySwId() { diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java index e165fca20..cfddf9d40 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java @@ -226,7 +226,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { // check if distribution set exists otherwise throw exception // immediately final SoftwareModule sw = findSoftwareModuleWithExceptionIfNotFound(softwareModuleId, null); - final SoftwareModuleMetadata findOne = softwareManagement.findOne(new SwMetadataCompositeKey(sw, metadataKey)); + final SoftwareModuleMetadata findOne = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sw, metadataKey)); return ResponseEntity. ok(SoftwareModuleMapper.toResponseSwMetadata(findOne)); } diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java index 7dda79690..e3498f141 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleTypeResource.java @@ -102,7 +102,7 @@ public class SoftwareModuleTypeResource implements SoftwareModuleTypeRestApi { final List softwareModuleTypes) { final List createdSoftwareModules = this.softwareManagement - .createSoftwareModuleTypes(SoftwareModuleTypeMapper.smFromRequest(softwareModuleTypes)); + .createSoftwareModuleType(SoftwareModuleTypeMapper.smFromRequest(softwareModuleTypes)); return new ResponseEntity<>(SoftwareModuleTypeMapper.toTypesResponse(createdSoftwareModules), HttpStatus.CREATED); diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java index 0b8503d6b..09ae7978f 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java @@ -930,8 +930,8 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(jsonPath("[1]key", equalTo(knownKey2))) .andExpect(jsonPath("[1]value", equalTo(knownValue2))); - final SoftwareModuleMetadata metaKey1 = softwareManagement.findOne(new SwMetadataCompositeKey(sm, knownKey1)); - final SoftwareModuleMetadata metaKey2 = softwareManagement.findOne(new SwMetadataCompositeKey(sm, knownKey2)); + final SoftwareModuleMetadata metaKey1 = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey1)); + final SoftwareModuleMetadata metaKey2 = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey2)); assertThat(metaKey1.getValue()).as("Metadata key is wrong").isEqualTo(knownValue1); assertThat(metaKey2.getValue()).as("Metadata key is wrong").isEqualTo(knownValue2); @@ -957,7 +957,7 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("key", equalTo(knownKey))).andExpect(jsonPath("value", equalTo(updateValue))); - final SoftwareModuleMetadata assertDS = softwareManagement.findOne(new SwMetadataCompositeKey(sm, knownKey)); + final SoftwareModuleMetadata assertDS = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey)); assertThat(assertDS.getValue()).as("Metadata is wrong").isEqualTo(updateValue); } @@ -976,7 +976,7 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andDo(MockMvcResultPrinter.print()).andExpect(status().isOk()); try { - softwareManagement.findOne(new SwMetadataCompositeKey(sm, knownKey)); + softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey)); fail("expected EntityNotFoundException but didn't throw"); } catch (final EntityNotFoundException e) { // ok as expected diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java index 859febbce..9aae5ca5c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java @@ -22,8 +22,6 @@ import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SpringContextHelper; import org.springframework.data.domain.Slice; -import org.springframework.data.domain.Sort; -import org.springframework.data.domain.Sort.Direction; import org.vaadin.addons.lazyquerycontainer.AbstractBeanQuery; import org.vaadin.addons.lazyquerycontainer.QueryDefinition; @@ -79,9 +77,8 @@ public class SwModuleBeanQuery extends AbstractBeanQuery final Slice swModuleBeans; final List proxyBeans = new ArrayList<>(); - swModuleBeans = getSoftwareManagement().findSoftwareModuleOrderByDistribution( - new OffsetBasedPageRequest(startIndex, count, new Sort(Direction.ASC, "name", "version")), - orderByDistId, searchText, type); + swModuleBeans = getSoftwareManagement().findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc( + new OffsetBasedPageRequest(startIndex, count), orderByDistId, searchText, type); for (final CustomSoftwareModule swModule : swModuleBeans) { proxyBeans.add(getProxyBean(swModule)); From 080f7d20e84b2cbc53145eefc9e1ae538f2f575e Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 26 Mar 2016 09:26:48 +0100 Subject: [PATCH 16/63] Removed boiler plate code. Added missing equals in model. Fixed sonar issues. Signed-off-by: Kai Zimmermann --- .../repository/ControllerManagement.java | 20 +++-- .../repository/DeploymentManagement.java | 1 - .../repository/DistributionSetManagement.java | 2 +- .../hawkbit/repository/TargetManagement.java | 2 - .../hawkbit/repository/model/Action.java | 25 ++----- .../repository/model/ActionStatus.java | 58 +++++++++++++-- .../hawkbit/repository/model/Artifact.java | 72 +++++++++++------- .../repository/model/DistributionSetType.java | 74 ++++++++++++------- .../hawkbit/repository/model/NamedEntity.java | 48 ++++++++++-- .../model/SwMetadataCompositeKey.java | 13 +--- .../repository/model/TenantMetaData.java | 37 ++++++++++ .../repository/TargetManagementTest.java | 8 +- 12 files changed, 247 insertions(+), 113 deletions(-) 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..271221e4a 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,10 @@ 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 +398,14 @@ public class ControllerManagement { return actionRepository.save(mergedAction); } + private void handleErrorOnAction(final Action mergedAction, final Target mergedTarget) { + // set action inactive + 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 +422,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/DeploymentManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java index 77f71bebf..bdeba4d0a 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java @@ -534,7 +534,6 @@ public class DeploymentManagement { return saveAction; } else { throw new CancelActionNotAllowedException( - "Action [id: " + action.getId() + "] is not active and cannot be canceled"); } } 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 8df29956b..88e222e64 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 @@ -915,7 +915,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()); } /** 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..9cf487641 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 @@ -74,8 +74,6 @@ import com.google.common.eventbus.EventBus; /** * Business service facade for managing {@link Target}s. * - * - * */ @Transactional(readOnly = true) @Validated diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index 17a7965dd..bca57efa5 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -50,7 +50,7 @@ import org.eclipse.persistence.annotations.CascadeOnDelete; @Index(name = "sp_idx_action_prim", columnList = "tenant,id") }) @NamedEntityGraphs({ @NamedEntityGraph(name = "Action.ds", attributeNodes = { @NamedAttributeNode("distributionSet") }), @NamedEntityGraph(name = "Action.all", attributeNodes = { @NamedAttributeNode("distributionSet"), - @NamedAttributeNode(value = "target", subgraph = "target.ds") }, subgraphs = @NamedSubgraph(name = "target.ds", attributeNodes = @NamedAttributeNode("assignedDistributionSet") ) ) }) + @NamedAttributeNode(value = "target", subgraph = "target.ds") }, subgraphs = @NamedSubgraph(name = "target.ds", attributeNodes = @NamedAttributeNode("assignedDistributionSet"))) }) @Entity public class Action extends TenantAwareBaseEntity implements Comparable { private static final long serialVersionUID = 1L; @@ -64,11 +64,11 @@ public class Action extends TenantAwareBaseEntity implements Comparable * the {@link DistributionSet} which should be installed by this action. */ @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_ds") ) + @JoinColumn(name = "distribution_set", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_ds")) private DistributionSet distributionSet; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "target", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_target") ) + @JoinColumn(name = "target", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_target")) private Target target; @Column(name = "active") @@ -90,11 +90,11 @@ public class Action extends TenantAwareBaseEntity implements Comparable private List actionStatus; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "rolloutgroup", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_rolloutgroup") ) + @JoinColumn(name = "rolloutgroup", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_rolloutgroup")) private RolloutGroup rolloutGroup; @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "rollout", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_rollout") ) + @JoinColumn(name = "rollout", foreignKey = @ForeignKey(value = ConstraintMode.CONSTRAINT, name = "fk_action_rollout")) private Rollout rollout; /** @@ -305,21 +305,11 @@ public class Action extends TenantAwareBaseEntity implements Comparable return actionType == ActionType.FORCED; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ @Override public String toString() { return "Action [distributionSet=" + distributionSet + ", getId()=" + getId() + "]"; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ @Override public int hashCode() { // NOSONAR - as this is generated final int prime = 31; @@ -332,11 +322,6 @@ public class Action extends TenantAwareBaseEntity implements Comparable return result; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ @Override public boolean equals(final Object obj) { // NOSONAR - as this is generated diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java index 0fdec839b..6409dc209 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java @@ -32,9 +32,6 @@ import com.google.common.base.Splitter; /** * Entity to store the status for a specific action. - * - * - * */ @Table(name = "sp_action_status", indexes = { @Index(name = "sp_idx_action_status_01", columnList = "tenant,action"), @Index(name = "sp_idx_action_status_02", columnList = "tenant,action,status"), @@ -42,10 +39,6 @@ import com.google.common.base.Splitter; @NamedEntityGraph(name = "ActionStatus.withMessages", attributeNodes = { @NamedAttributeNode("messages") }) @Entity public class ActionStatus extends TenantAwareBaseEntity { - - /** - * - */ private static final long serialVersionUID = 1L; @Column(name = "target_occurred_at") @@ -146,4 +139,55 @@ public class ActionStatus extends TenantAwareBaseEntity { public void setStatus(final Status status) { this.status = status; } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((action == null) ? 0 : action.hashCode()); + result = prime * result + ((messages == null) ? 0 : messages.hashCode()); + result = prime * result + ((occurredAt == null) ? 0 : occurredAt.hashCode()); + result = prime * result + ((status == null) ? 0 : status.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final ActionStatus other = (ActionStatus) obj; + if (action == null) { + if (other.action != null) { + return false; + } + } else if (!action.equals(other.action)) { + return false; + } + if (messages == null) { + if (other.messages != null) { + return false; + } + } else if (!messages.equals(other.messages)) { + return false; + } + if (occurredAt == null) { + if (other.occurredAt != null) { + return false; + } + } else if (!occurredAt.equals(other.occurredAt)) { + return false; + } + if (status != other.status) { + return false; + } + return true; + } + } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java index 5d829e4d6..23c5de34f 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java @@ -13,11 +13,7 @@ import javax.persistence.MappedSuperclass; /** * Tenant specific locally stored artifact representation that is used by - * {@link SoftwareModule} . - * - * - * - * + * {@link SoftwareModule}. */ @MappedSuperclass public abstract class Artifact extends TenantAwareBaseEntity { @@ -34,49 +30,73 @@ public abstract class Artifact extends TenantAwareBaseEntity { public abstract SoftwareModule getSoftwareModule(); - /** - * @return the md5Hash - */ public String getMd5Hash() { return md5Hash; } - /** - * @return the sha1Hash - */ public String getSha1Hash() { return sha1Hash; } - /** - * @param md5Hash - * the md5Hash to set - */ public void setMd5Hash(final String md5Hash) { this.md5Hash = md5Hash; } - /** - * @param sha1Hash - * the sha1Hash to set - */ public void setSha1Hash(final String sha1Hash) { this.sha1Hash = sha1Hash; } - /** - * @return the size - */ public Long getSize() { return size; } - /** - * @param size - * the size to set - */ public void setSize(final Long size) { this.size = size; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((md5Hash == null) ? 0 : md5Hash.hashCode()); + result = prime * result + ((sha1Hash == null) ? 0 : sha1Hash.hashCode()); + result = prime * result + ((size == null) ? 0 : size.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final Artifact other = (Artifact) obj; + if (md5Hash == null) { + if (other.md5Hash != null) { + return false; + } + } else if (!md5Hash.equals(other.md5Hash)) { + return false; + } + if (sha1Hash == null) { + if (other.sha1Hash != null) { + return false; + } + } else if (!sha1Hash.equals(other.sha1Hash)) { + return false; + } + if (size == null) { + if (other.size != null) { + return false; + } + } else if (!size.equals(other.size)) { + return false; + } + return true; + } } 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..30fb73365 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 @@ -38,10 +38,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 = { @@ -256,17 +252,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 +271,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,14 +283,58 @@ 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() + "]"; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((colour == null) ? 0 : colour.hashCode()); + result = prime * result + (deleted ? 1231 : 1237); + result = prime * result + ((elements == null) ? 0 : elements.hashCode()); + result = prime * result + ((key == null) ? 0 : key.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final DistributionSetType other = (DistributionSetType) obj; + if (colour == null) { + if (other.colour != null) { + return false; + } + } else if (!colour.equals(other.colour)) { + return false; + } + if (deleted != other.deleted) { + return false; + } + if (elements == null) { + if (other.elements != null) { + return false; + } + } else if (!elements.equals(other.elements)) { + 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/NamedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java index 30446a0bf..3ee2387ed 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,14 +12,8 @@ import javax.persistence.Column; import javax.persistence.MappedSuperclass; /** - * {@link TenantAwareBaseEntity} 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 TenantAwareBaseEntity { @@ -67,4 +61,42 @@ public abstract class NamedEntity extends TenantAwareBaseEntity { this.name = name; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((description == null) ? 0 : description.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final NamedEntity other = (NamedEntity) obj; + if (description == null) { + if (other.description != null) { + return false; + } + } else if (!description.equals(other.description)) { + return false; + } + if (name == null) { + if (other.name != null) { + return false; + } + } else if (!name.equals(other.name)) { + return false; + } + return true; + } + } 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..f76cac155 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. } /** 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 5b75bd0bd..35c7466be 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 @@ -78,4 +78,41 @@ public class TenantMetaData extends BaseEntity { this.tenant = tenant; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((defaultDsType == null) ? 0 : defaultDsType.hashCode()); + result = prime * result + ((tenant == null) ? 0 : tenant.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final TenantMetaData other = (TenantMetaData) obj; + if (defaultDsType == null) { + if (other.defaultDsType != null) { + return false; + } + } else if (!defaultDsType.equals(other.defaultDsType)) { + return false; + } + 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/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java index 20dffde29..c7a4cb136 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java @@ -54,15 +54,11 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Target Management") public class TargetManagementTest extends AbstractIntegrationTest { - @Test + @Test(expected = TenantNotExistException.class) @Description("Ensures that targets cannot be created e.g. in plug'n play scenarios when tenant does not exists.") @WithUser(tenantId = "tenantWhichDoesNotExists", allSpPermissions = true, autoCreateTenant = false) public void createTargetForTenantWhichDoesNotExistThrowsTenantNotExistException() { - try { - targetManagement.createTarget(new Target("targetId123")); - fail("tenant not exist"); - } catch (final TenantNotExistException e) { - } + targetManagement.createTarget(new Target("targetId123")); } @Test From cc8a62d1d4208b33fca7a2071960b488520914e4 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 26 Mar 2016 09:27:33 +0100 Subject: [PATCH 17/63] Checked in typo by accident. --- .../org/eclipse/hawkbit/repository/DeploymentManagement.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java index bdeba4d0a..77f71bebf 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DeploymentManagement.java @@ -534,6 +534,7 @@ public class DeploymentManagement { return saveAction; } else { throw new CancelActionNotAllowedException( + "Action [id: " + action.getId() + "] is not active and cannot be canceled"); } } From 0cc7284f6fe6ae468f83c9c985257bff33fec417 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 26 Mar 2016 16:13:58 +0100 Subject: [PATCH 18/63] Added further tests for target searches including the various filter options that we provide --- .../DistributionSetAssignmentResult.java | 2 +- .../hawkbit/repository/TargetManagement.java | 65 +- .../repository/model/TargetFilterQuery.java | 25 +- .../repository/model/TargetIdName.java | 11 +- .../TargetFilterQueryManagenmentTest.java | 3 - .../TargetManagementSearchTest.java | 805 +++++++++++++++--- .../repository/TargetManagementTest.java | 6 + .../resource/SystemManagementResource.java | 8 +- .../management/targettable/TargetTable.java | 5 +- 9 files changed, 747 insertions(+), 183 deletions(-) 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/TargetManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java index 9cf487641..4f89c8263 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 @@ -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; @@ -155,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)); } @@ -331,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} @@ -374,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} @@ -490,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; @@ -810,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. @@ -825,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 query = cb.createQuery(Object[].class); final Root targetRoot = query.from(Target.class); List resultList; + + String sortProperty = Target_.id.getName(); + if (pageRequest.getSort() != null && pageRequest.getSort().iterator().hasNext()) { + sortProperty = pageRequest.getSort().iterator().next().getProperty(); + } + final CriteriaQuery multiselect = query.multiselect(targetRoot.get(Target_.id), - targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), - targetRoot.get(pageRequest.getSort().iterator().next().getProperty())); + targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), targetRoot.get(sortProperty)); final Predicate[] specificationsForMultiSelect = specificationsToPredicate( - buildSpecificationList(filterByStatus, filterBySearchText, filterByDistributionId, + buildSpecificationList(filterByStatus, filterBySearchText, installedOrAssignedDistributionSetId, selectTargetWithNoTag, false, filterByTagNames), targetRoot, multiselect, cb); @@ -862,24 +870,29 @@ public class TargetManagement { } /** - * Finds all {@link Target#getControllerId()} for all the given parameter - * {@link TargetFilterQuery}. + * Finds all targets for all the given parameter {@link TargetFilterQuery} + * and returns not the full target but {@link TargetIdName}. * * @param pageRequest * the pageRequest to enhance the query for paging and sorting * @param targetFilterQuery * {@link TargetFilterQuery} - * @return the found {@link Target}s + * @return the found {@link TargetIdName}s */ @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) - public List findAllTargetIdsByTargetFilterQuery(final PageRequest pageRequest, + public List findAllTargetIdsByTargetFilterQuery(final Pageable pageRequest, @NotNull final TargetFilterQuery targetFilterQuery) { final CriteriaBuilder cb = entityManager.getCriteriaBuilder(); final CriteriaQuery query = cb.createQuery(Object[].class); final Root targetRoot = query.from(Target.class); + + String sortProperty = Target_.id.getName(); + if (pageRequest.getSort() != null && pageRequest.getSort().iterator().hasNext()) { + sortProperty = pageRequest.getSort().iterator().next().getProperty(); + } + final CriteriaQuery multiselect = query.multiselect(targetRoot.get(Target_.id), - targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), - targetRoot.get(pageRequest.getSort().iterator().next().getProperty())); + targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), targetRoot.get(sortProperty)); final Specification spec = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class); final List> specList = new ArrayList<>(); @@ -1072,7 +1085,7 @@ public class TargetManagement { return targetRepository.count(specs); } - private List getTargetIdNameResultSet(final PageRequest pageRequest, final CriteriaBuilder cb, + private List getTargetIdNameResultSet(final Pageable pageRequest, final CriteriaBuilder cb, final Root targetRoot, final CriteriaQuery multiselect) { List resultList; if (pageRequest.getSort() != null) { 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 f14fc26e2..80721a3d2 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") ) + "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 TenantAwareBaseEntity { private String query; public TargetFilterQuery() { - name = null; - query = null; + // Default constructor for JPA. } public TargetFilterQuery(final String name, final String query) { @@ -45,32 +40,18 @@ public class TargetFilterQuery extends TenantAwareBaseEntity { 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; } 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..f06fa8cf0 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; diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java index 73528ca5b..87fdff253 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java @@ -22,10 +22,7 @@ import ru.yandex.qatools.allure.annotations.Stories; /** * Test class for {@link TargetFilterQueryManagement}. * - * - * */ - @Features("Component Tests - Repository") @Stories("Target Filter Query Management") public class TargetFilterQueryManagenmentTest extends AbstractIntegrationTest { diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java index 93806e626..0438ac512 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java @@ -11,28 +11,34 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; import org.eclipse.hawkbit.AbstractIntegrationTest; import org.eclipse.hawkbit.TestDataUtil; import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.ActionStatus; -import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; +import org.eclipse.hawkbit.repository.model.TargetFilterQuery; +import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetTag; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; +import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; +import org.eclipse.hawkbit.repository.specifications.TargetSpecifications; import org.junit.Test; -import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Slice; +import com.google.common.collect.Lists; import com.google.common.primitives.Ints; import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; +import ru.yandex.qatools.allure.annotations.Step; import ru.yandex.qatools.allure.annotations.Stories; @Features("Component Tests - Repository") @@ -40,152 +46,626 @@ import ru.yandex.qatools.allure.annotations.Stories; public class TargetManagementSearchTest extends AbstractIntegrationTest { @Test - @Description("Tests different parameter combinations for target search operations. That includes both the test itself as a count operation with the same filters.") + @Description("Tests different parameter combinations for target search operations. " + + "That includes both the test itself, as a count operation with the same filters " + + "and query definitions by RSQL (named and un-named).") public void targetSearchWithVariousFilterCombinations() { - final TargetTag targTagA = tagManagement.createTargetTag(new TargetTag("TargTag-A")); - final TargetTag targTagB = tagManagement.createTargetTag(new TargetTag("TargTag-B")); - final TargetTag targTagC = tagManagement.createTargetTag(new TargetTag("TargTag-C")); - final TargetTag targTagD = tagManagement.createTargetTag(new TargetTag("TargTag-D")); - - // TODO kaizimmerm: test also installedDS (not only assignedDS) + final TargetTag targTagX = tagManagement.createTargetTag(new TargetTag("TargTag-X")); + final TargetTag targTagY = tagManagement.createTargetTag(new TargetTag("TargTag-Y")); + final TargetTag targTagZ = tagManagement.createTargetTag(new TargetTag("TargTag-Z")); + final TargetTag targTagW = tagManagement.createTargetTag(new TargetTag("TargTag-W")); final DistributionSet setA = TestDataUtil.generateDistributionSet("", softwareManagement, distributionSetManagement); + final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, + distributionSetManagement); + final String targetDsAIdPref = "targ-A"; List targAs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsAIdPref, targetDsAIdPref.concat(" description"))); - targAs = targetManagement.toggleTagAssignment(targAs, targTagA).getAssignedTargets(); + targAs = targetManagement.toggleTagAssignment(targAs, targTagX).getAssignedTargets(); final String targetDsBIdPref = "targ-B"; List targBs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsBIdPref, targetDsBIdPref.concat(" description"))); - targBs = targetManagement.toggleTagAssignment(targBs, targTagB).getAssignedTargets(); - targBs = targetManagement.toggleTagAssignment(targBs, targTagD).getAssignedTargets(); + targBs = targetManagement.toggleTagAssignment(targBs, targTagY).getAssignedTargets(); + targBs = targetManagement.toggleTagAssignment(targBs, targTagW).getAssignedTargets(); final String targetDsCIdPref = "targ-C"; List targCs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsCIdPref, targetDsCIdPref.concat(" description"))); - targCs = targetManagement.toggleTagAssignment(targCs, targTagC).getAssignedTargets(); - targCs = targetManagement.toggleTagAssignment(targCs, targTagD).getAssignedTargets(); + targCs = targetManagement.toggleTagAssignment(targCs, targTagZ).getAssignedTargets(); + targCs = targetManagement.toggleTagAssignment(targCs, targTagW).getAssignedTargets(); final String targetDsDIdPref = "targ-D"; - final Iterable targDs = targetManagement.createTargets( + final List targDs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsDIdPref, targetDsDIdPref.concat(" description"))); - deploymentManagement.assignDistributionSet(setA.getId(), targCs.iterator().next().getControllerId()); - deploymentManagement.assignDistributionSet(setA.getId(), targAs.iterator().next().getControllerId()); - deploymentManagement.assignDistributionSet(setA.getId(), targBs.iterator().next().getControllerId()); + final String assignedC = targCs.iterator().next().getControllerId(); + deploymentManagement.assignDistributionSet(setA.getId(), assignedC); + final String assignedA = targAs.iterator().next().getControllerId(); + deploymentManagement.assignDistributionSet(setA.getId(), assignedA); + final String assignedB = targBs.iterator().next().getControllerId(); + deploymentManagement.assignDistributionSet(setA.getId(), assignedB); + final String installedC = targCs.iterator().next().getControllerId(); + final Long actionId = deploymentManagement.assignDistributionSet(installedSet.getId(), assignedC).getActions() + .get(0); - final List unknown = new ArrayList(); + // set one installed DS also + final Action action = deploymentManagement.findActionWithDetails(actionId); + action.setStatus(Status.FINISHED); + controllerManagament.addUpdateActionStatus( + new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action); + deploymentManagement.assignDistributionSet(setA.getId(), installedC); + + final List unknown = new ArrayList<>(); unknown.add(TargetUpdateStatus.UNKNOWN); - final List pending = new ArrayList(); + final List pending = new ArrayList<>(); pending.add(TargetUpdateStatus.PENDING); - final List both = new ArrayList(); + final List both = new ArrayList<>(); both.add(TargetUpdateStatus.UNKNOWN); both.add(TargetUpdateStatus.PENDING); - final PageRequest pageReq = new PageRequest(0, 500); // try to find several targets with different filter settings + verifyThatRepositoryContains400Targets(); + verifyThat200TargetsHaveTagD(targTagW, concat(targBs, targCs)); + verifyThat100TargetsContainsGivenTextAndHaveTagAssigned(targTagY, targTagW, targBs); + verifyThat1TargetHasTagHasDescOrNameAndDs(targTagW, setA, targetManagement.findTargetByControllerID(assignedC)); + verifyThat0TargetsWithTagAndDescOrNameHasDS(targTagW, setA); + verifyThat0TargetsWithNameOrdescAndDSHaveTag(targTagX, setA); + verifyThat3TargetsHaveDSAssigned(setA, + targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC))); + verifyThat1TargetWithDescOrNameHasDS(setA, targetManagement.findTargetByControllerID(assignedA)); + List expected = concat(targAs, targBs, targCs, targDs); + expected.removeAll( + targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC))); + verifyThat397TargetsAreInStatusUnknown(unknown, expected); + expected = concat(targBs, targCs); + expected.removeAll(targetManagement.findTargetByControllerID(Lists.newArrayList(assignedB, assignedC))); + verifyThat198TargetsAreInStatusUnknownAndHaveGivenTags(targTagY, targTagW, unknown, expected); + verfyThat0TargetsAreInStatusUnknownAndHaveDSAssigned(setA, unknown); + expected = concat(targAs); + expected.remove(targetManagement.findTargetByControllerID(assignedA)); + verifyThat99TargetsWithNameOrDescriptionAreInGivenStatus(unknown, expected); + expected = concat(targBs); + expected.remove(targetManagement.findTargetByControllerID(assignedB)); + verifyThat99TargetsWithGivenNameOrDescAndTagAreInStatusUnknown(targTagW, unknown, expected); + verifyThat3TargetsAreInStatusPending(pending, + targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC))); + verifyThat3TargetsWithGivenDSAreInPending(setA, pending, + targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC))); + verifyThat1TargetWithGivenNameOrDescAndDSIsInPending(setA, pending, + targetManagement.findTargetByControllerID(assignedA)); + verifyThat1TargetWithGivenNameOrDescAndTagAndDSIsInPending(targTagW, setA, pending, + targetManagement.findTargetByControllerID(assignedB)); + verifyThat2TargetsWithGivenTagAndDSIsInPending(targTagW, setA, pending, + targetManagement.findTargetByControllerID(Lists.newArrayList(assignedB, assignedC))); + verifyThat2TargetsWithGivenTagAreInPending(targTagW, pending, + targetManagement.findTargetByControllerID(Lists.newArrayList(assignedB, assignedC))); + verifyThat200targetsWithGivenTagAreInStatusPendingorUnknown(targTagW, both, concat(targBs, targCs)); + verfiyThat1TargetAIsInStatusPendingAndHasDSInstalled(installedSet, pending, + targetManagement.findTargetByControllerID(installedC)); + } - // TODO kaizimmerm: comment and check also the content itself, not only - // the numbers - // (containsOnly) - assertThat(targetManagement.countTargetsAll()).isEqualTo(400); + @Step + private void verfiyThat1TargetAIsInStatusPendingAndHasDSInstalled(final DistributionSet installedSet, + final List pending, final Target expected) { + final TargetIdName expectedIdName = convertToIdName(expected); + final String query = "updatestatus==pending and installedds.name==" + installedSet.getName(); - assertThat(targetManagement.findTargetByFilters(pageReq, null, null, null, Boolean.FALSE, targTagD.getName()) - .getNumberOfElements()).isEqualTo(200).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(null, null, null, Boolean.FALSE, targTagD.getName()))); + assertThat(targetManagement + .findTargetByFilters(pageReq, pending, null, installedSet.getId(), Boolean.FALSE, new String[0]) + .getContent()).as("has number of elements").hasSize(1) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, + installedSet.getId(), Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsExactly(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); - Slice x = targetManagement.findTargetByFilters(pageReq, null, "%targ-B%", null, Boolean.FALSE, - targTagB.getName(), targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(100).isEqualTo(Ints.saturatedCast(targetManagement - .countTargetByFilters(null, "%targ-B%", null, Boolean.FALSE, targTagB.getName(), targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, - targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast(targetManagement - .countTargetByFilters(null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, - targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(0).isEqualTo(Ints.saturatedCast(targetManagement - .countTargetByFilters(null, "%targ-A%", setA.getId(), Boolean.FALSE, targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, - targTagA.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(0).isEqualTo(Ints.saturatedCast(targetManagement - .countTargetByFilters(null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagA.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, null, null, setA.getId(), Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(3).isEqualTo(Ints - .saturatedCast(targetManagement.countTargetByFilters(null, null, setA.getId(), Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(null, "%targ-A%", setA.getId(), Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(397).isEqualTo( - Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, null, Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, targTagB.getName(), - targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(198).isEqualTo(Ints.saturatedCast(targetManagement - .countTargetByFilters(unknown, null, null, Boolean.FALSE, targTagB.getName(), targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, unknown, null, setA.getId(), Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(0).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(unknown, null, setA.getId(), Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, unknown, "%targ-A%", null, Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(99).isEqualTo(Ints - .saturatedCast(targetManagement.countTargetByFilters(unknown, "%targ-A%", null, Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, unknown, "%targ-B%", null, Boolean.FALSE, targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(99).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(unknown, "%targ-B%", null, Boolean.FALSE, targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(198).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(unknown, null, null, Boolean.FALSE, targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(3).isEqualTo( - Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, null, Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(3).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(pending, null, setA.getId(), Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, pending, "%targ-A%", setA.getId(), Boolean.FALSE, null); - assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(pending, "%targ-A%", setA.getId(), Boolean.FALSE, null))); - - x = targetManagement.findTargetByFilters(pageReq, pending, "%targ-B%", setA.getId(), Boolean.FALSE, - targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast(targetManagement - .countTargetByFilters(pending, "%targ-B%", setA.getId(), Boolean.FALSE, targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, - targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(2).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(pending, null, setA.getId(), Boolean.FALSE, targTagD.getName()))); - - x = targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, targTagD.getName()); - assertThat(x.getNumberOfElements()).isEqualTo(2).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(pending, null, null, Boolean.FALSE, targTagD.getName()))); - - // Both status: 2 pending and 198 unknown - assertThat(targetManagement.findTargetByFilters(pageReq, both, null, null, Boolean.FALSE, targTagD.getName()) - .getNumberOfElements()).isEqualTo(200).isEqualTo(Ints.saturatedCast( - targetManagement.countTargetByFilters(both, null, null, Boolean.FALSE, targTagD.getName()))); + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, installedSet.getId(), + Boolean.FALSE, new String[0])).as("has number of elements").hasSize(1) + .as("and contains the following elements").containsExactly(expectedIdName) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query))); + + } + + @Step + private void verifyThat200targetsWithGivenTagAreInStatusPendingorUnknown(final TargetTag targTagW, + final List both, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + + final String query = "(updatestatus==pending or updatestatus==unknown) and tag==" + targTagW.getName(); + + assertThat(targetManagement.findTargetByFilters(pageReq, both, null, null, Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(200) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(both, null, null, + Boolean.FALSE, targTagW.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, both, null, null, Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(200).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + private static List convertToIdNames(final List expected) { + return expected.stream() + .map(target -> new TargetIdName(target.getId(), target.getControllerId(), target.getName())) + .collect(Collectors.toList()); + } + + private static TargetIdName convertToIdName(final Target target) { + return new TargetIdName(target.getId(), target.getControllerId(), target.getName()); + } + + @Step + private void verifyThat2TargetsWithGivenTagAreInPending(final TargetTag targTagW, + final List pending, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==pending and tag==" + targTagW.getName(); + + assertThat(targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(2) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, null, + Boolean.FALSE, targTagW.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(2).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat2TargetsWithGivenTagAndDSIsInPending(final TargetTag targTagW, final DistributionSet setA, + final List pending, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name==" + + setA.getName() + ") and tag==" + targTagW.getName(); + + assertThat(targetManagement + .findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(2) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, setA.getId(), + Boolean.FALSE, targTagW.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(2).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat1TargetWithGivenNameOrDescAndTagAndDSIsInPending(final TargetTag targTagW, + final DistributionSet setA, final List pending, final Target expected) { + final TargetIdName expectedIdName = convertToIdName(expected); + final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name==" + + setA.getName() + ") and (name==*targ-B* or description==*targ-B*) and tag==" + targTagW.getName(); + + assertThat(targetManagement + .findTargetByFilters(pageReq, pending, "%targ-B%", setA.getId(), Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(1) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, "%targ-B%", + setA.getId(), Boolean.FALSE, targTagW.getName()))) + .as("and contains the following elements").containsExactly(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, "%targ-B%", setA.getId(), Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(1).as("and contains the following elements") + .containsExactly(expectedIdName).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat1TargetWithGivenNameOrDescAndDSIsInPending(final DistributionSet setA, + final List pending, final Target expected) { + final TargetIdName expectedIdName = convertToIdName(expected); + final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name==" + + setA.getName() + ") and (name==*targ-A* or description==*targ-A*)"; + + assertThat(targetManagement + .findTargetByFilters(pageReq, pending, "%targ-A%", setA.getId(), Boolean.FALSE, new String[0]) + .getContent()).as("has number of elements").hasSize(1) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, "%targ-A%", + setA.getId(), Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsExactly(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, "%targ-A%", setA.getId(), Boolean.FALSE, + new String[0])).as("has number of elements").hasSize(1).as("and contains the following elements") + .containsExactly(expectedIdName).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat3TargetsWithGivenDSAreInPending(final DistributionSet setA, + final List pending, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name==" + + setA.getName() + ")"; + + assertThat(targetManagement + .findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, new String[0]).getContent()) + .as("has number of elements").hasSize(3).as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, setA.getId(), + Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, + new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat3TargetsAreInStatusPending(final List pending, + final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==pending"; + + assertThat(targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, new String[0]) + .getContent()).as("has number of elements").hasSize(3) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, null, + Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat( + targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, Boolean.FALSE, new String[0])) + .as("has number of elements").hasSize(3).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat99TargetsWithGivenNameOrDescAndTagAreInStatusUnknown(final TargetTag targTagW, + final List unknown, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==unknown and (name==*targ-B* or description==*targ-B*) and tag==" + + targTagW.getName(); + + assertThat(targetManagement + .findTargetByFilters(pageReq, unknown, "%targ-B%", null, Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(99) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, "%targ-B%", null, + Boolean.FALSE, targTagW.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, "%targ-B%", null, Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(99).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat99TargetsWithNameOrDescriptionAreInGivenStatus(final List unknown, + final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==unknown and (name==*targ-A* or description==*targ-A*)"; + + assertThat(targetManagement + .findTargetByFilters(pageReq, unknown, "%targ-A%", null, Boolean.FALSE, new String[0]).getContent()) + .as("has number of elements").hasSize(99).as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, "%targ-A%", null, + Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, "%targ-A%", null, Boolean.FALSE, + new String[0])).as("has number of elements").hasSize(99).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verfyThat0TargetsAreInStatusUnknownAndHaveDSAssigned(final DistributionSet setA, + final List unknown) { + final String query = "updatestatus==unknown and (assignedds.name==" + setA.getName() + " or installedds.name==" + + setA.getName() + ")"; + + assertThat(targetManagement + .findTargetByFilters(pageReq, unknown, null, setA.getId(), Boolean.FALSE, new String[0]).getContent()) + .as("has number of elements").hasSize(0).as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, setA.getId(), + Boolean.FALSE, new String[0]))) + .as("and filter query returns the same result") + .hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size()) + .as("and NAMED filter query returns the same result").hasSize(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent().size()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, setA.getId(), Boolean.FALSE, + new String[0])).as("has number of elements").hasSize(0) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat198TargetsAreInStatusUnknownAndHaveGivenTags(final TargetTag targTagY, + final TargetTag targTagW, final List unknown, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==unknown and (tag==" + targTagY.getName() + " or tag==" + targTagW.getName() + + ")"; + + assertThat(targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, targTagY.getName(), + targTagW.getName()).getContent()).as("has number of elements").hasSize(198) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, null, + Boolean.FALSE, targTagY.getName(), targTagW.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, Boolean.FALSE, + targTagY.getName(), targTagW.getName())).as("has number of elements").hasSize(198) + .as("and contains the following elements").containsAll(expectedIdNames) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat397TargetsAreInStatusUnknown(final List unknown, + final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "updatestatus==unknown"; + + assertThat(targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, new String[0]) + .getContent()).as("has number of elements").hasSize(397) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, null, + Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat( + targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, Boolean.FALSE, new String[0])) + .as("has number of elements").hasSize(397).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat1TargetWithDescOrNameHasDS(final DistributionSet setA, final Target expected) { + final TargetIdName expectedIdName = convertToIdName(expected); + final String query = "(name==*targ-A* or description==*targ-A*) and (assignedds.name==" + setA.getName() + + " or installedds.name==" + setA.getName() + ")"; + + assertThat(targetManagement + .findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, new String[0]) + .getContent()).as("has number of elements").hasSize(1) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-A%", + setA.getId(), Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsExactly(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, + new String[0])).as("has number of elements").hasSize(1).as("and contains the following elements") + .containsExactly(expectedIdName).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat3TargetsHaveDSAssigned(final DistributionSet setA, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName(); + + assertThat(targetManagement.findTargetByFilters(pageReq, null, null, setA.getId(), Boolean.FALSE, new String[0]) + .getContent()).as("has number of elements").hasSize(3) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, null, setA.getId(), + Boolean.FALSE, new String[0]))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, setA.getId(), Boolean.FALSE, + new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat0TargetsWithNameOrdescAndDSHaveTag(final TargetTag targTagX, final DistributionSet setA) { + final String query = "(name==*targ-C* or description==*targ-C*) and tag==" + targTagX.getName() + + " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")"; + assertThat(targetManagement + .findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagX.getName()) + .getContent()).as("has number of elements").hasSize(0) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-C%", + setA.getId(), Boolean.FALSE, targTagX.getName()))) + .as("and filter query returns the same result") + .hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size()) + .as("and NAMED filter query returns the same result").hasSize(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent().size()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, + targTagX.getName())).as("has number of elements").hasSize(0) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat0TargetsWithTagAndDescOrNameHasDS(final TargetTag targTagW, final DistributionSet setA) { + final String query = "(name==*targ-A* or description==*targ-A*) and tag==" + targTagW.getName() + + " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")"; + assertThat(targetManagement + .findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(0) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-A%", + setA.getId(), Boolean.FALSE, targTagW.getName()))) + .as("and filter query returns the same result") + .hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size()) + .as("and NAMED filter query returns the same result").hasSize(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent().size()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(0) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat1TargetHasTagHasDescOrNameAndDs(final TargetTag targTagW, final DistributionSet setA, + final Target expected) { + final TargetIdName expectedIdName = convertToIdName(expected); + final String query = "(name==*targ-c* or description==*targ-C*) and tag==" + targTagW.getName() + + " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")"; + assertThat(targetManagement + .findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagW.getName()) + .getContent()).as("has number of elements").hasSize(1) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-C%", + setA.getId(), Boolean.FALSE, targTagW.getName()))) + .as("and contains the following elements").containsExactly(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, + targTagW.getName())).as("has number of elements").hasSize(1).as("and contains the following elements") + .containsExactly(expectedIdName).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + } + + @Step + private void verifyThat100TargetsContainsGivenTextAndHaveTagAssigned(final TargetTag targTagY, + final TargetTag targTagW, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "(name==*targ-B* or description==*targ-B*) and (tag==" + targTagY.getName() + " or tag==" + + targTagW.getName() + ")"; + assertThat(targetManagement.findTargetByFilters(pageReq, null, "%targ-B%", null, Boolean.FALSE, + targTagY.getName(), targTagW.getName()).getContent()).as("has number of elements").hasSize(100) + .as("that number is also returned by count query") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-B%", null, + Boolean.FALSE, targTagY.getName(), targTagW.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-B%", null, Boolean.FALSE, + targTagY.getName(), targTagW.getName())).as("has number of elements").hasSize(100) + .as("and contains the following elements").containsAll(expectedIdNames) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query))); + + } + + @SafeVarargs + private final List concat(final List... targets) { + final List result = new ArrayList<>(); + Arrays.asList(targets).forEach(result::addAll); + return result; + } + + @Step + private void verifyThat200TargetsHaveTagD(final TargetTag targTagD, final List expected) { + final List expectedIdNames = convertToIdNames(expected); + final String query = "tag==" + targTagD.getName(); + assertThat(targetManagement.findTargetByFilters(pageReq, null, null, null, Boolean.FALSE, targTagD.getName()) + .getContent()).as("Expected number of results is").hasSize(200) + .as("and is expected number of results is equal to ") + .hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, null, null, + Boolean.FALSE, targTagD.getName()))) + .as("and contains the following elements").containsAll(expected) + .as("and filter query returns the same result") + .containsAll(targetManagement.findTargetsAll(query, pageReq).getContent()) + .as("and NAMED filter query returns the same result").containsAll(targetManagement + .findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent()); + + assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, null, Boolean.FALSE, + targTagD.getName())).as("has number of elements").hasSize(200).as("and contains the following elements") + .containsAll(expectedIdNames).as("and NAMED filter query returns the same result") + .containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq, + new TargetFilterQuery("test", query))); + + } + + @Step + private void verifyThatRepositoryContains400Targets() { + assertThat(targetManagement.findTargetByFilters(pageReq, null, null, null, null, new String[0]).getContent()) + .as("Overall we expect that many targets in the repository").hasSize(400) + .as("which is also reflected by repository count") + .hasSize(Ints.saturatedCast(targetManagement.countTargetsAll())) + .as("which is also reflected by call without specification") + .containsAll(targetManagement.findTargetsAll(pageReq).getContent()); } - // TODO kaizimmerm: add filter tests @Test @Description("Tests the correct order of targets based on selected distribution set. The system expects to have an order based on installed, assigned DS.") public void targetSearchWithVariousFilterCombinationsAndOrderByDistributionSet() { @@ -205,7 +685,7 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { targInstalled = sendUpdateActionStatusToTargets(ds, targInstalled, Status.FINISHED, "installed"); final Slice result = targetManagement.findTargetsAllOrderByLinkedDistributionSet(pageReq, ds.getId(), - null, null, null, Boolean.FALSE, null); + null, null, null, Boolean.FALSE, new String[0]); final Comparator byId = (e1, e2) -> Long.compare(e2.getId(), e1.getId()); @@ -222,6 +702,103 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { } + @Test + @Description("Verfies that targets with given assigned DS are returned from repository.") + public void findTargetByAssignedDistributionSet() { + final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement, + distributionSetManagement); + targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); + final List assignedtargets = targetManagement + .createTargets(TestDataUtil.generateTargets(10, "assigned")); + + deploymentManagement.assignDistributionSet(assignedSet, assignedtargets); + + assertThat(targetManagement.findTargetByAssignedDistributionSet(assignedSet.getId(), pageReq)) + .as("Contains the assigned targets").containsAll(assignedtargets) + .as("and that means the following expected amount").hasSize(10); + + } + + @Test + @Description("Verfies that targets with given assigned DS and additonal specification are returned from repository.") + public void findTargetByAssignedDistributionSetWithAdditonalSpecification() { + final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement, + distributionSetManagement); + final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, + distributionSetManagement); + targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); + final List assignedtargets = targetManagement + .createTargets(TestDataUtil.generateTargets(10, "assigned")); + + // set on installed and assign another one + deploymentManagement.assignDistributionSet(installedSet, assignedtargets).getActions().forEach(actionId -> { + final Action action = deploymentManagement.findActionWithDetails(actionId); + action.setStatus(Status.FINISHED); + controllerManagament.addUpdateActionStatus( + new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action); + }); + deploymentManagement.assignDistributionSet(assignedSet, assignedtargets); + + assertThat(targetManagement.findTargetByAssignedDistributionSet(assignedSet.getId(), + TargetSpecifications.hasInstalledDistributionSet(installedSet.getId()), pageReq)) + .as("Contains the assigned targets").containsAll(assignedtargets) + .as("and that means the following expected amount").hasSize(10); + + } + + @Test + @Description("Verfies that targets with given installed DS are returned from repository.") + public void findTargetByInstalledDistributionSet() { + final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement, + distributionSetManagement); + final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, + distributionSetManagement); + targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); + final List installedtargets = targetManagement + .createTargets(TestDataUtil.generateTargets(10, "assigned")); + + // set on installed and assign another one + deploymentManagement.assignDistributionSet(installedSet, installedtargets).getActions().forEach(actionId -> { + final Action action = deploymentManagement.findActionWithDetails(actionId); + action.setStatus(Status.FINISHED); + controllerManagament.addUpdateActionStatus( + new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action); + }); + deploymentManagement.assignDistributionSet(assignedSet, installedtargets); + + assertThat(targetManagement.findTargetByInstalledDistributionSet(installedSet.getId(), pageReq)) + .as("Contains the assigned targets").containsAll(installedtargets) + .as("and that means the following expected amount").hasSize(10); + + } + + @Test + @Description("Verfies that targets with given installed DS and additonal specification are returned from repository.") + public void findTargetByInstalledDistributionSetWithAdditonalSpecification() { + final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement, + distributionSetManagement); + final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, + distributionSetManagement); + targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); + final List installedtargets = targetManagement + .createTargets(TestDataUtil.generateTargets(10, "assigned")); + + // set on installed and assign another one + deploymentManagement.assignDistributionSet(installedSet, installedtargets).getActions().forEach(actionId -> { + final Action action = deploymentManagement.findActionWithDetails(actionId); + action.setStatus(Status.FINISHED); + controllerManagament.addUpdateActionStatus( + new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action); + }); + deploymentManagement.assignDistributionSet(assignedSet, installedtargets); + + assertThat(targetManagement.findTargetByInstalledDistributionSet(installedSet.getId(), + TargetSpecifications.hasAssignedDistributionSet(assignedSet.getId()), pageReq)) + .as("Contains the assigned targets").containsAll(installedtargets) + .as("and that means the following expected amount").hasSize(10); + + } + private List sendUpdateActionStatusToTargets(final DistributionSet dsA, final Iterable targs, final Status status, final String... msgs) { final List result = new ArrayList(); diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java index c7a4cb136..4a664f5b8 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java @@ -202,6 +202,12 @@ public class TargetManagementTest extends AbstractIntegrationTest { } + @Test + @Description("Ensures that repositoy returns null if given controller ID does not exist without exception.") + public void findTargetByControllerIDWithDetailsReturnsNullForNonexisting() { + assertThat(targetManagement.findTargetByControllerIDWithDetails("dsfsdfsdfsd")).as("Expected as").isNull(); + } + @Test @Description("Checks if the EntityAlreadyExistsException is thrown if the targets with the same controller ID are created twice.") public void createMultipleTargetsDuplicate() { diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SystemManagementResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SystemManagementResource.java index b3a461915..27cfdb924 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SystemManagementResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SystemManagementResource.java @@ -88,7 +88,7 @@ public class SystemManagementResource { .setOverallTargets(report.getOverallTargets()).setOverallTenants(report.getTenants().size()); result.setTenantStats( - report.getTenants().stream().map(tenant -> convertTenant(tenant)).collect(Collectors.toList())); + report.getTenants().stream().map(SystemManagementResource::convertTenant).collect(Collectors.toList())); return ResponseEntity.ok(result); } @@ -104,7 +104,7 @@ public class SystemManagementResource { } /** - * Returns a list of all caches containing currently. + * Returns a list of all caches. * * @return a list of caches for all tenants */ @@ -112,8 +112,8 @@ public class SystemManagementResource { @PreAuthorize(SpringEvalExpressions.HAS_AUTH_SYSTEM_ADMIN) public ResponseEntity> getCaches() { final Collection cacheNames = cacheManager.getCacheNames(); - return ResponseEntity.ok(cacheNames.stream().map(cacheName -> cacheManager.getCache(cacheName)) - .map(cache -> cacheRest(cache)).collect(Collectors.toList())); + return ResponseEntity + .ok(cacheNames.stream().map(cacheManager::getCache).map(this::cacheRest).collect(Collectors.toList())); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 960553a6a..88d82bd9d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -15,7 +15,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -141,8 +140,6 @@ public class TargetTable extends AbstractTable implements Handler { private Boolean isTargetPinned = Boolean.FALSE; private ShortcutAction actionSelectAll; private ShortcutAction actionUnSelectAll; - - @Override @PostConstruct @@ -1038,7 +1035,7 @@ public class TargetTable extends AbstractTable implements Handler { final String[] tagArray = tagList.toArray(new String[tagList.size()]); List targetIdList; - targetIdList = targetManagement.findAllTargetIdsByFilters(pageRequest, filterByDistId, statusList, searchText, + targetIdList = targetManagement.findAllTargetIdsByFilters(pageRequest, statusList, searchText, filterByDistId, noTagSelected, tagList.toArray(tagArray)); Collections.reverse(targetIdList); return targetIdList; From c9566e61ce6bf4f768a739788336e3e1344eda33 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sun, 27 Mar 2016 10:36:55 +0200 Subject: [PATCH 19/63] Used lambdas to reduce boilerplate code. Signed-off-by: Kai Zimmermann --- .../hawkbit/repository/TargetManagement.java | 14 +- .../DistributionSetSpecification.java | 158 +++++------------- .../DistributionSetTypeSpecification.java | 56 +------ .../SoftwareModuleSpecification.java | 62 ++----- .../TargetFilterQuerySpecification.java | 21 +-- .../specifications/TargetSpecifications.java | 143 +++++----------- 6 files changed, 112 insertions(+), 342 deletions(-) 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 4f89c8263..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; @@ -534,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()); @@ -556,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); @@ -566,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))); @@ -576,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))); @@ -607,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)); }); @@ -620,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)); }); 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); }; } } From 8a26ded4c418c5ed4b82ebcb8bea64dd97ad6c8f Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sun, 27 Mar 2016 10:39:29 +0200 Subject: [PATCH 20/63] Extended tests for tag toggle and fixed a typo on the assigment result classes. Signed-off-by: Kai Zimmermann --- ...istributionSetTagAssigmentResultEvent.java | 8 +- .../event/TargetTagAssigmentResultEvent.java | 8 +- .../repository/DistributionSetManagement.java | 41 +++--- .../repository/SoftwareManagement.java | 14 +- .../repository/SoftwareModuleRepository.java | 10 +- ...> DistributionSetTagAssignmentResult.java} | 18 +-- ...lt.java => TargetTagAssignmentResult.java} | 18 +-- .../org/eclipse/hawkbit/TestDataUtil.java | 2 +- .../repository/ControllerManagementTest.java | 19 +-- ...ava => DistributionSetManagementTest.java} | 11 +- .../hawkbit/repository/TagManagementTest.java | 128 +++++++++++++++--- .../resource/DistributionSetTagResource.java | 4 +- .../rest/resource/TargetTagResource.java | 4 +- .../resource/SoftwareModuleResourceTest.java | 23 ++-- .../SoftwareModuleAddUpdateWindow.java | 30 ++-- .../tagdetails/DistributionTagToken.java | 16 +-- .../ui/common/tagdetails/TargetTagToken.java | 16 +-- .../management/dstable/DistributionTable.java | 6 +- .../event/DistributionTagDropEvent.java | 4 +- .../management/targettable/TargetTable.java | 4 +- .../targettag/TargetTagFilterButtons.java | 4 +- .../hawkbit/ui/utils/HawkbitCommonUtil.java | 27 ++-- 22 files changed, 232 insertions(+), 183 deletions(-) rename hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/{DistributionSetTagAssigmentResult.java => DistributionSetTagAssignmentResult.java} (80%) rename hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/{TargetTagAssigmentResult.java => TargetTagAssignmentResult.java} (82%) rename hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/{SoftwareManagementForDSTest.java => DistributionSetManagementTest.java} (99%) 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/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/DistributionSetManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java index 88e222e64..890333697 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,42 +160,42 @@ 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; - 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; + final DistributionSetTagAssignmentResult resultAssignment = result; afterCommit.afterCommit(() -> eventBus.post(new DistributionSetTagAssigmentResultEvent(resultAssignment))); // no reason to persist the tag @@ -436,7 +433,7 @@ public class DistributionSetManagement { * @param spec * of the search * @param pageable - * parametsr for paging + * parameter for paging * * @return the found {@link SoftwareModuleType}s */ @@ -1059,7 +1056,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/SoftwareManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SoftwareManagement.java index b51019338..ec1954b35 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 @@ -258,10 +258,6 @@ public class SoftwareManagement { return artifactManagement.findSoftwareModuleById(id); } - // TODO: discuss this method, does not seem to make sense to search by name - // and version without type. It also makes no sense to return collection - // here. It should be a single result based on ytpe,name,version (like the - // constraint). /** * retrieves {@link SoftwareModule}s by their name AND version. * @@ -269,13 +265,15 @@ public class SoftwareManagement { * 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); } /** 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 44682da64..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. 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/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/test/java/org/eclipse/hawkbit/TestDataUtil.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java index befcd6a8a..b2fa1f735 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/TestDataUtil.java @@ -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/ControllerManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/ControllerManagementTest.java index a3913da2b..ebe57d2b1 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 @@ -9,7 +9,6 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; -import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; @@ -43,7 +42,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); @@ -74,8 +73,8 @@ public class ControllerManagementTest extends AbstractIntegrationTest { .isEqualTo(3); } - @Test - @Description("Register a controller which not exist") + @Test(expected = ConstraintViolationException.class) + @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,12 +83,8 @@ 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); - try { - controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null); - fail("target with empty controller id should not be registred"); - } catch (final ConstraintViolationException e) { - // ok - } + // throws exception + controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null); } @Test @@ -101,7 +96,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 +119,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/SoftwareManagementForDSTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java similarity index 99% 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..352d28e15 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 @@ -44,15 +44,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.") @@ -159,8 +156,6 @@ public class SoftwareManagementForDSTest extends AbstractIntegrationTest { assertThat(distributionSetManagement.findDistributionSetTypeByKey("softdeleted").isDeleted()).isEqualTo(true); } - // TODO: kzimmerm: test N+1 - @Test(expected = EntityAlreadyExistsException.class) @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() { diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java index eb263b242..69ad50f02 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java @@ -10,9 +10,11 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import org.eclipse.hawkbit.AbstractIntegrationTest; import org.eclipse.hawkbit.TestDataUtil; @@ -20,9 +22,11 @@ import org.eclipse.hawkbit.repository.DistributionSetFilter.DistributionSetFilte import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetTag; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.Tag; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetTag; +import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.junit.Before; import org.junit.Test; import org.slf4j.LoggerFactory; @@ -158,6 +162,98 @@ public class TagManagementTest extends AbstractIntegrationTest { return new DistributionSetFilterBuilder(); } + @Test + @Description("Verifies the toogle mechanism by means on assigning tag if at least on DS in the list does not have" + + "the tag yet. Unassign if all of them have the tag already.") + public void assignAndUnassignDistributionSetTags() { + final List groupA = TestDataUtil.generateDistributionSets(20, softwareManagement, + distributionSetManagement); + final List groupB = TestDataUtil.generateDistributionSets("unassigned", 20, softwareManagement, + distributionSetManagement); + + final DistributionSetTag tag = tagManagement + .createDistributionSetTag(new DistributionSetTag("tag1", "tagdesc1", "")); + + // toggle A only -> A is now assigned + DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(groupA, tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + groupA.stream().map(set -> set.getId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedDs()).isEmpty(); + assertThat(result.getDistributionSetTag()).isEqualTo(tag); + + // toggle A+B -> A is still assigned and B is assigned as well + result = distributionSetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(20); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + groupB.stream().map(set -> set.getId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedDs()).isEmpty(); + assertThat(result.getDistributionSetTag()).isEqualTo(tag); + + // toggle A+B -> both unassigned + result = distributionSetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(0); + assertThat(result.getAssignedDs()).isEmpty(); + assertThat(result.getUnassigned()).isEqualTo(40); + assertThat(result.getUnassignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + concat(groupB, groupA).stream().map(set -> set.getId()).collect(Collectors.toList()))); + assertThat(result.getDistributionSetTag()).isEqualTo(tag); + + } + + @Test + @Description("Verifies the toogle mechanism by means on assigning tag if at least on target in the list does not have" + + "the tag yet. Unassign if all of them have the tag already.") + public void assignAndUnassignTargetTags() { + final List groupA = targetManagement.createTargets(TestDataUtil.generateTargets(20, "")); + final List groupB = targetManagement.createTargets(TestDataUtil.generateTargets(20, "groupb")); + + final TargetTag tag = tagManagement.createTargetTag(new TargetTag("tag1", "tagdesc1", "")); + + // toggle A only -> A is now assigned + TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(groupA, tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + groupA.stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedTargets()).isEmpty(); + assertThat(result.getTargetTag()).isEqualTo(tag); + + // toggle A+B -> A is still assigned and B is assigned as well + result = targetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(20); + assertThat(result.getAssigned()).isEqualTo(20); + assertThat(result.getAssignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + groupB.stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); + assertThat(result.getUnassigned()).isEqualTo(0); + assertThat(result.getUnassignedTargets()).isEmpty(); + assertThat(result.getTargetTag()).isEqualTo(tag); + + // toggle A+B -> both unassigned + result = targetManagement.toggleTagAssignment(concat(groupA, groupB), tag); + assertThat(result.getAlreadyAssigned()).isEqualTo(0); + assertThat(result.getAssigned()).isEqualTo(0); + assertThat(result.getAssignedTargets()).isEmpty(); + assertThat(result.getUnassigned()).isEqualTo(40); + assertThat(result.getUnassignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + concat(groupB, groupA).stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); + assertThat(result.getTargetTag()).isEqualTo(tag); + + } + + @SafeVarargs + private final List concat(final List... targets) { + final List result = new ArrayList<>(); + Arrays.asList(targets).forEach(result::addAll); + return result; + } + @Test @Description("Ensures that all tags are retrieved through repository.") public void findAllTargetTags() { @@ -266,48 +362,38 @@ public class TagManagementTest extends AbstractIntegrationTest { } } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be created if one exists already with that name (ecpects EntityAlreadyExistsException).") public void failedDuplicateTargetTagNameException() { tagManagement.createTargetTag(new TargetTag("A")); - try { - tagManagement.createTargetTag(new TargetTag("A")); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + tagManagement.createTargetTag(new TargetTag("A")); } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be updated to a name that already exists on another tag (ecpects EntityAlreadyExistsException).") public void failedDuplicateTargetTagNameExceptionAfterUpdate() { tagManagement.createTargetTag(new TargetTag("A")); final TargetTag tag = tagManagement.createTargetTag(new TargetTag("B")); tag.setName("A"); - try { - tagManagement.updateTargetTag(tag); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + + tagManagement.updateTargetTag(tag); } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be created if one exists already with that name (ecpects EntityAlreadyExistsException).") public void failedDuplicateDsTagNameException() { tagManagement.createDistributionSetTag(new DistributionSetTag("A")); - try { - tagManagement.createDistributionSetTag(new DistributionSetTag("A")); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + tagManagement.createDistributionSetTag(new DistributionSetTag("A")); } + @Test(expected = EntityAlreadyExistsException.class) @Description("Ensures that a tag cannot be updated to a name that already exists on another tag (ecpects EntityAlreadyExistsException).") public void failedDuplicateDsTagNameExceptionAfterUpdate() { tagManagement.createDistributionSetTag(new DistributionSetTag("A")); final DistributionSetTag tag = tagManagement.createDistributionSetTag(new DistributionSetTag("B")); tag.setName("A"); - try { - tagManagement.updateDistributionSetTag(tag); - fail("Expected EntityAlreadyExistsException"); - } catch (final EntityAlreadyExistsException e) { - } + + tagManagement.updateDistributionSetTag(tag); } @Test diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java index 63b864758..96a45aa6e 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.DistributionSet; 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.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetTagRestApi; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; @@ -135,7 +135,7 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { final DistributionSetTag tag = findDistributionTagById(distributionsetTagId); - final DistributionSetTagAssigmentResult assigmentResult = this.distributionSetManagement + final DistributionSetTagAssignmentResult assigmentResult = this.distributionSetManagement .toggleTagAssignment(findDistributionSetIds(assignedDSRequestBodies), tag.getName()); final DistributionSetTagAssigmentResultRest tagAssigmentResultRest = new DistributionSetTagAssigmentResultRest(); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java index 0e4bf9ec9..7ef9489ca 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.Target; 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.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.TargetTagRestApi; import org.eclipse.hawkbit.rest.resource.model.tag.AssignedTargetRequestBody; @@ -130,7 +130,7 @@ public class TargetTagResource implements TargetTagRestApi { LOG.debug("Toggle Target assignment {} for target tag {}", assignedTargetRequestBodies.size(), targetTagId); final TargetTag targetTag = findTargetTagById(targetTagId); - final TargetTagAssigmentResult assigmentResult = this.targetManagement + final TargetTagAssignmentResult assigmentResult = this.targetManagement .toggleTagAssignment(findTargetControllerIds(assignedTargetRequestBodies), targetTag.getName()); final TargetTagAssigmentResultRest tagAssigmentResultRest = new TargetTagAssigmentResultRest(); diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java index 09ae7978f..1d2222c9a 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResourceTest.java @@ -169,7 +169,7 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo artifactManagement .loadLocalArtifactBinary((LocalArtifact) softwareManagement .findSoftwareModuleWithDetails(sm.getId()).getArtifacts().get(0)) - .getFileInputStream())); + .getFileInputStream())); // hashes assertThat(artifactManagement.findLocalArtifactByFilename("origFilename").get(0).getSha1Hash()) @@ -773,12 +773,12 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(jsonPath("[2].createdBy", equalTo("uploadTester"))) .andExpect(jsonPath("[2].createdAt", not(equalTo(0)))).andReturn(); - final SoftwareModule osCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name1", "version1") - .get(0); - final SoftwareModule jvmCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name2", "version1") - .get(0); - final SoftwareModule ahCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name3", "version1") - .get(0); + final SoftwareModule osCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name1", "version1", + osType); + final SoftwareModule jvmCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name2", "version1", + runtimeType); + final SoftwareModule ahCreated = softwareManagement.findSoftwareModuleByNameAndVersion("name3", "version1", + appType); assertThat( JsonPath.compile("[0]_links.self.href").read(mvcResult.getResponse().getContentAsString()).toString()) @@ -930,8 +930,10 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(jsonPath("[1]key", equalTo(knownKey2))) .andExpect(jsonPath("[1]value", equalTo(knownValue2))); - final SoftwareModuleMetadata metaKey1 = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey1)); - final SoftwareModuleMetadata metaKey2 = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey2)); + final SoftwareModuleMetadata metaKey1 = softwareManagement + .findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey1)); + final SoftwareModuleMetadata metaKey2 = softwareManagement + .findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey2)); assertThat(metaKey1.getValue()).as("Metadata key is wrong").isEqualTo(knownValue1); assertThat(metaKey2.getValue()).as("Metadata key is wrong").isEqualTo(knownValue2); @@ -957,7 +959,8 @@ public class SoftwareModuleResourceTest extends AbstractIntegrationTestWithMongo .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("key", equalTo(knownKey))).andExpect(jsonPath("value", equalTo(updateValue))); - final SoftwareModuleMetadata assertDS = softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey)); + final SoftwareModuleMetadata assertDS = softwareManagement + .findSoftwareModuleMetadata(new SwMetadataCompositeKey(sm, knownKey)); assertThat(assertDS.getValue()).as("Metadata is wrong").isEqualTo(updateValue); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java index 3cc5c8dc1..7e05e8c63 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleAddUpdateWindow.java @@ -28,8 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.spring.events.EventBus; -import com.vaadin.event.FieldEvents.TextChangeEvent; -import com.vaadin.event.FieldEvents.TextChangeListener; import com.vaadin.server.FontAwesome; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -245,27 +243,21 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { } private void addDescriptionTextChangeListener() { - descTextArea.addTextChangeListener(new TextChangeListener() { - @Override - public void textChange(final TextChangeEvent event) { - if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) { - saveSoftware.setEnabled(false); - } else { - saveSoftware.setEnabled(true); - } + descTextArea.addTextChangeListener(event -> { + if (event.getText().equals(oldDescriptionValue) && vendorTextField.getValue().equals(oldVendorValue)) { + saveSoftware.setEnabled(false); + } else { + saveSoftware.setEnabled(true); } }); } private void addVendorTextChangeListener() { - vendorTextField.addTextChangeListener(new TextChangeListener() { - @Override - public void textChange(final TextChangeEvent event) { - if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) { - saveSoftware.setEnabled(false); - } else { - saveSoftware.setEnabled(true); - } + vendorTextField.addTextChangeListener(event -> { + if (event.getText().equals(oldVendorValue) && descTextArea.getValue().equals(oldDescriptionValue)) { + saveSoftware.setEnabled(false); + } else { + saveSoftware.setEnabled(true); } }); } @@ -280,7 +272,7 @@ public class SoftwareModuleAddUpdateWindow implements Serializable { final String description = HawkbitCommonUtil.trimAndNullIfEmpty(descTextArea.getValue()); final String type = typeComboBox.getValue() != null ? typeComboBox.getValue().toString() : null; if (mandatoryCheck(name, version, type)) { - if (HawkbitCommonUtil.isDuplicate(name, version)) { + if (HawkbitCommonUtil.isDuplicate(name, version, type)) { uiNotifcation.displayValidationError( i18n.get("message.duplicate.softwaremodule", new Object[] { name, version })); } else { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java index c8824e455..d6d37d5c0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java @@ -26,7 +26,7 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; 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.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; @@ -100,7 +100,7 @@ public class DistributionTagToken extends AbstractTagToken { @Override protected void assignTag(final String tagNameSelected) { if (tagNameSelected != null) { - final DistributionSetTagAssigmentResult result = toggleAssignment(tagNameSelected); + final DistributionSetTagAssignmentResult result = toggleAssignment(tagNameSelected); if (result.getAssigned() >= 1 && NOTAGS_SELECTED) { eventBus.publish(this, ManagementUIEvent.ASSIGN_DISTRIBUTION_TAG); } @@ -109,10 +109,10 @@ public class DistributionTagToken extends AbstractTagToken { } } - private DistributionSetTagAssigmentResult toggleAssignment(final String tagNameSelected) { + private DistributionSetTagAssignmentResult toggleAssignment(final String tagNameSelected) { final Set distributionList = new HashSet<>(); distributionList.add(selectedDS.getId()); - final DistributionSetTagAssigmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, + final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, tagNameSelected); uinotification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(tagNameSelected, result, i18n)); return result; @@ -120,7 +120,7 @@ public class DistributionTagToken extends AbstractTagToken { @Override protected void unassignTag(final String tagName) { - final DistributionSetTagAssigmentResult result = toggleAssignment(tagName); + final DistributionSetTagAssignmentResult result = toggleAssignment(tagName); if (result.getUnassigned() >= 1 && (isClickedTagListEmpty() || getClickedTagList().contains(tagName))) { eventBus.publish(this, ManagementUIEvent.UNASSIGN_DISTRIBUTION_TAG); } @@ -202,7 +202,7 @@ public class DistributionTagToken extends AbstractTagToken { @EventBusListenerMethod(scope = EventScope.SESSION) void onTargetTagAssigmentResultEvent(final DistributionSetTagAssigmentResultEvent event) { - final DistributionSetTagAssigmentResult assignmentResult = event.getAssigmentResult(); + final DistributionSetTagAssignmentResult assignmentResult = event.getAssigmentResult(); final DistributionSetTag tag = assignmentResult.getDistributionSetTag(); if (isAssign(assignmentResult)) { addNewToken(tag.getId()); @@ -212,7 +212,7 @@ public class DistributionTagToken extends AbstractTagToken { } - protected boolean isAssign(final DistributionSetTagAssigmentResult assignmentResult) { + protected boolean isAssign(final DistributionSetTagAssignmentResult assignmentResult) { if (assignmentResult.getAssigned() > 0) { final List assignedDsNames = assignmentResult.getAssignedDs().stream().map(t -> t.getId()) .collect(Collectors.toList()); @@ -223,7 +223,7 @@ public class DistributionTagToken extends AbstractTagToken { return false; } - protected boolean isUnassign(final DistributionSetTagAssigmentResult assignmentResult) { + protected boolean isUnassign(final DistributionSetTagAssignmentResult assignmentResult) { if (assignmentResult.getUnassigned() > 0) { final List assignedDsNames = assignmentResult.getUnassignedDs().stream().map(t -> t.getId()) .collect(Collectors.toList()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java index 8982be759..b21b8f075 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.Target; 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.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent.TargetComponentEvent; @@ -68,7 +68,7 @@ public class TargetTagToken extends AbstractTargetTagToken { @Override protected void assignTag(final String tagNameSelected) { if (tagNameSelected != null) { - final TargetTagAssigmentResult result = toggleAssignment(tagNameSelected); + final TargetTagAssignmentResult result = toggleAssignment(tagNameSelected); if (result.getAssigned() >= 1 && NOTAGS_SELECTED) { eventBus.publish(this, ManagementUIEvent.ASSIGN_TARGET_TAG); } @@ -77,17 +77,17 @@ public class TargetTagToken extends AbstractTargetTagToken { } } - private TargetTagAssigmentResult toggleAssignment(final String tagNameSelected) { + private TargetTagAssignmentResult toggleAssignment(final String tagNameSelected) { final Set targetList = new HashSet<>(); targetList.add(selectedTarget.getControllerId()); - final TargetTagAssigmentResult result = targetManagement.toggleTagAssignment(targetList, tagNameSelected); + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, tagNameSelected); uinotification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(tagNameSelected, result, i18n)); return result; } @Override protected void unassignTag(final String tagName) { - final TargetTagAssigmentResult result = toggleAssignment(tagName); + final TargetTagAssignmentResult result = toggleAssignment(tagName); if (result.getUnassigned() >= 1 && (isClickedTagListEmpty() || getClickedTagList().contains(tagName))) { eventBus.publish(this, ManagementUIEvent.UNASSIGN_TARGET_TAG); } @@ -139,7 +139,7 @@ public class TargetTagToken extends AbstractTargetTagToken { @EventBusListenerMethod(scope = EventScope.SESSION) void onTargetTagAssigmentResultEvent(final TargetTagAssigmentResultEvent event) { - final TargetTagAssigmentResult assignmentResult = event.getAssigmentResult(); + final TargetTagAssignmentResult assignmentResult = event.getAssigmentResult(); final TargetTag targetTag = assignmentResult.getTargetTag(); if (isAssign(assignmentResult)) { addNewToken(targetTag.getId()); @@ -149,7 +149,7 @@ public class TargetTagToken extends AbstractTargetTagToken { } - protected boolean isAssign(final TargetTagAssigmentResult assignmentResult) { + protected boolean isAssign(final TargetTagAssignmentResult assignmentResult) { if (assignmentResult.getAssigned() > 0) { final List assignedTargetNames = assignmentResult.getAssignedTargets().stream() .map(t -> t.getControllerId()).collect(Collectors.toList()); @@ -160,7 +160,7 @@ public class TargetTagToken extends AbstractTargetTagToken { return false; } - protected boolean isUnassign(final TargetTagAssigmentResult assignmentResult) { + protected boolean isUnassign(final TargetTagAssignmentResult assignmentResult) { if (assignmentResult.getUnassigned() > 0) { final List unassignedTargetNamesList = assignmentResult.getUnassignedTargets().stream() .map(t -> t.getControllerId()).collect(Collectors.toList()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java index 4f4aa8b2f..0cc857c30 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java @@ -25,7 +25,7 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.ui.common.table.AbstractTable; @@ -360,7 +360,7 @@ public class DistributionTable extends AbstractTable { final String distTagName = HawkbitCommonUtil.removePrefix(event.getTransferable().getSourceComponent().getId(), SPUIDefinitions.DISTRIBUTION_TAG_ID_PREFIXS); - final DistributionSetTagAssigmentResult result = distributionSetManagement.toggleTagAssignment(distList, + final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distList, distTagName); notification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(distTagName, result, i18n)); @@ -564,7 +564,7 @@ public class DistributionTable extends AbstractTable { .getItemProperty(SPUILabelDefinitions.VAR_DIST_ID_NAME).getValue(); final Button pinBtn = getPinBtn(itemId, dist.getName(), dist.getVersion()); saveDistributionPinnedBtn(pinBtn); - pinBtn.addClickListener(event -> addPinClickListener(event)); + pinBtn.addClickListener(this::addPinClickListener); rePinDistribution(pinBtn, dist.getId()); return pinBtn; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java index 21013a55e..f8d53bdef 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.ui.management.state.DistributionTableFilters; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.I18N; @@ -147,7 +147,7 @@ public class DistributionTagDropEvent implements DropHandler { SPUIDefinitions.DISTRIBUTION_TAG_ID_PREFIXS); final List tagsClickedList = distFilterParameters.getDistSetTags(); - final DistributionSetTagAssigmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, + final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, distTagName); notification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(distTagName, result, i18n)); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 88d82bd9d..3a1051eac 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -32,7 +32,7 @@ import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetFilterQuery; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetInfo; -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.ui.common.table.AbstractTable; import org.eclipse.hawkbit.ui.filter.FilterExpression; @@ -656,7 +656,7 @@ public class TargetTable extends AbstractTable implements Handler { } final String targTagName = HawkbitCommonUtil.removePrefix(event.getTransferable().getSourceComponent().getId(), SPUIDefinitions.TARGET_TAG_ID_PREFIXS); - final TargetTagAssigmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); notification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(targTagName, result, i18n)); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java index 9d93962da..30f036432 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java @@ -23,7 +23,7 @@ import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.TargetIdName; 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.ui.common.filterlayout.AbstractFilterButtons; import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; @@ -248,7 +248,7 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); - final TargetTagAssigmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); + final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); notification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(targTagName, result, i18n)); if (result.getAssigned() >= 1 && managementUIState.getTargetTableFilters().isNoTagSelected()) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java index e697e220e..67e71ba4f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java @@ -25,13 +25,13 @@ import org.apache.commons.lang3.StringUtils; import org.eclipse.hawkbit.im.authentication.UserPrincipal; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; +import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetInfo.PollStatus; -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.TotalTargetCountStatus; import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status; @@ -802,13 +802,16 @@ public final class HawkbitCommonUtil { * as string * @param version * as string + * @param type + * key as string * @return boolean as flag */ - public static boolean isDuplicate(final String name, final String version) { + public static boolean isDuplicate(final String name, final String version, final String type) { final SoftwareManagement swMgmtService = SpringContextHelper.getBean(SoftwareManagement.class); - final List swModulesList = swMgmtService.findSoftwareModuleByNameAndVersion(name, version); + final SoftwareModule swModule = swMgmtService.findSoftwareModuleByNameAndVersion(name, version, + swMgmtService.findSoftwareModuleTypeByKey(type)); boolean duplicate = false; - if (swModulesList != null && !swModulesList.isEmpty()) { + if (swModule != null) { duplicate = true; } return duplicate; @@ -875,7 +878,7 @@ public final class HawkbitCommonUtil { * I18N * @return message */ - public static String getTargetTagAssigmentMsg(final String targTagName, final TargetTagAssigmentResult result, + public static String getTargetTagAssigmentMsg(final String targTagName, final TargetTagAssignmentResult result, final I18N i18n) { final StringBuilder formMsg = new StringBuilder(); final int assignedCount = result.getAssigned(); @@ -922,7 +925,7 @@ public final class HawkbitCommonUtil { * @return message */ public static String getDistributionTagAssignmentMsg(final String targTagName, - final DistributionSetTagAssigmentResult result, final I18N i18n) { + final DistributionSetTagAssignmentResult result, final I18N i18n) { final StringBuilder formMsg = new StringBuilder(); final int assignedCount = result.getAssigned(); final int alreadyAssignedCount = result.getAlreadyAssigned(); @@ -1359,12 +1362,12 @@ public final class HawkbitCommonUtil { * details of status and count * @return String */ - public static String getFormattedString(Map details) { - StringBuilder val = new StringBuilder(); + public static String getFormattedString(final Map details) { + final StringBuilder val = new StringBuilder(); if (details == null || details.isEmpty()) { return null; } - for (Entry entry : details.entrySet()) { + for (final Entry entry : details.entrySet()) { val.append(entry.getKey()).append(":").append(entry.getValue()).append(","); } return val.substring(0, val.length() - 1); @@ -1382,8 +1385,8 @@ public final class HawkbitCommonUtil { * label id * @return */ - public static String getStatusLabelDetailsInString(String value, String style, String id) { - StringBuilder val = new StringBuilder(); + public static String getStatusLabelDetailsInString(final String value, final String style, final String id) { + final StringBuilder val = new StringBuilder(); if (!Strings.isNullOrEmpty(value)) { val.append("value:").append(value).append(","); } From a2a0a5697e89dc8b772944b2dc571930d60e9125 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sun, 27 Mar 2016 17:18:32 +0200 Subject: [PATCH 21/63] Added tests for DS management. Removed boilerplate. --- .../repository/DistributionSetManagement.java | 12 ++- .../TenantConfigurationManagement.java | 2 +- .../repository/model/DistributionSet.java | 14 ++-- .../repository/model/DistributionSetType.java | 8 +- .../model/DistributionSetTypeElement.java | 49 +++++++++--- ...istributionSetTypeElementCompositeKey.java | 60 ++++++++------ .../DistributionSetManagementTest.java | 78 ++++++++++--------- 7 files changed, 138 insertions(+), 85 deletions(-) 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 890333697..410021664 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 @@ -188,11 +188,12 @@ public class DistributionSetManagement { toBeChangedDSs.add(set); } } - result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), 0, toBeChangedDSs.size(), - Collections.emptyList(), distributionSetRepository.save(toBeChangedDSs), myTag); + result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), 0, + toBeChangedDSs.size(), Collections.emptyList(), distributionSetRepository.save(toBeChangedDSs), + myTag); } else { - result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), toBeChangedDSs.size(), 0, - distributionSetRepository.save(toBeChangedDSs), Collections.emptyList(), myTag); + result = new DistributionSetTagAssignmentResult(dsIds.size() - toBeChangedDSs.size(), toBeChangedDSs.size(), + 0, distributionSetRepository.save(toBeChangedDSs), Collections.emptyList(), myTag); } final DistributionSetTagAssignmentResult resultAssignment = result; @@ -348,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); } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationManagement.java index f6b6afcfc..e311cf288 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationManagement.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationManagement.java @@ -150,7 +150,7 @@ public class TenantConfigurationManagement implements EnvironmentAware { * @param configurationKey * the key of the configuration * @return the converted configuration value either from the tenant specific - * configuration stored or from the fallback default values or + * configuration stored or from the fall back default values or * {@code null} in case key has not been configured and not default * value exists * @throws TenantConfigurationValidatorException diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index e0444bc28..c3eb49a2d 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -67,14 +67,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 +95,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,7 +130,9 @@ 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() { 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 30fb73365..1d565f6ac 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 = { @@ -55,7 +52,7 @@ public class DistributionSetType extends NamedEntity { private boolean deleted = false; public DistributionSetType() { - // default public constructor + // default public constructor for JPA } /** @@ -307,7 +304,7 @@ public class DistributionSetType extends NamedEntity { if (!super.equals(obj)) { return false; } - if (getClass() != obj.getClass()) { + if (!(obj instanceof DistributionSetType)) { return false; } final DistributionSetType other = (DistributionSetType) obj; @@ -337,4 +334,5 @@ public class DistributionSetType extends NamedEntity { } return true; } + } 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..38baf52c7 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 } /** @@ -108,4 +99,38 @@ public class DistributionSetTypeElement implements Serializable { return key; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((key == null) ? 0 : key.hashCode()); + result = prime * result + (mandatory ? 1231 : 1237); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof DistributionSetTypeElement)) { + return false; + } + final DistributionSetTypeElement other = (DistributionSetTypeElement) obj; + if (key == null) { + if (other.key != null) { + return false; + } + } else if (!key.equals(other.key)) { + return false; + } + if (mandatory != other.mandatory) { + return false; + } + return true; + } + } 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..1f71d007e 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,58 @@ 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; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((dsType == null) ? 0 : dsType.hashCode()); + result = prime * result + ((smType == null) ? 0 : smType.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof DistributionSetTypeElementCompositeKey)) { + return false; + } + final DistributionSetTypeElementCompositeKey other = (DistributionSetTypeElementCompositeKey) obj; + if (dsType == null) { + if (other.dsType != null) { + return false; + } + } else if (!dsType.equals(other.dsType)) { + return false; + } + if (smType == null) { + if (other.smType != null) { + return false; + } + } else if (!smType.equals(other.smType)) { + return false; + } + return true; + } + } diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java index 352d28e15..62dc21a3b 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.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; @@ -149,8 +150,7 @@ public class DistributionSetManagementTest 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); @@ -165,6 +165,46 @@ public class DistributionSetManagementTest extends AbstractIntegrationTest { } + @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(expected = EntityAlreadyExistsException.class) + @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)); + distributionSetManagement.createDistributionSet(set); + + } + @Test @Description("Checks that metadata for a distribution set can be created.") public void createDistributionSetMetadata() { @@ -725,7 +765,7 @@ public class DistributionSetManagementTest 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); @@ -739,38 +779,6 @@ public class DistributionSetManagementTest 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 reOrderDSList(final Iterable buildDistributionSets, - final DistributionSet... ds) { - final List reOrderedList = new ArrayList<>(); - - final Iterator iterator = buildDistributionSets.iterator(); - while (iterator.hasNext()) { - final DistributionSet next = iterator.next(); - int reorder = -1; - for (int index = 0; index < ds.length; index++) { - if (next.equals(ds[index])) { - reorder = index; - } - } - if (reorder >= 0) { - reOrderedList.add(reorder, next); - } else { - reOrderedList.add(next); - } - } - - return reOrderedList; - } - private Target sendUpdateActionStatusToTarget(final Status status, final Action updActA, final Target t, final String... msgs) { updActA.setStatus(status); From 9849205beaab397972bd13c09d3b11136b3347c2 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 28 Mar 2016 09:59:24 +0200 Subject: [PATCH 22/63] Re-applied base entity based equals hashcode policy --- .../hawkbit/repository/model/Action.java | 86 +------------ .../repository/model/ActionStatus.java | 37 +----- .../model/ActionWithStatusCount.java | 23 ++-- .../hawkbit/repository/model/Artifact.java | 29 +---- .../repository/model/AssignmentResult.java | 14 +-- .../model/CustomSoftwareModule.java | 13 +- .../repository/model/DistributionSet.java | 15 --- .../model/DistributionSetIdName.java | 27 +--- .../model/DistributionSetMetadata.java | 75 +++++++---- .../repository/model/DistributionSetTag.java | 17 +-- .../repository/model/DistributionSetType.java | 33 +---- .../model/DistributionSetTypeElement.java | 36 +----- ...istributionSetTypeElementCompositeKey.java | 39 ------ .../model/DsMetadataCompositeKey.java | 37 +----- .../repository/model/ExternalArtifact.java | 14 +-- .../model/ExternalArtifactProvider.java | 31 +---- .../repository/model/LocalArtifact.java | 25 +--- .../hawkbit/repository/model/NamedEntity.java | 41 +----- .../model/NamedVersionedEntity.java | 30 ++++- .../hawkbit/repository/model/Rollout.java | 108 ++++------------ .../repository/model/RolloutGroup.java | 30 ++++- .../repository/model/SoftwareModule.java | 4 +- .../model/SoftwareModuleIdName.java | 18 --- .../model/SoftwareModuleMetadata.java | 10 +- .../repository/model/SoftwareModuleType.java | 50 ++++---- .../model/SwMetadataCompositeKey.java | 14 +-- .../eclipse/hawkbit/repository/model/Tag.java | 34 +++-- .../hawkbit/repository/model/Target.java | 25 +--- .../repository/model/TargetFilterQuery.java | 41 +++--- .../repository/model/TargetIdName.java | 33 +---- .../hawkbit/repository/model/TargetInfo.java | 117 +++++------------- .../hawkbit/repository/model/TargetTag.java | 15 +-- .../repository/model/TargetUpdateStatus.java | 5 - .../model/TenantAwareBaseEntity.java | 8 +- .../repository/model/TenantConfiguration.java | 16 +-- .../repository/model/TenantMetaData.java | 23 +--- .../org/eclipse/hawkbit/TestDataUtil.java | 2 +- .../hawkbit/repository/ActionTest.java | 2 - 38 files changed, 289 insertions(+), 888 deletions(-) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index bca57efa5..aeb4e64d8 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -127,55 +127,30 @@ public class Action extends TenantAwareBaseEntity implements Comparable return status == Status.CANCELING || status == Status.CANCELED; } - /** - * @param active - * the active to set - */ public void setActive(final boolean active) { this.active = active; } - /** - * @return the status - */ public Status getStatus() { return status; } - /** - * @param status - * the status to set - */ public void setStatus(final Status status) { this.status = status; } - /** - * @return the downloadProgressPercent - */ public int getDownloadProgressPercent() { return downloadProgressPercent; } - /** - * @param downloadProgressPercent - * the downloadProgressPercent to set - */ public void setDownloadProgressPercent(final int downloadProgressPercent) { this.downloadProgressPercent = downloadProgressPercent; } - /** - * @return the active - */ public boolean isActive() { return active; } - /** - * @param actionType - * the actionType to set - */ public void setActionType(final ActionType actionType) { this.actionType = actionType; } @@ -187,69 +162,38 @@ public class Action extends TenantAwareBaseEntity implements Comparable return actionType; } - /** - * @return the actionStatus - */ public List getActionStatus() { return actionStatus; } - /** - * @param target - * the target to set - */ public void setTarget(final Target target) { this.target = target; } - /** - * @return the target - */ public Target getTarget() { return target; } - /** - * @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 rolloutGroup - */ public RolloutGroup getRolloutGroup() { return rolloutGroup; } - /** - * @param rolloutGroup - * the rolloutGroup to set - */ public void setRolloutGroup(final RolloutGroup rolloutGroup) { this.rolloutGroup = rolloutGroup; } - /** - * @return the rollout - */ public Rollout getRollout() { return rollout; } - /** - * @param rollout - * the rollout to set - */ public void setRollout(final Rollout rollout) { this.rollout = rollout; } @@ -311,42 +255,25 @@ public class Action extends TenantAwareBaseEntity implements Comparable } @Override - public int hashCode() { // NOSONAR - as this is generated + public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + ((actionType == null) ? 0 : actionType.hashCode()); - result = prime * result + (active ? 1231 : 1237); - result = prime * result + (int) (forcedTime ^ (forcedTime >>> 32)); - result = prime * result + ((status == null) ? 0 : status.hashCode()); - result = prime * result + (isHitAutoForceTime(System.currentTimeMillis()) ? 1231 : 1237); + result = prime * result + this.getClass().getName().hashCode(); return result; } @Override - public boolean equals(final Object obj) { // NOSONAR - as this is generated - + public boolean equals(final Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } - if (getClass() != obj.getClass()) { - return false; - } - final Action other = (Action) obj; - if (actionType != other.actionType) { - return false; - } - if (active != other.active) { - return false; - } - if (forcedTime != other.forcedTime) { - return false; - } - if (status != other.status) { + if (!(obj instanceof Action)) { return false; } + return true; } @@ -409,9 +336,6 @@ public class Action extends TenantAwareBaseEntity implements Comparable /** * The action type for this action relation. * - * - * - * */ public enum ActionType { FORCED, SOFT, TIMEFORCED; diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java index 6409dc209..8493acfad 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java @@ -60,7 +60,7 @@ public class ActionStatus extends TenantAwareBaseEntity { /** * Creates a new {@link ActionStatus} object. - * + * * @param action * the action for this action status * @param status @@ -76,7 +76,7 @@ public class ActionStatus extends TenantAwareBaseEntity { /** * Creates a new {@link ActionStatus} object. - * + * * @param action * the action for this action status * @param status @@ -144,10 +144,7 @@ public class ActionStatus extends TenantAwareBaseEntity { public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + ((action == null) ? 0 : action.hashCode()); - result = prime * result + ((messages == null) ? 0 : messages.hashCode()); - result = prime * result + ((occurredAt == null) ? 0 : occurredAt.hashCode()); - result = prime * result + ((status == null) ? 0 : status.hashCode()); + result = prime * result + this.getClass().getName().hashCode(); return result; } @@ -159,34 +156,10 @@ public class ActionStatus extends TenantAwareBaseEntity { if (!super.equals(obj)) { return false; } - if (getClass() != obj.getClass()) { - return false; - } - final ActionStatus other = (ActionStatus) obj; - if (action == null) { - if (other.action != null) { - return false; - } - } else if (!action.equals(other.action)) { - return false; - } - if (messages == null) { - if (other.messages != null) { - return false; - } - } else if (!messages.equals(other.messages)) { - return false; - } - if (occurredAt == null) { - if (other.occurredAt != null) { - return false; - } - } else if (!occurredAt.equals(other.occurredAt)) { - return false; - } - if (status != other.status) { + if (!(obj instanceof ActionStatus)) { return false; } + return true; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java index 7d01b9dd2..44beb194a 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java @@ -15,9 +15,6 @@ import org.eclipse.hawkbit.repository.model.Action.Status; * Custom JPA Model for querying {@link Action} include the count of the * action's {@link ActionStatus}. * - * - * - * */ public class ActionWithStatusCount { private final Long actionStatusCount; @@ -37,7 +34,7 @@ public class ActionWithStatusCount { /** * JPA constructor, the parameter are the result set columns of the custom * query. - * + * * @param actionId * the ID of the action * @param actionType @@ -70,9 +67,9 @@ public class ActionWithStatusCount { final String rolloutName) { this.actionId = actionId; this.actionType = actionType; - this.actionActive = active; - this.actionForceTime = forcedTime; - this.actionStatus = status; + actionActive = active; + actionForceTime = forcedTime; + actionStatus = status; this.actionCreatedAt = actionCreatedAt; this.actionLastModifiedAt = actionLastModifiedAt; this.dsId = dsId; @@ -81,12 +78,12 @@ public class ActionWithStatusCount { this.actionStatusCount = actionStatusCount; this.rolloutName = rolloutName; - this.action = new Action(); - this.action.setActionType(actionType); - this.action.setActive(actionActive); - this.action.setForcedTime(actionForceTime); - this.action.setStatus(actionStatus); - this.action.setId(actionId); + action = new Action(); + action.setActionType(actionType); + action.setActive(actionActive); + action.setForcedTime(actionForceTime); + action.setStatus(actionStatus); + action.setId(actionId); } /** diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java index 23c5de34f..c63974cbb 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java @@ -58,9 +58,7 @@ public abstract class Artifact extends TenantAwareBaseEntity { public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + ((md5Hash == null) ? 0 : md5Hash.hashCode()); - result = prime * result + ((sha1Hash == null) ? 0 : sha1Hash.hashCode()); - result = prime * result + ((size == null) ? 0 : size.hashCode()); + result = prime * result + this.getClass().getName().hashCode(); return result; } @@ -72,31 +70,10 @@ public abstract class Artifact extends TenantAwareBaseEntity { if (!super.equals(obj)) { return false; } - if (getClass() != obj.getClass()) { - return false; - } - final Artifact other = (Artifact) obj; - if (md5Hash == null) { - if (other.md5Hash != null) { - return false; - } - } else if (!md5Hash.equals(other.md5Hash)) { - return false; - } - if (sha1Hash == null) { - if (other.sha1Hash != null) { - return false; - } - } else if (!sha1Hash.equals(other.sha1Hash)) { - return false; - } - if (size == null) { - if (other.size != null) { - return false; - } - } else if (!size.equals(other.size)) { + if (!(obj instanceof Artifact)) { return false; } + return true; } } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java index 05f812b06..eda0bb9bd 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java @@ -9,10 +9,7 @@ package org.eclipse.hawkbit.repository.model; /** - * Generic assigment result bean. - * - * - * + * Generic assignment result bean. * */ public class AssignmentResult { @@ -36,23 +33,14 @@ public class AssignmentResult { total = assigned + alreadyAssigned; } - /** - * @return the assignedTargets - */ public int getAssigned() { return assigned; } - /** - * @return the total - */ public int getTotal() { return total; } - /** - * @return the alreadyAssigned - */ public int getAlreadyAssigned() { return alreadyAssigned; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java index b68f9df49..34aa8345a 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/CustomSoftwareModule.java @@ -13,9 +13,6 @@ import java.io.Serializable; /** * Use to display software modules for the selected distribution. * - * - * - * */ public class CustomSoftwareModule implements Serializable { @@ -39,16 +36,10 @@ public class CustomSoftwareModule implements Serializable { this.assigned = assigned; } - /** - * @return the softwareModule - */ public SoftwareModule getSoftwareModule() { return softwareModule; } - /** - * @return the assigned - */ public boolean isAssigned() { return assigned; } @@ -63,7 +54,7 @@ public class CustomSoftwareModule implements Serializable { final int prime = 31; int result = 1; result = prime * result + (assigned ? 1231 : 1237); - result = prime * result + ((softwareModule == null) ? 0 : softwareModule.hashCode()); + result = prime * result + (softwareModule == null ? 0 : softwareModule.hashCode()); return result; } @@ -75,7 +66,7 @@ public class CustomSoftwareModule implements Serializable { if (obj == null) { return false; } - if (getClass() != obj.getClass()) { + if (!(obj instanceof CustomSoftwareModule)) { return false; } final CustomSoftwareModule other = (CustomSoftwareModule) obj; diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index c3eb49a2d..390421bf8 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -160,11 +160,6 @@ public class DistributionSet extends NamedVersionedEntity { return actions; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ @Override public int hashCode() { final int prime = 31; @@ -173,11 +168,6 @@ public class DistributionSet extends NamedVersionedEntity { return result; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ @Override public boolean equals(final Object obj) { if (this == obj) { @@ -234,11 +224,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() 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..fd90e9d04 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 @@ -39,9 +39,6 @@ public class DistributionSetIdName implements Serializable { this.version = version; } - /** - * @return the id - */ public Long getId() { return id; } @@ -50,40 +47,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 +81,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..e9597f60b 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 @@ -33,10 +33,6 @@ import javax.persistence.Table; @Entity @Table(name = "sp_ds_metadata") public class DistributionSetMetadata implements Serializable { - - /** - * - */ private static final long serialVersionUID = 1L; @Id @@ -49,11 +45,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 +69,74 @@ 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()); + result = prime * result + (value == null ? 0 : value.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; + } + if (value == null) { + if (other.value != null) { + return false; + } + } else if (!value.equals(other.value)) { + 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..bdfc73f9d 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,11 +72,6 @@ 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) { 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 1d565f6ac..56fed270f 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 @@ -84,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; } /** @@ -289,10 +289,7 @@ public class DistributionSetType extends NamedEntity { public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + ((colour == null) ? 0 : colour.hashCode()); - result = prime * result + (deleted ? 1231 : 1237); - result = prime * result + ((elements == null) ? 0 : elements.hashCode()); - result = prime * result + ((key == null) ? 0 : key.hashCode()); + result = prime * result + this.getClass().getName().hashCode(); return result; } @@ -307,31 +304,7 @@ public class DistributionSetType extends NamedEntity { if (!(obj instanceof DistributionSetType)) { return false; } - final DistributionSetType other = (DistributionSetType) obj; - if (colour == null) { - if (other.colour != null) { - return false; - } - } else if (!colour.equals(other.colour)) { - return false; - } - if (deleted != other.deleted) { - return false; - } - if (elements == null) { - if (other.elements != null) { - return false; - } - } else if (!elements.equals(other.elements)) { - 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/DistributionSetTypeElement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElement.java index 38baf52c7..ce8501fec 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 @@ -65,7 +65,7 @@ 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; @@ -100,37 +100,7 @@ public class DistributionSetTypeElement implements Serializable { } @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((key == null) ? 0 : key.hashCode()); - result = prime * result + (mandatory ? 1231 : 1237); - return result; + public String toString() { + return "DistributionSetTypeElement [mandatory=" + mandatory + ", dsType=" + dsType + ", smType=" + smType + "]"; } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof DistributionSetTypeElement)) { - return false; - } - final DistributionSetTypeElement other = (DistributionSetTypeElement) obj; - if (key == null) { - if (other.key != null) { - return false; - } - } else if (!key.equals(other.key)) { - return false; - } - if (mandatory != other.mandatory) { - return false; - } - return true; - } - } 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 1f71d007e..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 @@ -61,43 +61,4 @@ public class DistributionSetTypeElementCompositeKey implements Serializable { public void setSmType(final Long smType) { this.smType = smType; } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((dsType == null) ? 0 : dsType.hashCode()); - result = prime * result + ((smType == null) ? 0 : smType.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (!(obj instanceof DistributionSetTypeElementCompositeKey)) { - return false; - } - final DistributionSetTypeElementCompositeKey other = (DistributionSetTypeElementCompositeKey) obj; - if (dsType == null) { - if (other.dsType != null) { - return false; - } - } else if (!dsType.equals(other.dsType)) { - return false; - } - if (smType == null) { - if (other.smType != null) { - return false; - } - } else if (!smType.equals(other.smType)) { - return false; - } - return true; - } - } 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..a23595679 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,19 @@ 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 +39,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..2369d000b 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 @@ -36,7 +36,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 +44,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; /** @@ -127,11 +127,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,11 +135,6 @@ 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) { 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..6733074c6 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,41 +57,22 @@ 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; @@ -103,11 +81,6 @@ public class ExternalArtifactProvider extends NamedEntity { 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/LocalArtifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/LocalArtifact.java index baa4ee1f0..b8f5d3369 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,11 +81,6 @@ 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) { @@ -106,33 +96,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 3ee2387ed..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 @@ -34,7 +34,7 @@ public abstract class NamedEntity extends TenantAwareBaseEntity { /** * Parameterized constructor. - * + * * @param name * of the {@link NamedEntity} * @param description @@ -60,43 +60,4 @@ public abstract class NamedEntity extends TenantAwareBaseEntity { public void setName(final String name) { this.name = name; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + ((description == null) ? 0 : description.hashCode()); - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (!super.equals(obj)) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final NamedEntity other = (NamedEntity) obj; - if (description == null) { - if (other.description != null) { - return false; - } - } else if (!description.equals(other.description)) { - return false; - } - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - return true; - } - } 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..0806f19e6 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 @@ -53,4 +48,27 @@ public abstract class NamedVersionedEntity extends NamedEntity { this.version = version; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof NamedVersionedEntity)) { + return false; + } + + return true; + } + } 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..6001af86b 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 { @@ -308,4 +231,27 @@ public class Rollout extends NamedEntity { */ ERROR_STARTING; } + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof Rollout)) { + return false; + } + + return true; + } } 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..2a57e48d3 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 { @@ -478,4 +477,27 @@ public class RolloutGroup extends NamedEntity { } } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof RolloutGroup)) { + return false; + } + + return true; + } + } 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 7b0c03c0e..99a57a2c4 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 @@ -241,8 +241,8 @@ public class SoftwareModule extends NamedVersionedEntity { @Override public String toString() { - return "SoftwareModule [deleted=" + deleted + ", getVersion()=" + getVersion() + ", getOptLockRevision()=" - + getOptLockRevision() + ", getId()=" + getId() + ", getType()=" + getType().getName() + "]"; + return "SoftwareModule [deleted=" + deleted + ", name=" + getName() + ", version=" + getVersion() + + ", revision=" + getOptLockRevision() + ", Id=" + getId() + ", type=" + getType().getName() + "]"; } @Override 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 4ffbd2c10..b314edbe6 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 @@ -29,10 +29,6 @@ import javax.persistence.Table; @Entity @Table(name = "sp_sw_metadata") public class SoftwareModuleMetadata implements Serializable { - - /** - * - */ private static final long serialVersionUID = 1L; @Id @@ -106,9 +102,9 @@ public class SoftwareModuleMetadata implements Serializable { 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 + ((value == null) ? 0 : value.hashCode()); + result = prime * result + (key == null ? 0 : key.hashCode()); + result = prime * result + (softwareModule == null ? 0 : softwareModule.hashCode()); + result = prime * result + (value == null ? 0 : value.hashCode()); return result; } 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..bf34a6f33 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; } @@ -143,4 +115,26 @@ public class SoftwareModuleType extends NamedEntity { return "SoftwareModuleType [key=" + key + ", getName()=" + getName() + ", getId()=" + getId() + "]"; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof SoftwareModuleType)) { + return false; + } + + return true; + } } 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 f76cac155..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 @@ -69,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..8775ef458 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,31 @@ 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() + "]"; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof Tag)) { + return false; + } + + return true; + } } 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..62713dc3f 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} */ @@ -182,25 +177,14 @@ public class Target extends NamedEntity implements Persistable { 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 +193,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() { @@ -263,7 +242,7 @@ public class Target extends NamedEntity implements Persistable { /* * (non-Javadoc) - * + * * @see java.lang.Object#toString() */ @Override 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 80721a3d2..7f01e0b59 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 @@ -57,32 +57,25 @@ public class TargetFilterQuery extends TenantAwareBaseEntity { } @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; + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); + return result; } @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; + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof TargetFilterQuery)) { + return false; + } + + return true; } } 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 f06fa8cf0..91542a422 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 @@ -39,61 +39,39 @@ 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) { @@ -112,11 +90,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..2eb7cc385 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,41 @@ 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()); + 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; + } + 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..90a246b61 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 @@ -30,7 +30,7 @@ import javax.persistence.UniqueConstraint; @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 +65,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,11 +77,6 @@ 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) { 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/TenantAwareBaseEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantAwareBaseEntity.java index 755ab793e..ea223e2d7 100644 --- 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 @@ -76,22 +76,22 @@ public abstract class TenantAwareBaseEntity extends BaseEntity { } @Override - public int hashCode() { // NOSONAR - as this is generated + public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + ((tenant == null) ? 0 : tenant.hashCode()); + result = prime * result + (tenant == null ? 0 : tenant.hashCode()); return result; } @Override - public boolean equals(final Object obj) { // NOSONAR - as this is generated + public boolean equals(final Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } - if (getClass() != obj.getClass()) { + if (!(obj instanceof TenantAwareBaseEntity)) { return false; } final TenantAwareBaseEntity other = (TenantAwareBaseEntity) obj; 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 972ea1ffe..c35cea1c7 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 @@ -27,10 +27,6 @@ import javax.persistence.UniqueConstraint; @Table(name = "sp_tenant_configuration", uniqueConstraints = @UniqueConstraint(columnNames = { "conf_key", "tenant" }, name = "uk_tenant_key")) public class TenantConfiguration extends TenantAwareBaseEntity implements Serializable { - - /** - * - */ private static final long serialVersionUID = 1L; @Column(name = "conf_key", length = 128) @@ -89,24 +85,14 @@ public class TenantConfiguration extends TenantAwareBaseEntity implements Serial 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()); + 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/TenantMetaData.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java index 35c7466be..e347a855c 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 @@ -24,7 +24,7 @@ import javax.persistence.UniqueConstraint; * 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}. * */ @@ -82,8 +82,7 @@ public class TenantMetaData extends BaseEntity { public int hashCode() { final int prime = 31; int result = super.hashCode(); - result = prime * result + ((defaultDsType == null) ? 0 : defaultDsType.hashCode()); - result = prime * result + ((tenant == null) ? 0 : tenant.hashCode()); + result = prime * result + this.getClass().getName().hashCode(); return result; } @@ -95,24 +94,10 @@ public class TenantMetaData extends BaseEntity { if (!super.equals(obj)) { return false; } - if (getClass() != obj.getClass()) { - return false; - } - final TenantMetaData other = (TenantMetaData) obj; - if (defaultDsType == null) { - if (other.defaultDsType != null) { - return false; - } - } else if (!defaultDsType.equals(other.defaultDsType)) { - return false; - } - if (tenant == null) { - if (other.tenant != null) { - return false; - } - } else if (!tenant.equals(other.tenant)) { + if (!(obj instanceof TenantMetaData)) { return false; } + return true; } } 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 b2fa1f735..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)); } 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); } } From 1146e6a80817a28e7c382f91f5786c6ee66bd212 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 28 Mar 2016 10:25:07 +0200 Subject: [PATCH 23/63] Found an even better name --- .../org/eclipse/hawkbit/repository/SoftwareManagement.java | 6 +++--- .../eclipse/hawkbit/repository/SoftwareManagementTest.java | 6 +++--- .../hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) 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 ec1954b35..c6eab402a 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 @@ -508,13 +508,13 @@ public class SoftwareManagement { * @param orderByDistributionId * 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 findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc( + public Slice findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc( @NotNull final Pageable pageable, @NotNull final Long orderByDistributionId, final String searchText, final SoftwareModuleType type) { diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java index c295c57ce..b227568e8 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java @@ -638,14 +638,14 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { softwareManagement.deleteSoftwareModule(deleted); // with filter on name, version and module type - assertThat(softwareManagement.findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc(pageReq, + assertThat(softwareManagement.findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc(pageReq, set.getId(), "found", testType).getContent()) .as("Found modules with given name, given module type and the assigned ones first") .containsExactly(new CustomSoftwareModule(one, true), new CustomSoftwareModule(two, true), new CustomSoftwareModule(unassigned, false)); // with filter on module type only - assertThat(softwareManagement.findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc(pageReq, + assertThat(softwareManagement.findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc(pageReq, set.getId(), null, testType).getContent()) .as("Found modules with given module type and the assigned ones first").containsExactly( new CustomSoftwareModule(differentName, true), new CustomSoftwareModule(one, true), @@ -653,7 +653,7 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { // without any filter assertThat(softwareManagement - .findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc(pageReq, set.getId(), null, null) + .findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc(pageReq, set.getId(), null, null) .getContent()).as("Found modules with the assigned ones first").containsExactly( new CustomSoftwareModule(differentName, true), new CustomSoftwareModule(one, true), new CustomSoftwareModule(two, true), new CustomSoftwareModule(four, true), diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java index 9aae5ca5c..5419cc1bf 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleBeanQuery.java @@ -77,7 +77,7 @@ public class SwModuleBeanQuery extends AbstractBeanQuery final Slice swModuleBeans; final List proxyBeans = new ArrayList<>(); - swModuleBeans = getSoftwareManagement().findSoftwareModuleOrderByDistributionModuleNameAscModuleVersionAsc( + swModuleBeans = getSoftwareManagement().findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc( new OffsetBasedPageRequest(startIndex, count), orderByDistId, searchText, type); for (final CustomSoftwareModule swModule : swModuleBeans) { From a950fa033792cd79164f969b96292418ec619ac0 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 28 Mar 2016 11:17:06 +0200 Subject: [PATCH 24/63] Documented equals dashcode policy --- .../hawkbit/repository/model/BaseEntity.java | 14 +++++++++++ .../repository/model/DistributionSet.java | 4 ---- .../model/DistributionSetIdName.java | 3 --- .../model/DistributionSetMetadata.java | 5 +--- .../model/DsMetadataCompositeKey.java | 2 -- .../repository/model/ExternalArtifact.java | 5 +--- .../hawkbit/repository/model/NamedEntity.java | 23 +++++++++++++++++++ .../repository/model/SoftwareModule.java | 7 +----- .../hawkbit/repository/model/Target.java | 6 +++++ .../hawkbit/repository/model/TargetTag.java | 5 ---- .../model/TenantAwareBaseEntity.java | 16 +++++++++++++ .../repository/model/TenantConfiguration.java | 23 +++++-------------- 12 files changed, 68 insertions(+), 45 deletions(-) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java index 964cbb728..09cfc3953 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java @@ -122,6 +122,13 @@ public abstract class BaseEntity implements Serializable, Identifiable { this.id = id; } + /** + * Defined equals/hashcode strategy for the repository in general is that an + * entity is equal if it has the same {@link #getId()} and + * {@link #getOptLockRevision()} and class. + * + * @see java.lang.Object#hashCode() + */ @Override public int hashCode() { // NOSONAR - as this is generated code final int prime = 31; @@ -131,6 +138,13 @@ public abstract class BaseEntity implements Serializable, Identifiable { return result; } + /** + * Defined equals/hashcode strategy for the repository in general is that an + * entity is equal if it has the same {@link #getId()} and + * {@link #getOptLockRevision()} and class. + * + * @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/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 390421bf8..58303340e 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -46,10 +46,6 @@ import org.eclipse.persistence.annotations.CascadeOnDelete; * A {@link Target} has exactly one target {@link DistributionSet} assigned. *

* - * - * - * - * */ @Entity @Table(name = "sp_distribution_set", uniqueConstraints = { 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 fd90e9d04..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; 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 e9597f60b..4303ffd96 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,10 +23,7 @@ import javax.persistence.ManyToOne; import javax.persistence.Table; /** - * Metadata for {@link DistributionSet}. - * - * - * + * Meta data for {@link DistributionSet}. * */ @IdClass(DsMetadataCompositeKey.class) 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 a23595679..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 @@ -14,8 +14,6 @@ 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; 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 2369d000b..f3d1f9bb9 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") }) 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 e14d88161..ebf3d8939 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 @@ -60,4 +60,27 @@ public abstract class NamedEntity extends TenantAwareBaseEntity { public void setName(final String name) { this.name = name; } + + @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; + } + + @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 NamedEntity)) { + return false; + } + + return true; + } } 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 99a57a2c4..a86c0b864 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,12 +33,7 @@ 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 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 62713dc3f..973c7382a 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 @@ -131,6 +131,12 @@ public class Target extends NamedEntity implements Persistable { securityToken = null; } + /** + * Note: For Target we extended the general strategy by adding controllerId + * as well. + * + * @see org.eclipse.hawkbit.repository.model.BaseEntity#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/TargetTag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java index 90a246b61..5b7f03713 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,11 +21,6 @@ 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 = { 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 index ea223e2d7..d4f03c973 100644 --- 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 @@ -75,6 +75,14 @@ public abstract class TenantAwareBaseEntity extends BaseEntity { 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; @@ -83,6 +91,14 @@ public abstract class TenantAwareBaseEntity extends BaseEntity { 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 (this == obj) { 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 c35cea1c7..de5398e5b 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,9 +19,6 @@ import javax.persistence.UniqueConstraint; /** * A JPA entity which stores the tenant specific configuration. * - * - * - * */ @Entity @Table(name = "sp_tenant_configuration", uniqueConstraints = @UniqueConstraint(columnNames = { "conf_key", @@ -88,31 +85,23 @@ public class TenantConfiguration extends TenantAwareBaseEntity implements Serial @Override public int hashCode() { final int prime = 31; - int result = 1; - result = prime * result + (key == null ? 0 : key.hashCode()); + int result = super.hashCode(); + result = prime * result + this.getClass().getName().hashCode(); return result; } @Override - public boolean equals(final Object obj) { // NOSONAR - as this is generated - // code + public boolean equals(final Object obj) { if (this == obj) { return true; } - if (obj == null) { + if (!super.equals(obj)) { 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)) { + if (!(obj instanceof TenantConfiguration)) { return false; } + return true; } From 83818462b698bbf7b7a998ea8627a5a6b50ad65b Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 29 Mar 2016 11:25:15 +0200 Subject: [PATCH 25/63] Forgot to delete 3 more PageList classes --- .../model/TenantAwareBaseEntity.java | 5 --- .../resource/api/DistributionSetRestApi.java | 3 +- .../api/DistributionSetTagRestApi.java | 4 +- .../rest/resource/api/RolloutRestApi.java | 3 +- .../resource/api/SoftwareModuleRestAPI.java | 3 +- .../rest/resource/api/TargetTagRestApi.java | 4 +- .../resource/model/MetadataRestPageList.java | 38 ---------------- .../model/rollout/RolloutPagedList.java | 36 ---------------- .../rest/resource/model/tag/TagPagedList.java | 43 ------------------- .../resource/DistributionSetResource.java | 7 ++- .../resource/DistributionSetTagResource.java | 8 ++-- .../rest/resource/RolloutResource.java | 7 ++- .../rest/resource/SoftwareModuleResource.java | 5 +-- .../rest/resource/TargetTagResource.java | 6 +-- 14 files changed, 22 insertions(+), 150 deletions(-) delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/MetadataRestPageList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rollout/RolloutPagedList.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagPagedList.java 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 index 755ab793e..82b7fa353 100644 --- 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 @@ -9,26 +9,21 @@ package org.eclipse.hawkbit.repository.model; import javax.persistence.Column; -import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import javax.persistence.PrePersist; -import org.eclipse.hawkbit.eventbus.CacheFieldEntityListener; -import org.eclipse.hawkbit.eventbus.EntityPropertyChangeListener; 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; -import org.springframework.data.jpa.domain.support.AuditingEntityListener; /** * Holder of the base attributes common to all tenant aware entities. * */ @MappedSuperclass -@EntityListeners({ AuditingEntityListener.class, CacheFieldEntityListener.class, EntityPropertyChangeListener.class }) @TenantDiscriminatorColumn(name = "tenant", length = 40) @Multitenant(MultitenantType.SINGLE_TABLE) public abstract class TenantAwareBaseEntity extends BaseEntity { diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java index f7e7a35b7..80caefc94 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetRestApi.java @@ -13,7 +13,6 @@ import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; -import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPut; @@ -227,7 +226,7 @@ public interface DistributionSetRestApi { */ @RequestMapping(method = RequestMethod.GET, value = "/{distributionSetId}/metadata", produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getMetadata( + public ResponseEntity> getMetadata( @PathVariable("distributionSetId") final Long distributionSetId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java index d86b90d6a..f33379011 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java @@ -11,10 +11,10 @@ package org.eclipse.hawkbit.rest.resource.api; import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; import org.eclipse.hawkbit.rest.resource.model.tag.AssignedDistributionSetRequestBody; import org.eclipse.hawkbit.rest.resource.model.tag.DistributionSetTagAssigmentResultRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; @@ -53,7 +53,7 @@ public interface DistributionSetTagRestApi { * JsonResponseExceptionHandler is handling the response. */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getDistributionSetTags( + public ResponseEntity> getDistributionSetTags( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java index 5fcfd3b56..9f76b6bce 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/RolloutRestApi.java @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.rest.resource.api; import org.eclipse.hawkbit.rest.resource.RestConstants; import org.eclipse.hawkbit.rest.resource.model.PagedList; -import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutPagedList; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutResponseBody; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutRestRequestBody; import org.eclipse.hawkbit.rest.resource.model.rolloutgroup.RolloutGroupResponseBody; @@ -50,7 +49,7 @@ public interface RolloutRestApi { * JsonResponseExceptionHandler is handling the response. */ @RequestMapping(method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getRollouts( + public ResponseEntity> getRollouts( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java index b68ea6086..0eb874489 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/SoftwareModuleRestAPI.java @@ -12,7 +12,6 @@ import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; -import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactRest; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPost; @@ -218,7 +217,7 @@ public interface SoftwareModuleRestAPI { */ @RequestMapping(method = RequestMethod.GET, value = "/{softwareModuleId}/metadata", produces = { MediaType.APPLICATION_JSON_VALUE, "application/hal+json" }) - public ResponseEntity getMetadata( + public ResponseEntity> getMetadata( @PathVariable("softwareModuleId") final Long softwareModuleId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java index ac82fbd5c..e3c994900 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java @@ -11,8 +11,8 @@ package org.eclipse.hawkbit.rest.resource.api; import java.util.List; import org.eclipse.hawkbit.rest.resource.RestConstants; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.tag.AssignedTargetRequestBody; -import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; @@ -53,7 +53,7 @@ public interface TargetTagRestApi { * JsonResponseExceptionHandler is handling the response. */ @RequestMapping(method = RequestMethod.GET, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity getTargetTags( + public ResponseEntity> getTargetTags( @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/MetadataRestPageList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/MetadataRestPageList.java deleted file mode 100644 index 0d375c582..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/MetadataRestPageList.java +++ /dev/null @@ -1,38 +0,0 @@ -/** - * 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.rest.resource.model; - -import java.util.List; - -/** - * The rest model for a paged meta data list. - * - */ -public class MetadataRestPageList extends PagedList { - - private final List content; - - /** - * @param content - * the meta data rest model list as content - * @param total - * the total number of the meta data - */ - public MetadataRestPageList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of this paged list - */ - public List getContent() { - return content; - } -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rollout/RolloutPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rollout/RolloutPagedList.java deleted file mode 100644 index ea1544991..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/rollout/RolloutPagedList.java +++ /dev/null @@ -1,36 +0,0 @@ -/** - * 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.rest.resource.model.rollout; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -/** - * Paged list for Rollout. - * - * - */ -public class RolloutPagedList extends PagedList { - - private final List content; - - public RolloutPagedList(final List content, final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagPagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagPagedList.java deleted file mode 100644 index d549a9efa..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagPagedList.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * 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.rest.resource.model.tag; - -import java.util.List; - -import org.eclipse.hawkbit.rest.resource.model.PagedList; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Paged list for tags. - * - */ -public class TagPagedList extends PagedList { - - private final List content; - - /** - * @param content - * @param total - */ - @JsonCreator - public TagPagedList(@JsonProperty("content") final List content, @JsonProperty("total") final long total) { - super(content, total); - this.content = content; - } - - /** - * @return the content of the paged list. Never {@code null}. - */ - public List getContent() { - return content; - } - -} diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java index 4d5f47612..27231308b 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetResource.java @@ -33,7 +33,6 @@ import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetRestApi; import org.eclipse.hawkbit.rest.resource.helper.RestResourceConversionHelper; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; -import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPost; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRequestBodyPut; @@ -218,8 +217,8 @@ public class DistributionSetResource implements DistributionSetRestApi { } @Override - public ResponseEntity getMetadata(final Long distributionSetId, final int pagingOffsetParam, - final int pagingLimitParam, final String sortParam, final String rsqlParam) { + public ResponseEntity> getMetadata(final Long distributionSetId, + final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { // check if distribution set exists otherwise throw exception // immediately @@ -241,7 +240,7 @@ public class DistributionSetResource implements DistributionSetRestApi { } return new ResponseEntity<>( - new MetadataRestPageList(DistributionSetMapper.toResponseDsMetadata(metaDataPage.getContent()), + new PagedList<>(DistributionSetMapper.toResponseDsMetadata(metaDataPage.getContent()), metaDataPage.getTotalElements()), HttpStatus.OK); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java index 63b864758..51afbef41 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java @@ -20,10 +20,10 @@ import org.eclipse.hawkbit.repository.model.DistributionSetTag; import org.eclipse.hawkbit.repository.model.DistributionSetTagAssigmentResult; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.DistributionSetTagRestApi; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.distributionset.DistributionSetRest; import org.eclipse.hawkbit.rest.resource.model.tag.AssignedDistributionSetRequestBody; import org.eclipse.hawkbit.rest.resource.model.tag.DistributionSetTagAssigmentResultRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; @@ -53,8 +53,8 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { private DistributionSetManagement distributionSetManagement; @Override - public ResponseEntity getDistributionSetTags(final int pagingOffsetParam, final int pagingLimitParam, - final String sortParam, final String rsqlParam) { + public ResponseEntity> getDistributionSetTags(final int pagingOffsetParam, + final int pagingLimitParam, final String sortParam, final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam); @@ -76,7 +76,7 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { } final List rest = TagMapper.toResponseDistributionSetTag(findTargetsAll.getContent()); - return new ResponseEntity<>(new TagPagedList(rest, countTargetsAll), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, countTargetsAll), HttpStatus.OK); } @Override diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java index 2267cb836..78cfefa0d 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/RolloutResource.java @@ -29,7 +29,6 @@ import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.RolloutRestApi; import org.eclipse.hawkbit.rest.resource.model.PagedList; -import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutPagedList; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutResponseBody; import org.eclipse.hawkbit.rest.resource.model.rollout.RolloutRestRequestBody; import org.eclipse.hawkbit.rest.resource.model.rolloutgroup.RolloutGroupResponseBody; @@ -63,8 +62,8 @@ public class RolloutResource implements RolloutRestApi { private DistributionSetManagement distributionSetManagement; @Override - public ResponseEntity getRollouts(final int pagingOffsetParam, final int pagingLimitParam, - final String sortParam, final String rsqlParam) { + public ResponseEntity> getRollouts(final int pagingOffsetParam, + final int pagingLimitParam, final String sortParam, final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); final int sanitizedLimitParam = PagingUtility.sanitizePageLimitParam(pagingLimitParam); @@ -81,7 +80,7 @@ public class RolloutResource implements RolloutRestApi { } final List rest = RolloutMapper.toResponseRollout(findModulesAll.getContent()); - return new ResponseEntity<>(new RolloutPagedList(rest, findModulesAll.getTotalElements()), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, findModulesAll.getTotalElements()), HttpStatus.OK); } @Override diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java index e165fca20..8746a1585 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/SoftwareModuleResource.java @@ -23,7 +23,6 @@ import org.eclipse.hawkbit.repository.model.SwMetadataCompositeKey; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.SoftwareModuleRestAPI; import org.eclipse.hawkbit.rest.resource.model.MetadataRest; -import org.eclipse.hawkbit.rest.resource.model.MetadataRestPageList; import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.artifact.ArtifactRest; import org.eclipse.hawkbit.rest.resource.model.softwaremodule.SoftwareModuleRequestBodyPost; @@ -191,7 +190,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { } @Override - public ResponseEntity getMetadata(@PathVariable final Long softwareModuleId, + public ResponseEntity> getMetadata(@PathVariable final Long softwareModuleId, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_OFFSET, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_OFFSET) final int pagingOffsetParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = RestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) final int pagingLimitParam, @RequestParam(value = RestConstants.REQUEST_PARAMETER_SORTING, required = false) final String sortParam, @@ -215,7 +214,7 @@ public class SoftwareModuleResource implements SoftwareModuleRestAPI { } return new ResponseEntity<>( - new MetadataRestPageList(SoftwareModuleMapper.toResponseSwMetadata(metaDataPage.getContent()), + new PagedList<>(SoftwareModuleMapper.toResponseSwMetadata(metaDataPage.getContent()), metaDataPage.getTotalElements()), HttpStatus.OK); } diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java index 0e4bf9ec9..83a95dbb8 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java @@ -20,8 +20,8 @@ import org.eclipse.hawkbit.repository.model.TargetTag; import org.eclipse.hawkbit.repository.model.TargetTagAssigmentResult; import org.eclipse.hawkbit.repository.rsql.RSQLUtility; import org.eclipse.hawkbit.rest.resource.api.TargetTagRestApi; +import org.eclipse.hawkbit.rest.resource.model.PagedList; import org.eclipse.hawkbit.rest.resource.model.tag.AssignedTargetRequestBody; -import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; @@ -54,7 +54,7 @@ public class TargetTagResource implements TargetTagRestApi { private TargetManagement targetManagement; @Override - public ResponseEntity getTargetTags(final int pagingOffsetParam, final int pagingLimitParam, + public ResponseEntity> getTargetTags(final int pagingOffsetParam, final int pagingLimitParam, final String sortParam, final String rsqlParam) { final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam); @@ -77,7 +77,7 @@ public class TargetTagResource implements TargetTagRestApi { } final List rest = TagMapper.toResponse(findTargetsAll.getContent()); - return new ResponseEntity<>(new TagPagedList(rest, countTargetsAll), HttpStatus.OK); + return new ResponseEntity<>(new PagedList<>(rest, countTargetsAll), HttpStatus.OK); } @Override From d23a1aecb41aa17f8ea88d0aa12999dba7c543cf Mon Sep 17 00:00:00 2001 From: SirWayne Date: Tue, 29 Mar 2016 12:01:27 +0200 Subject: [PATCH 26/63] - Add fixed size for hashset - Use 1 static block Signed-off-by: SirWayne --- .../java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java index f026378b9..12bcaacbc 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitEventProvider.java @@ -27,7 +27,8 @@ import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; */ public class HawkbitEventProvider implements UIEventProvider { - private static final Set> SINGLE_EVENTS = new HashSet<>(); + private static final Set> SINGLE_EVENTS = new HashSet<>(6); + private static final Set> BULK_EVENTS = new HashSet<>(3); static { SINGLE_EVENTS.add(TargetTagCreatedBulkEvent.class); @@ -36,11 +37,7 @@ public class HawkbitEventProvider implements UIEventProvider { SINGLE_EVENTS.add(DistributionSetTagUpdateEvent.class); SINGLE_EVENTS.add(RolloutGroupChangeEvent.class); SINGLE_EVENTS.add(RolloutChangeEvent.class); - } - private static final Set> BULK_EVENTS = new HashSet<>(); - - static { BULK_EVENTS.add(TargetCreatedEvent.class); BULK_EVENTS.add(TargetInfoUpdateEvent.class); BULK_EVENTS.add(TargetDeletedEvent.class); From f33a8c37e8220d06552d86e428fa47a5fb2d32bd Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 29 Mar 2016 13:43:18 +0200 Subject: [PATCH 27/63] Corrected expected exception checks in tests --- ...SourceTrustAuthenticationProviderTest.java | 55 ++++++------ .../ArtifactManagementNoMongoDbTest.java | 11 ++- .../repository/ArtifactManagementTest.java | 9 +- .../repository/ControllerManagementTest.java | 10 ++- .../DistributionSetManagementTest.java | 67 +++++++++++---- .../repository/SoftwareManagementTest.java | 86 ++++++++++++++----- .../hawkbit/repository/TagManagementTest.java | 38 ++++++-- .../TargetFilterQueryManagenmentTest.java | 12 ++- .../repository/TargetManagementTest.java | 9 +- .../TenantConfigurationManagementTest.java | 56 +++++++++--- .../rest/resource/model/PagedListTest.java | 9 +- 11 files changed, 263 insertions(+), 99 deletions(-) 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..30307aee8 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"; @@ -89,15 +86,16 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest { // test, should throw authentication exception final Authentication authenticate = underTestWithSourceIpCheck.authenticate(token); - assertThat(authenticate.isAuthenticated()).isTrue(); + try { + assertThat(authenticate.isAuthenticated()).isTrue(); + 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/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 ebe57d2b1..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 @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; +import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; @@ -73,7 +74,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest { .isEqualTo(3); } - @Test(expected = ConstraintViolationException.class) + @Test @Description("Register a controller which does not exist") public void testfindOrRegisterTargetIfItDoesNotexist() { final Target target = controllerManagament.findOrRegisterTargetIfItDoesNotexist("AA", null); @@ -84,7 +85,12 @@ public class ControllerManagementTest extends AbstractIntegrationTest { assertThat(targetRepository.count()).as("Only 1 target should be registred").isEqualTo(1L); // throws exception - controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null); + try { + controllerManagament.findOrRegisterTargetIfItDoesNotexist("", null); + fail("should fail as target does not exist"); + } catch (final ConstraintViolationException e) { + + } } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java index 62dc21a3b..90cecfc14 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java @@ -100,7 +100,7 @@ public class DistributionSetManagementTest 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 @@ -111,10 +111,17 @@ public class DistributionSetManagementTest 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 @@ -128,7 +135,12 @@ public class DistributionSetManagementTest 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 @@ -156,13 +168,17 @@ public class DistributionSetManagementTest extends AbstractIntegrationTest { assertThat(distributionSetManagement.findDistributionSetTypeByKey("softdeleted").isDeleted()).isEqualTo(true); } - @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 @@ -196,13 +212,18 @@ public class DistributionSetManagementTest extends AbstractIntegrationTest { } - @Test(expected = EntityAlreadyExistsException.class) + @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)); - distributionSetManagement.createDistributionSet(set); + try { + distributionSetManagement.createDistributionSet(set); + fail("Should not have worked to create based on a persisted entity."); + } catch (final EntityAlreadyExistsException e) { + + } } @Test @@ -279,17 +300,22 @@ public class DistributionSetManagementTest 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", @@ -297,7 +323,12 @@ public class DistributionSetManagementTest 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 @@ -596,7 +627,7 @@ public class DistributionSetManagementTest 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) @@ -605,7 +636,7 @@ public class DistributionSetManagementTest 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); @@ -618,7 +649,7 @@ public class DistributionSetManagementTest 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 @@ -626,7 +657,7 @@ public class DistributionSetManagementTest 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"); @@ -650,7 +681,7 @@ public class DistributionSetManagementTest 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())); @@ -672,7 +703,7 @@ public class DistributionSetManagementTest 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) { diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java index b227568e8..849cf8e30 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/SoftwareManagementTest.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import java.io.ByteArrayInputStream; import java.io.IOException; @@ -141,38 +142,60 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { assertThat(updated.getVendor()).as("Updated vendor is").isEqualTo("changed"); } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Create Software Module call fails when called for existing entity.") public void createModuleCallFailsForExistingModule() { final SoftwareModule ah = softwareManagement .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", "test desc", "test vendor")); - softwareManagement.createSoftwareModule(ah); + try { + softwareManagement.createSoftwareModule(ah); + fail("Should not have worked as module already exists."); + } catch (final EntityAlreadyExistsException e) { + + } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Create Software Modules call fails when called for existing entities.") public void createModulesCallFailsForExistingModule() { final List modules = softwareManagement.createSoftwareModule( Lists.newArrayList(new SoftwareModule(appType, "agent-hub", "1.0.1", "test desc", "test vendor"), new SoftwareModule(appType, "agent-hub", "1.0.2", "test desc", "test vendor"))); - softwareManagement.createSoftwareModule(modules); + try { + softwareManagement.createSoftwareModule(modules); + fail("Should not have worked as module already exists."); + } catch (final EntityAlreadyExistsException e) { + + } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Create Software Module Type call fails when called for existing entity.") public void createModuleTypeCallFailsForExistingType() { final SoftwareModuleType created = softwareManagement .createSoftwareModuleType(new SoftwareModuleType("test-key", "test-name", "test-desc", 1)); - softwareManagement.createSoftwareModuleType(created); + + try { + softwareManagement.createSoftwareModuleType(created); + fail("Should not have worked as module already exists."); + } catch (final EntityAlreadyExistsException e) { + + } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Create Software Module Types call fails when called for existing entities.") public void createModuleTypesCallFailsForExistingTypes() { final List created = softwareManagement.createSoftwareModuleType( - Lists.newArrayList(new SoftwareModuleType("test-key", "test-name", "test-desc", 1), - new SoftwareModuleType("test-key2", "test-name", "test-desc", 1))); - softwareManagement.createSoftwareModuleType(created); + Lists.newArrayList(new SoftwareModuleType("test-key-bumlux", "test-name", "test-desc", 1), + new SoftwareModuleType("test-key-bumlux2", "test-name2", "test-desc", 1))); + + try { + softwareManagement.createSoftwareModuleType(created); + fail("Should not have worked as module already exists."); + } catch (final EntityAlreadyExistsException e) { + + } } @Test @@ -652,9 +675,8 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { new CustomSoftwareModule(two, true), new CustomSoftwareModule(unassigned, false)); // without any filter - assertThat(softwareManagement - .findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc(pageReq, set.getId(), null, null) - .getContent()).as("Found modules with the assigned ones first").containsExactly( + assertThat(softwareManagement.findSoftwareModuleOrderBySetAssignmentAndModuleNameAscModuleVersionAsc(pageReq, + set.getId(), null, null).getContent()).as("Found modules with the assigned ones first").containsExactly( new CustomSoftwareModule(differentName, true), new CustomSoftwareModule(one, true), new CustomSoftwareModule(two, true), new CustomSoftwareModule(four, true), new CustomSoftwareModule(unassigned, false)); @@ -731,21 +753,32 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { .isEqualTo(found); } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Verfies that it is not possible to create a type that alrady exists.") public void createSoftwareModuleTypeFailsWithExistingEntity() { final SoftwareModuleType created = softwareManagement .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); - softwareManagement.createSoftwareModuleType(created); + try { + softwareManagement.createSoftwareModuleType(created); + fail("should not have worked as module type already exists"); + } catch (final EntityAlreadyExistsException e) { + + } + } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Verfies that it is not possible to create a list of types where one already exists.") public void createSoftwareModuleTypesFailsWithExistingEntity() { final SoftwareModuleType created = softwareManagement .createSoftwareModuleType(new SoftwareModuleType("thetype", "thename", "desc", 100)); - softwareManagement.createSoftwareModuleType( - Lists.newArrayList(created, new SoftwareModuleType("anothertype", "anothername", "desc", 100))); + try { + softwareManagement.createSoftwareModuleType( + Lists.newArrayList(created, new SoftwareModuleType("anothertype", "anothername", "desc", 100))); + fail("should not have worked as module type already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } @Test @@ -819,7 +852,7 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { assertThat(softwareModuleMetadata.get(0).getSoftwareModule().getId()).isEqualTo(ah.getId()); } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Checks that metadata for a software module cannot be created for an existing key.") public void createSoftwareModuleMetadataFailsIfKeyExists() { @@ -832,7 +865,12 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue1)); - softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue2)); + try { + softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue2)); + fail("should not have worked as module metadata already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } @Test @@ -902,7 +940,7 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { .isEmpty(); } - @Test(expected = EntityNotFoundException.class) + @Test @Description("Verfies that non existing metadata find results in exception.") public void findSoftwareModuleMetadataFailsIfEntryDoesNotExist() { final String knownKey1 = "myKnownKey1"; @@ -914,8 +952,12 @@ public class SoftwareManagementTest extends AbstractIntegrationTestWithMongoDB { ah = softwareManagement.createSoftwareModuleMetadata(new SoftwareModuleMetadata(knownKey1, ah, knownValue1)) .getSoftwareModule(); - softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(ah, "doesnotexist")); + try { + softwareManagement.findSoftwareModuleMetadata(new SwMetadataCompositeKey(ah, "doesnotexist")); + fail("should not have worked as module metadata with that key does not exist"); + } catch (final EntityNotFoundException e) { + } } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java index 69ad50f02..73244871f 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Arrays; @@ -362,38 +363,59 @@ public class TagManagementTest extends AbstractIntegrationTest { } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Ensures that a tag cannot be created if one exists already with that name (ecpects EntityAlreadyExistsException).") public void failedDuplicateTargetTagNameException() { tagManagement.createTargetTag(new TargetTag("A")); - tagManagement.createTargetTag(new TargetTag("A")); + + try { + tagManagement.createTargetTag(new TargetTag("A")); + fail("should not have worked as tag already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Ensures that a tag cannot be updated to a name that already exists on another tag (ecpects EntityAlreadyExistsException).") public void failedDuplicateTargetTagNameExceptionAfterUpdate() { tagManagement.createTargetTag(new TargetTag("A")); final TargetTag tag = tagManagement.createTargetTag(new TargetTag("B")); tag.setName("A"); - tagManagement.updateTargetTag(tag); + try { + tagManagement.updateTargetTag(tag); + fail("should not have worked as tag already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Ensures that a tag cannot be created if one exists already with that name (ecpects EntityAlreadyExistsException).") public void failedDuplicateDsTagNameException() { tagManagement.createDistributionSetTag(new DistributionSetTag("A")); - tagManagement.createDistributionSetTag(new DistributionSetTag("A")); + try { + tagManagement.createDistributionSetTag(new DistributionSetTag("A")); + fail("should not have worked as tag already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Ensures that a tag cannot be updated to a name that already exists on another tag (ecpects EntityAlreadyExistsException).") public void failedDuplicateDsTagNameExceptionAfterUpdate() { tagManagement.createDistributionSetTag(new DistributionSetTag("A")); final DistributionSetTag tag = tagManagement.createDistributionSetTag(new DistributionSetTag("B")); tag.setName("A"); - tagManagement.updateDistributionSetTag(tag); + try { + tagManagement.updateDistributionSetTag(tag); + fail("should not have worked as tag already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java index 87fdff253..99e08f331 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetFilterQueryManagenmentTest.java @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.repository; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; import org.eclipse.hawkbit.AbstractIntegrationTest; import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; @@ -37,15 +38,20 @@ public class TargetFilterQueryManagenmentTest extends AbstractIntegrationTest { targetFilterQueryManagement.findTargetFilterQueryByName(filterName)); } - @Test(expected = EntityAlreadyExistsException.class) + @Test @Description("Checks if the EntityAlreadyExistsException is thrown if a targetfilterquery with the same name are created more than once.") public void createDuplicateTargetFilterQuery() { final String filterName = "new target filter duplicate"; targetFilterQueryManagement .createTargetFilterQuery(new TargetFilterQuery(filterName, "name==PendingTargets001")); - targetFilterQueryManagement - .createTargetFilterQuery(new TargetFilterQuery(filterName, "name==PendingTargets001")); + try { + targetFilterQueryManagement + .createTargetFilterQuery(new TargetFilterQuery(filterName, "name==PendingTargets001")); + fail("should not have worked as query already exists"); + } catch (final EntityAlreadyExistsException e) { + + } } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java index 4a664f5b8..36fd2754b 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementTest.java @@ -54,11 +54,16 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Target Management") public class TargetManagementTest extends AbstractIntegrationTest { - @Test(expected = TenantNotExistException.class) + @Test @Description("Ensures that targets cannot be created e.g. in plug'n play scenarios when tenant does not exists.") @WithUser(tenantId = "tenantWhichDoesNotExists", allSpPermissions = true, autoCreateTenant = false) public void createTargetForTenantWhichDoesNotExistThrowsTenantNotExistException() { - targetManagement.createTarget(new Target("targetId123")); + try { + targetManagement.createTarget(new Target("targetId123")); + fail("should not be possible as the tenant does not exist"); + } catch (final TenantNotExistException e) { + // ok + } } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TenantConfigurationManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TenantConfigurationManagementTest.java index 3425c6479..1427df25b 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TenantConfigurationManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TenantConfigurationManagementTest.java @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.repository; import static org.fest.assertions.api.Assertions.assertThat; +import static org.junit.Assert.fail; import java.time.Duration; import java.util.Arrays; @@ -91,13 +92,19 @@ public class TenantConfigurationManagementTest extends AbstractIntegrationTestWi .isEqualTo(value2); } - @Test(expected = TenantConfigurationValidatorException.class) + @Test @Description("Tests that the get configuration throws exception in case the value cannot be automatically converted from String to Boolean") public void wrongTenantConfigurationValueTypeThrowsException() { final TenantConfigurationKey configKey = TenantConfigurationKey.AUTHENTICATION_MODE_HEADER_ENABLED; final String value1 = "thisIsNotABoolean"; + // add value as String - tenantConfigurationManagement.addOrUpdateConfiguration(configKey, value1); + try { + tenantConfigurationManagement.addOrUpdateConfiguration(configKey, value1); + fail("should not have worked as string is not a boolean"); + } catch (final TenantConfigurationValidatorException e) { + + } } @Test @@ -128,46 +135,71 @@ public class TenantConfigurationManagementTest extends AbstractIntegrationTestWi assertThat(tenantConfigurationManagement.getConfigurationValue(configKey, String.class).getValue()).isNull(); } - @Test(expected = TenantConfigurationValidatorException.class) + @Test @Description("Test that an Exception is thrown, when an integer is stored but a string expected.") public void storesIntegerWhenStringIsExpected() { final TenantConfigurationKey configKey = TenantConfigurationKey.AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_NAME; final Integer wrongDataype = 123; - tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongDataype); + try { + tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongDataype); + fail("should not have worked as integer is not a string"); + } catch (final TenantConfigurationValidatorException e) { + + } } - @Test(expected = TenantConfigurationValidatorException.class) + @Test @Description("Test that an Exception is thrown, when an integer is stored but a boolean expected.") public void storesIntegerWhenBooleanIsExpected() { final TenantConfigurationKey configKey = TenantConfigurationKey.AUTHENTICATION_MODE_GATEWAY_SECURITY_TOKEN_ENABLED; final Integer wrongDataype = 123; - tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongDataype); + try { + tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongDataype); + fail("should not have worked as integer is not a boolean"); + } catch (final TenantConfigurationValidatorException e) { + + } } - @Test(expected = TenantConfigurationValidatorException.class) + @Test @Description("Test that an Exception is thrown, when an integer is stored as PollingTime.") public void storesIntegerWhenPollingIntervalIsExpected() { final TenantConfigurationKey configKey = TenantConfigurationKey.POLLING_TIME_INTERVAL; final Integer wrongDataype = 123; - tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongDataype); + try { + tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongDataype); + fail("should not have worked as integer is not a time field"); + } catch (final TenantConfigurationValidatorException e) { + + } } - @Test(expected = TenantConfigurationValidatorException.class) + @Test @Description("Test that an Exception is thrown, when an invalid formatted string is stored as PollingTime.") public void storesWrongFormattedStringAsPollingInterval() { final TenantConfigurationKey configKey = TenantConfigurationKey.POLLING_TIME_INTERVAL; final String wrongFormatted = "wrongFormatted"; - tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongFormatted); + try { + tenantConfigurationManagement.addOrUpdateConfiguration(configKey, wrongFormatted); + fail("should not have worked as string is not a time field"); + } catch (final TenantConfigurationValidatorException e) { + + } } - @Test(expected = TenantConfigurationValidatorException.class) + @Test @Description("Test that an Exception is thrown, when an invalid formatted string is stored as PollingTime.") public void storesTooSmallDurationAsPollingInterval() { final TenantConfigurationKey configKey = TenantConfigurationKey.POLLING_TIME_INTERVAL; final String tooSmallDuration = DurationHelper .durationToFormattedString(DurationHelper.getDurationByTimeValues(0, 0, 1)); - tenantConfigurationManagement.addOrUpdateConfiguration(configKey, tooSmallDuration); + try { + tenantConfigurationManagement.addOrUpdateConfiguration(configKey, tooSmallDuration); + fail("should not have worked as string has an invalid format"); + } catch (final TenantConfigurationValidatorException e) { + + } } @Test diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/model/PagedListTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/model/PagedListTest.java index 49e13c0b4..68ce570a1 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/model/PagedListTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/model/PagedListTest.java @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.rest.resource.model; import static org.fest.assertions.Assertions.assertThat; +import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.List; @@ -23,10 +24,14 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Paged List Handling") public class PagedListTest { - @Test(expected = NullPointerException.class) + @Test @Description("Ensures that a null payload entitiy throws an exception.") public void createListWithNullContentThrowsException() { - new PagedList<>(null, 0); + try { + new PagedList<>(null, 0); + fail("as content is null"); + } catch (final NullPointerException e) { + } } @Test From db12385d8d81dfa908d9d0f54ccc364f527cbe87 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 29 Mar 2016 13:49:34 +0200 Subject: [PATCH 28/63] Removed generated but unnecessary comments --- .../RepositoryApplicationConfiguration.java | 14 +----- .../ExceptionMappingAspectHandler.java | 5 --- .../EntityPropertyChangeListener.java | 45 +++++-------------- .../event/AbstractBaseEntityEvent.java | 22 ++------- .../repository/NoCountPagingRepository.java | 12 ----- .../hawkbit/repository/ReportManagement.java | 36 --------------- .../hawkbit/repository/SystemManagement.java | 10 ----- .../TenantConfigurationRepository.java | 8 ---- .../repository/TenantKeyGenerator.java | 10 ----- .../hawkbit/repository/model/Target.java | 5 --- .../repository/model/TargetIdName.java | 5 --- .../hawkbit/repository/rsql/RSQLUtility.java | 8 ---- 12 files changed, 16 insertions(+), 164 deletions(-) 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/EntityPropertyChangeListener.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/EntityPropertyChangeListener.java index 5fd4ba27d..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.TenantAwareBaseEntity; 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,30 +50,18 @@ 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)))); } } @@ -87,14 +69,11 @@ public class EntityPropertyChangeListener extends DescriptorEventAdapter { 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 15864eb8f..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 @@ -11,8 +11,9 @@ package org.eclipse.hawkbit.eventbus.event; import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity; /** - * An abstract definition class for {@link EntityEvent} for {@link TenantAwareBaseEntity}s, - * which holds the {@link TenantAwareBaseEntity}. + * An abstract definition class for {@link EntityEvent} for + * {@link TenantAwareBaseEntity}s, which holds the {@link TenantAwareBaseEntity} + * . * * * @@ -37,33 +38,16 @@ public abstract class AbstractBaseEntityEvent e 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/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/SystemManagement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/SystemManagement.java index 31f5f1c18..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 @@ -339,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/TenantConfigurationRepository.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationRepository.java index d8973f275..dd741697b 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationRepository.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantConfigurationRepository.java @@ -16,9 +16,6 @@ import org.springframework.transaction.annotation.Transactional; /** * The spring-data repository for the entity {@link TenantConfiguration}. * - * - * - * */ @Transactional(readOnly = true) public interface TenantConfigurationRepository extends BaseEntityRepository { @@ -32,11 +29,6 @@ public interface TenantConfigurationRepository extends BaseEntityRepository findAll(); diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantKeyGenerator.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantKeyGenerator.java index d0a2b4ea7..3265b622c 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantKeyGenerator.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/TenantKeyGenerator.java @@ -18,9 +18,6 @@ import org.springframework.stereotype.Service; /** * {@link KeyGenerator} for tenant related caches. * - * - * - * */ @Service public class TenantKeyGenerator implements KeyGenerator { @@ -28,13 +25,6 @@ public class TenantKeyGenerator implements KeyGenerator { @Autowired private TenantAware tenantAware; - /* - * (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) { return tenantAware.getCurrentTenant().toUpperCase(); 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 973c7382a..4121aa4ec 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 @@ -246,11 +246,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/TargetIdName.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetIdName.java index 91542a422..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 @@ -59,11 +59,6 @@ public class TargetIdName implements Serializable { return targetId; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ @Override public int hashCode() { final int prime = 31; 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) { From 7d3d4f1fd4b3ec55532ec5fff9cdadc336dc5326 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 29 Mar 2016 15:37:07 +0200 Subject: [PATCH 29/63] Fixed broken test. --- .../PreAuthTokenSourceTrustAuthenticationProviderTest.java | 4 ++-- .../org/eclipse/hawkbit/repository/ControllerManagement.java | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) 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 30307aee8..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 @@ -85,9 +85,9 @@ public class PreAuthTokenSourceTrustAuthenticationProviderTest { when(webAuthenticationDetailsMock.getRemoteAddress()).thenReturn(remoteAddress); // test, should throw authentication exception - final Authentication authenticate = underTestWithSourceIpCheck.authenticate(token); + try { - assertThat(authenticate.isAuthenticated()).isTrue(); + underTestWithSourceIpCheck.authenticate(token); fail("as source is not trusted."); } catch (final InsufficientAuthenticationException e) { 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 271221e4a..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 @@ -379,7 +379,6 @@ public class ControllerManagement { handleErrorOnAction(mergedAction, mergedTarget); break; case FINISHED: - handleFinishedAndStoreInTargetStatus(mergedTarget, mergedAction); break; case CANCELED: @@ -399,7 +398,6 @@ public class ControllerManagement { } private void handleErrorOnAction(final Action mergedAction, final Target mergedTarget) { - // set action inactive mergedAction.setActive(false); mergedAction.setStatus(Status.ERROR); mergedTarget.setAssignedDistributionSet(null); From f002eede43fcd86b481e5c300686552acab738c2 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 29 Mar 2016 17:07:54 +0200 Subject: [PATCH 30/63] Found two more classes to remove --- .../api/DistributionSetTagRestApi.java | 3 +- .../rest/resource/api/TargetTagRestApi.java | 3 +- .../resource/model/action/ActionRest.java | 3 - .../resource/model/action/ActionsRest.java | 276 ------------------ .../rest/resource/model/tag/TagsRest.java | 275 ----------------- .../resource/DistributionSetTagResource.java | 3 +- .../hawkbit/rest/resource/TagMapper.java | 11 +- .../hawkbit/rest/resource/TargetMapper.java | 5 +- .../rest/resource/TargetTagResource.java | 3 +- 9 files changed, 10 insertions(+), 572 deletions(-) delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionsRest.java delete mode 100644 hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagsRest.java diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java index d86b90d6a..e362351aa 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/DistributionSetTagRestApi.java @@ -17,7 +17,6 @@ import org.eclipse.hawkbit.rest.resource.model.tag.DistributionSetTagAssigmentRe import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; @@ -87,7 +86,7 @@ public interface DistributionSetTagRestApi { */ @RequestMapping(method = RequestMethod.POST, consumes = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createDistributionSetTags(@RequestBody final List tags); + public ResponseEntity> createDistributionSetTags(@RequestBody final List tags); /** * diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java index ac82fbd5c..6bc8b10db 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/api/TargetTagRestApi.java @@ -15,7 +15,6 @@ import org.eclipse.hawkbit.rest.resource.model.tag.AssignedTargetRequestBody; import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; import org.eclipse.hawkbit.rest.resource.model.tag.TargetTagAssigmentResultRest; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.springframework.http.MediaType; @@ -85,7 +84,7 @@ public interface TargetTagRestApi { */ @RequestMapping(method = RequestMethod.POST, consumes = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }, produces = { "application/hal+json", MediaType.APPLICATION_JSON_VALUE }) - public ResponseEntity createTargetTags(@RequestBody final List tags); + public ResponseEntity> createTargetTags(@RequestBody final List tags); /** * diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionRest.java index 3bd57ab20..630bcb993 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionRest.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionRest.java @@ -18,9 +18,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; /** * A json annotated rest model for Action to RESTful API representation. * - * - * - * */ @JsonInclude(Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionsRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionsRest.java deleted file mode 100644 index 9c3659f30..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/action/ActionsRest.java +++ /dev/null @@ -1,276 +0,0 @@ -/** - * 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.rest.resource.model.action; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * A json annotated rest model for Actions to RESTful API representation. - * - * - * - * - */ -public class ActionsRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final ActionRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public ActionRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public ActionRest set(final int index, final ActionRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final ActionRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public ActionRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagsRest.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagsRest.java deleted file mode 100644 index df0638358..000000000 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/tag/TagsRest.java +++ /dev/null @@ -1,275 +0,0 @@ -/** - * 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.rest.resource.model.tag; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; - -import org.springframework.hateoas.ResourceSupport; - -/** - * List representation of the {@link TagRest} because Spring MVC cannot handle - * plain lists interfaces as request body. - * - * - */ -public class TagsRest extends ResourceSupport implements List { - - private final List delegate = new ArrayList<>(); - - /** - * @return - * @see java.util.List#size() - */ - @Override - public int size() { - return delegate.size(); - } - - /** - * @return - * @see java.util.List#isEmpty() - */ - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - /** - * @param o - * @return - * @see java.util.List#contains(java.lang.Object) - */ - @Override - public boolean contains(final Object o) { - return delegate.contains(o); - } - - /** - * @return - * @see java.util.List#iterator() - */ - @Override - public Iterator iterator() { - return delegate.iterator(); - } - - /** - * @return - * @see java.util.List#toArray() - */ - @Override - public Object[] toArray() { - return delegate.toArray(); - } - - /** - * @param a - * @return - * @see java.util.List#toArray(java.lang.Object[]) - */ - @Override - public T[] toArray(final T[] a) { - return delegate.toArray(a); - } - - /** - * @param e - * @return - * @see java.util.List#add(java.lang.Object) - */ - @Override - public boolean add(final TagRest e) { - return delegate.add(e); - } - - /** - * @param o - * @return - * @see java.util.List#remove(java.lang.Object) - */ - @Override - public boolean remove(final Object o) { - return delegate.remove(o); - } - - /** - * @param c - * @return - * @see java.util.List#containsAll(java.util.Collection) - */ - @Override - public boolean containsAll(final Collection c) { - return delegate.containsAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#addAll(java.util.Collection) - */ - @Override - public boolean addAll(final Collection c) { - return delegate.addAll(c); - } - - /** - * @param index - * @param c - * @return - * @see java.util.List#addAll(int, java.util.Collection) - */ - @Override - public boolean addAll(final int index, final Collection c) { - return delegate.addAll(index, c); - } - - /** - * @param c - * @return - * @see java.util.List#removeAll(java.util.Collection) - */ - @Override - public boolean removeAll(final Collection c) { - return delegate.removeAll(c); - } - - /** - * @param c - * @return - * @see java.util.List#retainAll(java.util.Collection) - */ - @Override - public boolean retainAll(final Collection c) { - return delegate.retainAll(c); - } - - /** - * - * @see java.util.List#clear() - */ - @Override - public void clear() { - delegate.clear(); - } - - /** - * @param o - * @return - * @see java.util.List#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object o) { - return delegate.equals(o); - } - - /** - * @return - * @see java.util.List#hashCode() - */ - @Override - public int hashCode() { - return delegate.hashCode(); - } - - /** - * @param index - * @return - * @see java.util.List#get(int) - */ - @Override - public TagRest get(final int index) { - return delegate.get(index); - } - - /** - * @param index - * @param element - * @return - * @see java.util.List#set(int, java.lang.Object) - */ - @Override - public TagRest set(final int index, final TagRest element) { - return delegate.set(index, element); - } - - /** - * @param index - * @param element - * @see java.util.List#add(int, java.lang.Object) - */ - @Override - public void add(final int index, final TagRest element) { - delegate.add(index, element); - } - - /** - * @param index - * @return - * @see java.util.List#remove(int) - */ - @Override - public TagRest remove(final int index) { - return delegate.remove(index); - } - - /** - * @param o - * @return - * @see java.util.List#indexOf(java.lang.Object) - */ - @Override - public int indexOf(final Object o) { - return delegate.indexOf(o); - } - - /** - * @param o - * @return - * @see java.util.List#lastIndexOf(java.lang.Object) - */ - @Override - public int lastIndexOf(final Object o) { - return delegate.lastIndexOf(o); - } - - /** - * @return - * @see java.util.List#listIterator() - */ - @Override - public ListIterator listIterator() { - return delegate.listIterator(); - } - - /** - * @param index - * @return - * @see java.util.List#listIterator(int) - */ - @Override - public ListIterator listIterator(final int index) { - return delegate.listIterator(index); - } - - /** - * @param fromIndex - * @param toIndex - * @return - * @see java.util.List#subList(int, int) - */ - @Override - public List subList(final int fromIndex, final int toIndex) { - return delegate.subList(fromIndex, toIndex); - } - -} diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java index 96a45aa6e..4406af311 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java @@ -26,7 +26,6 @@ import org.eclipse.hawkbit.rest.resource.model.tag.DistributionSetTagAssigmentRe import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -86,7 +85,7 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { } @Override - public ResponseEntity createDistributionSetTags(final List tags) { + public ResponseEntity> createDistributionSetTags(final List tags) { LOG.debug("creating {} ds tags", tags.size()); final List createdTags = this.tagManagement diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TagMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TagMapper.java index b5e84abe8..f9f0caba0 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TagMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TagMapper.java @@ -21,7 +21,6 @@ import org.eclipse.hawkbit.rest.resource.api.DistributionSetTagRestApi; import org.eclipse.hawkbit.rest.resource.api.TargetTagRestApi; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; /** * A mapper which maps repository model to RESTful model representation and @@ -33,8 +32,8 @@ final class TagMapper { // Utility class } - static TagsRest toResponse(final List targetTags) { - final TagsRest tagsRest = new TagsRest(); + static List toResponse(final List targetTags) { + final List tagsRest = new ArrayList<>(); if (targetTags == null) { return tagsRest; } @@ -63,8 +62,8 @@ final class TagMapper { return response; } - static TagsRest toResponseDistributionSetTag(final List distributionSetTags) { - final TagsRest tagsRest = new TagsRest(); + static List toResponseDistributionSetTag(final List distributionSetTags) { + final List tagsRest = new ArrayList<>(); if (distributionSetTags == null) { return tagsRest; } @@ -131,7 +130,5 @@ final class TagMapper { if (response.getName() != null) { tag.setName(response.getName()); } - } - } diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java index 0cb3c72a3..c8a39a2f3 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetMapper.java @@ -27,7 +27,6 @@ import org.eclipse.hawkbit.rest.resource.api.TargetRestApi; import org.eclipse.hawkbit.rest.resource.model.PollStatusRest; import org.eclipse.hawkbit.rest.resource.model.action.ActionRest; import org.eclipse.hawkbit.rest.resource.model.action.ActionStatusRest; -import org.eclipse.hawkbit.rest.resource.model.action.ActionsRest; import org.eclipse.hawkbit.rest.resource.model.target.TargetRequestBody; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; @@ -214,8 +213,8 @@ public final class TargetMapper { return result; } - static ActionsRest toResponse(final String targetId, final List actions) { - final ActionsRest mappedList = new ActionsRest(); + static List toResponse(final String targetId, final List actions) { + final List mappedList = new ArrayList<>(); for (final Action action : actions) { final ActionRest response = toResponse(targetId, action, action.isActive()); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java index 7ef9489ca..110cbc840 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java @@ -24,7 +24,6 @@ import org.eclipse.hawkbit.rest.resource.model.tag.AssignedTargetRequestBody; import org.eclipse.hawkbit.rest.resource.model.tag.TagPagedList; import org.eclipse.hawkbit.rest.resource.model.tag.TagRequestBodyPut; import org.eclipse.hawkbit.rest.resource.model.tag.TagRest; -import org.eclipse.hawkbit.rest.resource.model.tag.TagsRest; import org.eclipse.hawkbit.rest.resource.model.tag.TargetTagAssigmentResultRest; import org.eclipse.hawkbit.rest.resource.model.target.TargetRest; import org.slf4j.Logger; @@ -87,7 +86,7 @@ public class TargetTagResource implements TargetTagRestApi { } @Override - public ResponseEntity createTargetTags(@RequestBody final List tags) { + public ResponseEntity> createTargetTags(@RequestBody final List tags) { LOG.debug("creating {} target tags", tags.size()); final List createdTargetTags = this.tagManagement .createTargetTags(TagMapper.mapTargeTagFromRequest(tags)); From 292ca31768637609902733a924e5264486abc727 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 09:03:09 +0200 Subject: [PATCH 31/63] Found even more code that could be deleted --- .../hawkbit/repository/model/Action.java | 3 -- .../repository/model/ActionStatus.java | 3 -- .../model/ActionWithStatusCount.java | 39 ------------------- .../hawkbit/repository/model/Artifact.java | 3 -- .../hawkbit/repository/model/BaseEntity.java | 2 +- .../repository/model/DistributionSet.java | 12 ------ .../repository/model/DistributionSetTag.java | 3 -- .../repository/model/DistributionSetType.java | 3 -- .../model/DistributionSetTypeElement.java | 12 ------ .../repository/model/ExternalArtifact.java | 17 -------- .../model/ExternalArtifactProvider.java | 3 -- .../repository/model/LocalArtifact.java | 3 -- .../hawkbit/repository/model/NamedEntity.java | 3 -- .../model/NamedVersionedEntity.java | 3 -- .../hawkbit/repository/model/Rollout.java | 3 -- .../repository/model/RolloutGroup.java | 3 -- .../model/RolloutTargetGroupId.java | 5 --- .../repository/model/SoftwareModule.java | 13 ------- .../repository/model/SoftwareModuleType.java | 3 -- .../eclipse/hawkbit/repository/model/Tag.java | 3 -- .../hawkbit/repository/model/Target.java | 5 +-- .../repository/model/TargetFilterQuery.java | 3 -- .../hawkbit/repository/model/TargetTag.java | 3 -- .../model/TargetWithActionStatus.java | 14 ------- .../model/TenantAwareBaseEntity.java | 3 -- .../repository/model/TenantConfiguration.java | 3 -- .../repository/model/TenantMetaData.java | 3 -- 27 files changed, 2 insertions(+), 171 deletions(-) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index aeb4e64d8..afc6998ad 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -264,9 +264,6 @@ public class Action extends TenantAwareBaseEntity implements Comparable @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/ActionStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java index 8493acfad..f67229b69 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java @@ -150,9 +150,6 @@ public class ActionStatus extends TenantAwareBaseEntity { @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/ActionWithStatusCount.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java index 44beb194a..73eab32f9 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionWithStatusCount.java @@ -86,93 +86,54 @@ public class ActionWithStatusCount { action.setId(actionId); } - /** - * @return the action - */ public Action getAction() { return action; } - /** - * @return the actionId - */ public Long getActionId() { return actionId; } - /** - * @return the actionType - */ public ActionType getActionType() { return actionType; } - /** - * @return the actionActive - */ public boolean isActionActive() { return actionActive; } - /** - * @return the actionForceTime - */ public long getActionForceTime() { return actionForceTime; } - /** - * @return the actionStatus - */ public Status getActionStatus() { return actionStatus; } - /** - * @return the actionCreatedAt - */ public Long getActionCreatedAt() { return actionCreatedAt; } - /** - * @return the actionLastModifiedAt - */ public Long getActionLastModifiedAt() { return actionLastModifiedAt; } - /** - * @return the dsId - */ public Long getDsId() { return dsId; } - /** - * @return the dsName - */ public String getDsName() { return dsName; } - /** - * @return the dsVersion - */ public String getDsVersion() { return dsVersion; } - /** - * @return the actionStatusCount - */ public Long getActionStatusCount() { return actionStatusCount; } - /** - * @return the rolloutName - */ public String getRolloutName() { return rolloutName; } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java index c63974cbb..709635095 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java @@ -64,9 +64,6 @@ public abstract class Artifact extends TenantAwareBaseEntity { @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/BaseEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java index 09cfc3953..d0289acee 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java @@ -154,7 +154,7 @@ public abstract class BaseEntity implements Serializable, Identifiable { if (obj == null) { return false; } - if (getClass() != obj.getClass()) { + if (!(obj instanceof BaseEntity)) { return false; } final BaseEntity other = (BaseEntity) obj; diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 58303340e..6882441e8 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -135,23 +135,14 @@ public class DistributionSet extends NamedVersionedEntity { return tags; } - /** - * @return the deleted - */ public boolean isDeleted() { return deleted; } - /** - * @return the metadata - */ public List getMetadata() { return metadata; } - /** - * @return the actions - */ public List getActions() { return actions; } @@ -166,9 +157,6 @@ public class DistributionSet extends NamedVersionedEntity { @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/DistributionSetTag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTag.java index bdfc73f9d..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 @@ -74,9 +74,6 @@ public class DistributionSetTag extends Tag { @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/DistributionSetType.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetType.java index 56fed270f..f7dc791a4 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 @@ -295,9 +295,6 @@ public class DistributionSetType extends NamedEntity { @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/DistributionSetTypeElement.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTypeElement.java index ce8501fec..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 @@ -71,30 +71,18 @@ public class DistributionSetTypeElement implements Serializable { 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; } 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 f3d1f9bb9..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 @@ -81,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; } @@ -101,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; } @@ -134,9 +120,6 @@ public class ExternalArtifact extends Artifact { @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 6733074c6..d52e60e46 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 @@ -83,9 +83,6 @@ public class ExternalArtifactProvider extends NamedEntity { @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/LocalArtifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/LocalArtifact.java index b8f5d3369..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 @@ -83,9 +83,6 @@ public class LocalArtifact extends Artifact { @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/NamedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java index ebf3d8939..d055c113e 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 @@ -71,9 +71,6 @@ public abstract class NamedEntity extends TenantAwareBaseEntity { @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/NamedVersionedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedVersionedEntity.java index 0806f19e6..2b126c72f 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 @@ -58,9 +58,6 @@ public abstract class NamedVersionedEntity extends NamedEntity { @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/Rollout.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Rollout.java index 6001af86b..a596d10a9 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 @@ -242,9 +242,6 @@ public class Rollout extends NamedEntity { @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/RolloutGroup.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/RolloutGroup.java index 2a57e48d3..97191b4f1 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 @@ -487,9 +487,6 @@ public class RolloutGroup extends NamedEntity { @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/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 a86c0b864..d53bd3fd5 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 @@ -208,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; } @@ -227,9 +220,6 @@ public class SoftwareModule extends NamedVersionedEntity { this.type = type; } - /** - * @return the metadata - */ public List getMetadata() { return metadata; } @@ -250,9 +240,6 @@ public class SoftwareModule extends NamedVersionedEntity { @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/SoftwareModuleType.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/SoftwareModuleType.java index bf34a6f33..59246d92e 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 @@ -125,9 +125,6 @@ public class SoftwareModuleType extends NamedEntity { @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/Tag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Tag.java index 8775ef458..8d5f5b832 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 @@ -67,9 +67,6 @@ public abstract class Tag extends NamedEntity implements Identifiable { @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/Target.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Target.java index 4121aa4ec..f9e29118f 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 @@ -139,13 +139,10 @@ public class Target extends NamedEntity implements Persistable { */ @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()) { + if (!(obj instanceof Target)) { return false; } final Target other = (Target) obj; 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 7f01e0b59..c4e6fb1fe 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 @@ -66,9 +66,6 @@ public class TargetFilterQuery extends TenantAwareBaseEntity { @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/TargetTag.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTag.java index 5b7f03713..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 @@ -74,9 +74,6 @@ public class TargetTag extends Tag { @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/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 index d4f03c973..e0661d079 100644 --- 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 @@ -101,9 +101,6 @@ public abstract class TenantAwareBaseEntity extends BaseEntity { */ @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/TenantConfiguration.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantConfiguration.java index de5398e5b..efc82747a 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 @@ -92,9 +92,6 @@ public class TenantConfiguration extends TenantAwareBaseEntity implements Serial @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/TenantMetaData.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TenantMetaData.java index e347a855c..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 @@ -88,9 +88,6 @@ public class TenantMetaData extends BaseEntity { @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } if (!super.equals(obj)) { return false; } From d21ed450546c46cc0a98d0742cbdb39736985fc8 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 09:08:19 +0200 Subject: [PATCH 32/63] Fixed metadata equals. Value should not be in there. --- .../hawkbit/repository/model/DistributionSet.java | 13 +------------ .../repository/model/DistributionSetMetadata.java | 8 -------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 6882441e8..4f2d6196c 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -293,7 +293,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. */ @@ -308,26 +308,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/DistributionSetMetadata.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetMetadata.java index 4303ffd96..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 @@ -96,7 +96,6 @@ public class DistributionSetMetadata implements Serializable { int result = 1; result = prime * result + (distributionSet == null ? 0 : distributionSet.hashCode()); result = prime * result + (key == null ? 0 : key.hashCode()); - result = prime * result + (value == null ? 0 : value.hashCode()); return result; } @@ -126,13 +125,6 @@ public class DistributionSetMetadata implements Serializable { } else if (!key.equals(other.key)) { return false; } - if (value == null) { - if (other.value != null) { - return false; - } - } else if (!value.equals(other.value)) { - return false; - } return true; } From ca17f4543a13217c9f3ad6fe4e3c6de4ee8b0111 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 09:29:09 +0200 Subject: [PATCH 33/63] Fixed wring metadata change in RSQL test --- .../repository/DistributionSetManagement.java | 2 +- .../hawkbit/repository/model/DistributionSet.java | 10 +--------- .../hawkbit/repository/model/SoftwareModule.java | 2 +- .../rsql/RSQLDistributionSetFieldTest.java | 14 +++++++------- 4 files changed, 10 insertions(+), 18 deletions(-) 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 410021664..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 @@ -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. diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 4f2d6196c..76b1ab507 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -140,7 +140,7 @@ public class DistributionSet extends NamedVersionedEntity { } public List getMetadata() { - return metadata; + return Collections.unmodifiableList(metadata); } public List getActions() { @@ -171,10 +171,6 @@ public class DistributionSet extends NamedVersionedEntity { return requiredMigrationStep; } - /** - * @param deleted - * the deleted to set - */ public DistributionSet setDeleted(final boolean deleted) { this.deleted = deleted; return this; @@ -185,10 +181,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; 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 d53bd3fd5..d4ac6d629 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 @@ -221,7 +221,7 @@ public class SoftwareModule extends NamedVersionedEntity { } public List getMetadata() { - return metadata; + return Collections.unmodifiableList(metadata); } @Override diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetFieldTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetFieldTest.java index ea1db0ed8..6b1682820 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetFieldTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetFieldTest.java @@ -35,18 +35,18 @@ public class RSQLDistributionSetFieldTest extends AbstractIntegrationTest { @Before public void seuptBeforeTest() { - final DistributionSet ds = TestDataUtil.generateDistributionSet("DS", softwareManagement, - distributionSetManagement); + DistributionSet ds = TestDataUtil.generateDistributionSet("DS", softwareManagement, distributionSetManagement); ds.setDescription("DS"); - ds.getMetadata().add(new DistributionSetMetadata("metaKey", ds, "metaValue")); - distributionSetManagement.updateDistributionSet(ds); + ds = distributionSetManagement.updateDistributionSet(ds); + distributionSetManagement + .createDistributionSetMetadata(new DistributionSetMetadata("metaKey", ds, "metaValue")); - final DistributionSet ds2 = TestDataUtil + DistributionSet ds2 = TestDataUtil .generateDistributionSets("NewDS", 3, softwareManagement, distributionSetManagement).get(0); ds2.setDescription("DS%"); - ds2.getMetadata().add(new DistributionSetMetadata("metaKey", ds2, "value")); - distributionSetManagement.updateDistributionSet(ds2); + ds2 = distributionSetManagement.updateDistributionSet(ds2); + distributionSetManagement.createDistributionSetMetadata(new DistributionSetMetadata("metaKey", ds2, "value")); final DistributionSetTag targetTag = tagManagement.createDistributionSetTag(new DistributionSetTag("Tag1")); tagManagement.createDistributionSetTag(new DistributionSetTag("Tag2")); From c6c50c6a682ed78e4d1d3dbcce9b2956a1f1ddd3 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 09:49:25 +0200 Subject: [PATCH 34/63] Fixed broken usage of metadata addition. Fixed equals of two elements. --- .../hawkbit/repository/model/DistributionSet.java | 3 +++ .../hawkbit/repository/model/SoftwareModule.java | 3 +++ .../repository/model/SoftwareModuleMetadata.java | 14 +++----------- .../hawkbit/repository/model/TargetInfo.java | 11 +++++++++-- .../RSQLDistributionSetMetadataFieldsTest.java | 11 +++++++---- .../rsql/RSQLSoftwareModuleFieldTest.java | 8 +------- .../rsql/RSQLSoftwareModuleMetadataFieldsTest.java | 11 +++++++---- 7 files changed, 33 insertions(+), 28 deletions(-) diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 76b1ab507..51b5e8074 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -139,6 +139,9 @@ public class DistributionSet extends NamedVersionedEntity { return deleted; } + /** + * @return immutable list of meta data elements. + */ public List getMetadata() { return Collections.unmodifiableList(metadata); } 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 d4ac6d629..8b58c5e3b 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 @@ -220,6 +220,9 @@ public class SoftwareModule extends NamedVersionedEntity { this.type = type; } + /** + * @return immutable list of meta data elements. + */ public List getMetadata() { return Collections.unmodifiableList(metadata); } 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 b314edbe6..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 @@ -102,9 +102,8 @@ public class SoftwareModuleMetadata implements Serializable { 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 + (value == null ? 0 : value.hashCode()); + result = prime * result + ((key == null) ? 0 : key.hashCode()); + result = prime * result + ((softwareModule == null) ? 0 : softwareModule.hashCode()); return result; } @@ -116,7 +115,7 @@ public class SoftwareModuleMetadata implements Serializable { if (obj == null) { return false; } - if (getClass() != obj.getClass()) { + if (!(obj instanceof SoftwareModuleMetadata)) { return false; } final SoftwareModuleMetadata other = (SoftwareModuleMetadata) obj; @@ -134,13 +133,6 @@ public class SoftwareModuleMetadata implements Serializable { } else if (!softwareModule.equals(other.softwareModule)) { return false; } - if (value == null) { - if (other.value != null) { - return false; - } - } else if (!value.equals(other.value)) { - return false; - } return true; } 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 2eb7cc385..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 @@ -320,7 +320,8 @@ public class TargetInfo implements Persistable, Serializable { public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + (target == null ? 0 : target.hashCode()); + result = prime * result + ((target == null) ? 0 : target.hashCode()); + result = prime * result + ((targetId == null) ? 0 : targetId.hashCode()); return result; } @@ -343,7 +344,13 @@ public class TargetInfo implements Persistable, Serializable { } 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/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetMetadataFieldsTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetMetadataFieldsTest.java index 1d1e8b7f3..755e5a61f 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetMetadataFieldsTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLDistributionSetMetadataFieldsTest.java @@ -10,6 +10,9 @@ package org.eclipse.hawkbit.repository.rsql; import static org.fest.assertions.api.Assertions.assertThat; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.hawkbit.AbstractIntegrationTest; import org.eclipse.hawkbit.TestDataUtil; import org.eclipse.hawkbit.repository.DistributionSetMetadataFields; @@ -35,13 +38,13 @@ public class RSQLDistributionSetMetadataFieldsTest extends AbstractIntegrationTe final DistributionSet distributionSet = TestDataUtil.generateDistributionSet("DS", softwareManagement, distributionSetManagement); distributionSetId = distributionSet.getId(); + + final List metadata = new ArrayList<>(); for (int i = 0; i < 5; i++) { - final DistributionSetMetadata distributionSetMetadata = new DistributionSetMetadata("" + i, distributionSet, - "" + i); - distributionSet.getMetadata().add(distributionSetMetadata); + metadata.add(new DistributionSetMetadata("" + i, distributionSet, "" + i)); } - distributionSetManagement.updateDistributionSet(distributionSet); + distributionSetManagement.createDistributionSetMetadata(metadata); } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleFieldTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleFieldTest.java index 88f0817f7..0c113fd2b 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleFieldTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleFieldTest.java @@ -28,8 +28,7 @@ import ru.yandex.qatools.allure.annotations.Stories; public class RSQLSoftwareModuleFieldTest extends AbstractIntegrationTest { @Before - public void seuptBeforeTest() { - + public void setupBeforeTest() { final SoftwareModule ah = softwareManagement .createSoftwareModule(new SoftwareModule(appType, "agent-hub", "1.0.1", "agent-hub", "")); softwareManagement.createSoftwareModule(new SoftwareModule(runtimeType, "oracle-jre", "1.7.2", "aa", "")); @@ -40,14 +39,9 @@ public class RSQLSoftwareModuleFieldTest extends AbstractIntegrationTest { final SoftwareModuleMetadata softwareModuleMetadata = new SoftwareModuleMetadata("metaKey", ah, "metaValue"); softwareManagement.createSoftwareModuleMetadata(softwareModuleMetadata); - ah.getMetadata().add(softwareModuleMetadata); - softwareManagement.updateSoftwareModule(ah); final SoftwareModuleMetadata softwareModuleMetadata2 = new SoftwareModuleMetadata("metaKey", ah2, "value"); softwareManagement.createSoftwareModuleMetadata(softwareModuleMetadata2); - ah2.getMetadata().add(softwareModuleMetadata2); - softwareManagement.updateSoftwareModule(ah2); - } @Test diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleMetadataFieldsTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleMetadataFieldsTest.java index c863c1460..44fa3e3cd 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleMetadataFieldsTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/rsql/RSQLSoftwareModuleMetadataFieldsTest.java @@ -10,6 +10,9 @@ package org.eclipse.hawkbit.repository.rsql; import static org.fest.assertions.api.Assertions.assertThat; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.hawkbit.AbstractIntegrationTest; import org.eclipse.hawkbit.TestDataUtil; import org.eclipse.hawkbit.repository.SoftwareModuleMetadataFields; @@ -37,13 +40,13 @@ public class RSQLSoftwareModuleMetadataFieldsTest extends AbstractIntegrationTes "application", "1.0.0", "Desc", "vendor Limited, California")); softwareModuleId = softwareModule.getId(); + final List metadata = new ArrayList<>(); for (int i = 0; i < 5; i++) { - final SoftwareModuleMetadata metadata = new SoftwareModuleMetadata("" + i, softwareModule, "" + i); - softwareModule.getMetadata().add(metadata); - softwareModuleMetadataRepository.save(metadata); + metadata.add(new SoftwareModuleMetadata("" + i, softwareModule, "" + i)); } - softwareManagement.updateSoftwareModule(softwareModule); + softwareManagement.createSoftwareModuleMetadata(metadata); + } @Test From 26466c7d6a240b5a740f1731869325c954854fbc Mon Sep 17 00:00:00 2001 From: SirWayne Date: Wed, 30 Mar 2016 13:05:11 +0200 Subject: [PATCH 35/63] Before sending a message check if the uri is a amqp uri. Signed-off-by: SirWayne --- .../java/org/eclipse/hawkbit/amqp/AmqpSenderService.java | 4 ++-- .../eclipse/hawkbit/amqp/DefaultAmqpSenderService.java | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) 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/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); } } From 2b4b715472f7c5961e557541a93a0c9e06982339 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 14:31:03 +0200 Subject: [PATCH 36/63] Created another hawkBit app example that demonstrates theme custimization. Signed-off-by: Kai Zimmermann --- .../hawkbit-custom-theme-example/README.md | 1 + examples/hawkbit-custom-theme-example/pom.xml | 112 ++++++++++++++++++ .../org/eclipse/hawkbit/app/MyLoginUI.java | 34 ++++++ .../java/org/eclipse/hawkbit/app/MyUI.java | 45 +++++++ .../java/org/eclipse/hawkbit/app/Start.java | 36 ++++++ .../VAADIN/themes/exampletheme/.gitignore | 2 + .../customstyles/examplevariables.scss | 24 ++++ .../exampletheme/images/profile-pic-57px.jpg | Bin 0 -> 1189 bytes .../themes/exampletheme/layouts/footer.html | 29 +++++ .../VAADIN/themes/exampletheme/styles.scss | 10 ++ .../src/main/resources/application.properties | 16 +++ hawkbit-repository/pom.xml | 4 + hawkbit-rest-api/pom.xml | 1 - .../hawkbit/images/profile-pic-300px.jpg | Bin 1793 -> 0 bytes pom.xml | 6 + 15 files changed, 319 insertions(+), 1 deletion(-) create mode 100644 examples/hawkbit-custom-theme-example/README.md create mode 100644 examples/hawkbit-custom-theme-example/pom.xml create mode 100644 examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java create mode 100644 examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/MyUI.java create mode 100644 examples/hawkbit-custom-theme-example/src/main/java/org/eclipse/hawkbit/app/Start.java create mode 100644 examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/.gitignore create mode 100644 examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/customstyles/examplevariables.scss create mode 100644 examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/images/profile-pic-57px.jpg create mode 100644 examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/layouts/footer.html create mode 100644 examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss create mode 100644 examples/hawkbit-custom-theme-example/src/main/resources/application.properties delete mode 100644 hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/images/profile-pic-300px.jpg 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 0000000000000000000000000000000000000000..d730cb5f67e12741e3e50df31315a81d0e1ceab6 GIT binary patch literal 1189 zcmex=3RdL56^| zgLDBA4+lF3NCj!&{{aR;4hBmGOJ+tT1|~s9W31L-*^|&n?(5RLW_pFY_v2QRTR`%g#5e%KD%Fx+cp| z%lOc~qbj~fDSorx%7U9`_q6CNmaRB%9~eFL^ZCZK>Uyb6U&+I@t4tqX*uefpZC~30 zrY;RI=AZXZ!Ed{q`PIna(@Za~%RP87|H$Vb*KEuFGsxJe$~CV)UMtf&JtV!%X@6nc zozL&*To-f@|D(U6SN+H|bD!PUI4_?1)!1Ph} z=vFUf5D9c;5D6E4biVgjU9-)!ZyQh67D{S)&E2?~@8G`VU(}!zx_ + + + + diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss new file mode 100644 index 000000000..2407a73fb --- /dev/null +++ b/examples/hawkbit-custom-theme-example/src/main/resources/VAADIN/themes/exampletheme/styles.scss @@ -0,0 +1,10 @@ +@import "../hawkbit/customstyles/hawkbitvariables"; +@import "customstyles/examplevariables"; +@import "../hawkbit/hawkbittheme"; +@import "addons"; + +// This file prefixes all rules with the theme name to avoid causing conflicts with other themes. +.exampletheme { + @include addons; + @include hawkbittheme; +} diff --git a/examples/hawkbit-custom-theme-example/src/main/resources/application.properties b/examples/hawkbit-custom-theme-example/src/main/resources/application.properties new file mode 100644 index 000000000..3ffb51bd0 --- /dev/null +++ b/examples/hawkbit-custom-theme-example/src/main/resources/application.properties @@ -0,0 +1,16 @@ +# +# Copyright (c) 2015 Bosch Software Innovations GmbH and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# + +# UI demo account +hawkbit.server.ui.demo.password=admin +hawkbit.server.ui.demo.user=admin +hawkbit.server.ui.demo.tenant=DEFAULT + +# UI help links +hawkbit.server.ui.links.documentation.root=https://github.com/eclipse/hawkbit diff --git a/hawkbit-repository/pom.xml b/hawkbit-repository/pom.xml index 7259262de..b70e00f28 100644 --- a/hawkbit-repository/pom.xml +++ b/hawkbit-repository/pom.xml @@ -67,6 +67,10 @@ org.hibernate hibernate-validator + + javax.validation + validation-api + com.google.guava guava diff --git a/hawkbit-rest-api/pom.xml b/hawkbit-rest-api/pom.xml index be9abafac..703d6caf3 100644 --- a/hawkbit-rest-api/pom.xml +++ b/hawkbit-rest-api/pom.xml @@ -24,7 +24,6 @@ javax.validation validation-api - 1.1.0.Final org.springframework.hateoas diff --git a/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/images/profile-pic-300px.jpg b/hawkbit-ui/src/main/resources/VAADIN/themes/hawkbit/images/profile-pic-300px.jpg deleted file mode 100644 index 664afaa35aa45a62b717447b59410f333706503d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1793 zcmb_ddoRSq&;=X}yY29#D&UApL?S_nKu{*Bl9fpm5`jQg zBU7j}I-O2bQP)tTX{gfZv=t`^8m_@$@mMULrc6+#{cDo9016H`PGgP`&9VSrnme!u^t4FHmnho3*xDW<_BE>lnq#Wi9anc%dL0sz`j z2sAI20ze-f2SyS$02@tRKwcjdI>wq%i5v(qNCWuy>j5AR1F+fS$tpxDgOGBUB-E4u zLd=o?=~^6wq>6#27;drcMl}d^Z2};FfQ{6^)cW+WKX^m@x|;~BkqWqoF#*C@&>gYT z5UH9^0$}^w8<@&s06-M~V!ml5G@-7t=T!{Vm-FEo#mNv-3Y3 zUGR6=AU0rG#<3*A#D08*P1n>dc)6gxF=RU1?M3R_ zC=Rn>bN{hg->hbGXU?G-d_@53iB}_|I6Lj7ov0?NL1OASrD-Lu-C#$o9mDavN`qo{ zA88iuo1W_0Z|;WANWAy5*sMzEppjAE8`c$u86Iubx~=6gx;XpW`QpZzicso3kF8E} zkb|3P8(3s5T|dICV>yNUzHxYFnzDADVKH3$l=H@^t=cm97SF~z+%L=LIe*$~jy5DC z2)LQDpK?VD_UDV9F@tQ3wNrmcotT|}_#-|2&SqJP$-B#i6AQ`oy#Z8Nnoev><&ZG2 zEB#gI_5Pw@R#97lvwEFX_sMG67ZOL^(ZGh-h_q_Y*li*$lBoBfkAfZEtNlWu?;k`K zI4ql|?=gruQl?^K+|8>^KW!#5mfbH*?3fe4z0T+pbL!*idsQ=MoDB4OU&QVcYgzcm zqZJ#brgPn=QxBwsL~j%fi|VjtCF~w0;tqG+Af}J*ffxV_;Mg<#JB7sEHbF zFo!%SVY(KQ10Fm@seP-ID{#&!?6h_8*-?Bq#(3~GpPG7gGLY+DR}om=IAC6MGQrFG zaqAe4$H+RNsd;I4937_}mKD__$dDG8pHuZqQLnHwDCLIES?QGT8uxOuHPzd4M)gag zbDu(qk#2FnJ)``RQa}VV=FO=tu{7-dfNSiyciEk|sO7e>zC{kH=H}g+t0}Wm+qHO= zGkR0XUhRGk+@?^;#POzMh0@N3kiH0_z4IClS1_)#yonUww$| z#M)e;@>qN3T}uLwM>DAbghv%7>HP5C&MR4JC)9gWj|KbXzVy=X)R%*!kBh9L?Uo(} z)P5b+{LR4xp{%7-A<{>5d6{ + 1.1.0.Final 1.4 2.0M10 1.4.22 @@ -419,6 +420,11 @@ + + javax.validation + validation-api + ${validation-api.version} + javax.el javax.el-api From 5ec84288af6f54556f8b7bd89575fc0873a85892 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 14:35:14 +0200 Subject: [PATCH 37/63] Added new example to overview README. Signed-off-by: Kai Zimmermann --- examples/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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. From d0dff39932072e7bd275a0f7d4f6aca910b620d4 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 15:14:20 +0200 Subject: [PATCH 38/63] Added license header. Signed-off-by: Kai Zimmermann --- .../resources/VAADIN/themes/exampletheme/styles.scss | 9 +++++++++ 1 file changed, 9 insertions(+) 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 index 2407a73fb..4b3f29814 100644 --- 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 @@ -1,3 +1,12 @@ +/** + * 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"; From 413bb9d814961d1db2d9abe6deb68e2b8b298bda Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Wed, 30 Mar 2016 17:10:47 +0200 Subject: [PATCH 39/63] Reduced log severity of invalid incoming messages to warning. Signed-off-by: Kai Zimmermann --- .../src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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..4662c8d39 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 @@ -105,7 +105,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.getMessageProperties().getMessageId()); throw new IllegalArgumentException(error); } From 52cc957cfb7cbef93b04d9e4fd48e66fe0a76f37 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 09:31:47 +0200 Subject: [PATCH 40/63] Consolidated equals and hashcode for all BaseEntities. --- .../hawkbit/repository/model/Action.java | 30 +----- .../repository/model/ActionStatus.java | 20 ---- .../hawkbit/repository/model/Artifact.java | 20 ---- .../hawkbit/repository/model/BaseEntity.java | 8 +- .../repository/model/DistributionSet.java | 20 ---- .../repository/model/DistributionSetType.java | 20 ---- .../model/ExternalArtifactProvider.java | 20 ---- .../hawkbit/repository/model/NamedEntity.java | 20 ---- .../model/NamedVersionedEntity.java | 21 ----- .../hawkbit/repository/model/Rollout.java | 20 ---- .../repository/model/RolloutGroup.java | 21 ----- .../repository/model/SoftwareModule.java | 20 ---- .../repository/model/SoftwareModuleType.java | 20 ---- .../eclipse/hawkbit/repository/model/Tag.java | 20 ---- .../hawkbit/repository/model/Target.java | 33 ------- .../repository/model/TargetFilterQuery.java | 20 ---- .../model/TenantAwareBaseEntity.java | 3 - .../repository/model/TenantConfiguration.java | 34 ------- .../repository/DeploymentManagementTest.java | 11 ++- .../TargetManagementSearchTest.java | 36 ++++++-- .../model/ModelEqualsHashcodeTest.java | 92 +++++++++++++++++++ 21 files changed, 137 insertions(+), 372 deletions(-) create mode 100644 hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index afc6998ad..eedb36037 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -52,7 +52,7 @@ import org.eclipse.persistence.annotations.CascadeOnDelete; @NamedEntityGraph(name = "Action.all", attributeNodes = { @NamedAttributeNode("distributionSet"), @NamedAttributeNode(value = "target", subgraph = "target.ds") }, subgraphs = @NamedSubgraph(name = "target.ds", attributeNodes = @NamedAttributeNode("assignedDistributionSet"))) }) @Entity -public class Action extends TenantAwareBaseEntity implements Comparable { +public class Action extends TenantAwareBaseEntity { private static final long serialVersionUID = 1L; /** @@ -198,14 +198,6 @@ public class Action extends TenantAwareBaseEntity implements Comparable this.rollout = rollout; } - @Override - public int compareTo(final Action o) { - if (super.getId() == null || o == null || o.getId() == null) { - return 0; - } - return super.getId().compareTo(o.getId()); - } - /** * checks if the {@link #forcedTime} is hit by the given * {@code hitTimeMillis}, by means if the given milliseconds are greater @@ -254,26 +246,6 @@ public class Action extends TenantAwareBaseEntity implements Comparable return "Action [distributionSet=" + distributionSet + ", getId()=" + getId() + "]"; } - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Action)) { - return false; - } - - return true; - } - /** * Action status as reported by the controller. * diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java index f67229b69..c8d320abd 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/ActionStatus.java @@ -140,24 +140,4 @@ public class ActionStatus extends TenantAwareBaseEntity { this.status = status; } - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof ActionStatus)) { - return false; - } - - return true; - } - } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java index 709635095..b384a3100 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/Artifact.java @@ -53,24 +53,4 @@ public abstract class Artifact extends TenantAwareBaseEntity { public void setSize(final Long size) { this.size = size; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Artifact)) { - return false; - } - - return true; - } } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java index d0289acee..65300c6c4 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/BaseEntity.java @@ -108,6 +108,11 @@ public abstract class BaseEntity implements Serializable, Identifiable { return optLockRevision; } + // for test purposes only + void setOptLockRevision(final long optLockRevision) { + this.optLockRevision = optLockRevision; + } + @Override public Long getId() { return id; @@ -135,6 +140,7 @@ public abstract class BaseEntity implements Serializable, Identifiable { int result = 1; result = prime * result + (id == null ? 0 : id.hashCode()); result = prime * result + (int) (optLockRevision ^ optLockRevision >>> 32); + result = prime * result + this.getClass().getName().hashCode(); return result; } @@ -154,7 +160,7 @@ public abstract class BaseEntity implements Serializable, Identifiable { if (obj == null) { return false; } - if (!(obj instanceof BaseEntity)) { + if (!(this.getClass().isInstance(obj))) { return false; } final BaseEntity other = (BaseEntity) obj; diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 51b5e8074..a9d390284 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -150,26 +150,6 @@ public class DistributionSet extends NamedVersionedEntity { return actions; } - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof DistributionSet)) { - return false; - } - - return true; - } - public boolean isRequiredMigrationStep() { return requiredMigrationStep; } 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 f7dc791a4..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 @@ -285,24 +285,4 @@ public class DistributionSetType extends NamedEntity { return "DistributionSetType [key=" + key + ", isDeleted()=" + isDeleted() + ", getId()=" + getId() + "]"; } - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof DistributionSetType)) { - return false; - } - - return true; - } - } 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 d52e60e46..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 @@ -73,24 +73,4 @@ public class ExternalArtifactProvider extends NamedEntity { this.defaultSuffix = defaultSuffix; } - @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; - } - - @Override - public boolean equals(final Object obj) { // NOSONAR - as this is generated - 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/NamedEntity.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/NamedEntity.java index d055c113e..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 @@ -60,24 +60,4 @@ public abstract class NamedEntity extends TenantAwareBaseEntity { public void setName(final String name) { this.name = name; } - - @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; - } - - @Override - public boolean equals(final Object obj) { // NOSONAR - as this is generated - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof NamedEntity)) { - return false; - } - - return true; - } } 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 2b126c72f..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 @@ -47,25 +47,4 @@ public abstract class NamedVersionedEntity extends NamedEntity { public void setVersion(final String version) { this.version = version; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof NamedVersionedEntity)) { - return false; - } - - return true; - } - } 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 a596d10a9..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 @@ -231,24 +231,4 @@ public class Rollout extends NamedEntity { */ ERROR_STARTING; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Rollout)) { - return false; - } - - return true; - } } 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 97191b4f1..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 @@ -476,25 +476,4 @@ public class RolloutGroup extends NamedEntity { return this; } } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof RolloutGroup)) { - return false; - } - - return true; - } - } 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 8b58c5e3b..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 @@ -233,26 +233,6 @@ public class SoftwareModule extends NamedVersionedEntity { + ", revision=" + getOptLockRevision() + ", Id=" + getId() + ", type=" + getType().getName() + "]"; } - @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; - } - - @Override - public boolean equals(final Object obj) { // NOSONAR - as this is generated - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof SoftwareModule)) { - return false; - } - - return true; - } - /** * @return the assignedTo */ 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 59246d92e..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 @@ -114,24 +114,4 @@ public class SoftwareModuleType extends NamedEntity { public String toString() { return "SoftwareModuleType [key=" + key + ", getName()=" + getName() + ", getId()=" + getId() + "]"; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof SoftwareModuleType)) { - return false; - } - - return true; - } } 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 8d5f5b832..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 @@ -56,24 +56,4 @@ public abstract class Tag extends NamedEntity implements Identifiable { public String toString() { return "Tag [getOptLockRevision()=" + getOptLockRevision() + ", getId()=" + getId() + "]"; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof Tag)) { - return false; - } - - return true; - } } 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 f9e29118f..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 @@ -131,31 +131,6 @@ public class Target extends NamedEntity implements Persistable { securityToken = null; } - /** - * Note: For Target we extended the general strategy by adding controllerId - * as well. - * - * @see org.eclipse.hawkbit.repository.model.BaseEntity#equals(java.lang.Object) - */ - @Override - public boolean equals(final Object obj) {// NOSONAR - as this is generated - if (obj == null) { - return false; - } - if (!(obj instanceof Target)) { - 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; } @@ -168,14 +143,6 @@ 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; } 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 c4e6fb1fe..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 @@ -55,24 +55,4 @@ public class TargetFilterQuery extends TenantAwareBaseEntity { public void setQuery(final String query) { this.query = query; } - - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof TargetFilterQuery)) { - return false; - } - - return true; - } } 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 index 97d757fb5..d03a4938a 100644 --- 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 @@ -99,9 +99,6 @@ public abstract class TenantAwareBaseEntity extends BaseEntity { if (!super.equals(obj)) { return false; } - if (!(obj instanceof TenantAwareBaseEntity)) { - return false; - } final TenantAwareBaseEntity other = (TenantAwareBaseEntity) obj; if (tenant == null) { if (other.tenant != null) { 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 efc82747a..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 @@ -52,54 +52,20 @@ public class TenantConfiguration extends TenantAwareBaseEntity implements Serial } - /** - * @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; } - @Override - public int hashCode() { - final int prime = 31; - int result = super.hashCode(); - result = prime * result + this.getClass().getName().hashCode(); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (!super.equals(obj)) { - return false; - } - if (!(obj instanceof TenantConfiguration)) { - return false; - } - - return true; - } - } 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..035866ab9 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,6 +607,10 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { .assignDistributionSet(dsA, deployResWithDsB.getDeployedTargets()).getAssignedTargets(); actionRepository.findByDistributionSet(pageRequest, dsA).getContent().get(1); + // 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(deployResWithDsB.getDeployedTargets()); assertThat(deployed2DS).as("deployed ds is wrong").hasSameSizeAs(deployResWithDsB.getDeployedTargets()); diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java index 0438ac512..0c33a651f 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java @@ -109,6 +109,14 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { both.add(TargetUpdateStatus.UNKNOWN); both.add(TargetUpdateStatus.PENDING); + // get final updated version of targets + targAs = targetManagement.findTargetByControllerID( + targAs.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + targBs = targetManagement.findTargetByControllerID( + targBs.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + targCs = targetManagement.findTargetByControllerID( + targCs.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + // try to find several targets with different filter settings verifyThatRepositoryContains400Targets(); verifyThat200TargetsHaveTagD(targTagW, concat(targBs, targCs)); @@ -708,11 +716,14 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement, distributionSetManagement); targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); - final List assignedtargets = targetManagement - .createTargets(TestDataUtil.generateTargets(10, "assigned")); + List assignedtargets = targetManagement.createTargets(TestDataUtil.generateTargets(10, "assigned")); deploymentManagement.assignDistributionSet(assignedSet, assignedtargets); + // get final updated version of targets + assignedtargets = targetManagement.findTargetByControllerID( + assignedtargets.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + assertThat(targetManagement.findTargetByAssignedDistributionSet(assignedSet.getId(), pageReq)) .as("Contains the assigned targets").containsAll(assignedtargets) .as("and that means the following expected amount").hasSize(10); @@ -727,8 +738,7 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, distributionSetManagement); targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); - final List assignedtargets = targetManagement - .createTargets(TestDataUtil.generateTargets(10, "assigned")); + List assignedtargets = targetManagement.createTargets(TestDataUtil.generateTargets(10, "assigned")); // set on installed and assign another one deploymentManagement.assignDistributionSet(installedSet, assignedtargets).getActions().forEach(actionId -> { @@ -739,11 +749,13 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { }); deploymentManagement.assignDistributionSet(assignedSet, assignedtargets); + assignedtargets = targetManagement.findTargetByControllerID( + assignedtargets.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + assertThat(targetManagement.findTargetByAssignedDistributionSet(assignedSet.getId(), TargetSpecifications.hasInstalledDistributionSet(installedSet.getId()), pageReq)) .as("Contains the assigned targets").containsAll(assignedtargets) .as("and that means the following expected amount").hasSize(10); - } @Test @@ -754,8 +766,7 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, distributionSetManagement); targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); - final List installedtargets = targetManagement - .createTargets(TestDataUtil.generateTargets(10, "assigned")); + List installedtargets = targetManagement.createTargets(TestDataUtil.generateTargets(10, "assigned")); // set on installed and assign another one deploymentManagement.assignDistributionSet(installedSet, installedtargets).getActions().forEach(actionId -> { @@ -766,6 +777,10 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { }); deploymentManagement.assignDistributionSet(assignedSet, installedtargets); + // get final updated version of targets + installedtargets = targetManagement.findTargetByControllerID( + installedtargets.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + assertThat(targetManagement.findTargetByInstalledDistributionSet(installedSet.getId(), pageReq)) .as("Contains the assigned targets").containsAll(installedtargets) .as("and that means the following expected amount").hasSize(10); @@ -780,8 +795,7 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement, distributionSetManagement); targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned")); - final List installedtargets = targetManagement - .createTargets(TestDataUtil.generateTargets(10, "assigned")); + List installedtargets = targetManagement.createTargets(TestDataUtil.generateTargets(10, "assigned")); // set on installed and assign another one deploymentManagement.assignDistributionSet(installedSet, installedtargets).getActions().forEach(actionId -> { @@ -792,6 +806,10 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { }); deploymentManagement.assignDistributionSet(assignedSet, installedtargets); + // get final updated version of targets + installedtargets = targetManagement.findTargetByControllerID( + installedtargets.stream().map(target -> target.getControllerId()).collect(Collectors.toList())); + assertThat(targetManagement.findTargetByInstalledDistributionSet(installedSet.getId(), TargetSpecifications.hasAssignedDistributionSet(assignedSet.getId()), pageReq)) .as("Contains the assigned targets").containsAll(installedtargets) diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java new file mode 100644 index 000000000..d9de859cd --- /dev/null +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java @@ -0,0 +1,92 @@ +package org.eclipse.hawkbit.repository.model; + +import static org.fest.assertions.api.Assertions.assertThat; + +import org.eclipse.hawkbit.AbstractIntegrationTest; +import org.junit.Test; + +import ru.yandex.qatools.allure.annotations.Description; +import ru.yandex.qatools.allure.annotations.Features; +import ru.yandex.qatools.allure.annotations.Stories; + +@Features("Unit Tests - Repository") +@Stories("Repository Model") +public class ModelEqualsHashcodeTest extends AbstractIntegrationTest { + + @Test + @Description("Verfies that different objects even with identical primary key, version and tenant " + + "return different hash codes.") + public void differentEntitiesReturnDifferentHashCodes() { + assertThat(new Action().hashCode()).as("action should have different hashcode than action status") + .isNotEqualTo(new ActionStatus().hashCode()); + assertThat(new DistributionSet().hashCode()) + .as("Distribution set should have different hashcode than software module") + .isNotEqualTo(new SoftwareModule().hashCode()); + assertThat(new DistributionSet().hashCode()) + .as("Distribution set should have different hashcode than action status") + .isNotEqualTo(new ActionStatus().hashCode()); + assertThat(new DistributionSetType().hashCode()) + .as("Distribution set type should have different hashcode than action status") + .isNotEqualTo(new ActionStatus().hashCode()); + } + + @Test + @Description("Verfies that different object even with identical primary key, version and tenant " + + "are not equal.") + public void differentEntitiesAreNotEqual() { + assertThat(new Action().equals(new ActionStatus())).as("action equals action status").isFalse(); + assertThat(new DistributionSet().equals(new SoftwareModule())).as("Distribution set equals software module") + .isFalse(); + assertThat(new DistributionSet().equals(new ActionStatus())).as("Distribution set equals action status") + .isFalse(); + assertThat(new DistributionSetType().equals(new ActionStatus())) + .as("Distribution set type equals action status").isFalse(); + } + + @Test + @Description("Verfies that updated entities are not equal.") + public void changedEntitiesAreNotEqual() { + final SoftwareModuleType type = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test", "test", "test", 1)); + assertThat(type).isNotEqualTo(new SoftwareModuleType("test", "test", "test", 1)); + + type.setDescription("another"); + final SoftwareModuleType updated = softwareManagement.updateSoftwareModuleType(type); + assertThat(type).as("Changed entity is not equal to the previous version").isNotEqualTo(updated); + } + + @Test + @Description("Verify that no proxy of the entity manager has an influence on the equals or hashcode result.") + public void managedEntityIsEqualToUnamangedObjectWithSameKey() { + final SoftwareModuleType type = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test", "test", "test", 1)); + + final SoftwareModuleType mock = new SoftwareModuleType("test", "test", "test", 1); + mock.setId(type.getId()); + mock.setOptLockRevision(type.getOptLockRevision()); + mock.setTenant(type.getTenant()); + + assertThat(type).as("managed entity is equal to regular object with same content").isEqualTo(mock); + assertThat(type.hashCode()).as("managed entity has same hash code as regular object with same content") + .isEqualTo(mock.hashCode()); + } + + @Test + @Description("Verfies that updated entities do not have the same hashcode.") + public void updatedEntitiesHaveDifferentHashcodes() { + final SoftwareModuleType type = softwareManagement + .createSoftwareModuleType(new SoftwareModuleType("test", "test", "test", 1)); + assertThat(type.hashCode()).isNotEqualTo(new SoftwareModuleType("test", "test", "test", 1).hashCode()); + + final int beforeChange = type.hashCode(); + type.setDescription("another"); + assertThat(type.hashCode()) + .as("Changed entity has no different hashcode than the previous version until updated in repository") + .isEqualTo(beforeChange); + + final SoftwareModuleType updated = softwareManagement.updateSoftwareModuleType(type); + assertThat(type.hashCode()).as("Updated entity has different hashcode than the previous version") + .isNotEqualTo(updated.hashCode()); + } + +} From 5cf2ae511eb48b18d7d3efc824421bbed0f280fd Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 11:08:01 +0200 Subject: [PATCH 41/63] Fixed broken test. Signed-off-by: Kai Zimmermann --- .../eclipse/hawkbit/repository/DeploymentManagementTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 035866ab9..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 @@ -611,8 +611,8 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { final List deployResWithDsBTargets = targetManagement.findTargetByControllerID(deployResWithDsB .getDeployedTargets().stream().map(target -> target.getControllerId()).collect(Collectors.toList())); - assertThat(deployed2DS).as("deployed ds is wrong").containsAll(deployResWithDsB.getDeployedTargets()); - assertThat(deployed2DS).as("deployed ds is wrong").hasSameSizeAs(deployResWithDsB.getDeployedTargets()); + 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()); From 3d9b1465a2bc283247ee5abe95e711a5c7c3845a Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 11:31:01 +0200 Subject: [PATCH 42/63] Added missing license header. Signed-off-by: Kai Zimmermann --- .../hawkbit/repository/model/ModelEqualsHashcodeTest.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java index d9de859cd..e42ff4b9c 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java @@ -1,3 +1,11 @@ +/** + * 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 static org.fest.assertions.api.Assertions.assertThat; From 95259f32462b8a9f0f2f8299c768e2d5b35b5e28 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 12:24:48 +0200 Subject: [PATCH 43/63] Fixed mixed polling time configuration. Signed-off-by: Kai Zimmermann --- .../hawkbit/tenancy/configuration/TenantConfigurationKey.java | 4 ++-- .../java/org/eclipse/hawkbit/controller/RootController.java | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) 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 c83f24dc2..36288104f 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 @@ -58,12 +58,12 @@ public enum TenantConfigurationKey { /** * 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("pollingOverdueTime", "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("pollingTime", "hawkbit.controller.pollingOverdueTime", String.class, null, TenantConfigurationPollingDurationValidator.class); private final String keyName; private final String defaultKeyName; diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/controller/RootController.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/controller/RootController.java index ff1e26f8b..171e02d16 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/controller/RootController.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/controller/RootController.java @@ -64,10 +64,6 @@ import org.springframework.web.bind.annotation.RestController; * * Transactional (read-write) as all queries at least update the last poll time. * - * - * - * - * */ @RestController @RequestMapping(ControllerConstants.BASE_V1_REQUEST_MAPPING) From 174be0b7c7c1aaebe2583ec4213d6739c8f54f6b Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 12:45:32 +0200 Subject: [PATCH 44/63] Missed one issue. Signed-off-by: Kai Zimmermann --- .../hawkbit/tenancy/configuration/TenantConfigurationKey.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 36288104f..fb5ba29bb 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 @@ -58,12 +58,12 @@ public enum TenantConfigurationKey { /** * string value which holds the polling time interval in the format HH:mm:ss */ - POLLING_TIME_INTERVAL("pollingOverdueTime", "hawkbit.controller.pollingTime", 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.pollingOverdueTime", String.class, null, TenantConfigurationPollingDurationValidator.class); + POLLING_OVERDUE_TIME_INTERVAL("pollingOverdueTime", "hawkbit.controller.pollingOverdueTime", String.class, null, TenantConfigurationPollingDurationValidator.class); private final String keyName; private final String defaultKeyName; From b839fd49252237bb73bf85387c91ea1413d2d906 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 14:18:17 +0200 Subject: [PATCH 45/63] Log complete message in error case --- .../src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4662c8d39..846c9f232 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 @@ -105,7 +105,7 @@ public class BaseAmqpService { } protected final void logAndThrowMessageError(final Message message, final String error) { - LOGGER.warn("Error \"{}\" reported by message {}", error, message.getMessageProperties().getMessageId()); + LOGGER.warn("Error \"{}\" reported by message: {}", error, message); throw new IllegalArgumentException(error); } From ae7585e1bc42ed406f3804c205948b7baf174e8f Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 14:47:00 +0200 Subject: [PATCH 46/63] Added description to test asserts. Signed-off-by: Kai Zimmermann --- .../hawkbit/repository/model/ModelEqualsHashcodeTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java index e42ff4b9c..45e56167a 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/model/ModelEqualsHashcodeTest.java @@ -56,7 +56,8 @@ public class ModelEqualsHashcodeTest extends AbstractIntegrationTest { public void changedEntitiesAreNotEqual() { final SoftwareModuleType type = softwareManagement .createSoftwareModuleType(new SoftwareModuleType("test", "test", "test", 1)); - assertThat(type).isNotEqualTo(new SoftwareModuleType("test", "test", "test", 1)); + assertThat(type).as("persited entity is not equal to regular object") + .isNotEqualTo(new SoftwareModuleType("test", "test", "test", 1)); type.setDescription("another"); final SoftwareModuleType updated = softwareManagement.updateSoftwareModuleType(type); @@ -84,7 +85,8 @@ public class ModelEqualsHashcodeTest extends AbstractIntegrationTest { public void updatedEntitiesHaveDifferentHashcodes() { final SoftwareModuleType type = softwareManagement .createSoftwareModuleType(new SoftwareModuleType("test", "test", "test", 1)); - assertThat(type.hashCode()).isNotEqualTo(new SoftwareModuleType("test", "test", "test", 1).hashCode()); + assertThat(type.hashCode()).as("persited entity does not have same hashcode as regular object") + .isNotEqualTo(new SoftwareModuleType("test", "test", "test", 1).hashCode()); final int beforeChange = type.hashCode(); type.setDescription("another"); From 2b5a887f6e5605643973cf26ba3b4a57eba7f32b Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 15:47:24 +0200 Subject: [PATCH 47/63] Fixed wrong timeframe check. Set proper 24h default. Signed-off-by: Kai Zimmermann --- .../main/java/org/eclipse/hawkbit/ControllerPollProperties.java | 2 +- .../eclipse/hawkbit/tenancy/configuration/DurationHelper.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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/tenancy/configuration/DurationHelper.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java index 8e7c46223..b87cf524a 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 @@ -37,7 +37,7 @@ public final class DurationHelper { } public boolean isWithinRange(final Duration duration) { - return duration.compareTo(min) > 0 && duration.compareTo(max) < 0; + return duration.compareTo(min) >= 0 && duration.compareTo(max) <= 0; } } From 3bbbadd1654612fd849cc650f61b08e87e28f3c9 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 31 Mar 2016 15:53:52 +0200 Subject: [PATCH 48/63] Check if the message body is empty Signed-off-by: SirWayne --- .../java/org/eclipse/hawkbit/amqp/BaseAmqpService.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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..293a8212c 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, From 9b11d92b7f42bdaa78262c13bed202ed675f91e4 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Thu, 31 Mar 2016 15:56:51 +0200 Subject: [PATCH 49/63] Added javadoc. Signed-off-by: Kai Zimmermann --- .../hawkbit/tenancy/configuration/DurationHelper.java | 7 +++++++ 1 file changed, 7 insertions(+) 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 b87cf524a..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,6 +36,13 @@ 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; } From 0a0c08b70042ef1043d58b89ee52eb444cabe84d Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Fri, 1 Apr 2016 15:55:00 +0200 Subject: [PATCH 50/63] Fixed wrong call of sw module type. UI uses name and not key. Signed-off-by: Kai Zimmermann --- .../java/org/eclipse/hawkbit/repository/SoftwareManagement.java | 2 +- .../java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 c6eab402a..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 @@ -259,7 +259,7 @@ 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} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java index 67e71ba4f..3f947cfd0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java @@ -809,7 +809,7 @@ public final class HawkbitCommonUtil { public static boolean isDuplicate(final String name, final String version, final String type) { final SoftwareManagement swMgmtService = SpringContextHelper.getBean(SoftwareManagement.class); final SoftwareModule swModule = swMgmtService.findSoftwareModuleByNameAndVersion(name, version, - swMgmtService.findSoftwareModuleTypeByKey(type)); + swMgmtService.findSoftwareModuleTypeByName(type)); boolean duplicate = false; if (swModule != null) { duplicate = true; From bd974ef6ab69d088f531bb380862551fb6e598b1 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 2 Apr 2016 13:29:40 +0200 Subject: [PATCH 51/63] Prepared cloud deployment of hawkbit sandbox --- .../hawkbit-device-simulator/cf/manifest.yml | 21 ++++++++++++++++ examples/hawkbit-device-simulator/pom.xml | 10 ++++++++ .../simulator/DeviceSimulatorUpdater.java | 12 ++++++++- .../simulator/amqp/AmqpConfiguration.java | 5 ++-- .../simulator/amqp/SpReceiverService.java | 18 ++----------- .../src/main/resources/application.properties | 6 +---- examples/hawkbit-example-app/README.md | 25 +++++++++++++++---- .../cf/manifest-simple.yml | 19 ++++++++++++++ examples/hawkbit-example-app/cf/manifest.yml | 21 ++++++++++++++++ examples/hawkbit-example-app/pom.xml | 11 ++++++++ .../application-cloudsandbox.properties | 11 ++++++++ 11 files changed, 130 insertions(+), 29 deletions(-) create mode 100644 examples/hawkbit-device-simulator/cf/manifest.yml create mode 100644 examples/hawkbit-example-app/cf/manifest-simple.yml create mode 100644 examples/hawkbit-example-app/cf/manifest.yml create mode 100644 examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties diff --git a/examples/hawkbit-device-simulator/cf/manifest.yml b/examples/hawkbit-device-simulator/cf/manifest.yml new file mode 100644 index 000000000..8a65690fe --- /dev/null +++ b/examples/hawkbit-device-simulator/cf/manifest.yml @@ -0,0 +1,21 @@ +# +# 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: 512M + instances: 1 + buildpack: https://github.com/cloudfoundry/java-buildpack + path: hawkbit-example-app-0.2.0-SNAPSHOT.jar + services: + - dmf-rabbit + env: + SPRING_PROFILES_ACTIVE: cloudsandbox,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..5ee781e34 100644 --- a/examples/hawkbit-device-simulator/pom.xml +++ b/examples/hawkbit-device-simulator/pom.xml @@ -42,6 +42,16 @@ + + + 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/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/SpReceiverService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java index 1c314d56f..9f7e4d9ca 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,9 +26,7 @@ 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 @@ -44,17 +42,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 +49,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/resources/application.properties b/examples/hawkbit-device-simulator/src/main/resources/application.properties index 56d0190a7..cdc72ba28 100644 --- a/examples/hawkbit-device-simulator/src/main/resources/application.properties +++ b/examples/hawkbit-device-simulator/src/main/resources/application.properties @@ -7,11 +7,7 @@ # 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 diff --git a/examples/hawkbit-example-app/README.md b/examples/hawkbit-example-app/README.md index eaf30f306..4efbdb8ed 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,13 @@ 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 ```cf``` 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). 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..4d4a798ef --- /dev/null +++ b/examples/hawkbit-example-app/cf/manifest-simple.yml @@ -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 +# +--- +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..278f43681 --- /dev/null +++ b/examples/hawkbit-example-app/cf/manifest.yml @@ -0,0 +1,21 @@ +# +# 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..e9f57ad54 100644 --- a/examples/hawkbit-example-app/pom.xml +++ b/examples/hawkbit-example-app/pom.xml @@ -39,6 +39,17 @@ + + + cf + true + ${project.build.directory} + + manifest.yml + manifest-simple.yml + + + 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..d54e1d6a2 --- /dev/null +++ b/examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties @@ -0,0 +1,11 @@ +# +# 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 +# + +spring.profiles.active= +vaadin.servlet.productionMode=true From 6d143273f76d903334b0e358952ef7a1a392b38c Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 2 Apr 2016 21:00:34 +0200 Subject: [PATCH 52/63] Added simulator autostart and cf deployment. --- examples/hawkbit-device-simulator/README.md | 15 +- .../hawkbit-device-simulator/cf/manifest.yml | 6 +- .../simulator/SimulationController.java | 4 +- .../simulator/SimulationProperties.java | 136 ++++++++++++++++++ .../hawkbit/simulator/SimulatorStartup.java | 51 +++++++ .../simulator/amqp/AmqpProperties.java | 9 +- .../simulator/amqp/SpReceiverService.java | 1 - .../src/main/resources/application.properties | 5 +- examples/hawkbit-example-app/README.md | 3 +- .../application-cloudsandbox.properties | 1 - 10 files changed, 212 insertions(+), 19 deletions(-) create mode 100644 examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulationProperties.java create mode 100644 examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulatorStartup.java 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 ``` ![](src/main/images/generateScreenshot.png) - + ![](src/main/images/updateProcessScreenshot.png) - + ![](src/main/images/updateResultOverviewScreenshot.png) @@ -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 index 8a65690fe..df69f92e3 100644 --- a/examples/hawkbit-device-simulator/cf/manifest.yml +++ b/examples/hawkbit-device-simulator/cf/manifest.yml @@ -9,13 +9,13 @@ --- applications: - name: hawkbit-simulator - memory: 512M + memory: 1024M instances: 1 buildpack: https://github.com/cloudfoundry/java-buildpack - path: hawkbit-example-app-0.2.0-SNAPSHOT.jar + path: ${project.build.finalName}.jar services: - dmf-rabbit env: - SPRING_PROFILES_ACTIVE: cloudsandbox,amqp + SPRING_PROFILES_ACTIVE: cloud,amqp CF_STAGING_TIMEOUT: 15 CF_STARTUP_TIMEOUT: 15 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..c0e22a994 --- /dev/null +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/SimulatorStartup.java @@ -0,0 +1,51 @@ +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/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 9f7e4d9ca..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 @@ -31,7 +31,6 @@ import org.springframework.stereotype.Component; */ @Component public class SpReceiverService extends ReceiverService { - private static final Logger LOGGER = LoggerFactory.getLogger(ReceiverService.class); public static final String SOFTWARE_MODULE_FIRMWARE = "firmware"; diff --git a/examples/hawkbit-device-simulator/src/main/resources/application.properties b/examples/hawkbit-device-simulator/src/main/resources/application.properties index cdc72ba28..fbe7261be 100644 --- a/examples/hawkbit-device-simulator/src/main/resources/application.properties +++ b/examples/hawkbit-device-simulator/src/main/resources/application.properties @@ -13,8 +13,11 @@ 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 4efbdb8ed..ecbec93c3 100644 --- a/examples/hawkbit-example-app/README.md +++ b/examples/hawkbit-example-app/README.md @@ -24,7 +24,8 @@ The Management API can be accessed via http://localhost:8080/rest/v1 ## Deploy example app to Cloud Foundry -- Go to ```cf``` subfolder. +- 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/src/main/resources/application-cloudsandbox.properties b/examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties index d54e1d6a2..ecf71da41 100644 --- a/examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties +++ b/examples/hawkbit-example-app/src/main/resources/application-cloudsandbox.properties @@ -7,5 +7,4 @@ # http://www.eclipse.org/legal/epl-v10.html # -spring.profiles.active= vaadin.servlet.productionMode=true From 171dc461071f37ffb9414e2ce69d9d73416f7f9a Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 2 Apr 2016 21:14:41 +0200 Subject: [PATCH 53/63] Fixed problem that client works only with localhost. --- .../mgmt/client/resource/DistributionSetResourceClient.java | 2 +- .../client/resource/DistributionSetTagResourceClient.java | 2 +- .../client/resource/DistributionSetTypeResourceClient.java | 2 +- .../hawkbit/mgmt/client/resource/RolloutResourceClient.java | 2 +- .../mgmt/client/resource/SoftwareModuleResourceClient.java | 2 +- .../client/resource/SoftwareModuleTypeResourceClient.java | 2 +- .../hawkbit/mgmt/client/resource/TargetResourceClient.java | 2 +- .../hawkbit/mgmt/client/resource/TargetTagResourceClient.java | 2 +- .../mgmt/client/resource/builder/DistributionSetBuilder.java | 4 ---- .../client/resource/builder/DistributionSetTypeBuilder.java | 2 -- .../hawkbit/mgmt/client/resource/builder/RolloutBuilder.java | 2 -- .../resource/builder/SoftwareModuleAssigmentBuilder.java | 2 -- .../mgmt/client/resource/builder/SoftwareModuleBuilder.java | 2 -- .../client/resource/builder/SoftwareModuleTypeBuilder.java | 2 -- .../hawkbit/mgmt/client/resource/builder/TagBuilder.java | 2 -- .../hawkbit/mgmt/client/resource/builder/TargetBuilder.java | 2 -- .../mgmt/client/scenarios/CreateStartedRolloutExample.java | 2 +- .../mgmt/client/scenarios/GettingStartedDefaultScenario.java | 4 ++-- 18 files changed, 11 insertions(+), 29 deletions(-) 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 e92f81326..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 @@ -41,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; 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 d17048dea..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 @@ -41,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; From 4b95ebc75d92899a2500258855702ac4c01314d5 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 2 Apr 2016 21:36:06 +0200 Subject: [PATCH 54/63] Skript for sandbox setup --- deployHawkBitSandbox.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 deployHawkBitSandbox.sh diff --git a/deployHawkBitSandbox.sh b/deployHawkBitSandbox.sh new file mode 100644 index 000000000..ac2498e2b --- /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 -Dhawkbit.url=hawkbit.eu-gb.mybluemix.net +cd hawkbit-device-simulator/target/ +cf push +cd ../../.. From 36e8949febdd8e538be5de1dcba85052c04bc2cc Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 2 Apr 2016 22:13:21 +0200 Subject: [PATCH 55/63] Fixed final bugs. Sandbox works now. --- deployHawkBitSandbox.sh | 2 +- examples/hawkbit-device-simulator/pom.xml | 3 +++ examples/hawkbit-example-app/pom.xml | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/deployHawkBitSandbox.sh b/deployHawkBitSandbox.sh index ac2498e2b..d774f4205 100644 --- a/deployHawkBitSandbox.sh +++ b/deployHawkBitSandbox.sh @@ -14,7 +14,7 @@ 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 -Dhawkbit.url=hawkbit.eu-gb.mybluemix.net +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/hawkbit-device-simulator/pom.xml b/examples/hawkbit-device-simulator/pom.xml index 5ee781e34..a23051124 100644 --- a/examples/hawkbit-device-simulator/pom.xml +++ b/examples/hawkbit-device-simulator/pom.xml @@ -43,6 +43,9 @@ + + src/main/resources + cf true diff --git a/examples/hawkbit-example-app/pom.xml b/examples/hawkbit-example-app/pom.xml index e9f57ad54..a5c0f864d 100644 --- a/examples/hawkbit-example-app/pom.xml +++ b/examples/hawkbit-example-app/pom.xml @@ -40,6 +40,9 @@ + + src/main/resources + cf true From 19e628aac9e21d8b534bbe855af61b5f46ae9c7f Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Sat, 2 Apr 2016 22:18:04 +0200 Subject: [PATCH 56/63] Added sandbox chapter --- README.md | 5 +++++ 1 file changed, 5 insertions(+) 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 From 5c661cd6a49b608cf43415b5401904dffdfa1695 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 4 Apr 2016 08:58:58 +0200 Subject: [PATCH 57/63] Added license header --- examples/hawkbit-device-simulator/cf/manifest.yml | 1 + .../org/eclipse/hawkbit/simulator/SimulatorStartup.java | 8 ++++++++ examples/hawkbit-example-app/cf/manifest-simple.yml | 1 + examples/hawkbit-example-app/cf/manifest.yml | 1 + 4 files changed, 11 insertions(+) diff --git a/examples/hawkbit-device-simulator/cf/manifest.yml b/examples/hawkbit-device-simulator/cf/manifest.yml index df69f92e3..51a43ace6 100644 --- a/examples/hawkbit-device-simulator/cf/manifest.yml +++ b/examples/hawkbit-device-simulator/cf/manifest.yml @@ -6,6 +6,7 @@ # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # + --- applications: - name: hawkbit-simulator 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 index c0e22a994..faff1cc6c 100644 --- 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 @@ -1,3 +1,11 @@ +/** + * 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; diff --git a/examples/hawkbit-example-app/cf/manifest-simple.yml b/examples/hawkbit-example-app/cf/manifest-simple.yml index 4d4a798ef..c87a533f4 100644 --- a/examples/hawkbit-example-app/cf/manifest-simple.yml +++ b/examples/hawkbit-example-app/cf/manifest-simple.yml @@ -6,6 +6,7 @@ # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # + --- applications: - name: hawkbit-simple diff --git a/examples/hawkbit-example-app/cf/manifest.yml b/examples/hawkbit-example-app/cf/manifest.yml index 278f43681..2145f467d 100644 --- a/examples/hawkbit-example-app/cf/manifest.yml +++ b/examples/hawkbit-example-app/cf/manifest.yml @@ -6,6 +6,7 @@ # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # + --- applications: - name: hawkbit From a98f91f05e5f067000545ddc414e9a7d9d97e8aa Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Mon, 4 Apr 2016 12:54:30 +0200 Subject: [PATCH 58/63] Fixed typos --- examples/hawkbit-mgmt-api-client/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) 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 - From 044f0bef037361f998c15c2a2724b7d0a9257923 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Mon, 4 Apr 2016 12:59:45 +0200 Subject: [PATCH 59/63] Reduce some duplicate code Signed-off-by: SirWayne --- .../DistributionSetAssignmentResult.java | 13 +- .../repository/model/AssignmentResult.java | 42 ++++- .../DistributionSetTagAssignmentResult.java | 21 +-- .../model/TargetTagAssignmentResult.java | 22 +-- .../repository/ControllerManagementTest.java | 4 +- .../repository/DeploymentManagementTest.java | 14 +- .../DistributionSetManagementTest.java | 6 +- .../hawkbit/repository/TagManagementTest.java | 24 +-- .../TargetManagementSearchTest.java | 14 +- .../utils/RepositoryDataGenerator.java | 134 ++++++-------- .../resource/DistributionSetTagResource.java | 4 +- .../hawkbit/rest/resource/TargetResource.java | 2 +- .../rest/resource/TargetTagResource.java | 4 +- .../controller/DeploymentBaseTest.java | 14 +- .../controller/RootControllerTest.java | 2 +- .../rest/resource/TargetResourceTest.java | 2 +- .../event/UploadViewAcceptCriteria.java | 35 ---- .../footer/SMDeleteActionsLayout.java | 50 ----- .../smtable/SoftwareModuleDetails.java | 75 +------- .../smtable/SoftwareModuleTableHeader.java | 33 ---- .../artifacts/smtype/SMTypeFilterButtons.java | 24 --- .../artifacts/smtype/SMTypeFilterHeader.java | 10 +- .../ui/common/AbstractAcceptCriteria.java | 39 ++-- .../AbstractTableDetailsLayout.java | 26 +++ .../filterlayout/AbstractFilterButtons.java | 22 ++- .../filterlayout/AbstractFilterHeader.java | 10 + .../footer/AbstractDeleteActionsLayout.java | 49 ++++- .../hawkbit/ui/common/grid/AbstractGrid.java | 24 ++- .../ui/common/table/AbstractTableHeader.java | 24 +++ .../tagdetails/DistributionTagToken.java | 6 +- .../ui/common/tagdetails/TargetTagToken.java | 6 +- .../disttype/DSTypeFilterButtons.java | 24 --- .../disttype/DSTypeFilterHeader.java | 11 +- .../dstable/DistributionSetDetails.java | 91 +-------- .../dstable/DistributionSetTableHeader.java | 27 --- .../DistributionsViewAcceptCriteria.java | 32 ---- .../footer/DSDeleteActionsLayout.java | 175 +----------------- .../smtable/SwModuleDetails.java | 34 ---- .../smtable/SwModuleTableHeader.java | 26 --- .../smtype/DistSMTypeFilterButtons.java | 17 -- .../smtype/DistSMTypeFilterHeader.java | 8 - .../dstable/DistributionDetails.java | 25 +-- .../management/dstable/DistributionTable.java | 2 +- .../dstable/DistributionTableHeader.java | 27 --- .../dstag/DistributionTagButtons.java | 12 -- .../dstag/DistributionTagHeader.java | 10 +- .../event/DistributionTagDropEvent.java | 2 +- .../event/ManagementViewAcceptCriteria.java | 32 ---- .../footer/DeleteActionsLayout.java | 45 ----- .../management/targettable/TargetDetails.java | 24 +-- .../management/targettable/TargetTable.java | 2 +- .../targettable/TargetTableHeader.java | 18 -- .../targettag/TargetTagFilterButtons.java | 14 +- .../targettag/TargetTagFilterHeader.java | 11 +- .../ui/rollout/rollout/RolloutListGrid.java | 53 ++---- .../rolloutgroup/RolloutGroupListGrid.java | 47 ++--- .../RolloutGroupTargetsListGrid.java | 34 +--- .../hawkbit/ui/utils/HawkbitCommonUtil.java | 61 +----- 58 files changed, 371 insertions(+), 1248 deletions(-) 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 8b1df00da..85e707652 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 @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.repository; +import java.util.Collections; import java.util.List; import org.eclipse.hawkbit.repository.model.AssignmentResult; @@ -19,7 +20,7 @@ import org.eclipse.hawkbit.repository.model.Target; * how much of the assignments had already been existed. * */ -public class DistributionSetAssignmentResult extends AssignmentResult { +public class DistributionSetAssignmentResult extends AssignmentResult { private final List assignedTargets; private final List actions; @@ -45,16 +46,14 @@ public class DistributionSetAssignmentResult extends AssignmentResult { */ public DistributionSetAssignmentResult(final List assignedTargets, final int assigned, final int alreadyAssigned, final List actions, final TargetManagement targetManagement) { - super(assigned, alreadyAssigned); + super(assigned, alreadyAssigned, 0, Collections.emptyList(), Collections.emptyList()); this.assignedTargets = assignedTargets; this.actions = actions; this.targetManagement = targetManagement; } - - /** - * @return the assignedTargets - */ - public List getAssignedTargets() { + + @Override + public List getAssignedEntity() { return targetManagement.findTargetByControllerID(assignedTargets); } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java index eda0bb9bd..2dea94f33 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/AssignmentResult.java @@ -8,15 +8,21 @@ */ package org.eclipse.hawkbit.repository.model; +import java.util.List; + /** * Generic assignment result bean. * */ -public class AssignmentResult { +public class AssignmentResult { private final int total; private final int assigned; private final int alreadyAssigned; + + private final int unassigned; + private final List assignedEntity; + private final List unassignedEntity; /** * Constructor. @@ -24,25 +30,47 @@ public class AssignmentResult { * @param assigned * is the number of newly assigned elements. * @param alreadyAssigned - * is the number of already assigned elements. + * number of already assigned/ignored elements + * @param unassigned + * number of newly assigned elements + * @param assignedEntity + * {@link List} of assigned entity. + * @param unassignedEntity + * {@link List} of unassigned entity. */ - public AssignmentResult(final int assigned, final int alreadyAssigned) { - super(); + public AssignmentResult(final int assigned, final int alreadyAssigned, final int unassigned, + final List assignedEntity, final List unassignedEntity) { this.assigned = assigned; this.alreadyAssigned = alreadyAssigned; total = assigned + alreadyAssigned; + this.unassigned = unassigned; + this.assignedEntity = assignedEntity; + this.unassignedEntity = unassignedEntity; } - + public int getAssigned() { return assigned; } - + public int getTotal() { return total; } - + public int getAlreadyAssigned() { return alreadyAssigned; } + + + public int getUnassigned() { + return unassigned; + } + + public List getAssignedEntity() { + return assignedEntity; + } + + public List getUnassignedEntity() { + return unassignedEntity; + } } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java index eddd10c1b..f1f3b1519 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSetTagAssignmentResult.java @@ -14,11 +14,8 @@ import java.util.List; * Result object for {@link DistributionSetTag} assignments. * */ -public class DistributionSetTagAssignmentResult extends AssignmentResult { +public class DistributionSetTagAssignmentResult extends AssignmentResult { - private final int unassigned; - private final List assignedDs; - private final List unassignedDs; private final DistributionSetTag distributionSetTag; /** @@ -40,27 +37,13 @@ public class DistributionSetTagAssignmentResult extends AssignmentResult { public DistributionSetTagAssignmentResult(final int alreadyAssigned, final int assigned, final int unassigned, final List assignedDs, final List unassignedDs, final DistributionSetTag distributionSetTag) { - super(assigned, alreadyAssigned); - this.unassigned = unassigned; - this.assignedDs = assignedDs; - this.unassignedDs = unassignedDs; + super(assigned, alreadyAssigned,unassigned, assignedDs, unassignedDs); this.distributionSetTag = distributionSetTag; } - public int getUnassigned() { - return unassigned; - } - public DistributionSetTag getDistributionSetTag() { return distributionSetTag; } - public List getAssignedDs() { - return assignedDs; - } - - public List getUnassignedDs() { - return unassignedDs; - } } diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java index 789e6adf2..b454d0c18 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/repository/model/TargetTagAssignmentResult.java @@ -14,11 +14,8 @@ import java.util.List; * Result object for {@link TargetTag} assignments. * */ -public class TargetTagAssignmentResult extends AssignmentResult { +public class TargetTagAssignmentResult extends AssignmentResult { - private final int unassigned; - private final List assignedTargets; - private final List unassignedTargets; private final TargetTag targetTag; /** @@ -39,25 +36,10 @@ public class TargetTagAssignmentResult extends AssignmentResult { */ 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; - this.assignedTargets = assignedTargets; - this.unassignedTargets = unassignedTargets; + super(assigned, alreadyAssigned, unassigned, assignedTargets, unassignedTargets); this.targetTag = targetTag; } - public int getUnassigned() { - return unassigned; - } - - public List getAssignedTargets() { - return assignedTargets; - } - - public List getUnassignedTargets() { - return unassignedTargets; - } - public TargetTag getTargetTag() { return targetTag; } 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 d77c137b1..279932ef7 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 @@ -48,7 +48,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest { assertThat(savedTarget.getTargetInfo().getUpdateStatus()).isEqualTo(TargetUpdateStatus.UNKNOWN); - savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedTargets().iterator().next(); + savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedEntity().iterator().next(); final Action savedAction = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); assertThat(targetManagement.findTargetByControllerID(savedTarget.getControllerId()).getTargetInfo() @@ -104,7 +104,7 @@ public class ControllerManagementTest extends AbstractIntegrationTest { Target savedTarget = targetManagement.createTarget(target); final List toAssign = new ArrayList<>(); toAssign.add(savedTarget); - savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedTargets().iterator().next(); + savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedEntity().iterator().next(); Action savedAction = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); // test and verify 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 83db4ed96..a17054a3d 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 @@ -155,8 +155,8 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { List targets = targetManagement .createTargets(TestDataUtil.generateTargets(Constants.MAX_ENTRIES_IN_STATEMENT + 10)); - targets = deploymentManagement.assignDistributionSet(cancelDs, targets).getAssignedTargets(); - targets = deploymentManagement.assignDistributionSet(cancelDs2, targets).getAssignedTargets(); + targets = deploymentManagement.assignDistributionSet(cancelDs, targets).getAssignedEntity(); + targets = deploymentManagement.assignDistributionSet(cancelDs2, targets).getAssignedEntity(); targetManagement.findAllTargetIds().forEach(targetIdName -> { assertThat(deploymentManagement.findActiveActionsByTarget( @@ -604,7 +604,7 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { // activeActions, add a corresponding cancelAction and another // UpdateAction for dsA final Iterable deployed2DS = deploymentManagement - .assignDistributionSet(dsA, deployResWithDsB.getDeployedTargets()).getAssignedTargets(); + .assignDistributionSet(dsA, deployResWithDsB.getDeployedTargets()).getAssignedEntity(); actionRepository.findByDistributionSet(pageRequest, dsA).getContent().get(1); // get final updated version of targets @@ -761,7 +761,7 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { targs.add(targ); // doing the assignment - targs = deploymentManagement.assignDistributionSet(dsA, targs).getAssignedTargets(); + targs = deploymentManagement.assignDistributionSet(dsA, targs).getAssignedEntity(); targ = targetManagement.findTargetByControllerID(targs.iterator().next().getControllerId()); // checking the revisions of the created entities @@ -799,7 +799,7 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { assertEquals("wrong installed ds", dsA, targ.getTargetInfo().getInstalledDistributionSet()); targs = deploymentManagement.assignDistributionSet(dsB.getId(), new String[] { "target-id-A" }) - .getAssignedTargets(); + .getAssignedEntity(); targ = targs.iterator().next(); @@ -830,7 +830,7 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { final List targs = new ArrayList(); targs.add(targ); - final Iterable savedTargs = deploymentManagement.assignDistributionSet(dsA, targs).getAssignedTargets(); + final Iterable savedTargs = deploymentManagement.assignDistributionSet(dsA, targs).getAssignedEntity(); targ = savedTargs.iterator().next(); assertThat(dsA.getOptLockRevision()).as("lock revision is wrong").isEqualTo( @@ -926,7 +926,7 @@ public class DeploymentManagementTest extends AbstractIntegrationTest { // assigning all DistributionSet to the Target in the list // deployedTargets for (final DistributionSet ds : dsList) { - deployedTargets = deploymentManagement.assignDistributionSet(ds, deployedTargets).getAssignedTargets(); + deployedTargets = deploymentManagement.assignDistributionSet(ds, deployedTargets).getAssignedEntity(); } final DeploymentResult deploymentResult = new DeploymentResult(deployedTargets, nakedTargets, dsList, diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java index 90cecfc14..db9618425 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/DistributionSetManagementTest.java @@ -495,11 +495,11 @@ public class DistributionSetManagementTest extends AbstractIntegrationTest { distributionSetManagement.deleteDistributionSet(dsDeleted); dsDeleted = distributionSetManagement.findDistributionSetById(dsDeleted.getId()); - ds100Group1 = distributionSetManagement.toggleTagAssignment(ds100Group1, dsTagA).getAssignedDs(); + ds100Group1 = distributionSetManagement.toggleTagAssignment(ds100Group1, dsTagA).getAssignedEntity(); dsTagA = distributionSetTagRepository.findByNameEquals(dsTagA.getName()); - ds100Group1 = distributionSetManagement.toggleTagAssignment(ds100Group1, dsTagB).getAssignedDs(); + ds100Group1 = distributionSetManagement.toggleTagAssignment(ds100Group1, dsTagB).getAssignedEntity(); dsTagA = distributionSetTagRepository.findByNameEquals(dsTagA.getName()); - ds100Group2 = distributionSetManagement.toggleTagAssignment(ds100Group2, dsTagA).getAssignedDs(); + ds100Group2 = distributionSetManagement.toggleTagAssignment(ds100Group2, dsTagA).getAssignedEntity(); dsTagA = distributionSetTagRepository.findByNameEquals(dsTagA.getName()); // check setup diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java index 73244871f..4c6af0d83 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TagManagementTest.java @@ -179,29 +179,29 @@ public class TagManagementTest extends AbstractIntegrationTest { DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(groupA, tag); assertThat(result.getAlreadyAssigned()).isEqualTo(0); assertThat(result.getAssigned()).isEqualTo(20); - assertThat(result.getAssignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + assertThat(result.getAssignedEntity()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( groupA.stream().map(set -> set.getId()).collect(Collectors.toList()))); assertThat(result.getUnassigned()).isEqualTo(0); - assertThat(result.getUnassignedDs()).isEmpty(); + assertThat(result.getUnassignedEntity()).isEmpty(); assertThat(result.getDistributionSetTag()).isEqualTo(tag); // toggle A+B -> A is still assigned and B is assigned as well result = distributionSetManagement.toggleTagAssignment(concat(groupA, groupB), tag); assertThat(result.getAlreadyAssigned()).isEqualTo(20); assertThat(result.getAssigned()).isEqualTo(20); - assertThat(result.getAssignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + assertThat(result.getAssignedEntity()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( groupB.stream().map(set -> set.getId()).collect(Collectors.toList()))); assertThat(result.getUnassigned()).isEqualTo(0); - assertThat(result.getUnassignedDs()).isEmpty(); + assertThat(result.getUnassignedEntity()).isEmpty(); assertThat(result.getDistributionSetTag()).isEqualTo(tag); // toggle A+B -> both unassigned result = distributionSetManagement.toggleTagAssignment(concat(groupA, groupB), tag); assertThat(result.getAlreadyAssigned()).isEqualTo(0); assertThat(result.getAssigned()).isEqualTo(0); - assertThat(result.getAssignedDs()).isEmpty(); + assertThat(result.getAssignedEntity()).isEmpty(); assertThat(result.getUnassigned()).isEqualTo(40); - assertThat(result.getUnassignedDs()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( + assertThat(result.getUnassignedEntity()).containsAll(distributionSetManagement.findDistributionSetListWithDetails( concat(groupB, groupA).stream().map(set -> set.getId()).collect(Collectors.toList()))); assertThat(result.getDistributionSetTag()).isEqualTo(tag); @@ -220,29 +220,29 @@ public class TagManagementTest extends AbstractIntegrationTest { TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(groupA, tag); assertThat(result.getAlreadyAssigned()).isEqualTo(0); assertThat(result.getAssigned()).isEqualTo(20); - assertThat(result.getAssignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + assertThat(result.getAssignedEntity()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( groupA.stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); assertThat(result.getUnassigned()).isEqualTo(0); - assertThat(result.getUnassignedTargets()).isEmpty(); + assertThat(result.getUnassignedEntity()).isEmpty(); assertThat(result.getTargetTag()).isEqualTo(tag); // toggle A+B -> A is still assigned and B is assigned as well result = targetManagement.toggleTagAssignment(concat(groupA, groupB), tag); assertThat(result.getAlreadyAssigned()).isEqualTo(20); assertThat(result.getAssigned()).isEqualTo(20); - assertThat(result.getAssignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + assertThat(result.getAssignedEntity()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( groupB.stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); assertThat(result.getUnassigned()).isEqualTo(0); - assertThat(result.getUnassignedTargets()).isEmpty(); + assertThat(result.getUnassignedEntity()).isEmpty(); assertThat(result.getTargetTag()).isEqualTo(tag); // toggle A+B -> both unassigned result = targetManagement.toggleTagAssignment(concat(groupA, groupB), tag); assertThat(result.getAlreadyAssigned()).isEqualTo(0); assertThat(result.getAssigned()).isEqualTo(0); - assertThat(result.getAssignedTargets()).isEmpty(); + assertThat(result.getAssignedEntity()).isEmpty(); assertThat(result.getUnassigned()).isEqualTo(40); - assertThat(result.getUnassignedTargets()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( + assertThat(result.getUnassignedEntity()).containsAll(targetManagement.findTargetsByControllerIDsWithTags( concat(groupB, groupA).stream().map(target -> target.getControllerId()).collect(Collectors.toList()))); assertThat(result.getTargetTag()).isEqualTo(tag); diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java index 0c33a651f..73d549eb7 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/TargetManagementSearchTest.java @@ -64,19 +64,19 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final String targetDsAIdPref = "targ-A"; List targAs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsAIdPref, targetDsAIdPref.concat(" description"))); - targAs = targetManagement.toggleTagAssignment(targAs, targTagX).getAssignedTargets(); + targAs = targetManagement.toggleTagAssignment(targAs, targTagX).getAssignedEntity(); final String targetDsBIdPref = "targ-B"; List targBs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsBIdPref, targetDsBIdPref.concat(" description"))); - targBs = targetManagement.toggleTagAssignment(targBs, targTagY).getAssignedTargets(); - targBs = targetManagement.toggleTagAssignment(targBs, targTagW).getAssignedTargets(); + targBs = targetManagement.toggleTagAssignment(targBs, targTagY).getAssignedEntity(); + targBs = targetManagement.toggleTagAssignment(targBs, targTagW).getAssignedEntity(); final String targetDsCIdPref = "targ-C"; List targCs = targetManagement.createTargets( TestDataUtil.buildTargetFixtures(100, targetDsCIdPref, targetDsCIdPref.concat(" description"))); - targCs = targetManagement.toggleTagAssignment(targCs, targTagZ).getAssignedTargets(); - targCs = targetManagement.toggleTagAssignment(targCs, targTagW).getAssignedTargets(); + targCs = targetManagement.toggleTagAssignment(targCs, targTagZ).getAssignedEntity(); + targCs = targetManagement.toggleTagAssignment(targCs, targTagW).getAssignedEntity(); final String targetDsDIdPref = "targ-D"; final List targDs = targetManagement.createTargets( @@ -688,8 +688,8 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest { final DistributionSet ds = TestDataUtil.generateDistributionSet("a", softwareManagement, distributionSetManagement); - targAssigned = deploymentManagement.assignDistributionSet(ds, targAssigned).getAssignedTargets(); - targInstalled = deploymentManagement.assignDistributionSet(ds, targInstalled).getAssignedTargets(); + targAssigned = deploymentManagement.assignDistributionSet(ds, targAssigned).getAssignedEntity(); + targInstalled = deploymentManagement.assignDistributionSet(ds, targInstalled).getAssignedEntity(); targInstalled = sendUpdateActionStatusToTargets(ds, targInstalled, Status.FINISHED, "installed"); final Slice result = targetManagement.findTargetsAllOrderByLinkedDistributionSet(pageReq, ds.getId(), diff --git a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java index d7efa50d5..a1c74e791 100644 --- a/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java +++ b/hawkbit-repository/src/test/java/org/eclipse/hawkbit/repository/utils/RepositoryDataGenerator.java @@ -49,7 +49,6 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.data.auditing.AuditingHandler; -import org.springframework.data.auditing.DateTimeProvider; import org.springframework.data.jpa.repository.Modifying; import org.springframework.security.authentication.TestingAuthenticationToken; import org.springframework.security.core.context.SecurityContext; @@ -132,24 +131,18 @@ public final class RepositoryDataGenerator { final DistributionSetTag dsTag = tagManagement .createDistributionSetTag(new DistributionSetTag("For " + group + "s")); - auditingHandler.setDateTimeProvider(new DateTimeProvider() { - @Override - public Calendar getNow() { - final Calendar instance = Calendar.getInstance(); - instance.add(Calendar.MONTH, -new Random().nextInt(7)); + auditingHandler.setDateTimeProvider(() -> { + final Calendar instance = Calendar.getInstance(); + instance.add(Calendar.MONTH, -new Random().nextInt(7)); - return instance; - } + return instance; }); final List targets = createTargetTestGroup(group, 20 * sizeMultiplikator); - auditingHandler.setDateTimeProvider(new DateTimeProvider() { - @Override - public Calendar getNow() { - final Calendar instance = Calendar.getInstance(); - return instance; - } + auditingHandler.setDateTimeProvider(() -> { + final Calendar instance = Calendar.getInstance(); + return instance; }); LOG.debug("initDemoRepo - start now real action history for group: {}", group); @@ -290,7 +283,7 @@ public final class RepositoryDataGenerator { LOG.debug("createTargetTestGroup: {} targets status updated including IP", group); - return targetManagement.toggleTagAssignment(targAs, targTag).getAssignedTargets(); + return targetManagement.toggleTagAssignment(targAs, targTag).getAssignedEntity(); } private List buildTargets(final int noOfTgts, final String descriptionPrefix) { @@ -328,75 +321,70 @@ public final class RepositoryDataGenerator { private void initDemoRepo(final int sizeMultiplikator, final int loadtestgroups) { final LoremIpsum jlorem = new LoremIpsum(); - runAsAllAuthorityContext(new Runnable() { + runAsAllAuthorityContext(() -> { + dbCleanupUtil.cleanupDB(null); - @Override - public void run() { - dbCleanupUtil.cleanupDB(null); + // generate targets and assign DS + // 5 groups - 100 targets each -> 500 + final String[] targetTestGroups = { "SHC", "CCU", "Vehicle", "Vending machine", "ECU" }; - // generate targets and assign DS - // 5 groups - 100 targets each -> 500 - final String[] targetTestGroups = { "SHC", "CCU", "Vehicle", "Vending machine", "ECU" }; + final String[] modulesTypes = { "HeadUnit_FW", "EDC17_FW", "OSGi_Bundle" }; - final String[] modulesTypes = { "HeadUnit_FW", "EDC17_FW", "OSGi_Bundle" }; + final DistributionSetTag depTag = tagManagement + .createDistributionSetTag(new DistributionSetTag("deprecated")); - final DistributionSetTag depTag = tagManagement - .createDistributionSetTag(new DistributionSetTag("deprecated")); + Arrays.stream(targetTestGroups).forEach(group -> { + generateTestTagetGroup(group, sizeMultiplikator); + }); - Arrays.stream(targetTestGroups).forEach(group -> { - generateTestTagetGroup(group, sizeMultiplikator); - }); + // garbage DS + LOG.debug("initDemoRepo - start now DS garbage"); + TestDataUtil.generateDistributionSets("Generic Software Package", sizeMultiplikator, + softwareManagement, distributionSetManagement); + LOG.debug("initDemoRepo - DS garbage finished"); - // garbage DS - LOG.debug("initDemoRepo - start now DS garbage"); - TestDataUtil.generateDistributionSets("Generic Software Package", sizeMultiplikator, - softwareManagement, distributionSetManagement); - LOG.debug("initDemoRepo - DS garbage finished"); + LOG.debug("initDemoRepo - start now Extra Software Modules and types"); + Arrays.stream(modulesTypes).forEach(typeName -> { + final SoftwareModuleType smtype = softwareManagement.createSoftwareModuleType( + new SoftwareModuleType(typeName.toLowerCase().replaceAll("\\s+", ""), typeName, + jlorem.words(5), Integer.MAX_VALUE)); - LOG.debug("initDemoRepo - start now Extra Software Modules and types"); - Arrays.stream(modulesTypes).forEach(typeName -> { - final SoftwareModuleType smtype = softwareManagement.createSoftwareModuleType( - new SoftwareModuleType(typeName.toLowerCase().replaceAll("\\s+", ""), typeName, - jlorem.words(5), Integer.MAX_VALUE)); - - for (int i = 0; i < sizeMultiplikator; i++) { - softwareManagement.createSoftwareModule(new SoftwareModule(smtype, typeName + i, "1.0." + i, - jlorem.words(5), "the " + typeName + " vendor Inc.")); - } - - }); - LOG.debug("initDemoRepo - Extra Software Modules and types finished"); - - LOG.debug("initDemoRepo - start now target garbage"); - - // garbage targets - // unknown - targetManagement - .createTargets(TestDataUtil.generateTargets(targetTestGroups.length * sizeMultiplikator)); - - // registered - targetManagement.createTargets( - TestDataUtil.generateTargets(targetTestGroups.length * sizeMultiplikator, "registered"), - TargetUpdateStatus.REGISTERED, System.currentTimeMillis(), generateIPAddress()); - - // pending - final DistributionSetTag dsTag = tagManagement - .createDistributionSetTag(new DistributionSetTag("OnlyAssignedTag")); - final DistributionSet ds = TestDataUtil.generateDistributionSet("Pending DS", "v1.0", - softwareManagement, distributionSetManagement, - Arrays.asList(new DistributionSetTag[] { dsTag })); - deploymentManagement.assignDistributionSet(ds, targetManagement.createTargets( - TestDataUtil.generateTargets(targetTestGroups.length * sizeMultiplikator, "pending"))); - - // Load test means additional 1_000_000 target - - for (int i = 0; i < loadtestgroups; i++) { - targetManagement.createTargets(TestDataUtil.generateTargets(i * 1_000, 1_000, "loadtest-")); + for (int i1 = 0; i1 < sizeMultiplikator; i1++) { + softwareManagement.createSoftwareModule(new SoftwareModule(smtype, typeName + i1, "1.0." + i1, + jlorem.words(5), "the " + typeName + " vendor Inc.")); } - LOG.debug("initDemoRepo complete"); + }); + LOG.debug("initDemoRepo - Extra Software Modules and types finished"); + + LOG.debug("initDemoRepo - start now target garbage"); + + // garbage targets + // unknown + targetManagement + .createTargets(TestDataUtil.generateTargets(targetTestGroups.length * sizeMultiplikator)); + + // registered + targetManagement.createTargets( + TestDataUtil.generateTargets(targetTestGroups.length * sizeMultiplikator, "registered"), + TargetUpdateStatus.REGISTERED, System.currentTimeMillis(), generateIPAddress()); + + // pending + final DistributionSetTag dsTag = tagManagement + .createDistributionSetTag(new DistributionSetTag("OnlyAssignedTag")); + final DistributionSet ds = TestDataUtil.generateDistributionSet("Pending DS", "v1.0", + softwareManagement, distributionSetManagement, + Arrays.asList(new DistributionSetTag[] { dsTag })); + deploymentManagement.assignDistributionSet(ds, targetManagement.createTargets( + TestDataUtil.generateTargets(targetTestGroups.length * sizeMultiplikator, "pending"))); + + // Load test means additional 1_000_000 target + + for (int i2 = 0; i2 < loadtestgroups; i2++) { + targetManagement.createTargets(TestDataUtil.generateTargets(i2 * 1_000, 1_000, "loadtest-")); } + LOG.debug("initDemoRepo complete"); }); } /** diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java index 01a446947..eaa0fec28 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/DistributionSetTagResource.java @@ -139,9 +139,9 @@ public class DistributionSetTagResource implements DistributionSetTagRestApi { final DistributionSetTagAssigmentResultRest tagAssigmentResultRest = new DistributionSetTagAssigmentResultRest(); tagAssigmentResultRest.setAssignedDistributionSets( - DistributionSetMapper.toResponseDistributionSets(assigmentResult.getAssignedDs())); + DistributionSetMapper.toResponseDistributionSets(assigmentResult.getAssignedEntity())); tagAssigmentResultRest.setUnassignedDistributionSets( - DistributionSetMapper.toResponseDistributionSets(assigmentResult.getUnassignedDs())); + DistributionSetMapper.toResponseDistributionSets(assigmentResult.getUnassignedEntity())); LOG.debug("Toggled assignedDS {} and unassignedDS{}", assigmentResult.getAssigned(), assigmentResult.getUnassigned()); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java index 3c79c936c..4b068a41e 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetResource.java @@ -263,7 +263,7 @@ public class TargetResource implements TargetRestApi { final ActionType type = (dsId.getType() != null) ? RestResourceConversionHelper.convertActionType(dsId.getType()) : ActionType.FORCED; final Iterator changed = this.deploymentManagement - .assignDistributionSet(dsId.getId(), type, dsId.getForcetime(), targetId).getAssignedTargets() + .assignDistributionSet(dsId.getId(), type, dsId.getForcetime(), targetId).getAssignedEntity() .iterator(); if (changed.hasNext()) { return new ResponseEntity<>(HttpStatus.OK); diff --git a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java index 9990fb35a..1a9155828 100644 --- a/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java +++ b/hawkbit-rest-resource/src/main/java/org/eclipse/hawkbit/rest/resource/TargetTagResource.java @@ -133,8 +133,8 @@ public class TargetTagResource implements TargetTagRestApi { .toggleTagAssignment(findTargetControllerIds(assignedTargetRequestBodies), targetTag.getName()); final TargetTagAssigmentResultRest tagAssigmentResultRest = new TargetTagAssigmentResultRest(); - tagAssigmentResultRest.setAssignedTargets(TargetMapper.toResponse(assigmentResult.getAssignedTargets())); - tagAssigmentResultRest.setUnassignedTargets(TargetMapper.toResponse(assigmentResult.getUnassignedTargets())); + tagAssigmentResultRest.setAssignedTargets(TargetMapper.toResponse(assigmentResult.getAssignedEntity())); + tagAssigmentResultRest.setUnassignedTargets(TargetMapper.toResponse(assigmentResult.getUnassignedEntity())); return new ResponseEntity<>(tagAssigmentResultRest, HttpStatus.OK); } diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java index 2b2b7e597..2127c8d1a 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/DeploymentBaseTest.java @@ -114,12 +114,12 @@ public class DeploymentBaseTest extends AbstractIntegrationTestWithMongoDB { assertThat(actionStatusRepository.findAll()).isEmpty(); List saved = deploymentManagement.assignDistributionSet(ds.getId(), ActionType.FORCED, - Action.NO_FORCE_TIME, savedTarget.getControllerId()).getAssignedTargets(); + Action.NO_FORCE_TIME, savedTarget.getControllerId()).getAssignedEntity(); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget)).hasSize(1); final Action action = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); assertThat(actionRepository.findAll()).hasSize(1); - saved = deploymentManagement.assignDistributionSet(ds2, saved).getAssignedTargets(); + saved = deploymentManagement.assignDistributionSet(ds2, saved).getAssignedEntity(); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget)).hasSize(2); assertThat(actionRepository.findAll()).hasSize(2); @@ -236,12 +236,12 @@ public class DeploymentBaseTest extends AbstractIntegrationTestWithMongoDB { List saved = deploymentManagement .assignDistributionSet(ds.getId(), ActionType.SOFT, Action.NO_FORCE_TIME, savedTarget.getControllerId()) - .getAssignedTargets(); + .getAssignedEntity(); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget)).hasSize(1); final Action action = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); assertThat(actionRepository.findAll()).hasSize(1); - saved = deploymentManagement.assignDistributionSet(ds2, saved).getAssignedTargets(); + saved = deploymentManagement.assignDistributionSet(ds2, saved).getAssignedEntity(); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget)).hasSize(2); assertThat(actionRepository.findAll()).hasSize(2); @@ -358,12 +358,12 @@ public class DeploymentBaseTest extends AbstractIntegrationTestWithMongoDB { assertThat(actionStatusRepository.findAll()).isEmpty(); List saved = deploymentManagement.assignDistributionSet(ds.getId(), ActionType.TIMEFORCED, - System.currentTimeMillis(), savedTarget.getControllerId()).getAssignedTargets(); + System.currentTimeMillis(), savedTarget.getControllerId()).getAssignedEntity(); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget)).hasSize(1); final Action action = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); assertThat(actionRepository.findAll()).hasSize(1); - saved = deploymentManagement.assignDistributionSet(ds2, saved).getAssignedTargets(); + saved = deploymentManagement.assignDistributionSet(ds2, saved).getAssignedEntity(); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget)).hasSize(2); assertThat(actionRepository.findAll()).hasSize(2); @@ -887,7 +887,7 @@ public class DeploymentBaseTest extends AbstractIntegrationTestWithMongoDB { assertThat(targetManagement.findTargetByControllerID("4712").getTargetInfo().getUpdateStatus()) .isEqualTo(TargetUpdateStatus.UNKNOWN); - savedTarget = deploymentManagement.assignDistributionSet(savedSet, toAssign).getAssignedTargets().iterator() + savedTarget = deploymentManagement.assignDistributionSet(savedSet, toAssign).getAssignedEntity().iterator() .next(); deploymentManagement.assignDistributionSet(savedSet2, toAssign2); diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/RootControllerTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/RootControllerTest.java index a6e457f3a..fa2c5f6d4 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/RootControllerTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/controller/RootControllerTest.java @@ -270,7 +270,7 @@ public class RootControllerTest extends AbstractIntegrationTestWithMongoDB { Target savedTarget = targetManagement.createTarget(target); final List toAssign = new ArrayList(); toAssign.add(savedTarget); - savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedTargets().iterator().next(); + savedTarget = deploymentManagement.assignDistributionSet(ds, toAssign).getAssignedEntity().iterator().next(); final Action savedAction = deploymentManagement.findActiveActionsByTarget(savedTarget).get(0); mvc.perform(post("/{tenant}/controller/v1/911/deploymentBase/" + savedAction.getId() + "/feedback", tenantAware.getCurrentTenant()) diff --git a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/TargetResourceTest.java b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/TargetResourceTest.java index a8ebfdd9d..8d27d5114 100644 --- a/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/TargetResourceTest.java +++ b/hawkbit-rest-resource/src/test/java/org/eclipse/hawkbit/rest/resource/TargetResourceTest.java @@ -1029,7 +1029,7 @@ public class TargetResourceTest extends AbstractIntegrationTest { // Update final List updatedTargets = deploymentManagement.assignDistributionSet(one, targets) - .getAssignedTargets(); + .getAssignedEntity(); // 2nd update // sleep 10ms to ensure that we can sort by reportedAt Thread.sleep(10); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/UploadViewAcceptCriteria.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/UploadViewAcceptCriteria.java index a3f045a08..060800fb8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/UploadViewAcceptCriteria.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/event/UploadViewAcceptCriteria.java @@ -14,12 +14,7 @@ import java.util.List; import java.util.Map; import org.eclipse.hawkbit.ui.common.AbstractAcceptCriteria; -import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; -import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.eclipse.hawkbit.ui.utils.UINotification; -import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -28,8 +23,6 @@ import com.vaadin.ui.Component; /** * Upload UI View for Accept criteria. * - * - * */ @SpringComponent @ViewScope @@ -41,29 +34,6 @@ public class UploadViewAcceptCriteria extends AbstractAcceptCriteria { private static final Map DROP_HINTS_CONFIGS = createDropHintConfigurations(); - @Autowired - private transient UINotification uiNotification; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Override - protected void analyseDragComponent(final Component compsource) { - final String sourceID = getComponentId(compsource); - final Object event = DROP_HINTS_CONFIGS.get(sourceID); - eventBus.publish(this, event); - } - - @Override - protected void hideDropHints() { - eventBus.publish(this, DragEvent.HIDE_DROP_HINT); - } - - @Override - protected void invalidDrop() { - uiNotification.displayValidationError(SPUILabelDefinitions.ACTION_NOT_ALLOWED); - } - @Override protected String getComponentId(final Component component) { String id = component.getId(); @@ -78,11 +48,6 @@ public class UploadViewAcceptCriteria extends AbstractAcceptCriteria { return DROP_HINTS_CONFIGS; } - @Override - protected void publishDragStartEvent(final Object event) { - eventBus.publish(this, event); - } - @Override protected Map> getDropConfigurations() { return DROP_CONFIGS; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/SMDeleteActionsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/SMDeleteActionsLayout.java index ef4b17da7..97451961c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/SMDeleteActionsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/SMDeleteActionsLayout.java @@ -11,22 +11,15 @@ package org.eclipse.hawkbit.ui.artifacts.footer; import java.util.HashSet; import java.util.Set; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout; import org.eclipse.hawkbit.ui.management.event.DragEvent; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -50,18 +43,6 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout { private static final long serialVersionUID = -3273982053389866299L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private transient UINotification notification; - @Autowired private ArtifactUploadState artifactUploadState; @@ -71,22 +52,6 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout { @Autowired private UploadViewAcceptCriteria uploadViewAcceptCriteria; - @Override - @PostConstruct - protected void init() { - super.init(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - /* - * It's good manners to do this, even though vaadin-spring will - * automatically unsubscribe when this UI is garbage collected. - */ - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final UploadArtifactUIEvent event) { @@ -211,26 +176,11 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout { updateActionsCount(count); } - @Override - protected String getNoActionsButtonLabel() { - return i18n.get("button.no.actions"); - } - - @Override - protected String getActionsButtonLabel() { - return i18n.get("button.actions"); - } - @Override protected void restoreActionCount() { updateSWActionCount(); } - @Override - protected String getUnsavedActionsWindowCaption() { - return i18n.get("caption.save.window"); - } - @Override protected void unsavedActionsWindowClosed() { final String message = uploadViewConfirmationWindowLayout.getConsolidatedMessage(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java index 6eb3e3d5d..dc6035089 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; @@ -19,10 +15,8 @@ import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractTableDetailsLayout; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -46,38 +40,16 @@ public class SoftwareModuleDetails extends AbstractTableDetailsLayout { private static final long serialVersionUID = -4900381301076646366L; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private SpPermissionChecker permissionChecker; - @Autowired private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow; @Autowired private ArtifactUploadState artifactUploadState; - private UI ui; - private Long swModuleId; private SoftwareModule selectedSwModule; - - /** - * Initialize the component. - */ - @Override - @PostConstruct - protected void init() { - super.init(); - ui = UI.getCurrent(); - eventBus.subscribe(this); - } - + @Override protected String getEditButtonId() { return SPUIComponetIdProvider.UPLOAD_SW_MODULE_EDIT_BUTTON; @@ -175,58 +147,24 @@ public class SoftwareModuleDetails extends AbstractTableDetailsLayout { } } - @PreDestroy - void destroy() { - /* - * It's good manners to do this, even though vaadin-spring will - * automatically unsubscribe when this UI is garbage collected. - */ - eventBus.unsubscribe(this); - } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.detailslayout.TableDetailsLayout# - * getDefaultCaption() - */ @Override protected String getDefaultCaption() { return i18n.get("upload.swModuleTable.header"); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.detailslayout.TableDetailsLayout# - * onLoadIsSwModuleSelected() - */ @Override protected Boolean onLoadIsTableRowSelected() { return artifactUploadState.getSelectedBaseSoftwareModule().isPresent(); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.detailslayout.TableDetailsLayout# - * onLoadIsTableMaximized() - */ + @Override protected Boolean onLoadIsTableMaximized() { return artifactUploadState.isSwModuleTableMaximized(); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.detailslayout.TableDetailsLayout# - * populateDetailsWidget() - */ + @Override protected void populateDetailsWidget() { populateDetailsWidget(selectedSwModule); @@ -266,12 +204,7 @@ public class SoftwareModuleDetails extends AbstractTableDetailsLayout { return permissionChecker.hasUpdateDistributionPermission(); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * getTabSheetId() - */ + @Override protected String getTabSheetId() { return null; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableHeader.java index 71605ec9f..5f1c56636 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTableHeader.java @@ -8,20 +8,14 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -44,31 +38,12 @@ public class SoftwareModuleTableHeader extends AbstractTableHeader { private static final long serialVersionUID = 242961845006626297L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private ArtifactUploadState artifactUploadState; @Autowired private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow; - /** - * Initialize the components. - */ - @Override - @PostConstruct - protected void init() { - super.init(); - eventbus.subscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final UploadArtifactUIEvent event) { if (event == UploadArtifactUIEvent.HIDE_FILTER_BY_TYPE) { @@ -76,14 +51,6 @@ public class SoftwareModuleTableHeader extends AbstractTableHeader { } } - @PreDestroy - void destroy() { - /* - * It's good manners to do this, even though vaadin-spring will - * automatically unsubscribe when this UI is garbage collected. - */ - eventbus.unsubscribe(this); - } @Override protected String getHeaderCaption() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java index 857b27a7e..5a1736b04 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java @@ -8,21 +8,17 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtype; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; -import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtonClickBehaviour; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -48,26 +44,6 @@ public class SMTypeFilterButtons extends AbstractFilterButtons { @Autowired private UploadViewAcceptCriteria uploadViewAcceptCriteria; - @Autowired - private transient EventBus.SessionEventBus eventBus; - - /** - * Initialize component. - * - * @param filterButtonClickBehaviour - * the clickable behaviour. - */ - @Override - public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { - super.init(filterButtonClickBehaviour); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final SoftwareModuleTypeEvent event) { if (event.getSoftwareModuleTypeEnum() == SoftwareModuleTypeEvent.SoftwareModuleTypeEnum.ADD_SOFTWARE_MODULE_TYPE diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterHeader.java index b79ecb742..a12517b31 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterHeader.java @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.artifacts.smtype; import javax.annotation.PostConstruct; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; @@ -18,7 +17,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -35,12 +33,6 @@ public class SMTypeFilterHeader extends AbstractFilterHeader { private static final long serialVersionUID = -4855810338059032342L; - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private ArtifactUploadState artifactUploadState; @@ -84,7 +76,7 @@ public class SMTypeFilterHeader extends AbstractFilterHeader { @Override protected void hideFilterButtonLayout() { artifactUploadState.setSwTypeFilterClosed(true); - eventbus.publish(this, UploadArtifactUIEvent.HIDE_FILTER_BY_TYPE); + eventBus.publish(this, UploadArtifactUIEvent.HIDE_FILTER_BY_TYPE); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractAcceptCriteria.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractAcceptCriteria.java index a6df4f557..2fa2900d5 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractAcceptCriteria.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractAcceptCriteria.java @@ -13,8 +13,13 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; +import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; +import org.eclipse.hawkbit.ui.utils.UINotification; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; @@ -27,9 +32,6 @@ import com.vaadin.ui.Table; /** * Abstract class for Accept criteria. * - * - * - * */ public abstract class AbstractAcceptCriteria extends ServerSideCriterion { @@ -37,13 +39,12 @@ public abstract class AbstractAcceptCriteria extends ServerSideCriterion { private int previousRowCount; - /* - * (non-Javadoc) - * - * @see - * com.vaadin.event.dd.acceptcriteria.AcceptCriterion#accept(com.vaadin. - * event.dd.DragAndDropEvent ) - */ + @Autowired + protected transient UINotification uiNotification; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; + @Override public boolean accept(final DragAndDropEvent dragEvent) { final Component compsource = dragEvent.getTransferable().getSourceComponent(); @@ -129,7 +130,7 @@ public abstract class AbstractAcceptCriteria extends ServerSideCriterion { protected void analyseDragComponent(final Component compsource) { final String sourceID = getComponentId(compsource); final Object event = getDropHintConfigurations().get(sourceID); - publishDragStartEvent(event); + eventBus.publish(this, event); } /** @@ -159,23 +160,19 @@ public abstract class AbstractAcceptCriteria extends ServerSideCriterion { */ protected abstract String getComponentId(final Component component); - /** - * publish the given event into eventBus. - * - * @param event - * to be published in eventBus. - */ - protected abstract void publishDragStartEvent(Object event); - /** * Hide the drop hints. Dragging is stopped. */ - protected abstract void hideDropHints(); + protected void hideDropHints() { + eventBus.publish(this, DragEvent.HIDE_DROP_HINT); + } /** * Display invalid drop message. */ - protected abstract void invalidDrop(); + protected void invalidDrop() { + uiNotification.displayValidationError(SPUILabelDefinitions.ACTION_NOT_ALLOWED); + } /** * @return diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java index a6ab09659..20a107ba6 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java @@ -10,6 +10,10 @@ package org.eclipse.hawkbit.ui.common.detailslayout; import java.util.Map; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; + +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; @@ -19,6 +23,8 @@ import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.server.FontAwesome; import com.vaadin.shared.ui.label.ContentMode; @@ -27,6 +33,7 @@ import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; +import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; /** @@ -37,6 +44,17 @@ public abstract class AbstractTableDetailsLayout extends VerticalLayout { private static final long serialVersionUID = 4862529368471627190L; + @Autowired + protected I18N i18n; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; + + @Autowired + protected SpPermissionChecker permissionChecker; + + protected UI ui; + private Label caption; private Button editButton; @@ -54,7 +72,9 @@ public abstract class AbstractTableDetailsLayout extends VerticalLayout { /** * Initialize components. */ + @PostConstruct protected void init() { + ui = UI.getCurrent(); createComponents(); buildLayout(); /** @@ -62,6 +82,12 @@ public abstract class AbstractTableDetailsLayout extends VerticalLayout { * selected in table. */ restoreState(); + eventBus.subscribe(this); + } + + @PreDestroy + void destroy() { + eventBus.unsubscribe(this); } private void createComponents() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java index e95797fb4..b64578782 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtons.java @@ -11,13 +11,17 @@ package org.eclipse.hawkbit.ui.common.filterlayout; import java.util.ArrayList; import java.util.List; +import javax.annotation.PreDestroy; + import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUITagButtonStyle; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; +import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; +import org.vaadin.spring.events.EventBus; import com.vaadin.data.Item; import com.vaadin.event.dd.DropHandler; @@ -38,10 +42,13 @@ import com.vaadin.ui.themes.ValoTheme; public abstract class AbstractFilterButtons extends Table { private static final long serialVersionUID = 7783305719009746375L; - + private static final String DEFAULT_GREEN = "rgb(44,151,32)"; protected static final String FILTER_BUTTON_COLUMN = "filterButton"; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; private AbstractFilterButtonClickBehaviour filterButtonClickBehaviour; @@ -54,6 +61,12 @@ public abstract class AbstractFilterButtons extends Table { public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { this.filterButtonClickBehaviour = filterButtonClickBehaviour; createTable(); + eventBus.subscribe(this); + } + + @PreDestroy + void destroy() { + eventBus.unsubscribe(this); } private void createTable() { @@ -88,12 +101,7 @@ public abstract class AbstractFilterButtons extends Table { @SuppressWarnings("serial") protected void addColumn() { - addGeneratedColumn(FILTER_BUTTON_COLUMN, new ColumnGenerator() { - @Override - public Object generateCell(final Table source, final Object itemId, final Object columnId) { - return addGeneratedCell(itemId); - } - }); + addGeneratedColumn(FILTER_BUTTON_COLUMN, (source, itemId, columnId) -> addGeneratedCell(itemId)); } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java index 95ac7bb35..ddc2d9889 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterHeader.java @@ -8,10 +8,13 @@ */ package org.eclipse.hawkbit.ui.common.filterlayout; +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; @@ -31,6 +34,13 @@ public abstract class AbstractFilterHeader extends VerticalLayout { private static final long serialVersionUID = -1388340600522323332L; + + @Autowired + protected SpPermissionChecker permChecker; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; + private Label title; private Button config; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java index 5b9bd162c..cdf9ac354 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java @@ -8,12 +8,19 @@ */ package org.eclipse.hawkbit.ui.common.footer; +import javax.annotation.PreDestroy; + +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmall; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; +import org.eclipse.hawkbit.ui.utils.UINotification; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; @@ -42,6 +49,18 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme private static final long serialVersionUID = -6047975388519155509L; + @Autowired + protected I18N i18n; + + @Autowired + protected SpPermissionChecker permChecker; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; + + @Autowired + protected transient UINotification notification; + private DragAndDropWrapper deleteWrapper; private Button noActionBtn; @@ -59,6 +78,12 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme buildLayout(); reload(); } + eventBus.subscribe(this); + } + + @PreDestroy + void destroy() { + eventBus.unsubscribe(this); } private void reload() { @@ -311,14 +336,27 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme * * @return the no actions label. */ - protected abstract String getNoActionsButtonLabel(); + protected String getNoActionsButtonLabel() { + return i18n.get("button.no.actions"); + } /** * Get the pending actions button label. * * @return the actions label. */ - protected abstract String getActionsButtonLabel(); + protected String getActionsButtonLabel() { + return i18n.get("button.actions"); + } + + /** + * Get caption of unsaved actions window. + * + * @return caption of the window. + */ + protected String getUnsavedActionsWindowCaption() { + return i18n.get("caption.save.window"); + } /** * reload the count value. @@ -330,13 +368,6 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme */ protected abstract void restoreBulkUploadStatusCount(); - /** - * Get caption of unsaved actions window. - * - * @return caption of the window. - */ - protected abstract String getUnsavedActionsWindowCaption(); - /** * This method will be called when unsaved actions window is closed. */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java index 6ac205cf2..be16498e9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/grid/AbstractGrid.java @@ -8,7 +8,13 @@ */ package org.eclipse.hawkbit.ui.common.grid; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; + +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.data.Container; import com.vaadin.data.Container.Indexed; @@ -21,10 +27,18 @@ import com.vaadin.ui.Grid; public abstract class AbstractGrid extends Grid { private static final long serialVersionUID = 4856562746502217630L; + + @Autowired + protected I18N i18n; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; + /** * Initialize the components. */ + @PostConstruct protected void init() { setSizeFull(); setImmediate(true); @@ -32,6 +46,12 @@ public abstract class AbstractGrid extends Grid { setSelectionMode(SelectionMode.NONE); setColumnReorderingAllowed(true); addNewContainerDS(); + eventBus.subscribe(this); + } + + @PreDestroy + void destroy() { + eventBus.unsubscribe(this); } public void addNewContainerDS() { @@ -43,13 +63,13 @@ public abstract class AbstractGrid extends Grid { setColumnHeaderNames(); addColumnRenderes(); - CellDescriptionGenerator cellDescriptionGenerator = getDescriptionGenerator(); + final CellDescriptionGenerator cellDescriptionGenerator = getDescriptionGenerator(); if (getDescriptionGenerator() != null) { setCellDescriptionGenerator(cellDescriptionGenerator); } // Allow column hiding - for (Column c : getColumns()) { + for (final Column c : getColumns()) { c.setHidable(true); } setHiddenColumns(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java index 0845f2c55..b4709ccd1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTableHeader.java @@ -8,13 +8,20 @@ */ package org.eclipse.hawkbit.ui.common.table; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; + +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.components.SPUIButton; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import com.vaadin.event.dd.DropHandler; import com.vaadin.server.FontAwesome; @@ -37,6 +44,16 @@ import com.vaadin.ui.VerticalLayout; public abstract class AbstractTableHeader extends VerticalLayout { private static final long serialVersionUID = 4881626370291837175L; + + @Autowired + protected I18N i18n; + + @Autowired + protected SpPermissionChecker permChecker; + + @Autowired + protected transient EventBus.SessionEventBus eventbus; + private Label headerCaption; @@ -59,10 +76,17 @@ public abstract class AbstractTableHeader extends VerticalLayout { /** * Initialze components. */ + @PostConstruct protected void init() { createComponents(); buildLayout(); restoreState(); + eventbus.subscribe(this); + } + + @PreDestroy + void destroy() { + eventbus.unsubscribe(this); } private void createComponents() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java index d6d37d5c0..33f838dd0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java @@ -114,7 +114,7 @@ public class DistributionTagToken extends AbstractTagToken { distributionList.add(selectedDS.getId()); final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, tagNameSelected); - uinotification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(tagNameSelected, result, i18n)); + uinotification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(tagNameSelected, result, i18n)); return result; } @@ -214,7 +214,7 @@ public class DistributionTagToken extends AbstractTagToken { protected boolean isAssign(final DistributionSetTagAssignmentResult assignmentResult) { if (assignmentResult.getAssigned() > 0) { - final List assignedDsNames = assignmentResult.getAssignedDs().stream().map(t -> t.getId()) + final List assignedDsNames = assignmentResult.getAssignedEntity().stream().map(t -> t.getId()) .collect(Collectors.toList()); if (assignedDsNames.contains(managementUIState.getLastSelectedDsIdName().getId())) { return true; @@ -225,7 +225,7 @@ public class DistributionTagToken extends AbstractTagToken { protected boolean isUnassign(final DistributionSetTagAssignmentResult assignmentResult) { if (assignmentResult.getUnassigned() > 0) { - final List assignedDsNames = assignmentResult.getUnassignedDs().stream().map(t -> t.getId()) + final List assignedDsNames = assignmentResult.getUnassignedEntity().stream().map(t -> t.getId()) .collect(Collectors.toList()); if (assignedDsNames.contains(managementUIState.getLastSelectedDsIdName().getId())) { return true; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java index b21b8f075..658501b4d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java @@ -81,7 +81,7 @@ public class TargetTagToken extends AbstractTargetTagToken { final Set targetList = new HashSet<>(); targetList.add(selectedTarget.getControllerId()); final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, tagNameSelected); - uinotification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(tagNameSelected, result, i18n)); + uinotification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(tagNameSelected, result, i18n)); return result; } @@ -151,7 +151,7 @@ public class TargetTagToken extends AbstractTargetTagToken { protected boolean isAssign(final TargetTagAssignmentResult assignmentResult) { if (assignmentResult.getAssigned() > 0) { - final List assignedTargetNames = assignmentResult.getAssignedTargets().stream() + final List assignedTargetNames = assignmentResult.getAssignedEntity().stream() .map(t -> t.getControllerId()).collect(Collectors.toList()); if (assignedTargetNames.contains(managementUIState.getLastSelectedTargetIdName().getControllerId())) { return true; @@ -162,7 +162,7 @@ public class TargetTagToken extends AbstractTargetTagToken { protected boolean isUnassign(final TargetTagAssignmentResult assignmentResult) { if (assignmentResult.getUnassigned() > 0) { - final List unassignedTargetNamesList = assignmentResult.getUnassignedTargets().stream() + final List unassignedTargetNamesList = assignmentResult.getUnassignedEntity().stream() .map(t -> t.getControllerId()).collect(Collectors.toList()); if (unassignedTargetNamesList.contains(managementUIState.getLastSelectedTargetIdName().getControllerId())) { return true; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java index aa35c0622..1abc32a3e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterButtons.java @@ -8,10 +8,7 @@ */ package org.eclipse.hawkbit.ui.distributions.disttype; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.ui.common.DistributionSetTypeBeanQuery; -import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtonClickBehaviour; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons; import org.eclipse.hawkbit.ui.distributions.event.DistributionSetTypeEvent; import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria; @@ -23,7 +20,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -45,27 +41,12 @@ public class DSTypeFilterButtons extends AbstractFilterButtons { private static final long serialVersionUID = 771251569981876005L; - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private ManageDistUIState manageDistUIState; @Autowired private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria; - /** - * Initialize component. - * - * @param filterButtonClickBehaviour - * the clickable behaviour. - */ - @Override - public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { - super.init(filterButtonClickBehaviour); - eventBus.subscribe(this); - } - @Override protected String getButtonsTableId() { @@ -140,9 +121,4 @@ public class DSTypeFilterButtons extends AbstractFilterButtons { setContainerDataSource(createButtonsLazyQueryContainer()); } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java index 068c28065..02c959286 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/DSTypeFilterHeader.java @@ -10,14 +10,12 @@ package org.eclipse.hawkbit.ui.distributions.disttype; import javax.annotation.PostConstruct; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -34,12 +32,6 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { private static final long serialVersionUID = 3433417459392880222L; - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private ManageDistUIState manageDistUIState; @@ -81,8 +73,7 @@ public class DSTypeFilterHeader extends AbstractFilterHeader { @Override protected void hideFilterButtonLayout() { manageDistUIState.setDistTypeFilterClosed(true); - eventbus.publish(this, DistributionsUIEvent.HIDE_DIST_FILTER_BY_TYPE); - + eventBus.publish(this, DistributionsUIEvent.HIDE_DIST_FILTER_BY_TYPE); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java index d72fd971a..02916ae7c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java @@ -13,12 +13,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.repository.DistributionSetManagement; import org.eclipse.hawkbit.repository.SoftwareManagement; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; import org.eclipse.hawkbit.repository.model.SoftwareModule; @@ -37,10 +33,8 @@ import org.eclipse.hawkbit.ui.management.dstable.DistributionAddUpdateWindowLayo import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -72,15 +66,6 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { private static final String UNASSIGN_SOFT_MODULE = "unassignSoftModule"; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private SpPermissionChecker permissionChecker; - @Autowired private ManageDistUIState manageDistUIState; @@ -104,21 +89,16 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { private Long dsId; - private UI ui; - Map assignedSWModule = new HashMap<>(); /** * softwareLayout Initialize the component. */ @Override - @PostConstruct protected void init() { softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(i18n, true, permissionChecker, distributionSetManagement, eventBus, manageDistUIState); super.init(); - ui = UI.getCurrent(); - eventBus.subscribe(this); } protected VerticalLayout createTagsLayout() { @@ -321,12 +301,6 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { this.dsId = dsId; } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * onEdit(com.vaadin.ui .Button.ClickEvent) - */ @Override protected void onEdit(final ClickEvent event) { final Window newDistWindow = distributionAddUpdateWindowLayout.getWindow(); @@ -336,68 +310,32 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { newDistWindow.setVisible(Boolean.TRUE); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * getEditButtonId() - */ @Override protected String getEditButtonId() { return SPUIComponetIdProvider.DS_EDIT_BUTTON; } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * onLoadIsSwModuleSelected () - */ @Override protected Boolean onLoadIsTableRowSelected() { return manageDistUIState.getSelectedDistributions().isPresent() && !manageDistUIState.getSelectedDistributions().get().isEmpty(); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * onLoadIsTableMaximized () - */ @Override protected Boolean onLoadIsTableMaximized() { return manageDistUIState.isDsTableMaximized(); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * populateDetailsWidget() - */ @Override protected void populateDetailsWidget() { populateDetailsWidget(selectedDsModule); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * getDefaultCaption() - */ @Override protected String getDefaultCaption() { return i18n.get("distribution.details.header"); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * addTabs(com.vaadin. ui.TabSheet) - */ @Override protected void addTabs(final TabSheet detailsTab) { detailsTab.addTab(createDetailsLayout(), i18n.get("caption.tab.details"), null); @@ -407,23 +345,11 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { detailsTab.addTab(createLogLayout(), i18n.get("caption.logs.tab"), null); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * clearDetails() - */ @Override protected void clearDetails() { populateDetailsWidget(null); } - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * hasEditSoftwareModulePermission() - */ @Override protected Boolean hasEditPermission() { return permissionChecker.hasUpdateDistributionPermission(); @@ -476,7 +402,7 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { }); } } - + @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final SaveActionWindowEvent saveActionWindowEvent) { if ((saveActionWindowEvent == SaveActionWindowEvent.SAVED_ASSIGNMENTS @@ -498,21 +424,6 @@ public class DistributionSetDetails extends AbstractTableDetailsLayout { } } - @PreDestroy - void destroy() { - /* - * It's good to do this, even though vaadin-spring will automatically - * unsubscribe . - */ - eventBus.unsubscribe(this); - } - - /* - * (non-Javadoc) - * - * @see hawkbit.server.ui.common.detailslayout.AbstractTableDetailsLayout# - * getTabSheetId() - */ @Override protected String getTabSheetId() { return null; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableHeader.java index f8cb7a45b..6ac4a1007 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetTableHeader.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.ui.distributions.dstable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.event.DragEvent; @@ -20,10 +16,8 @@ import org.eclipse.hawkbit.ui.management.dstable.DistributionAddUpdateWindowLayo import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableFilterEvent; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -43,28 +37,12 @@ public class DistributionSetTableHeader extends AbstractTableHeader { private static final long serialVersionUID = -3483238438474530748L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private ManageDistUIState manageDistUIstate; @Autowired private DistributionAddUpdateWindowLayout addUpdateWindowLayout; - @Override - @PostConstruct - protected void init() { - super.init(); - eventbus.subscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final DistributionsUIEvent event) { if (event == DistributionsUIEvent.HIDE_DIST_FILTER_BY_TYPE) { @@ -181,11 +159,6 @@ public class DistributionSetTableHeader extends AbstractTableHeader { eventbus.publish(this, DragEvent.HIDE_DROP_HINT); } - @PreDestroy - void destroy() { - eventbus.unsubscribe(this); - } - @Override protected Boolean isAddNewItemAllowed() { return Boolean.TRUE; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionsViewAcceptCriteria.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionsViewAcceptCriteria.java index 5b79b96f4..140fb41da 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionsViewAcceptCriteria.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/event/DistributionsViewAcceptCriteria.java @@ -16,10 +16,6 @@ import java.util.Map; import org.eclipse.hawkbit.ui.common.AbstractAcceptCriteria; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; -import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.eclipse.hawkbit.ui.utils.UINotification; -import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -39,29 +35,6 @@ public class DistributionsViewAcceptCriteria extends AbstractAcceptCriteria { private static final Map> DROP_CONFIGS = createDropConfigurations(); - @Autowired - private transient UINotification uiNotification; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Override - protected void analyseDragComponent(final Component compsource) { - final String sourceID = getComponentId(compsource); - final Object event = DROP_HINTS_CONFIGS.get(sourceID); - eventBus.publish(this, event); - } - - @Override - protected void hideDropHints() { - eventBus.publish(this, DragEvent.HIDE_DROP_HINT); - } - - @Override - protected void invalidDrop() { - uiNotification.displayValidationError(SPUILabelDefinitions.ACTION_NOT_ALLOWED); - } - @Override protected String getComponentId(final Component component) { String id = component.getId(); @@ -78,11 +51,6 @@ public class DistributionsViewAcceptCriteria extends AbstractAcceptCriteria { return DROP_HINTS_CONFIGS; } - @Override - protected void publishDragStartEvent(final Object event) { - eventBus.publish(this, event); - } - @Override protected Map> getDropConfigurations() { return DROP_CONFIGS; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/footer/DSDeleteActionsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/footer/DSDeleteActionsLayout.java index 5b51bb224..8b7d2ada0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/footer/DSDeleteActionsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/footer/DSDeleteActionsLayout.java @@ -15,10 +15,6 @@ import java.util.List; import java.util.Map.Entry; import java.util.Set; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; import org.eclipse.hawkbit.repository.model.DistributionSetType; @@ -30,13 +26,10 @@ import org.eclipse.hawkbit.ui.distributions.event.DragEvent; import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -65,21 +58,6 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { Arrays.asList(DragEvent.DISTRIBUTION_TYPE_DRAG, DragEvent.DISTRIBUTION_DRAG, DragEvent.SOFTWAREMODULE_DRAG, DragEvent.SOFTWAREMODULE_TYPE_DRAG)); - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private transient UINotification notification; - - @Autowired - private transient UINotification uiNotification; - @Autowired private transient SystemManagement systemManagement; @@ -92,28 +70,6 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { @Autowired private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria; - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.DeleteActionsLayout#init() - */ - @Override - @PostConstruct - protected void init() { - super.init(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - /* - * It's good manners to do this, even though vaadin-spring will - * automatically unsubscribe when this UI is garbage collected. - */ - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final DragEvent event) { if (event == DragEvent.HIDE_DROP_HINT) { @@ -139,77 +95,34 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { } } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * hasDeletePermission() - */ @Override protected boolean hasDeletePermission() { return permChecker.hasDeleteDistributionPermission(); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * hasUpdatePermission() - */ @Override protected boolean hasUpdatePermission() { return permChecker.hasUpdateDistributionPermission(); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getDeleteAreaLabel() - */ @Override protected String getDeleteAreaLabel() { return i18n.get("label.components.drop.area"); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getDeleteAreaId() - */ @Override protected String getDeleteAreaId() { return SPUIComponetIdProvider.DELETE_BUTTON_WRAPPER_ID; } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getDeleteLayoutAcceptCriteria () - */ @Override protected AcceptCriterion getDeleteLayoutAcceptCriteria() { - return distributionsViewAcceptCriteria; } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * processDroppedComponent(com .vaadin.event.dd.DragAndDropEvent) - */ @Override protected void processDroppedComponent(final DragAndDropEvent event) { final Component sourceComponent = event.getTransferable().getSourceComponent(); @@ -298,7 +211,7 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { * message accordingly. */ - uiNotification.displayValidationError(i18n.get("message.targets.already.deleted")); + notification.displayValidationError(i18n.get("message.targets.already.deleted")); } else if (newDeletedDistributionsSize - existingDeletedDistributionsSize != distributionIdNameSet.size()) { /* * Not the all distributions dropped now are added to the delete @@ -306,7 +219,7 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { * delete list. Hence display warning message accordingly. */ - uiNotification.displayValidationError(i18n.get("message.dist.deleted.pending")); + notification.displayValidationError(i18n.get("message.dist.deleted.pending")); } } @@ -366,64 +279,12 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { return SPUIComponetIdProvider.UPLOAD_SOFTWARE_MODULE_TABLE.equals(source.getId()); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getNoActionsButtonLabel() - */ - @Override - protected String getNoActionsButtonLabel() { - return i18n.get("button.no.actions"); - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getActionsButtonLabel() - */ - @Override - protected String getActionsButtonLabel() { - - return i18n.get("button.actions"); - - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * reloadActionCount() - */ @Override protected void restoreActionCount() { updateDSActionCount(); } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getUnsavedActionsWindowCaption () - */ - @Override - protected String getUnsavedActionsWindowCaption() { - return i18n.get("caption.save.window"); - } - - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * unsavedActionsWindowClosed() - */ @Override protected void unsavedActionsWindowClosed() { final String message = distConfirmationWindowLayout.getConsolidatedMessage(); @@ -433,26 +294,12 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * getUnsavedActionsWindowContent () - */ @Override protected Component getUnsavedActionsWindowContent() { distConfirmationWindowLayout.init(); return distConfirmationWindowLayout; } - /* - * (non-Javadoc) - * - * @see - * org.eclipse.hawkbit.server.ui.common.footer.AbstractDeleteActionsLayout# - * hasUnsavedActions() - */ @Override protected boolean hasUnsavedActions() { boolean unSavedActionsTypes = false; @@ -479,23 +326,11 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { return null; } - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout# - * hasBulkUploadPermission() - */ @Override protected boolean hasBulkUploadPermission() { return false; } - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout# - * showBulkUploadWindow() - */ @Override protected void showBulkUploadWindow() { /** @@ -503,12 +338,6 @@ public class DSDeleteActionsLayout extends AbstractDeleteActionsLayout { */ } - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.ui.common.footer.AbstractDeleteActionsLayout# - * restoreBulkUploadStatusCount() - */ @Override protected void restoreBulkUploadStatusCount() { /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java index 3b1a2cad6..7aa7d6f31 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.ui.distributions.smtable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; @@ -20,10 +16,8 @@ import org.eclipse.hawkbit.ui.common.detailslayout.AbstractTableDetailsLayout; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -46,44 +40,16 @@ public class SwModuleDetails extends AbstractTableDetailsLayout { private static final long serialVersionUID = -1052279281066089812L; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private SpPermissionChecker permissionChecker; - @Autowired private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow; @Autowired private ManageDistUIState manageDistUIState; - private UI ui; - private Long swModuleId; private SoftwareModule selectedSwModule; - @Override - @PostConstruct - protected void init() { - super.init(); - ui = UI.getCurrent(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - /* - * It's good manners to do this, even though vaadin-spring will - * automatically unsubscribe when this UI is garbage collected. - */ - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final SoftwareModuleEvent softwareModuleEvent) { if (softwareModuleEvent.getSoftwareModuleEventType() == SoftwareModuleEventType.SELECTED_SOFTWARE_MODULE diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableHeader.java index 56d7706fc..badbc1492 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleTableHeader.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.ui.distributions.smtable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent.SoftwareModuleEventType; @@ -19,10 +15,8 @@ import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleAddUpdateWindow; import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; import org.eclipse.hawkbit.ui.distributions.state.ManageDistUIState; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -43,14 +37,6 @@ public class SwModuleTableHeader extends AbstractTableHeader { private static final long serialVersionUID = 242961845006626297L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; @Autowired private ManageDistUIState manageDistUIState; @@ -58,18 +44,6 @@ public class SwModuleTableHeader extends AbstractTableHeader { @Autowired private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow; - @Override - @PostConstruct - protected void init() { - super.init(); - eventbus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventbus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final DistributionsUIEvent event) { if (event == DistributionsUIEvent.HIDE_SM_FILTER_BY_TYPE) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java index f086fed2c..146d8f019 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterButtons.java @@ -11,11 +11,8 @@ package org.eclipse.hawkbit.ui.distributions.smtype; import java.util.HashMap; import java.util.Map; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent; import org.eclipse.hawkbit.ui.common.SoftwareModuleTypeBeanQuery; -import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtonClickBehaviour; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterButtons; import org.eclipse.hawkbit.ui.distributions.event.DistributionsViewAcceptCriteria; import org.eclipse.hawkbit.ui.distributions.event.SaveActionWindowEvent; @@ -27,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -47,21 +43,12 @@ public class DistSMTypeFilterButtons extends AbstractFilterButtons { private static final long serialVersionUID = 6804534533362387433L; - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private ManageDistUIState manageDistUIState; @Autowired private DistributionsViewAcceptCriteria distributionsViewAcceptCriteria; - @Override - public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { - super.init(filterButtonClickBehaviour); - eventBus.subscribe(this); - } - @Override protected String getButtonsTableId() { return SPUIComponetIdProvider.SW_MODULE_TYPE_TABLE_ID; @@ -135,9 +122,5 @@ public class DistSMTypeFilterButtons extends AbstractFilterButtons { setContainerDataSource(createButtonsLazyQueryContainer()); } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java index edf20b206..e328b45a4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtype/DistSMTypeFilterHeader.java @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.ui.distributions.smtype; import javax.annotation.PostConstruct; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.artifacts.smtype.CreateUpdateSoftwareTypeLayout; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; import org.eclipse.hawkbit.ui.distributions.event.DistributionsUIEvent; @@ -19,7 +18,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -36,12 +34,6 @@ public class DistSMTypeFilterHeader extends AbstractFilterHeader { private static final long serialVersionUID = -8763788280848718344L; - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private ManageDistUIState manageDistUIState; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java index ecc4a26c6..a0de88fda 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.ui.management.dstable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.ui.common.detailslayout.AbstractTableDetailsLayout; import org.eclipse.hawkbit.ui.common.detailslayout.SoftwareModuleDetailsTable; @@ -21,10 +17,8 @@ import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -46,15 +40,7 @@ public class DistributionDetails extends AbstractTableDetailsLayout { private static final long serialVersionUID = 350360207334118826L; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private SpPermissionChecker permissionChecker; - + @Autowired private ManagementUIState managementUIState; @@ -70,22 +56,13 @@ public class DistributionDetails extends AbstractTableDetailsLayout { private DistributionSet selectedDsModule; - private UI ui; - @Override - @PostConstruct protected void init() { - eventBus.subscribe(this); softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(i18n, false, permissionChecker, null, null, null); super.init(); - ui = UI.getCurrent(); } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final DistributionTableEvent distributionTableEvent) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java index 0cc857c30..6bcfb55ae 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java @@ -363,7 +363,7 @@ public class DistributionTable extends AbstractTable { final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distList, distTagName); - notification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(distTagName, result, i18n)); + notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(distTagName, result, i18n)); if (result.getAssigned() >= 1 && managementUIState.getDistributionTableFilters().isNoTagSelected()) { refreshFilter(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableHeader.java index d2ac628a8..6d4343878 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTableHeader.java @@ -8,10 +8,6 @@ */ package org.eclipse.hawkbit.ui.management.dstable; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; @@ -19,10 +15,8 @@ import org.eclipse.hawkbit.ui.management.event.DistributionTableFilterEvent; import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -43,33 +37,12 @@ import com.vaadin.ui.Window; public class DistributionTableHeader extends AbstractTableHeader { private static final long serialVersionUID = 7597766804650170127L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private ManagementUIState managementUIState; @Autowired private DistributionAddUpdateWindowLayout distributionAddUpdateWindowLayout; - @Override - @PostConstruct - protected void init() { - super.init(); - eventbus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventbus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final ManagementUIEvent event) { if (event == ManagementUIEvent.HIDE_DISTRIBUTION_TAG_LAYOUT) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java index 287071fe8..57091b660 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagButtons.java @@ -11,8 +11,6 @@ package org.eclipse.hawkbit.ui.management.dstag; import java.util.HashMap; import java.util.Map; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent; @@ -31,7 +29,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -51,9 +48,6 @@ public class DistributionTagButtons extends AbstractFilterButtons { private static final long serialVersionUID = -8151483237450892057L; - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private DistributionTagDropEvent spDistTagDropEvent; @@ -64,12 +58,6 @@ public class DistributionTagButtons extends AbstractFilterButtons { public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { super.init(filterButtonClickBehaviour); addNewTag(new DistributionSetTag("NO TAG")); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); } @EventBusListenerMethod(scope = EventScope.SESSION) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagHeader.java index 2d58849dc..df9253bdb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstag/DistributionTagHeader.java @@ -10,14 +10,12 @@ package org.eclipse.hawkbit.ui.management.dstag; import javax.annotation.PostConstruct; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -38,12 +36,6 @@ public class DistributionTagHeader extends AbstractFilterHeader { @Autowired private I18N i18n; - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private ManagementUIState managementUIState; @@ -90,7 +82,7 @@ public class DistributionTagHeader extends AbstractFilterHeader { @Override protected void hideFilterButtonLayout() { managementUIState.setDistTagFilterClosed(true); - eventbus.publish(this, ManagementUIEvent.HIDE_DISTRIBUTION_TAG_LAYOUT); + eventBus.publish(this, ManagementUIEvent.HIDE_DISTRIBUTION_TAG_LAYOUT); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java index f8d53bdef..5b1e09282 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/DistributionTagDropEvent.java @@ -150,7 +150,7 @@ public class DistributionTagDropEvent implements DropHandler { final DistributionSetTagAssignmentResult result = distributionSetManagement.toggleTagAssignment(distributionList, distTagName); - notification.displaySuccess(HawkbitCommonUtil.getDistributionTagAssignmentMsg(distTagName, result, i18n)); + notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(distTagName, result, i18n)); if (result.getUnassigned() >= 1 && !tagsClickedList.isEmpty()) { eventBus.publish(this, TargetFilterEvent.FILTER_BY_TAG); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementViewAcceptCriteria.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementViewAcceptCriteria.java index 1c44014e8..ddc2c9c1d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementViewAcceptCriteria.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/event/ManagementViewAcceptCriteria.java @@ -16,10 +16,6 @@ import java.util.Map; import org.eclipse.hawkbit.ui.common.AbstractAcceptCriteria; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; -import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.eclipse.hawkbit.ui.utils.UINotification; -import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -41,29 +37,6 @@ public class ManagementViewAcceptCriteria extends AbstractAcceptCriteria { private static final Map DROP_HINTS_CONFIGS = createDropHintConfigurations(); - @Autowired - private transient UINotification uiNotification; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Override - protected void analyseDragComponent(final Component compsource) { - final String sourceID = getComponentId(compsource); - final Object event = DROP_HINTS_CONFIGS.get(sourceID); - eventBus.publish(this, event); - } - - @Override - protected void hideDropHints() { - eventBus.publish(this, DragEvent.HIDE_DROP_HINT); - } - - @Override - protected void invalidDrop() { - uiNotification.displayValidationError(SPUILabelDefinitions.ACTION_NOT_ALLOWED); - } - @Override protected String getComponentId(final Component component) { String id = component.getId(); @@ -80,11 +53,6 @@ public class ManagementViewAcceptCriteria extends AbstractAcceptCriteria { return DROP_HINTS_CONFIGS; } - @Override - protected void publishDragStartEvent(final Object event) { - eventBus.publish(this, event); - } - @Override protected Map> getDropConfigurations() { return DROP_CONFIGS; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/DeleteActionsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/DeleteActionsLayout.java index 1786429a1..b8c5494a3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/DeleteActionsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/footer/DeleteActionsLayout.java @@ -11,10 +11,6 @@ package org.eclipse.hawkbit.ui.management.footer; import java.util.HashSet; import java.util.Set; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; import org.eclipse.hawkbit.repository.model.TargetIdName; @@ -28,12 +24,9 @@ import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent.TargetComponentEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; -import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -56,17 +49,6 @@ import com.vaadin.ui.UI; public class DeleteActionsLayout extends AbstractDeleteActionsLayout { private static final long serialVersionUID = -8112907467821886253L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private transient UINotification notification; @Autowired private transient TagManagement tagManagementService; @@ -83,18 +65,6 @@ public class DeleteActionsLayout extends AbstractDeleteActionsLayout { @Autowired private CountMessageLabel countMessageLabel; - @Override - @PostConstruct - protected void init() { - super.init(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final ManagementUIEvent event) { if (event == ManagementUIEvent.UPDATE_COUNT) { @@ -226,26 +196,11 @@ public class DeleteActionsLayout extends AbstractDeleteActionsLayout { return true; } - @Override - protected String getNoActionsButtonLabel() { - return i18n.get("button.no.actions"); - } - - @Override - protected String getActionsButtonLabel() { - return i18n.get("button.actions"); - } - @Override protected void restoreActionCount() { updateActionCount(); } - @Override - protected String getUnsavedActionsWindowCaption() { - return i18n.get("caption.save.window"); - } - @Override protected void unsavedActionsWindowClosed() { final String message = manangementConfirmationWindowLayout.getConsolidatedMessage(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java index a94ed6b5f..87854b22c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java @@ -10,11 +10,7 @@ package org.eclipse.hawkbit.ui.management.targettable; import java.net.URI; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.apache.commons.lang3.StringUtils; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.Target; @@ -25,12 +21,10 @@ import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent.TargetComponentEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -60,15 +54,6 @@ public class TargetDetails extends AbstractTableDetailsLayout { private static final long serialVersionUID = 4571732743399605843L; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - - @Autowired - private SpPermissionChecker permChecker; - @Autowired private ManagementUIState managementUIState; @@ -87,11 +72,9 @@ public class TargetDetails extends AbstractTableDetailsLayout { * Initialize the Target details. */ @Override - @PostConstruct public void init() { super.init(); targetAddUpdateWindowLayout.init(); - eventBus.subscribe(this); } @Override @@ -286,7 +269,7 @@ public class TargetDetails extends AbstractTableDetailsLayout { @Override protected Boolean hasEditPermission() { - return permChecker.hasUpdateTargetPermission(); + return permissionChecker.hasUpdateTargetPermission(); } @EventBusListenerMethod(scope = EventScope.SESSION) @@ -312,11 +295,6 @@ public class TargetDetails extends AbstractTableDetailsLayout { } } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - @Override protected String getTabSheetId() { return SPUIComponetIdProvider.TARGET_DETAILS_TABSHEET; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 3df8fe6a4..6884e8906 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -644,7 +644,7 @@ public class TargetTable extends AbstractTable implements Handler { final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); - notification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(targTagName, result, i18n)); + notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(targTagName, result, i18n)); if (result.getUnassigned() >= 1 && !tagsClickedList.isEmpty()) { refreshFilter(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java index 05b6bfe4d..5ad6e3c28 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTableHeader.java @@ -11,10 +11,6 @@ package org.eclipse.hawkbit.ui.management.targettable; import java.util.HashSet; import java.util.Set; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; import org.eclipse.hawkbit.ui.common.table.AbstractTableHeader; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; @@ -29,7 +25,6 @@ import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent.TargetComponentEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUITargetDefinitions; import org.eclipse.hawkbit.ui.utils.UINotification; @@ -63,12 +58,6 @@ public class TargetTableHeader extends AbstractTableHeader { private static final long serialVersionUID = -8647521126666320022L; - @Autowired - private I18N i18n; - - @Autowired - private SpPermissionChecker permChecker; - @Autowired private UINotification notification; @@ -90,21 +79,14 @@ public class TargetTableHeader extends AbstractTableHeader { private Boolean isComplexFilterViewDisplayed = Boolean.FALSE; @Override - @PostConstruct protected void init() { super.init(); // creating add window for adding new target targetAddUpdateWindow.init(); targetBulkUpdateWindow.init(); - eventBus.subscribe(this); onLoadRestoreState(); } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final ManagementUIEvent event) { if (event == ManagementUIEvent.HIDE_TARGET_TAG_LAYOUT) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java index 169573f39..54f4c382b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterButtons.java @@ -13,8 +13,6 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagUpdateEvent; @@ -38,7 +36,6 @@ import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -63,9 +60,6 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { private static final long serialVersionUID = 5049554600376508073L; - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private ManagementUIState managementUIState; @@ -99,12 +93,6 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { this.filterButtonClickBehaviour = filterButtonClickBehaviour; super.init(filterButtonClickBehaviour); addNewTargetTag(new TargetTag("NO TAG")); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); } @EventBusListenerMethod(scope = EventScope.SESSION) @@ -244,7 +232,7 @@ public class TargetTagFilterButtons extends AbstractFilterButtons { final List tagsClickedList = managementUIState.getTargetTableFilters().getClickedTargetTags(); final TargetTagAssignmentResult result = targetManagement.toggleTagAssignment(targetList, targTagName); - notification.displaySuccess(HawkbitCommonUtil.getTargetTagAssigmentMsg(targTagName, result, i18n)); + notification.displaySuccess(HawkbitCommonUtil.createAssignmentMessage(targTagName, result, i18n)); if (result.getAssigned() >= 1 && managementUIState.getTargetTableFilters().isNoTagSelected()) { eventBus.publish(this, ManagementUIEvent.ASSIGN_TARGET_TAG); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java index 7d0b5c76c..6093843fd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettag/TargetTagFilterHeader.java @@ -10,14 +10,12 @@ package org.eclipse.hawkbit.ui.management.targettag; import javax.annotation.PostConstruct; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; @@ -32,15 +30,9 @@ public class TargetTagFilterHeader extends AbstractFilterHeader { private static final long serialVersionUID = 3046367045669148009L; - @Autowired - private SpPermissionChecker permChecker; - @Autowired private I18N i18n; - @Autowired - private transient EventBus.SessionEventBus eventbus; - @Autowired private CreateUpdateTargetTagLayout createUpdateTargetTagLayout; @@ -58,7 +50,6 @@ public class TargetTagFilterHeader extends AbstractFilterHeader { @Override protected String getHideButtonId() { - return SPUIComponetIdProvider.HIDE_TARGET_TAGS; } @@ -87,7 +78,7 @@ public class TargetTagFilterHeader extends AbstractFilterHeader { @Override protected void hideFilterButtonLayout() { managementUIState.setTargetTagFilterClosed(true); - eventbus.publish(this, ManagementUIEvent.HIDE_TARGET_TAG_LAYOUT); + eventBus.publish(this, ManagementUIEvent.HIDE_TARGET_TAG_LAYOUT); } @Override diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index 9151f3932..6376e505b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -15,9 +15,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.eventbus.event.RolloutChangeEvent; import org.eclipse.hawkbit.repository.RolloutManagement; import org.eclipse.hawkbit.repository.SpPermissionChecker; @@ -33,7 +30,6 @@ import org.eclipse.hawkbit.ui.rollout.StatusFontIcon; import org.eclipse.hawkbit.ui.rollout.event.RolloutEvent; import org.eclipse.hawkbit.ui.rollout.state.RolloutUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; @@ -46,7 +42,6 @@ import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; import org.vaadin.peter.contextmenu.ContextMenu; import org.vaadin.peter.contextmenu.ContextMenu.ContextMenuItem; import org.vaadin.peter.contextmenu.ContextMenu.ContextMenuItemClickEvent; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -82,11 +77,6 @@ public class RolloutListGrid extends AbstractGrid { private static final String START_OPTION = "Start"; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; @Autowired private transient RolloutManagement rolloutManagement; @@ -105,17 +95,6 @@ public class RolloutListGrid extends AbstractGrid { private transient Map statusIconMap = new EnumMap<>(RolloutStatus.class); - @Override - @PostConstruct - protected void init() { - super.init(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final RolloutEvent event) { @@ -245,7 +224,7 @@ public class RolloutListGrid extends AbstractGrid { @Override protected void setColumnProperties() { - List columnList = new ArrayList<>(); + final List columnList = new ArrayList<>(); columnList.add(SPUILabelDefinitions.VAR_NAME); columnList.add(SPUILabelDefinitions.VAR_DIST_NAME_VERSION); columnList.add(SPUILabelDefinitions.VAR_STATUS); @@ -265,13 +244,13 @@ public class RolloutListGrid extends AbstractGrid { @Override protected void setHiddenColumns() { - List columnsToBeHidden = new ArrayList<>(); + final List columnsToBeHidden = new ArrayList<>(); columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_DATE); columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_USER); columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_BY); columnsToBeHidden.add(SPUILabelDefinitions.VAR_DESC); - for (Object propertyId : columnsToBeHidden) { + for (final Object propertyId : columnsToBeHidden) { getColumn(propertyId).setHidden(true); } @@ -318,7 +297,7 @@ public class RolloutListGrid extends AbstractGrid { @Override public String getStyle(final CellReference cellReference) { - String[] coulmnNames = { SPUILabelDefinitions.VAR_STATUS, SPUILabelDefinitions.ACTION }; + final String[] coulmnNames = { SPUILabelDefinitions.VAR_STATUS, SPUILabelDefinitions.ACTION }; if (Arrays.asList(coulmnNames).contains(cellReference.getPropertyId())) { return "centeralign"; } @@ -327,18 +306,18 @@ public class RolloutListGrid extends AbstractGrid { }); } - private void onClickOfRolloutName(RendererClickEvent event) { + private void onClickOfRolloutName(final RendererClickEvent event) { rolloutUIState.setRolloutId((long) event.getItemId()); final String rolloutName = (String) getContainerDataSource().getItem(event.getItemId()) .getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue(); rolloutUIState.setRolloutName(rolloutName); - String ds = (String) getContainerDataSource().getItem(event.getItemId()) + final String ds = (String) getContainerDataSource().getItem(event.getItemId()) .getItemProperty(SPUILabelDefinitions.VAR_DIST_NAME_VERSION).getValue(); rolloutUIState.setRolloutDistributionSet(ds); eventBus.publish(this, RolloutEvent.SHOW_ROLLOUT_GROUPS); } - private void onClickOfActionBtn(RendererClickEvent event) { + private void onClickOfActionBtn(final RendererClickEvent event) { final ContextMenu contextMenu = createContextMenu((Long) event.getItemId()); contextMenu.setAsContextMenuOf((AbstractClientConnector) event.getComponent()); contextMenu.open(event.getClientX(), event.getClientY()); @@ -388,11 +367,11 @@ public class RolloutListGrid extends AbstractGrid { } private String convertRolloutStatusToString(final RolloutStatus value) { - StatusFontIcon statusFontIcon = statusIconMap.get(value); + final StatusFontIcon statusFontIcon = statusIconMap.get(value); if (statusFontIcon == null) { return null; } - String codePoint = statusFontIcon.getFontIcon() != null + final String codePoint = statusFontIcon.getFontIcon() != null ? Integer.toString(statusFontIcon.getFontIcon().getCodepoint()) : null; return HawkbitCommonUtil.getStatusLabelDetailsInString(codePoint, statusFontIcon.getStyle(), SPUIComponetIdProvider.ROLLOUT_STATUS_LABEL_ID); @@ -441,12 +420,12 @@ public class RolloutListGrid extends AbstractGrid { private static final long serialVersionUID = 2544026030795375748L; private final FontAwesome fontIcon; - public FontIconGenerator(FontAwesome icon) { + public FontIconGenerator(final FontAwesome icon) { this.fontIcon = icon; } @Override - public String getValue(Item item, Object itemId, Object propertyId) { + public String getValue(final Item item, final Object itemId, final Object propertyId) { return fontIcon.getHtml(); } @@ -456,7 +435,7 @@ public class RolloutListGrid extends AbstractGrid { } } - private String getDescription(CellReference cell) { + private String getDescription(final CellReference cell) { if (SPUILabelDefinitions.VAR_STATUS.equals(cell.getPropertyId())) { return cell.getProperty().getValue().toString().toLowerCase(); } else if (SPUILabelDefinitions.ACTION.equals(cell.getPropertyId())) { @@ -570,14 +549,14 @@ public class RolloutListGrid extends AbstractGrid { private static final long serialVersionUID = -5794528427855153924L; @Override - public TotalTargetCountStatus convertToModel(String value, Class targetType, - Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { + public TotalTargetCountStatus convertToModel(final String value, final Class targetType, + final Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return null; } @Override - public String convertToPresentation(TotalTargetCountStatus value, Class targetType, - Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { + public String convertToPresentation(final TotalTargetCountStatus value, final Class targetType, + final Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return DistributionBarHelper.getDistributionBarAsHTMLString(value.getStatusTotalCountMap()); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java index 44d945efd..978a93498 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgroup/RolloutGroupListGrid.java @@ -15,9 +15,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.eventbus.event.RolloutGroupChangeEvent; import org.eclipse.hawkbit.repository.RolloutGroupManagement; import org.eclipse.hawkbit.repository.SpPermissionChecker; @@ -32,7 +29,6 @@ import org.eclipse.hawkbit.ui.rollout.StatusFontIcon; import org.eclipse.hawkbit.ui.rollout.event.RolloutEvent; import org.eclipse.hawkbit.ui.rollout.state.RolloutUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; @@ -41,7 +37,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -64,12 +59,6 @@ import com.vaadin.ui.renderers.HtmlRenderer; public class RolloutGroupListGrid extends AbstractGrid { private static final long serialVersionUID = 4060904914954370524L; - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private transient RolloutGroupManagement rolloutGroupManagement; @@ -81,18 +70,6 @@ public class RolloutGroupListGrid extends AbstractGrid { private transient Map statusIconMap = new EnumMap<>(RolloutGroupStatus.class); - @Override - @PostConstruct - protected void init() { - super.init(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final RolloutEvent event) { if (RolloutEvent.SHOW_ROLLOUT_GROUPS != event) { @@ -218,7 +195,7 @@ public class RolloutGroupListGrid extends AbstractGrid { @Override protected void setColumnProperties() { - List columnList = new ArrayList<>(); + final List columnList = new ArrayList<>(); columnList.add(SPUILabelDefinitions.VAR_NAME); columnList.add(SPUILabelDefinitions.VAR_STATUS); columnList.add(SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS); @@ -251,13 +228,13 @@ public class RolloutGroupListGrid extends AbstractGrid { @Override protected void setHiddenColumns() { - List columnsToBeHidden = new ArrayList<>(); + final List columnsToBeHidden = new ArrayList<>(); columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_DATE); columnsToBeHidden.add(SPUILabelDefinitions.VAR_CREATED_USER); columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_DATE); columnsToBeHidden.add(SPUILabelDefinitions.VAR_MODIFIED_BY); columnsToBeHidden.add(SPUILabelDefinitions.VAR_DESC); - for (Object propertyId : columnsToBeHidden) { + for (final Object propertyId : columnsToBeHidden) { getColumn(propertyId).setHidden(true); } } @@ -267,18 +244,18 @@ public class RolloutGroupListGrid extends AbstractGrid { return cell -> getDescription(cell); } - private void onClickOfRolloutGroupName(RendererClickEvent event) { + private void onClickOfRolloutGroupName(final RendererClickEvent event) { rolloutUIState .setRolloutGroup(rolloutGroupManagement.findRolloutGroupWithDetailedStatus((Long) event.getItemId())); eventBus.publish(this, RolloutEvent.SHOW_ROLLOUT_GROUP_TARGETS); } private String convertRolloutGroupStatusToString(final RolloutGroupStatus value) { - StatusFontIcon statusFontIcon = statusIconMap.get(value); + final StatusFontIcon statusFontIcon = statusIconMap.get(value); if (statusFontIcon == null) { return null; } - String codePoint = statusFontIcon.getFontIcon() != null + final String codePoint = statusFontIcon.getFontIcon() != null ? Integer.toString(statusFontIcon.getFontIcon().getCodepoint()) : null; return HawkbitCommonUtil.getStatusLabelDetailsInString(codePoint, statusFontIcon.getStyle(), SPUIComponetIdProvider.ROLLOUT_GROUP_STATUS_LABEL_ID); @@ -298,7 +275,7 @@ public class RolloutGroupListGrid extends AbstractGrid { new StatusFontIcon(FontAwesome.EXCLAMATION_CIRCLE, SPUIStyleDefinitions.STATUS_ICON_RED)); } - private String getDescription(CellReference cell) { + private String getDescription(final CellReference cell) { if (SPUILabelDefinitions.VAR_STATUS.equals(cell.getPropertyId())) { return cell.getProperty().getValue().toString().toLowerCase(); } else if (SPUILabelDefinitions.ACTION.equals(cell.getPropertyId())) { @@ -318,7 +295,7 @@ public class RolloutGroupListGrid extends AbstractGrid { @Override public String getStyle(final CellReference cellReference) { - String[] coulmnNames = { SPUILabelDefinitions.VAR_STATUS, + final String[] coulmnNames = { SPUILabelDefinitions.VAR_STATUS, SPUILabelDefinitions.VAR_TOTAL_TARGETS_COUNT_STATUS }; if (Arrays.asList(coulmnNames).contains(cellReference.getPropertyId())) { return "centeralign"; @@ -339,14 +316,14 @@ public class RolloutGroupListGrid extends AbstractGrid { private static final long serialVersionUID = -9205943894818450807L; @Override - public TotalTargetCountStatus convertToModel(String value, Class targetType, - Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { + public TotalTargetCountStatus convertToModel(final String value, final Class targetType, + final Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return null; } @Override - public String convertToPresentation(TotalTargetCountStatus value, Class targetType, - Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { + public String convertToPresentation(final TotalTargetCountStatus value, final Class targetType, + final Locale locale) throws com.vaadin.data.util.converter.Converter.ConversionException { return DistributionBarHelper.getDistributionBarAsHTMLString(value.getStatusTotalCountMap()); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java index e55b30111..e3bedc7bf 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rolloutgrouptargets/RolloutGroupTargetsListGrid.java @@ -14,9 +14,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.repository.model.Action.Status; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.RolloutGroup.RolloutGroupStatus; @@ -26,7 +23,6 @@ import org.eclipse.hawkbit.ui.rollout.StatusFontIcon; import org.eclipse.hawkbit.ui.rollout.event.RolloutEvent; import org.eclipse.hawkbit.ui.rollout.state.RolloutUIState; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIComponetIdProvider; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; @@ -35,7 +31,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -55,29 +50,12 @@ import com.vaadin.spring.annotation.ViewScope; public class RolloutGroupTargetsListGrid extends AbstractGrid { private static final long serialVersionUID = -2244756637458984597L; - - @Autowired - private I18N i18n; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - + @Autowired private transient RolloutUIState rolloutUIState; private transient Map statusIconMap = new EnumMap<>(Status.class); - @Override - @PostConstruct - protected void init() { - super.init(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final RolloutEvent event) { @@ -158,7 +136,7 @@ public class RolloutGroupTargetsListGrid extends AbstractGrid { @Override protected void setColumnProperties() { - List columnList = new ArrayList<>(); + final List columnList = new ArrayList<>(); columnList.add(SPUILabelDefinitions.VAR_NAME); columnList.add(SPUILabelDefinitions.VAR_CREATED_DATE); columnList.add(SPUILabelDefinitions.VAR_CREATED_BY); @@ -241,11 +219,11 @@ public class RolloutGroupTargetsListGrid extends AbstractGrid { } private String processActionStatus(final Status status) { - StatusFontIcon statusFontIcon = statusIconMap.get(status); + final StatusFontIcon statusFontIcon = statusIconMap.get(status); if (statusFontIcon == null) { return null; } - String codePoint = statusFontIcon.getFontIcon() != null + final String codePoint = statusFontIcon.getFontIcon() != null ? Integer.toString(statusFontIcon.getFontIcon().getCodepoint()) : null; return HawkbitCommonUtil.getStatusLabelDetailsInString(codePoint, statusFontIcon.getStyle(), null); } @@ -286,7 +264,7 @@ public class RolloutGroupTargetsListGrid extends AbstractGrid { } } - private String getDescription(CellReference cell) { + private String getDescription(final CellReference cell) { if (!SPUILabelDefinitions.VAR_STATUS.equals(cell.getPropertyId())) { return null; } @@ -304,7 +282,7 @@ public class RolloutGroupTargetsListGrid extends AbstractGrid { if (rolloutGroup != null && rolloutGroup.getStatus() == RolloutGroupStatus.READY) { return RolloutGroupStatus.READY.toString().toLowerCase(); } else if (rolloutGroup != null && rolloutGroup.getStatus() == RolloutGroupStatus.FINISHED) { - String ds = rolloutUIState.getRolloutDistributionSet().isPresent() + final String ds = rolloutUIState.getRolloutDistributionSet().isPresent() ? rolloutUIState.getRolloutDistributionSet().get() : ""; return i18n.get("message.dist.already.assigned", new Object[] { ds }); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java index 3f947cfd0..3abd73592 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/HawkbitCommonUtil.java @@ -24,14 +24,14 @@ import java.util.TimeZone; import org.apache.commons.lang3.StringUtils; import org.eclipse.hawkbit.im.authentication.UserPrincipal; import org.eclipse.hawkbit.repository.SoftwareManagement; +import org.eclipse.hawkbit.repository.model.AssignmentResult; import org.eclipse.hawkbit.repository.model.DistributionSetIdName; -import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; +import org.eclipse.hawkbit.repository.model.NamedEntity; import org.eclipse.hawkbit.repository.model.RolloutGroup; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.TargetIdName; import org.eclipse.hawkbit.repository.model.TargetInfo.PollStatus; -import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus; import org.eclipse.hawkbit.repository.model.TotalTargetCountStatus.Status; @@ -868,7 +868,7 @@ public final class HawkbitCommonUtil { /** * Display Target Tag action message. * - * @param targTagName + * @param tagName * as tag name * @param result * as TargetTagAssigmentResult @@ -878,7 +878,7 @@ public final class HawkbitCommonUtil { * I18N * @return message */ - public static String getTargetTagAssigmentMsg(final String targTagName, final TargetTagAssignmentResult result, + public static String createAssignmentMessage(final String tagName, final AssignmentResult result, final I18N i18n) { final StringBuilder formMsg = new StringBuilder(); final int assignedCount = result.getAssigned(); @@ -887,10 +887,10 @@ public final class HawkbitCommonUtil { if (assignedCount == 1) { formMsg.append(i18n.get("message.target.assigned.one", - new Object[] { result.getAssignedTargets().get(0).getName(), targTagName })).append("
"); + new Object[] { result.getAssignedEntity().get(0).getName(), tagName })).append("
"); } else if (assignedCount > 1) { - formMsg.append(i18n.get("message.target.assigned.many", new Object[] { assignedCount, targTagName })) + formMsg.append(i18n.get("message.target.assigned.many", new Object[] { assignedCount, tagName })) .append("
"); if (alreadyAssignedCount > 0) { @@ -902,55 +902,10 @@ public final class HawkbitCommonUtil { if (unassignedCount == 1) { formMsg.append(i18n.get("message.target.unassigned.one", - new Object[] { result.getUnassignedTargets().get(0).getName(), targTagName })).append("
"); + new Object[] { result.getUnassignedEntity().get(0).getName(), tagName })).append("
"); } else if (unassignedCount > 1) { - formMsg.append(i18n.get("message.target.unassigned.many", new Object[] { unassignedCount, targTagName })) - .append("
"); - } - return formMsg.toString(); - } - - /** - * Get message to be displayed after distribution tag assignment. - * - * @param targTagName - * tag name - * @param result - * DistributionSetTagAssigmentResult - * @param tagsClickedList - * list of clicked tags - * @param i18n - * I18N - * @return message - */ - public static String getDistributionTagAssignmentMsg(final String targTagName, - final DistributionSetTagAssignmentResult result, final I18N i18n) { - final StringBuilder formMsg = new StringBuilder(); - final int assignedCount = result.getAssigned(); - final int alreadyAssignedCount = result.getAlreadyAssigned(); - final int unassignedCount = result.getUnassigned(); - - if (assignedCount == 1) { - formMsg.append(i18n.get("message.target.assigned.one", - new Object[] { result.getAssignedDs().get(0).getName(), targTagName })).append("
"); - - } else if (assignedCount > 1) { - formMsg.append(i18n.get("message.target.assigned.many", new Object[] { assignedCount, targTagName })) - .append("
"); - - if (alreadyAssignedCount > 0) { - final String alreadyAssigned = i18n.get("message.target.alreadyAssigned", - new Object[] { alreadyAssignedCount }); - formMsg.append(alreadyAssigned).append("
"); - } - } - - if (unassignedCount == 1) { - formMsg.append(i18n.get("message.target.unassigned.one", - new Object[] { result.getUnassignedDs().get(0).getName(), targTagName })).append("
"); - } else if (unassignedCount > 1) { - formMsg.append(i18n.get("message.target.unassigned.many", new Object[] { unassignedCount, targTagName })) + formMsg.append(i18n.get("message.target.unassigned.many", new Object[] { unassignedCount, tagName })) .append("
"); } return formMsg.toString(); From 9c9bdf640650ef4108234551f2032c09cf427e1a Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Tue, 5 Apr 2016 12:20:49 +0200 Subject: [PATCH 60/63] fix json creator for PagedList for creating clients Signed-off-by: Michael Hirsch --- .../hawkbit/rest/resource/model/PagedList.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java index 880ee0c16..757a6106e 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java @@ -14,9 +14,11 @@ import javax.validation.constraints.NotNull; import org.springframework.hateoas.ResourceSupport; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.annotation.JsonProperty; /** * A list representation with meta data for pagination, e.g. containing the @@ -31,7 +33,9 @@ import com.fasterxml.jackson.annotation.JsonInclude.Include; @JsonInclude(Include.NON_NULL) public class PagedList extends ResourceSupport { + @JsonProperty private final List content; + @JsonProperty private final long totalElements; private final int size; @@ -41,14 +45,16 @@ public class PagedList extends ResourceSupport { * * @param content * the actual content of the list - * @param total + * @param totalElements * the total amount of elements * @throws NullPointerException * in case {@code content} is {@code null}. */ - public PagedList(@NotNull final List content, final long total) { + @JsonCreator + public PagedList(@JsonProperty("content") @NotNull final List content, + @JsonProperty("totalElements") final long totalElements) { this.size = content.size(); - this.totalElements = total; + this.totalElements = totalElements; this.content = content; } From c47c29519d9902943f2b3e685f5e35a6d0f31be1 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Tue, 5 Apr 2016 12:23:26 +0200 Subject: [PATCH 61/63] Add missing @PostConstruct Signed-off-by: SirWayne --- .../ui/common/footer/AbstractDeleteActionsLayout.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java index cdf9ac354..f3b8b72e7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/footer/AbstractDeleteActionsLayout.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.ui.common.footer; +import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.eclipse.hawkbit.repository.SpPermissionChecker; @@ -41,9 +42,6 @@ import com.vaadin.ui.themes.ValoTheme; /** * Parent class for footer layout. * - * - * - * */ public abstract class AbstractDeleteActionsLayout extends VerticalLayout implements DropHandler { @@ -72,6 +70,7 @@ public abstract class AbstractDeleteActionsLayout extends VerticalLayout impleme /** * Initialize. */ + @PostConstruct protected void init() { if (hasCountMessage() || hasDeletePermission() || hasUpdatePermission() || hasBulkUploadPermission()) { createComponents(); From 5c0257adb99eb79fb83253a5b9f8c622ef32ecff Mon Sep 17 00:00:00 2001 From: SirWayne Date: Tue, 5 Apr 2016 12:35:01 +0200 Subject: [PATCH 62/63] Reduce more code Signed-off-by: SirWayne --- .../common/tagdetails/AbstractTagToken.java | 27 ++++++++++ .../tagdetails/AbstractTargetTagToken.java | 29 ----------- .../tagdetails/DistributionTagToken.java | 51 ++++--------------- .../ui/common/tagdetails/TargetTagToken.java | 6 +-- 4 files changed, 39 insertions(+), 74 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java index a00b8ce70..4404e1f8a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java @@ -13,10 +13,17 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; + +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.management.state.ManagementUIState; +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; +import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus; import org.vaadin.tokenfield.TokenField; import org.vaadin.tokenfield.TokenField.InsertPosition; @@ -52,13 +59,33 @@ public abstract class AbstractTagToken implements Serializable { protected final Map tokensAdded = new HashMap<>(); protected CssLayout tokenLayout = new CssLayout(); + + @Autowired + protected SpPermissionChecker checker; + @Autowired + protected I18N i18n; + + @Autowired + protected UINotification uinotification; + + @Autowired + protected transient EventBus.SessionEventBus eventBus; + @Autowired protected ManagementUIState managementUIState; + @PostConstruct protected void init() { createTokenField(); checkIfTagAssignedIsAllowed(); + eventBus.subscribe(this); + } + + + @PreDestroy + void destroy() { + eventBus.unsubscribe(this); } private void createTokenField() { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java index efedbe3bc..c38a97228 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java @@ -8,54 +8,25 @@ */ package org.eclipse.hawkbit.ui.common.tagdetails; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.eventbus.event.TargetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.TargetTagDeletedEvent; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.model.TargetTag; -import org.eclipse.hawkbit.ui.utils.I18N; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; -import com.vaadin.ui.UI; - /** * Abstract class for target tag token layout. */ public abstract class AbstractTargetTagToken extends AbstractTagToken { private static final long serialVersionUID = 7772876588903171201L; - protected UI ui; - - @Autowired - protected transient EventBus.SessionEventBus eventBus; - - @Autowired - protected I18N i18n; @Autowired protected transient TagManagement tagManagement; - @Autowired - protected SpPermissionChecker checker; - @Override - @PostConstruct - protected void init() { - super.init(); - ui = UI.getCurrent(); - eventBus.subscribe(this); - } - - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } @EventBusListenerMethod(scope = EventScope.SESSION) void onEventTargetTagCreated(final TargetTagCreatedBulkEvent event) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java index 33f838dd0..9a245229b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java @@ -14,7 +14,6 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagAssigmentResultEvent; @@ -22,7 +21,6 @@ import org.eclipse.hawkbit.eventbus.event.DistributionSetTagCreatedBulkEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagDeletedEvent; import org.eclipse.hawkbit.eventbus.event.DistributionSetTagUpdateEvent; import org.eclipse.hawkbit.repository.DistributionSetManagement; -import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetTag; @@ -31,10 +29,7 @@ import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent.DistributionComponentEvent; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.I18N; -import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -52,19 +47,6 @@ import com.vaadin.ui.UI; public class DistributionTagToken extends AbstractTagToken { private static final long serialVersionUID = -8022738301736043396L; - - @Autowired - private SpPermissionChecker spChecker; - - @Autowired - private I18N i18n; - - @Autowired - private UINotification uinotification; - - @Autowired - private transient EventBus.SessionEventBus eventBus; - @Autowired private transient TagManagement tagManagement; @@ -73,20 +55,9 @@ public class DistributionTagToken extends AbstractTagToken { private DistributionSet selectedDS; - private UI ui; - // To Be Done : have to set this value based on view??? private static final Boolean NOTAGS_SELECTED = Boolean.FALSE; - @Override - @PostConstruct - protected void init() { - super.init(); - ui = UI.getCurrent(); - eventBus.subscribe(this); - - } - @Override protected String getTagStyleName() { return "distribution-tag-"; @@ -140,7 +111,7 @@ public class DistributionTagToken extends AbstractTagToken { @Override protected Boolean isToggleTagAssignmentAllowed() { - return spChecker.hasUpdateDistributionPermission(); + return checker.hasUpdateDistributionPermission(); } @Override @@ -163,18 +134,15 @@ public class DistributionTagToken extends AbstractTagToken { @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final DistributionTableEvent distributionTableEvent) { - if (distributionTableEvent.getDistributionComponentEvent() == DistributionComponentEvent.ON_VALUE_CHANGE) { - ui.access(() -> { - /** - * distributionTableEvent.getDistributionSet() is null when - * table has no data. - */ - if (distributionTableEvent.getDistributionSet() != null) { - selectedDS = distributionTableEvent.getDistributionSet(); - repopulateToken(); - } - }); + if (distributionTableEvent.getDistributionComponentEvent() != DistributionComponentEvent.ON_VALUE_CHANGE) { + return; } + UI.getCurrent().access(() -> { + if (distributionTableEvent.getDistributionSet() != null) { + selectedDS = distributionTableEvent.getDistributionSet(); + repopulateToken(); + } + }); } @EventBusListenerMethod(scope = EventScope.SESSION) @@ -234,6 +202,7 @@ public class DistributionTagToken extends AbstractTagToken { return false; } + @Override @PreDestroy void destroy() { eventBus.unsubscribe(this); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java index 658501b4d..376e7d905 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java @@ -32,6 +32,7 @@ import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.data.Item; import com.vaadin.spring.annotation.SpringComponent; import com.vaadin.spring.annotation.ViewScope; +import com.vaadin.ui.UI; /** * Implementation of Target tag token. @@ -175,10 +176,7 @@ public class TargetTagToken extends AbstractTargetTagToken { void onEvent(final TargetTableEvent targetTableEvent) { if (targetTableEvent.getTargetComponentEvent() == TargetComponentEvent.SELECTED_TARGET && targetTableEvent.getTarget() != null) { - ui.access(() -> { - /** - * targetTableEvent.getTarget() is null when table has no data. - */ + UI.getCurrent().access(() -> { selectedTarget = targetTableEvent.getTarget(); repopulateToken(); }); From 39fc74469f513f879d4e836aee7592cf3d19289e Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Tue, 5 Apr 2016 15:02:55 +0200 Subject: [PATCH 63/63] fix paged list json. Signed-off-by: Michael Hirsch --- .../hawkbit/rest/resource/model/PagedList.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java index 757a6106e..9d5cc458c 100644 --- a/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java +++ b/hawkbit-rest-api/src/main/java/org/eclipse/hawkbit/rest/resource/model/PagedList.java @@ -36,7 +36,7 @@ public class PagedList extends ResourceSupport { @JsonProperty private final List content; @JsonProperty - private final long totalElements; + private final long total; private final int size; /** @@ -45,16 +45,15 @@ public class PagedList extends ResourceSupport { * * @param content * the actual content of the list - * @param totalElements + * @param total * the total amount of elements * @throws NullPointerException * in case {@code content} is {@code null}. */ @JsonCreator - public PagedList(@JsonProperty("content") @NotNull final List content, - @JsonProperty("totalElements") final long totalElements) { + public PagedList(@JsonProperty("content") @NotNull final List content, @JsonProperty("total") final long total) { this.size = content.size(); - this.totalElements = totalElements; + this.total = total; this.content = content; } @@ -69,7 +68,7 @@ public class PagedList extends ResourceSupport { * @return the total amount of elements */ public long getTotal() { - return totalElements; + return total; } public List getContent() {