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 index c31086a70..bc6aaa147 100644 --- 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 @@ -10,10 +10,13 @@ package org.eclipse.hawkbit.app; import org.eclipse.hawkbit.ui.login.HawkbitLoginUI; import org.eclipse.hawkbit.ui.themes.HawkbitTheme; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import com.vaadin.annotations.Theme; import com.vaadin.annotations.Title; import com.vaadin.spring.annotation.SpringUI; +import com.vaadin.spring.navigator.SpringViewProvider; /** * Example hawkBit login UI implementation. @@ -31,4 +34,9 @@ public class MyLoginUI extends HawkbitLoginUI { private static final long serialVersionUID = 1L; + @Autowired + protected MyLoginUI(final SpringViewProvider viewProvider, final ApplicationContext context) { + super(viewProvider, context); + } + } 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 index 07e7b7f7c..c5fa5f979 100644 --- 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 @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.app; import org.eclipse.hawkbit.ui.HawkbitUI; import org.eclipse.hawkbit.ui.push.EventPushStrategy; -import org.vaadin.spring.events.EventBus.SessionEventBus; import com.vaadin.annotations.Push; import com.vaadin.annotations.Theme; @@ -43,7 +42,7 @@ public class MyUI extends HawkbitUI { * @param eventBus * the event bus */ - public MyUI(final EventPushStrategy pushStrategy, final SessionEventBus eventBus) { - super(pushStrategy, eventBus); + public MyUI(final EventPushStrategy pushStrategy) { + super(pushStrategy); } } diff --git a/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java b/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java index d8c5c8493..28d262491 100644 --- a/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java +++ b/examples/hawkbit-example-app/src/main/java/org/eclipse/hawkbit/app/MyLoginUI.java @@ -10,8 +10,11 @@ package org.eclipse.hawkbit.app; import org.eclipse.hawkbit.ui.login.HawkbitLoginUI; import org.eclipse.hawkbit.ui.themes.HawkbitTheme; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import com.vaadin.spring.annotation.SpringUI; +import com.vaadin.spring.navigator.SpringViewProvider; /** * Example hawkBit login UI implementation. @@ -27,6 +30,11 @@ import com.vaadin.spring.annotation.SpringUI; @SuppressWarnings({ "squid:MaximumInheritanceDepth" }) public class MyLoginUI extends HawkbitLoginUI { + @Autowired + protected MyLoginUI(final SpringViewProvider viewProvider, final ApplicationContext context) { + super(viewProvider, context); + } + private static final long serialVersionUID = 1L; } 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 f731f5660..5a6ce146c 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 @@ -10,7 +10,6 @@ package org.eclipse.hawkbit.app; import org.eclipse.hawkbit.ui.HawkbitUI; import org.eclipse.hawkbit.ui.push.EventPushStrategy; -import org.vaadin.spring.events.EventBus.SessionEventBus; import com.vaadin.annotations.Push; import com.vaadin.shared.communication.PushMode; @@ -41,8 +40,8 @@ public class MyUI extends HawkbitUI { * @param eventBus * the event bus */ - public MyUI(final EventPushStrategy pushStrategy, final SessionEventBus eventBus) { - super(pushStrategy, eventBus); + public MyUI(final EventPushStrategy pushStrategy) { + super(pushStrategy); } } diff --git a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java index 590e52a3b..a343b6576 100644 --- a/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java +++ b/examples/hawkbit-example-mgmt-simulator/src/main/java/org/eclipse/hawkbit/mgmt/client/scenarios/ConfigurableScenario.java @@ -69,9 +69,6 @@ public class ConfigurableScenario { private final MgmtSoftwareModuleClientResource uploadSoftwareModule; - // Exception - squid:S00107 - this is a simulator that leverages multiple - // resouces/feign beans. - @SuppressWarnings("squid:S00107") public ConfigurableScenario(final MgmtDistributionSetClientResource distributionSetResource, final MgmtSoftwareModuleClientResource softwareModuleResource, final MgmtSoftwareModuleClientResource uploadSoftwareModule, final MgmtTargetClientResource targetResource, 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 ea98d52a3..71e0a904d 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 @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.autoconfigure.ui; +import java.util.concurrent.ScheduledExecutorService; + import org.eclipse.hawkbit.DistributedResourceBundleMessageSource; import org.eclipse.hawkbit.ui.push.DelayedEventBusPushStrategy; import org.eclipse.hawkbit.ui.push.EventPushStrategy; @@ -18,6 +20,7 @@ import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.vaadin.spring.annotation.EnableVaadinExtensions; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.annotation.EnableEventBus; import org.vaadin.spring.security.annotation.EnableVaadinSecurity; @@ -65,8 +68,11 @@ public class UIAutoConfiguration { @Bean @ConditionalOnMissingBean @UIScope - public EventPushStrategy eventPushStrategy(final ConfigurableApplicationContext applicationContext) { - final DelayedEventBusPushStrategy delayedEventBusPushStrategy = new DelayedEventBusPushStrategy(); + public EventPushStrategy eventPushStrategy(final ConfigurableApplicationContext applicationContext, + final ScheduledExecutorService executorService, final UIEventBus eventBus, + final UIEventProvider eventProvider) { + final DelayedEventBusPushStrategy delayedEventBusPushStrategy = new DelayedEventBusPushStrategy(executorService, + eventBus, eventProvider); applicationContext.addApplicationListener(delayedEventBusPushStrategy); return delayedEventBusPushStrategy; } 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 0d70ae69d..4eba5c0f5 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/ControllerPollProperties.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/ControllerPollProperties.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit; +import java.io.Serializable; + import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationKey; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.EnvironmentAware; @@ -25,7 +27,8 @@ import org.springframework.stereotype.Component; */ @Component @ConfigurationProperties(prefix = "hawkbit.controller") -public class ControllerPollProperties { +public class ControllerPollProperties implements Serializable { + private static final long serialVersionUID = 1L; /** * Maximum polling time that can be configured by a tenant in HH:MM:SS diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java index dcadeb689..84092a7d4 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/TargetManagement.java @@ -63,7 +63,8 @@ public interface TargetManagement { * * @return number of found {@link Target}s. */ - @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) + @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET + SpringEvalExpressions.HAS_AUTH_OR + + SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) Long countTargetByAssignedDistributionSet(@NotNull Long distId); /** @@ -104,7 +105,8 @@ public interface TargetManagement { * to search for * @return number of found {@link Target}s. */ - @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET) + @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET + SpringEvalExpressions.HAS_AUTH_OR + + SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) Long countTargetByInstalledDistributionSet(@NotNull Long distId); /** diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java index 3af310a93..f8fc4a7ff 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/DistributionSet.java @@ -11,8 +11,6 @@ package org.eclipse.hawkbit.repository.model; import java.util.List; import java.util.Set; -import org.eclipse.hawkbit.repository.DistributionSetManagement; - /** * A {@link DistributionSet} defines a meta package that combines a set of * {@link SoftwareModule}s which have to be or are provisioned to a @@ -36,12 +34,6 @@ public interface DistributionSet extends NamedVersionedEntity { */ boolean isDeleted(); - /** - * @return immutable {@link List} of {@link DistributionSetMetadata} - * elements. See {@link DistributionSetManagement} to alter. - */ - List getMetadata(); - /** * @return true if {@link DistributionSet} contains a mandatory * migration step, i.e. unfinished {@link Action}s will kept active @@ -49,21 +41,11 @@ public interface DistributionSet extends NamedVersionedEntity { */ boolean isRequiredMigrationStep(); - /** - * @return the assignedTargets - */ - List getAssignedTargets(); - /** * @return the auto assign target filters */ List getAutoAssignFilters(); - /** - * @return the installedTargets - */ - List getInstalledTargets(); - /** * * @return unmodifiableSet of {@link SoftwareModule}. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java index 4a21be5a3..d26a4cb9c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaDistributionSetManagement.java @@ -231,7 +231,7 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { } private JpaDistributionSet findDistributionSetAndThrowExceptionIfNotFound(final Long setId) { - final JpaDistributionSet set = (JpaDistributionSet) findDistributionSetByIdWithDetails(setId); + final JpaDistributionSet set = (JpaDistributionSet) findDistributionSetById(setId); if (set == null) { throw new EntityNotFoundException("Distribution set cannot be updated as it does not exixt" + setId); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java index 8000cd8c9..471dd67db 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/TargetTagRepository.java @@ -34,7 +34,7 @@ public interface TargetTagRepository */ @Modifying @Transactional(isolation = Isolation.READ_UNCOMMITTED) - Long deleteByName(final String tagName); + Long deleteByName(String tagName); /** * find {@link TargetTag} by its name. @@ -43,7 +43,7 @@ public interface TargetTagRepository * to filter on * @return the {@link TargetTag} if found, otherwise null */ - JpaTargetTag findByNameEquals(final String tagName); + JpaTargetTag findByNameEquals(String tagName); /** * Returns all instances of the type. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java index b57d103a3..33842346f 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaDistributionSet.java @@ -209,7 +209,6 @@ public class JpaDistributionSet extends AbstractJpaNamedVersionedEntity implemen return deleted; } - @Override public List getMetadata() { if (metadata == null) { return Collections.emptyList(); @@ -241,29 +240,11 @@ public class JpaDistributionSet extends AbstractJpaNamedVersionedEntity implemen return this; } - @Override - public List getAssignedTargets() { - if (assignedToTargets == null) { - return Collections.emptyList(); - } - - return Collections.unmodifiableList(assignedToTargets); - } - @Override public List getAutoAssignFilters() { return autoAssignFilters; } - @Override - public List getInstalledTargets() { - if (installedAtTargets == null) { - return Collections.emptyList(); - } - - return Collections.unmodifiableList(installedAtTargets); - } - @Override public String toString() { return "DistributionSet [getName()=" + getName() + ", getOptLockRevision()=" + getOptLockRevision() diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java index afa252de5..675fe1b0c 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaSoftwareModule.java @@ -176,14 +176,6 @@ public class JpaSoftwareModule extends AbstractJpaNamedVersionedEntity implement this.type = type; } - public List getMetadata() { - if (metadata == null) { - return Collections.emptyList(); - } - - return Collections.unmodifiableList(metadata); - } - @Override public String toString() { return "SoftwareModule [deleted=" + deleted + ", name=" + getName() + ", version=" + getVersion() diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java index a2c0802a0..b244c906e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/specifications/DistributionSetSpecification.java @@ -83,7 +83,6 @@ public final class DistributionSetSpecification { targetRoot.fetch(JpaDistributionSet_.modules, JoinType.LEFT); targetRoot.fetch(JpaDistributionSet_.tags, JoinType.LEFT); targetRoot.fetch(JpaDistributionSet_.type, JoinType.LEFT); - targetRoot.fetch(JpaDistributionSet_.metadata, JoinType.LEFT); query.distinct(true); return predicate; @@ -110,8 +109,8 @@ public final class DistributionSetSpecification { } /** - * {@link Specification} for retrieving {@link DistributionSet}s by - * "like name or like description or like version". + * {@link Specification} for retrieving {@link DistributionSet}s by "like + * name or like description or like version". * * @param subString * to be filtered on @@ -125,8 +124,8 @@ public final class DistributionSetSpecification { } /** - * {@link Specification} for retrieving {@link DistributionSet}s by - * "has at least one of the given tag names". + * {@link Specification} for retrieving {@link DistributionSet}s by "has at + * least one of the given tag names". * * @param tagNames * to be filtered on diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/repository/SpPermissionChecker.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/repository/SpPermissionChecker.java index 1bb103e51..5253f899a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/repository/SpPermissionChecker.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/repository/SpPermissionChecker.java @@ -14,23 +14,22 @@ import org.eclipse.hawkbit.im.authentication.PermissionService; import org.eclipse.hawkbit.im.authentication.SpPermission; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.validation.annotation.Validated; /** * Bean which contains all SP permissions. * - * - * - * */ -@Validated @Service public class SpPermissionChecker implements Serializable { private static final long serialVersionUID = 2757865286212875704L; - @Autowired private transient PermissionService permissionService; + @Autowired + SpPermissionChecker(final PermissionService permissionService) { + this.permissionService = permissionService; + } + /** * Gets the SP monitor View Permission. * diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/ErrorView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/ErrorView.java index 710d6d97c..ced736b96 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/ErrorView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/ErrorView.java @@ -32,23 +32,22 @@ import com.vaadin.ui.VerticalLayout; * * @see Navigator#setErrorView(Class) */ -@SuppressWarnings("serial") @SpringComponent @UIScope class ErrorView extends VerticalLayout implements View { + private static final long serialVersionUID = 1L; + private final Label message; - @Autowired - private I18N i18n; + private final I18N i18n; + + private final DashboardMenu dashboardMenu; @Autowired - private DashboardMenu dashboardMenu; - - /** - * Constructor. - */ - public ErrorView() { + ErrorView(final I18N i18n, final DashboardMenu dashboardMenu) { + this.i18n = i18n; + this.dashboardMenu = dashboardMenu; setMargin(true); message = new Label(); addComponent(message); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java index d0f7d4538..890f483ba 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java @@ -61,7 +61,8 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { private transient EventPushStrategy pushStrategy; - protected transient EventBus.SessionEventBus eventBus; + @Autowired + protected transient EventBus.UIEventBus eventBus; @Autowired private SpringViewProvider viewProvider; @@ -80,23 +81,13 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { @Autowired private ErrorView errorview; - /** - * Default constructor. - */ - @Autowired - public HawkbitUI(final EventBus.SessionEventBus eventBus) { - this.eventBus = eventBus; - } - /** * Constructor taking the push strategy. * * @param pushStrategy * the strategy to push events from the backend to the UI */ - @Autowired - public HawkbitUI(final EventPushStrategy pushStrategy, final EventBus.SessionEventBus eventBus) { - this(eventBus); + public HawkbitUI(final EventPushStrategy pushStrategy) { this.pushStrategy = pushStrategy; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java index cc880fca8..119b57b10 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/UiProperties.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.ui; +import java.io.Serializable; + import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @@ -17,13 +19,15 @@ import org.springframework.stereotype.Component; */ @Component @ConfigurationProperties("hawkbit.server.ui") -public class UiProperties { +public class UiProperties implements Serializable { + private static final long serialVersionUID = 1L; /** * Demo account login information. * */ - public static class Demo { + public static class Demo implements Serializable { + private static final long serialVersionUID = 1L; /** * Demo tenant. @@ -72,12 +76,15 @@ public class UiProperties { * documentation etc.). * */ - public static class Links { + public static class Links implements Serializable { + private static final long serialVersionUID = 1L; + /** * Configuration of UI documentation links. * */ - public static class Documentation { + public static class Documentation implements Serializable { + private static final long serialVersionUID = 1L; /** * Link to root of documentation and user guides. */ @@ -235,13 +242,15 @@ public class UiProperties { * Configuration of login view. * */ - public static class Login { + public static class Login implements Serializable { + private static final long serialVersionUID = 1L; /** * Cookie configuration for login credential cookie. * */ - public static class Cookie { + public static class Cookie implements Serializable { + private static final long serialVersionUID = 1L; /** * Secure cookie enabled. */ diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java index ffbb3b7bd..427eabf66 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java @@ -8,13 +8,19 @@ */ package org.eclipse.hawkbit.ui.artifacts; +import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; +import org.eclipse.hawkbit.repository.ArtifactManagement; +import org.eclipse.hawkbit.repository.EntityFactory; +import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.SpPermissionChecker; +import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.ui.HawkbitUI; import org.eclipse.hawkbit.ui.artifacts.details.ArtifactDetailsLayout; import org.eclipse.hawkbit.ui.artifacts.event.ArtifactDetailsEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; +import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria; import org.eclipse.hawkbit.ui.artifacts.footer.SMDeleteActionsLayout; import org.eclipse.hawkbit.ui.artifacts.smtable.SoftwareModuleTableLayout; import org.eclipse.hawkbit.ui.artifacts.smtype.SMTypeFilterLayout; @@ -25,8 +31,10 @@ import org.eclipse.hawkbit.ui.management.event.DragEvent; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.UINotification; +import org.eclipse.hawkbit.util.SPInfo; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.spring.events.EventBus; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -37,7 +45,7 @@ import com.vaadin.server.Page; import com.vaadin.server.Page.BrowserWindowResizeEvent; import com.vaadin.server.Page.BrowserWindowResizeListener; import com.vaadin.spring.annotation.SpringView; -import com.vaadin.spring.annotation.ViewScope; +import com.vaadin.spring.annotation.UIScope; import com.vaadin.ui.Alignment; import com.vaadin.ui.DragAndDropWrapper; import com.vaadin.ui.GridLayout; @@ -47,45 +55,33 @@ import com.vaadin.ui.VerticalLayout; /** * Display artifacts upload view. - * - * */ +@UIScope @SpringView(name = UploadArtifactView.VIEW_NAME, ui = HawkbitUI.class) -@ViewScope public class UploadArtifactView extends VerticalLayout implements View, BrowserWindowResizeListener { public static final String VIEW_NAME = "spUpload"; private static final long serialVersionUID = 8754632011301553682L; - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - @Autowired - private SpPermissionChecker permChecker; + private final SpPermissionChecker permChecker; - @Autowired - private I18N i18n; + private final I18N i18n; - @Autowired - private transient UINotification uiNotification; + private final UINotification uiNotification; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private SMTypeFilterLayout filterByTypeLayout; + private final SMTypeFilterLayout filterByTypeLayout; - @Autowired - private SoftwareModuleTableLayout smTableLayout; + private final SoftwareModuleTableLayout smTableLayout; - @Autowired - private ArtifactDetailsLayout artifactDetailsLayout; + private final ArtifactDetailsLayout artifactDetailsLayout; - @Autowired - private UploadLayout uploadLayout; + private final UploadLayout uploadLayout; - @Autowired - private SMDeleteActionsLayout deleteActionsLayout; + private final SMDeleteActionsLayout deleteActionsLayout; private VerticalLayout detailAndUploadLayout; @@ -94,8 +90,31 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW private GridLayout mainLayout; private DragAndDropWrapper dadw; - @Override - public void enter(final ViewChangeEvent event) { + @Autowired + UploadArtifactView(final UIEventBus eventBus, final SpPermissionChecker permChecker, final I18N i18n, + final UINotification uiNotification, final ArtifactUploadState artifactUploadState, + final TagManagement tagManagement, final EntityFactory entityFactory, + final SoftwareManagement softwareManagement, final UploadViewAcceptCriteria uploadViewAcceptCriteria, + final SPInfo spInfo, final ArtifactManagement artifactManagement) { + this.eventBus = eventBus; + this.permChecker = permChecker; + this.i18n = i18n; + this.uiNotification = uiNotification; + this.artifactUploadState = artifactUploadState; + this.filterByTypeLayout = new SMTypeFilterLayout(artifactUploadState, i18n, permChecker, eventBus, + tagManagement, entityFactory, uiNotification, softwareManagement, uploadViewAcceptCriteria); + this.smTableLayout = new SoftwareModuleTableLayout(i18n, permChecker, artifactUploadState, uiNotification, + eventBus, softwareManagement, entityFactory, uploadViewAcceptCriteria); + this.artifactDetailsLayout = new ArtifactDetailsLayout(i18n, eventBus, artifactUploadState, uiNotification, + artifactManagement); + this.uploadLayout = new UploadLayout(i18n, uiNotification, eventBus, artifactUploadState, spInfo, + artifactManagement); + this.deleteActionsLayout = new SMDeleteActionsLayout(i18n, permChecker, eventBus, uiNotification, + artifactUploadState, softwareManagement, uploadViewAcceptCriteria); + } + + @PostConstruct + void init() { buildLayout(); restoreState(); checkNoDataAvaialble(); @@ -109,7 +128,7 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW eventBus.unsubscribe(this); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final SoftwareModuleEvent event) { if (BaseEntityEventType.MINIMIZED == event.getEventType()) { minimizeSwTable(); @@ -118,7 +137,7 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW } } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final ArtifactDetailsEvent event) { if (event == ArtifactDetailsEvent.MINIMIZED) { minimizeArtifactoryDetails(); @@ -272,4 +291,9 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW } } + @Override + public void enter(final ViewChangeEvent event) { + // This view is constructed in the init() method() + } + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactDetailsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactDetailsLayout.java index f9713ef2e..4c5a10ef3 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactDetailsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactDetailsLayout.java @@ -14,9 +14,6 @@ import java.util.Date; import java.util.List; import java.util.Map; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.repository.ArtifactManagement; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.ArtifactDetailsEvent; @@ -34,14 +31,13 @@ import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.eclipse.hawkbit.ui.utils.SpringContextHelper; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; 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.addons.lazyquerycontainer.LazyQueryDefinition; import org.vaadin.spring.events.EventBus; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -50,8 +46,6 @@ import com.google.common.collect.Maps; import com.vaadin.data.Container; import com.vaadin.server.FontAwesome; import com.vaadin.shared.ui.label.ContentMode; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; @@ -65,12 +59,7 @@ import com.vaadin.ui.themes.ValoTheme; /** * Display the details of the artifacts for a selected software module. - * - * */ - -@SpringComponent -@ViewScope public class ArtifactDetailsLayout extends VerticalLayout { private static final long serialVersionUID = -5189069028037133891L; @@ -91,17 +80,13 @@ public class ArtifactDetailsLayout extends VerticalLayout { private static final String MD5HASH = "md5Hash"; - @Autowired - private I18N i18n; + private final I18N i18n; - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private transient UINotification uINotification; + private final UINotification uINotification; private Label titleOfArtifactDetails; @@ -111,15 +96,21 @@ public class ArtifactDetailsLayout extends VerticalLayout { private Table maxArtifactDetailsTable; - private boolean fullWindowMode = false; + private boolean fullWindowMode; - private boolean readOnly = false; + private boolean readOnly; + + private final transient ArtifactManagement artifactManagement; + + public ArtifactDetailsLayout(final I18N i18n, final UIEventBus eventBus, + final ArtifactUploadState artifactUploadState, final UINotification uINotification, + final ArtifactManagement artifactManagement) { + this.i18n = i18n; + this.eventBus = eventBus; + this.artifactUploadState = artifactUploadState; + this.uINotification = uINotification; + this.artifactManagement = artifactManagement; - /** - * Initialize the artifact details layout. - */ - @PostConstruct - private void init() { createComponents(); buildLayout(); eventBus.subscribe(this); @@ -133,18 +124,6 @@ public class ArtifactDetailsLayout extends VerticalLayout { } } - /** - * Initialize the artifact details layout in readonly mode (will not show - * the delete icon) . - * - * @param readOnly - * value true for read only. - */ - public void init(final boolean readOnly) { - this.readOnly = readOnly; - init(); - } - private void createComponents() { final String labelStr = artifactUploadState.getSelectedBaseSoftwareModule() .map(softwareModule -> HawkbitCommonUtil.getFormattedNameVersion(softwareModule.getName(), @@ -192,7 +171,7 @@ public class ArtifactDetailsLayout extends VerticalLayout { header.addComponents(titleOfArtifactDetails, maxMinButton); header.setComponentAlignment(titleOfArtifactDetails, Alignment.TOP_LEFT); header.setComponentAlignment(maxMinButton, Alignment.TOP_RIGHT); - header.setExpandRatio(titleOfArtifactDetails, 1.0f); + header.setExpandRatio(titleOfArtifactDetails, 1.0F); setSizeFull(); setImmediate(true); @@ -202,7 +181,7 @@ public class ArtifactDetailsLayout extends VerticalLayout { setComponentAlignment(header, Alignment.MIDDLE_CENTER); addComponent(artifactDetailsTable); setComponentAlignment(artifactDetailsTable, Alignment.MIDDLE_CENTER); - setExpandRatio(artifactDetailsTable, 1.0f); + setExpandRatio(artifactDetailsTable, 1.0F); } @@ -276,8 +255,6 @@ public class ArtifactDetailsLayout extends VerticalLayout { i18n.get("message.delete.artifact", new Object[] { fileName }), i18n.get("button.ok"), i18n.get("button.cancel"), ok -> { if (ok) { - final ArtifactManagement artifactManagement = SpringContextHelper - .getBean(ArtifactManagement.class); artifactManagement.deleteArtifact(id); uINotification.displaySuccess(i18n.get("message.artifact.deleted", fileName)); if (artifactUploadState.getSelectedBaseSwModuleId().isPresent()) { @@ -308,15 +285,15 @@ public class ArtifactDetailsLayout extends VerticalLayout { table.setColumnHeader(ACTION, i18n.get("upload.action")); } - table.setColumnExpandRatio(PROVIDED_FILE_NAME, 3.5f); + table.setColumnExpandRatio(PROVIDED_FILE_NAME, 3.5F); table.setColumnExpandRatio(SIZE, 2f); if (fullWindowMode) { - table.setColumnExpandRatio(SHA1HASH, 2.8f); - table.setColumnExpandRatio(MD5HASH, 2.4f); + table.setColumnExpandRatio(SHA1HASH, 2.8F); + table.setColumnExpandRatio(MD5HASH, 2.4F); } - table.setColumnExpandRatio(CREATE_MODIFIED_DATE_UPLOAD, 3f); + table.setColumnExpandRatio(CREATE_MODIFIED_DATE_UPLOAD, 3F); if (!readOnly) { - table.setColumnExpandRatio(ACTION, 2.5f); + table.setColumnExpandRatio(ACTION, 2.5F); } table.setVisibleColumns(getVisbleColumns().toArray()); @@ -460,7 +437,7 @@ public class ArtifactDetailsLayout extends VerticalLayout { setVisible(false); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final SoftwareModuleEvent softwareModuleEvent) { if (BaseEntityEventType.SELECTED_ENTITY == softwareModuleEvent.getEventType()) { UI.getCurrent().access(() -> { @@ -486,14 +463,6 @@ public class ArtifactDetailsLayout extends VerticalLayout { } } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); // It's good manners to do this, even though - // we should be - // automatically unsubscribed when the UI is - // garbage collected - } - public Table getArtifactDetailsTable() { return artifactDetailsTable; } 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 2fabb3bb9..98d9b49c8 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,10 +14,13 @@ import java.util.Map; import org.eclipse.hawkbit.ui.common.AbstractAcceptCriteria; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; +import org.eclipse.hawkbit.ui.utils.UINotification; +import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus.UIEventBus; import com.google.common.collect.Maps; import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; +import com.vaadin.spring.annotation.UIScope; import com.vaadin.ui.Component; /** @@ -25,7 +28,7 @@ import com.vaadin.ui.Component; * */ @SpringComponent -@ViewScope +@UIScope public class UploadViewAcceptCriteria extends AbstractAcceptCriteria { private static final long serialVersionUID = 5158811326115667378L; @@ -34,6 +37,11 @@ public class UploadViewAcceptCriteria extends AbstractAcceptCriteria { private static final Map DROP_HINTS_CONFIGS = createDropHintConfigurations(); + @Autowired + UploadViewAcceptCriteria(final UINotification uiNotification, final UIEventBus eventBus) { + super(uiNotification, eventBus); + } + @Override protected String getComponentId(final Component component) { String id = component.getId(); 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 3caea342b..b6bdb4546 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 @@ -10,22 +10,24 @@ package org.eclipse.hawkbit.ui.artifacts.footer; import java.util.Set; +import org.eclipse.hawkbit.repository.SoftwareManagement; +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.common.table.AbstractTable; import org.eclipse.hawkbit.ui.management.event.DragEvent; +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; -import org.springframework.beans.factory.annotation.Autowired; +import org.eclipse.hawkbit.ui.utils.UINotification; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Component; import com.vaadin.ui.Table; import com.vaadin.ui.Table.TableTransferable; @@ -33,24 +35,30 @@ import com.vaadin.ui.UI; /** * Upload view footer layout implementation. - * */ -@SpringComponent -@ViewScope public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout { private static final long serialVersionUID = -3273982053389866299L; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private UploadViewConfirmationWindowLayout uploadViewConfirmationWindowLayout; + private final UploadViewConfirmationWindowLayout uploadViewConfirmationWindowLayout; - @Autowired - private UploadViewAcceptCriteria uploadViewAcceptCriteria; + private final UploadViewAcceptCriteria uploadViewAcceptCriteria; - @EventBusListenerMethod(scope = EventScope.SESSION) + public SMDeleteActionsLayout(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus, + final UINotification notification, final ArtifactUploadState artifactUploadState, + final SoftwareManagement softwareManagement, final UploadViewAcceptCriteria uploadViewAcceptCriteria) { + super(i18n, permChecker, eventBus, notification); + this.artifactUploadState = artifactUploadState; + this.uploadViewConfirmationWindowLayout = new UploadViewConfirmationWindowLayout(i18n, eventBus, + softwareManagement, artifactUploadState); + this.uploadViewAcceptCriteria = uploadViewAcceptCriteria; + + init(); + } + + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final UploadArtifactUIEvent event) { if (isSoftwareEvent(event) || isSoftwareTypeEvent(event)) { @@ -84,7 +92,7 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout { || event == UploadArtifactUIEvent.DISCARD_DELETE_SOFTWARE_TYPE; } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final DragEvent event) { if (event == DragEvent.HIDE_DROP_HINT) { UI.getCurrent().access(() -> hideDropHints()); @@ -134,9 +142,8 @@ public class SMDeleteActionsLayout extends AbstractDeleteActionsLayout { final String swModuleTypeName = sourceComponent.getId() .replace(UIComponentIdProvider.UPLOAD_TYPE_BUTTON_PREFIX, ""); - if (artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().isPresent() - && artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().get().getName() - .equalsIgnoreCase(swModuleTypeName)) { + if (artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType() + .map(type -> type.getName().equalsIgnoreCase(swModuleTypeName)).orElse(false)) { notification.displayValidationError( i18n.get("message.swmodule.type.check.delete", new Object[] { swModuleTypeName })); } else { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/UploadViewConfirmationWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/UploadViewConfirmationWindowLayout.java index 3d875e450..710ef710b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/UploadViewConfirmationWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/footer/UploadViewConfirmationWindowLayout.java @@ -20,30 +20,24 @@ import org.eclipse.hawkbit.ui.artifacts.state.CustomFile; import org.eclipse.hawkbit.ui.common.confirmwindow.layout.AbstractConfirmationWindowLayout; import org.eclipse.hawkbit.ui.common.confirmwindow.layout.ConfirmationTab; 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.UIComponentIdProvider; -import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus.UIEventBus; import com.google.common.collect.Maps; import com.vaadin.data.Container; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; import com.vaadin.server.FontAwesome; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Table.Align; /** * Abstract layout of confirm actions window. - * - * - * */ -@SpringComponent -@ViewScope public class UploadViewConfirmationWindowLayout extends AbstractConfirmationWindowLayout { private static final long serialVersionUID = 1804036019105286988L; @@ -56,11 +50,16 @@ public class UploadViewConfirmationWindowLayout extends AbstractConfirmationWind private static final String DISCARD = "Discard"; - @Autowired - private transient SoftwareManagement softwareManagement; + private final transient SoftwareManagement softwareManagement; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; + + UploadViewConfirmationWindowLayout(final I18N i18n, final UIEventBus eventBus, + final SoftwareManagement softwareManagement, final ArtifactUploadState artifactUploadState) { + super(i18n, eventBus); + this.softwareManagement = softwareManagement; + this.artifactUploadState = artifactUploadState; + } @Override protected Map getConfimrationTabs() { 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 8c9898639..8b07c3f8d 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 @@ -8,8 +8,6 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtable; -import javax.annotation.PostConstruct; - import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.SoftwareManagement; import org.eclipse.hawkbit.repository.model.SoftwareModule; @@ -29,12 +27,10 @@ import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SpringContextHelper; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.eclipse.hawkbit.ui.utils.UINotification; -import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.spring.events.EventBus; +import org.vaadin.spring.events.EventBus.UIEventBus; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.ComboBox; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.FormLayout; @@ -46,26 +42,19 @@ import com.vaadin.ui.themes.ValoTheme; /** * Generates window for Software module add or update. */ -@SpringComponent -@ViewScope public class SoftwareModuleAddUpdateWindow extends CustomComponent { private static final long serialVersionUID = -5217675246477211483L; - @Autowired - private I18N i18n; + private final I18N i18n; - @Autowired - private transient UINotification uiNotifcation; + private final UINotification uiNotifcation; - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - @Autowired - private transient SoftwareManagement softwareManagement; + private final transient SoftwareManagement softwareManagement; - @Autowired - private transient EntityFactory entityFactory; + private final transient EntityFactory entityFactory; private TextField nameTextField; @@ -77,14 +66,23 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { private TextArea descTextArea; - private CommonDialogWindow window; - private Boolean editSwModule = Boolean.FALSE; private Long baseSwModuleId; private FormLayout formLayout; + public SoftwareModuleAddUpdateWindow(final I18N i18n, final UINotification uiNotifcation, final UIEventBus eventBus, + final SoftwareManagement softwareManagement, final EntityFactory entityFactory) { + this.i18n = i18n; + this.uiNotifcation = uiNotifcation; + this.eventBus = eventBus; + this.softwareManagement = softwareManagement; + this.entityFactory = entityFactory; + + createRequiredComponents(); + } + /** * Save or update the sw module. */ @@ -104,14 +102,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { } } - /** - * Initialize Distribution Add and Edit Window. - */ - @PostConstruct - void init() { - createRequiredComponents(); - } - /** * Create window for new software module. * @@ -133,9 +123,9 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { public CommonDialogWindow createUpdateSoftwareModuleWindow(final Long baseSwModuleId) { this.baseSwModuleId = baseSwModuleId; resetComponents(); + populateTypeNameCombo(); populateValuesOfSwModule(); - createWindow(); - return window; + return createWindow(); } private void createRequiredComponents() { @@ -157,7 +147,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { typeComboBox.setStyleName(SPUIDefinitions.COMBO_BOX_SPECIFIC_STYLE + " " + ValoTheme.COMBOBOX_TINY); typeComboBox.setNewItemsAllowed(Boolean.FALSE); typeComboBox.setImmediate(Boolean.TRUE); - populateTypeNameCombo(); } private TextField createTextField(final String in18Key, final String id) { @@ -181,7 +170,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { editSwModule = Boolean.FALSE; } - private void createWindow() { + private CommonDialogWindow createWindow() { final Label madatoryStarLabel = new Label("*"); madatoryStarLabel.setStyleName("v-caption v-required-field-indicator"); madatoryStarLabel.setWidth(null); @@ -198,7 +187,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { setCompositionRoot(formLayout); - window = new WindowBuilder(SPUIDefinitions.CREATE_UPDATE_WINDOW) + final CommonDialogWindow window = new WindowBuilder(SPUIDefinitions.CREATE_UPDATE_WINDOW) .caption(i18n.get("upload.caption.add.new.swmodule")).content(this).layout(formLayout).i18n(i18n) .saveDialogCloseListener(new SaveOnDialogCloseListener()).buildCommonDialogWindow(); nameTextField.setEnabled(!editSwModule); @@ -206,6 +195,8 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { typeComboBox.setEnabled(!editSwModule); typeComboBox.focus(); + + return window; } private void addNewBaseSoftware() { @@ -271,6 +262,7 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { : HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getVendor())); descTextArea.setValue(swModle.getDescription() == null ? HawkbitCommonUtil.SP_STRING_EMPTY : HawkbitCommonUtil.trimAndNullIfEmpty(swModle.getDescription())); + if (swModle.getType().isDeleted()) { typeComboBox.addItem(swModle.getType().getName()); } 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 6dd0b8983..18790f29e 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 @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.ui.artifacts.smtable; import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.SoftwareManagement; +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.MetaData; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; @@ -20,13 +21,12 @@ import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.distributions.event.MetadataEvent; import org.eclipse.hawkbit.ui.distributions.smtable.SwMetadataPopupLayout; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; -import org.springframework.beans.factory.annotation.Autowired; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; @@ -36,44 +36,39 @@ import com.vaadin.ui.Window; /** * Software module details. - * - * */ -@SpringComponent -@ViewScope public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDetailsLayout { private static final long serialVersionUID = -4900381301076646366L; - @Autowired - private SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow; + private final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private transient SoftwareManagement softwareManagement; + private final transient SoftwareManagement softwareManagement; - @Autowired - private SwMetadataPopupLayout swMetadataPopupLayout; + private final SwMetadataPopupLayout swMetadataPopupLayout; - @Autowired - private transient EntityFactory entityFactory; + private final SoftwareModuleMetadatadetailslayout swmMetadataTable; - private SoftwareModuleMetadatadetailslayout swmMetadataTable; + SoftwareModuleDetails(final I18N i18n, final UIEventBus eventBus, final SpPermissionChecker permissionChecker, + final SoftwareModuleAddUpdateWindow softwareModuleAddUpdateWindow, + final ArtifactUploadState artifactUploadState, final SoftwareManagement softwareManagement, + final SwMetadataPopupLayout swMetadataPopupLayout, final EntityFactory entityFactory) { + super(i18n, eventBus, permissionChecker, null); + this.softwareModuleAddUpdateWindow = softwareModuleAddUpdateWindow; + this.artifactUploadState = artifactUploadState; + this.softwareManagement = softwareManagement; + this.swMetadataPopupLayout = swMetadataPopupLayout; - /** - * softwareLayout Initialize the component. - */ - @Override - protected void init() { swmMetadataTable = new SoftwareModuleMetadatadetailslayout(); swmMetadataTable.init(getI18n(), getPermissionChecker(), softwareManagement, swMetadataPopupLayout, entityFactory); - super.init(); + addTabs(detailsTab); + restoreState(); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final MetadataEvent event) { UI.getCurrent().access(() -> { final MetaData softwareModuleMetadata = event.getMetaData(); @@ -168,7 +163,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta return artifactUploadState.isSwModuleTableMaximized(); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final SoftwareModuleEvent softwareModuleEvent) { onBaseEntityEvent(softwareModuleEvent); } @@ -194,8 +189,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta } private boolean isSoftwareModuleSelected(final SoftwareModule softwareModule) { - final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().isPresent() - ? artifactUploadState.getSelectedBaseSoftwareModule().get() : null; + final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().orElse(null); return softwareModule != null && selectedUploadSWModule != null && selectedUploadSWModule.getName().equals(softwareModule.getName()) && selectedUploadSWModule.getVersion().equals(softwareModule.getVersion()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java index 13f3addf5..c9f4589b9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleTable.java @@ -24,15 +24,17 @@ import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; import org.eclipse.hawkbit.ui.distributions.smtable.SwMetadataPopupLayout; 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.eclipse.hawkbit.ui.utils.TableColumn; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; -import org.springframework.beans.factory.annotation.Autowired; +import org.eclipse.hawkbit.ui.utils.UINotification; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -42,34 +44,41 @@ import com.vaadin.data.Item; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.server.FontAwesome; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button; import com.vaadin.ui.Table; import com.vaadin.ui.UI; /** - * Header of Software module table. + * The Software module table. */ -@ViewScope -@SpringComponent public class SoftwareModuleTable extends AbstractNamedVersionTable { private static final long serialVersionUID = 6469417305487144809L; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private transient SoftwareManagement softwareManagement; + private final transient SoftwareManagement softwareManagement; - @Autowired - private UploadViewAcceptCriteria uploadViewAcceptCriteria; + private final UploadViewAcceptCriteria uploadViewAcceptCriteria; - @Autowired - private SwMetadataPopupLayout swMetadataPopupLayout; + private final SwMetadataPopupLayout swMetadataPopupLayout; - @EventBusListenerMethod(scope = EventScope.SESSION) + SoftwareModuleTable(final UIEventBus eventBus, final I18N i18n, final UINotification uiNotification, + final ArtifactUploadState artifactUploadState, final SoftwareManagement softwareManagement, + final UploadViewAcceptCriteria uploadViewAcceptCriteria, + final SwMetadataPopupLayout swMetadataPopupLayout) { + super(eventBus, i18n, uiNotification); + this.artifactUploadState = artifactUploadState; + this.softwareManagement = softwareManagement; + this.uploadViewAcceptCriteria = uploadViewAcceptCriteria; + this.swMetadataPopupLayout = swMetadataPopupLayout; + + addNewContainerDS(); + setColumnProperties(); + setDataAvailable(getContainerDataSource().size() != 0); + } + + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final SMFilterEvent filterEvent) { UI.getCurrent().access(() -> { @@ -153,12 +162,12 @@ public class SoftwareModuleTable extends AbstractNamedVersionTable { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateSoftwareTypeLayout.class); - @Autowired - private transient SoftwareManagement swTypeManagementService; + private final transient SoftwareManagement swTypeManagementService; private String singleAssignStr; private String multiAssignStr; @@ -60,6 +60,13 @@ public class CreateUpdateSoftwareTypeLayout extends CreateUpdateTypeLayout(SoftwareModuleTypeBeanQuery.class)); + return HawkbitCommonUtil.createLazyQueryContainer(new BeanQueryFactory<>(SoftwareModuleTypeBeanQuery.class)); } @Override protected boolean isClickedByDefault(final String typeName) { - return artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType().isPresent() && artifactUploadState - .getSoftwareModuleFilters().getSoftwareModuleType().get().getName().equals(typeName); + return artifactUploadState.getSoftwareModuleFilters().getSoftwareModuleType() + .map(type -> type.getName().equals(typeName)).orElse(false); } @Override 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 cb7dfba33..94cac35d9 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 @@ -8,18 +8,20 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtype; -import javax.annotation.PostConstruct; - +import org.eclipse.hawkbit.repository.EntityFactory; +import org.eclipse.hawkbit.repository.SoftwareManagement; +import org.eclipse.hawkbit.repository.SpPermissionChecker; +import org.eclipse.hawkbit.repository.TagManagement; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; import org.eclipse.hawkbit.ui.common.filterlayout.AbstractFilterHeader; +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.UIComponentIdProvider; -import org.springframework.beans.factory.annotation.Autowired; +import org.eclipse.hawkbit.ui.utils.UINotification; +import org.vaadin.spring.events.EventBus.UIEventBus; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.UI; import com.vaadin.ui.Window; @@ -27,25 +29,22 @@ import com.vaadin.ui.Window; /** * Software module type filter buttons header. */ -@SpringComponent -@ViewScope public class SMTypeFilterHeader extends AbstractFilterHeader { private static final long serialVersionUID = -4855810338059032342L; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; + private final CreateUpdateSoftwareTypeLayout createUpdateSWTypeLayout; - @Autowired - private CreateUpdateSoftwareTypeLayout createUpdateSWTypeLayout; + SMTypeFilterHeader(final I18N i18n, final SpPermissionChecker permChecker, final UIEventBus eventBus, + final ArtifactUploadState artifactUploadState, final TagManagement tagManagement, + final EntityFactory entityFactory, final UINotification uiNotification, + final SoftwareManagement softwareManagement) { + super(permChecker, eventBus, i18n); + this.artifactUploadState = artifactUploadState; + this.createUpdateSWTypeLayout = new CreateUpdateSoftwareTypeLayout(i18n, tagManagement, entityFactory, eventBus, + permChecker, uiNotification, softwareManagement); - /** - * Initialize the components. - */ - @Override - @PostConstruct - protected void init() { - super.init(); if (permChecker.hasCreateDistributionPermission() || permChecker.hasUpdateDistributionPermission()) { createUpdateSWTypeLayout.init(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterLayout.java index 6bd57d945..7e4b23570 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterLayout.java @@ -8,57 +8,44 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtype; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - +import org.eclipse.hawkbit.repository.EntityFactory; +import org.eclipse.hawkbit.repository.SoftwareManagement; +import org.eclipse.hawkbit.repository.SpPermissionChecker; +import org.eclipse.hawkbit.repository.TagManagement; 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.filterlayout.AbstractFilterLayout; -import org.springframework.beans.factory.annotation.Autowired; -import org.vaadin.spring.events.EventBus; +import org.eclipse.hawkbit.ui.utils.I18N; +import org.eclipse.hawkbit.ui.utils.UINotification; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; - /** * Software module type filter buttons layout. - * - * - * */ -@SpringComponent -@ViewScope public class SMTypeFilterLayout extends AbstractFilterLayout { private static final long serialVersionUID = 1581066345157393665L; - @Autowired - private transient EventBus.SessionEventBus eventbus; + private final ArtifactUploadState artifactUploadState; - @Autowired - private SMTypeFilterHeader smTypeFilterHeader; + public SMTypeFilterLayout(final ArtifactUploadState artifactUploadState, final I18N i18n, + final SpPermissionChecker permChecker, final UIEventBus eventBus, final TagManagement tagManagement, + final EntityFactory entityFactory, final UINotification uiNotification, + final SoftwareManagement softwareManagement, final UploadViewAcceptCriteria uploadViewAcceptCriteria) { + super(new SMTypeFilterHeader(i18n, permChecker, eventBus, artifactUploadState, tagManagement, entityFactory, + uiNotification, softwareManagement), + new SMTypeFilterButtons(eventBus, artifactUploadState, uploadViewAcceptCriteria, softwareManagement)); - @Autowired - private SMTypeFilterButtons smTypeFilterButtons; + this.artifactUploadState = artifactUploadState; + restoreState(); - @Autowired - private SMTypeFilterButtonClick smTypeFilterButtonClick; - - @Autowired - private ArtifactUploadState artifactUploadState; - - /** - * Initialize the filter layout. - */ - @PostConstruct - void init() { - super.init(smTypeFilterHeader, smTypeFilterButtons, smTypeFilterButtonClick); - eventbus.subscribe(this); + eventBus.subscribe(this); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final UploadArtifactUIEvent event) { if (event == UploadArtifactUIEvent.HIDE_FILTER_BY_TYPE) { setVisible(false); @@ -68,21 +55,6 @@ public class SMTypeFilterLayout extends AbstractFilterLayout { } } - @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.filterlayout.SPFilterLayout# - * onLoadIsTypeFilterIsClosed() - */ @Override public Boolean onLoadIsTypeFilterIsClosed() { return artifactUploadState.isSwTypeFilterClosed(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java index ed2feef0a..869776667 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/ArtifactUploadState.java @@ -38,8 +38,7 @@ public class ArtifactUploadState implements ManagmentEntityState, Serializ private static final long serialVersionUID = 8273440375917450859L; - @Autowired - private SoftwareModuleFilters softwareModuleFilters; + private final SoftwareModuleFilters softwareModuleFilters; private final Map deleteSofwareModules = new HashMap<>(); @@ -75,6 +74,11 @@ public class ArtifactUploadState implements ManagmentEntityState, Serializ private final AtomicInteger numberOfFileUploadsFailed = new AtomicInteger(); + @Autowired + ArtifactUploadState(final SoftwareModuleFilters softwareModuleFilters) { + this.softwareModuleFilters = softwareModuleFilters; + } + public AtomicInteger getNumberOfFileUploadsFailed() { return numberOfFileUploadsFailed; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/CustomFile.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/CustomFile.java index 3dbbcc7db..df36f88a0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/CustomFile.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/state/CustomFile.java @@ -85,16 +85,6 @@ public class CustomFile implements Serializable { this.baseSoftwareModuleVersion = baseSoftwareModuleVersion; } - /** - * Default constructor with the immutable fileName set. - * - * @param fileName - * uploaded file name - */ - public CustomFile(final String fileName) { - this.fileName = fileName; - } - public String getBaseSoftwareModuleName() { return baseSoftwareModuleName; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationWindow.java index 83674c4ef..ea2c98e3c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationWindow.java @@ -35,10 +35,10 @@ 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.eclipse.hawkbit.ui.utils.SpringContextHelper; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.vaadin.spring.events.EventBus.UIEventBus; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; @@ -116,6 +116,10 @@ public class UploadConfirmationWindow implements Button.ClickListener { private final ArtifactUploadState artifactUploadState; + private final transient UIEventBus eventBus; + + private final transient ArtifactManagement artifactManagement; + /** * Initialize the upload confirmation window. * @@ -124,10 +128,12 @@ public class UploadConfirmationWindow implements Button.ClickListener { * @param artifactUploadState * reference of session variable {@link ArtifactUploadState}. */ - public UploadConfirmationWindow(final UploadLayout artifactUploadView, - final ArtifactUploadState artifactUploadState) { + UploadConfirmationWindow(final UploadLayout artifactUploadView, final ArtifactUploadState artifactUploadState, + final UIEventBus eventBus, final ArtifactManagement artifactManagement) { this.uploadLayout = artifactUploadView; this.artifactUploadState = artifactUploadState; + this.eventBus = eventBus; + this.artifactManagement = artifactManagement; i18n = artifactUploadView.getI18n(); createRequiredComponents(); buildLayout(); @@ -188,7 +194,6 @@ public class UploadConfirmationWindow implements Button.ClickListener { */ private void setWarningIcon(final Label warningIconLabel, final String fileName, final Object itemId) { final Item item = uploadDetailsTable.getItem(itemId); - final ArtifactManagement artifactManagement = SpringContextHelper.getBean(ArtifactManagement.class); if (HawkbitCommonUtil.trimAndNullIfEmpty(fileName) != null) { final Long baseSwId = (Long) item.getItemProperty(BASE_SOFTWARE_ID).getValue(); final List artifactList = artifactManagement.findByFilenameAndSoftwareModule(fileName, baseSwId); @@ -432,7 +437,7 @@ public class UploadConfirmationWindow implements Button.ClickListener { private void hideErrorIcon(final Label warningLabel, final int errorLabelCount, final int duplicateCount, final Label errorLabel, final String oldFileName, final Long currentSwId) { if (warningLabel == null && (errorLabelCount > 1 || (duplicateCount == 1 && errorLabelCount == 1))) { - final ArtifactManagement artifactManagement = SpringContextHelper.getBean(ArtifactManagement.class); + final List artifactList = artifactManagement.findByFilenameAndSoftwareModule(oldFileName, currentSwId); errorLabel.removeStyleName(SPUIStyleDefinitions.ERROR_LABEL); @@ -577,7 +582,6 @@ public class UploadConfirmationWindow implements Button.ClickListener { private void processArtifactUpload() { final List itemIds = (List) uploadDetailsTable.getItemIds(); if (preUploadValidation(itemIds)) { - final ArtifactManagement artifactManagement = SpringContextHelper.getBean(ArtifactManagement.class); Boolean refreshArtifactDetailsLayout = false; for (final String itemId : itemIds) { final String[] itemDet = itemId.split("/"); @@ -602,7 +606,7 @@ public class UploadConfirmationWindow implements Button.ClickListener { uploadLayout.clearFileList(); window.close(); // call upload result window - currentUploadResultWindow = new UploadResultWindow(uploadResultList, i18n); + currentUploadResultWindow = new UploadResultWindow(uploadResultList, i18n, eventBus); UI.getCurrent().addWindow(currentUploadResultWindow.getUploadResultsWindow()); currentUploadResultWindow.getUploadResultsWindow().addCloseListener(event -> onResultDetailsPopupClose()); uploadLayout.setResultPopupHeightWidth(Page.getCurrent().getBrowserWindowWidth(), diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadHandler.java index cd6d82194..8120863f9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadHandler.java @@ -11,8 +11,6 @@ package org.eclipse.hawkbit.ui.artifacts.upload; import java.io.IOException; import java.io.OutputStream; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.repository.exception.ArtifactUploadFailedException; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.UploadFileStatus; @@ -60,15 +58,15 @@ public class UploadHandler implements StreamVariable, Receiver, SucceededListene private final long maxSize; private final Upload upload; - private volatile String fileName = null; - private volatile String mimeType = null; - private volatile boolean streamingInterrupted = false; - private volatile boolean uploadInterrupted = false; - private volatile boolean aborted = false; + private volatile String fileName; + private volatile String mimeType; + private volatile boolean streamingInterrupted; + private volatile boolean uploadInterrupted; + private volatile boolean aborted; private String failureReason; private final I18N i18n; - private transient EventBus.SessionEventBus eventBus; + private transient EventBus.UIEventBus eventBus; private final SoftwareModule selectedSw; private SoftwareModule selectedSwForUpload; private final ArtifactUploadState artifactUploadState; @@ -85,21 +83,12 @@ public class UploadHandler implements StreamVariable, Receiver, SucceededListene this.mimeType = mimeType; this.selectedSw = selectedSw; this.i18n = SpringContextHelper.getBean(I18N.class); - this.eventBus = SpringContextHelper.getBean(EventBus.SessionEventBus.class); + this.eventBus = SpringContextHelper.getBean(EventBus.UIEventBus.class); this.artifactUploadState = SpringContextHelper.getBean(ArtifactUploadState.class); 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) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final UploadStatusEventType event) { if (event == UploadStatusEventType.ABORT_UPLOAD) { aborted = true; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java index 2808d0619..787882d7e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java @@ -17,10 +17,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.apache.commons.io.FileUtils; +import org.eclipse.hawkbit.repository.ArtifactManagement; import org.eclipse.hawkbit.repository.exception.ArtifactUploadFailedException; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; @@ -43,9 +41,9 @@ import org.eclipse.hawkbit.ui.utils.UINotification; import org.eclipse.hawkbit.util.SPInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.vaadin.spring.events.EventBus; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -58,8 +56,6 @@ import com.vaadin.server.FontAwesome; import com.vaadin.server.Page; import com.vaadin.server.StreamVariable; import com.vaadin.shared.ui.label.ContentMode; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.DragAndDropWrapper; @@ -74,36 +70,24 @@ import com.vaadin.ui.VerticalLayout; /** * Upload files layout. */ -@ViewScope -@SpringComponent public class UploadLayout extends VerticalLayout { - - /** - * - */ private static final String HTML_DIV = ""; private static final long serialVersionUID = -566164756606779220L; private static final Logger LOG = LoggerFactory.getLogger(UploadLayout.class); - @Autowired - private UploadStatusInfoWindow uploadInfoWindow; + private final UploadStatusInfoWindow uploadInfoWindow; - @Autowired - private I18N i18n; + private final I18N i18n; - @Autowired - private transient UINotification uiNotification; + private final UINotification uiNotification; - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private transient SPInfo spInfo; + private final transient SPInfo spInfo; private final List duplicateFileNamesList = new ArrayList<>(); @@ -115,7 +99,7 @@ public class UploadLayout extends VerticalLayout { private VerticalLayout dropAreaLayout; - private UI ui; + private final UI ui; private HorizontalLayout fileUploadLayout; @@ -125,11 +109,19 @@ public class UploadLayout extends VerticalLayout { private Button uploadStatusButton; - /** - * Initialize the upload layout. - */ - @PostConstruct - void init() { + private final transient ArtifactManagement artifactManagement; + + public UploadLayout(final I18N i18n, final UINotification uiNotification, final UIEventBus eventBus, + final ArtifactUploadState artifactUploadState, final SPInfo spInfo, + final ArtifactManagement artifactManagement) { + this.uploadInfoWindow = new UploadStatusInfoWindow(eventBus, artifactUploadState, i18n); + this.i18n = i18n; + this.uiNotification = uiNotification; + this.eventBus = eventBus; + this.artifactUploadState = artifactUploadState; + this.spInfo = spInfo; + this.artifactManagement = artifactManagement; + createComponents(); buildLayout(); restoreState(); @@ -137,7 +129,7 @@ public class UploadLayout extends VerticalLayout { ui = UI.getCurrent(); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final UploadArtifactUIEvent event) { if (event == UploadArtifactUIEvent.DELETED_ALL_SOFWARE) { ui.access(() -> updateActionCount()); @@ -150,32 +142,23 @@ public class UploadLayout extends VerticalLayout { } } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final UploadStatusEvent event) { if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_STARTED) { - ui.access(() -> onStartOfUpload()); + ui.access(this::onStartOfUpload); } else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_FAILED) { ui.access(() -> onUploadFailure(event)); } else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_FINISHED) { - ui.access(() -> onUploadCompletion()); + ui.access(this::onUploadCompletion); } else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_SUCCESSFUL) { ui.access(() -> onUploadSuccess(event)); } else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_STREAMING_FAILED) { ui.access(() -> onUploadStreamingFailure(event)); } else if (event.getUploadProgressEventType() == UploadStatusEventType.UPLOAD_STREAMING_FINISHED) { - ui.access(() -> onUploadStreamingSuccess()); + ui.access(this::onUploadStreamingSuccess); } } - @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); - } - private void createComponents() { createUploadStatusButton(); createProcessButton(); @@ -643,7 +626,8 @@ public class UploadLayout extends VerticalLayout { if (artifactUploadState.getFileSelected().isEmpty()) { uiNotification.displayValidationError(i18n.get("message.error.noFileSelected")); } else { - currentUploadConfirmationwindow = new UploadConfirmationWindow(this, artifactUploadState); + currentUploadConfirmationwindow = new UploadConfirmationWindow(this, artifactUploadState, eventBus, + artifactManagement); UI.getCurrent().addWindow(currentUploadConfirmationwindow.getUploadConfrimationWindow()); setConfirmationPopupHeightWidth(Page.getCurrent().getBrowserWindowWidth(), Page.getCurrent().getBrowserWindowHeight()); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadResultWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadResultWindow.java index 9b27b07f0..74a2275e7 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadResultWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadResultWindow.java @@ -19,7 +19,6 @@ 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.eclipse.hawkbit.ui.utils.SpringContextHelper; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.vaadin.spring.events.EventBus; @@ -37,11 +36,6 @@ import com.vaadin.ui.themes.ValoTheme; /** * Upload status popup. - * - * - * - * - * */ public class UploadResultWindow implements Button.ClickListener { @@ -66,9 +60,8 @@ public class UploadResultWindow implements Button.ClickListener { private static final String UPLOAD_RESULT = "uploadResult"; private static final String REASON = "reason"; - - private transient EventBus.SessionEventBus eventBus; + private transient EventBus.UIEventBus eventBus; /** * Initialize upload status popup. @@ -78,10 +71,10 @@ public class UploadResultWindow implements Button.ClickListener { * @param i18n * I18N */ - public UploadResultWindow(final List uploadResultList, final I18N i18n) { + UploadResultWindow(final List uploadResultList, final I18N i18n, final EventBus.UIEventBus eventBus) { this.uploadResultList = uploadResultList; this.i18n = i18n; - eventBus = SpringContextHelper.getBean( EventBus.SessionEventBus.class); + this.eventBus = eventBus; createComponents(); createLayout(); } @@ -190,7 +183,7 @@ public class UploadResultWindow implements Button.ClickListener { if (event.getComponent().getId().equals(UIComponentIdProvider.UPLOAD_ARTIFACT_RESULT_CLOSE) || event.getComponent().getId().equals(UIComponentIdProvider.UPLOAD_ARTIFACT_RESULT_POPUP_CLOSE)) { uploadResultsWindow.close(); - //close upload status popup if open + // close upload status popup if open eventBus.publish(this, UploadArtifactUIEvent.ARTIFACT_RESULT_POPUP_CLOSED); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusInfoWindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusInfoWindow.java index 31ff2b589..0d3e9e989 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusInfoWindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusInfoWindow.java @@ -11,9 +11,6 @@ package org.eclipse.hawkbit.ui.artifacts.upload; import java.util.List; import java.util.stream.Collectors; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; - import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.event.UploadFileStatus; @@ -28,8 +25,8 @@ import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; -import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.spring.events.EventBus; +import org.vaadin.spring.events.EventBus.UIEventBus; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -38,8 +35,6 @@ import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; import com.vaadin.server.FontAwesome; import com.vaadin.shared.ui.window.WindowMode; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Grid; @@ -58,18 +53,13 @@ import elemental.json.JsonValue; /** * Shows upload status during upload. */ -@ViewScope -@SpringComponent public class UploadStatusInfoWindow extends Window { - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private I18N i18n; + private final I18N i18n; private static final String PROGRESS = "Progress"; @@ -81,17 +71,17 @@ public class UploadStatusInfoWindow extends Window { private static final long serialVersionUID = 1L; - private Grid grid; + private final Grid grid; - private IndexedContainer uploads; + private final IndexedContainer uploads; - private volatile boolean errorOccured = false; + private volatile boolean errorOccured; - private volatile boolean uploadAborted = false; + private volatile boolean uploadAborted; private Button minimizeButton; - private VerticalLayout mainLayout; + private final VerticalLayout mainLayout; private Label windowCaption; @@ -99,15 +89,14 @@ public class UploadStatusInfoWindow extends Window { private Button resizeButton; - private UI ui; + private final UI ui; private ConfirmationDialog confirmDialog; - /** - * Default Constructor. - */ - @PostConstruct - void init() { + UploadStatusInfoWindow(final UIEventBus eventBus, final ArtifactUploadState artifactUploadState, final I18N i18n) { + this.eventBus = eventBus; + this.artifactUploadState = artifactUploadState; + this.i18n = i18n; setPopupProperties(); createStatusPopupHeaderComponents(); @@ -130,7 +119,7 @@ public class UploadStatusInfoWindow extends Window { createConfirmDialog(); } - @EventBusListenerMethod(scope = EventScope.SESSION) + @EventBusListenerMethod(scope = EventScope.UI) void onEvent(final UploadStatusEvent event) { final UploadFileStatus uploadStatus = event.getUploadStatus(); @@ -166,15 +155,6 @@ public class UploadStatusInfoWindow extends Window { uploadStarted(event.getUploadStatus().getFileName(), event.getUploadStatus().getSoftwareModule()); } - @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); - } - private void restoreState() { final Indexed container = grid.getContainerDataSource(); if (container.getItemIds().isEmpty()) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java index eec189eaf..82e003be8 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadStatusObject.java @@ -27,15 +27,7 @@ public class UploadStatusObject implements Serializable { private String reason; private final SoftwareModule selectedSoftwareModule; - public UploadStatusObject(final String status, final Double progress, final String fileName, final String reason, - final SoftwareModule selectedSoftwareModule) { - this(fileName, selectedSoftwareModule); - this.status = status; - this.progress = progress; - this.reason = reason; - } - - public UploadStatusObject(final String fileName, final SoftwareModule selectedSoftwareModule) { + UploadStatusObject(final String fileName, final SoftwareModule selectedSoftwareModule) { this.filename = fileName; this.selectedSoftwareModule = selectedSoftwareModule; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java index e748a4072..29c8c1ff9 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerLayout.java @@ -62,7 +62,7 @@ public class ColorPickerLayout extends GridLayout { addComponent(colorSelect, 1, 1, 1, 3); } - public void init() { + private void init() { selectors = new HashSet<>(); selectedColor = getDefaultColor(); @@ -80,7 +80,7 @@ public class ColorPickerLayout extends GridLayout { selectors.add(colorSelect); } - public Slider createRGBSlider(final String caption, final String styleName) { + private Slider createRGBSlider(final String caption, final String styleName) { final Slider slider = new Slider(caption, 0, 255); slider.setImmediate(true); slider.setWidth("150px"); 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 a5f2e195a..edf9fce53 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 @@ -18,8 +18,8 @@ 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 org.vaadin.spring.events.EventBus.UIEventBus; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.acceptcriteria.ServerSideCriterion; @@ -39,11 +39,14 @@ public abstract class AbstractAcceptCriteria extends ServerSideCriterion { private int previousRowCount; - @Autowired - protected transient UINotification uiNotification; + protected UINotification uiNotification; - @Autowired - protected transient EventBus.SessionEventBus eventBus; + protected transient EventBus.UIEventBus eventBus; + + protected AbstractAcceptCriteria(final UINotification uiNotification, final UIEventBus eventBus) { + this.uiNotification = uiNotification; + this.eventBus = eventBus; + } @Override public boolean accept(final DragAndDropEvent dragEvent) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java index 71434cdff..ca71d7c25 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java @@ -11,8 +11,7 @@ package org.eclipse.hawkbit.ui.common; import java.util.List; import java.util.Set; -import javax.annotation.PostConstruct; - +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.model.MetaData; import org.eclipse.hawkbit.repository.model.NamedVersionedEntity; @@ -30,8 +29,8 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; 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.EventBus.UIEventBus; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; @@ -73,14 +72,11 @@ public abstract class AbstractMetadataPopupLayout extends private static final long serialVersionUID = 4862529368471627190L; - @Autowired - private I18N i18n; + private final I18N i18n; - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - @Autowired - private SpPermissionChecker permissionChecker; + private final SpPermissionChecker permissionChecker; private T selectedBaseEntity; @@ -65,37 +60,38 @@ public abstract class AbstractTableDetailsLayout extends private Button manageMetadataBtn; - private TabSheet detailsTab; + protected TabSheet detailsTab; - private VerticalLayout detailsLayout; + private final VerticalLayout detailsLayout; - private VerticalLayout descriptionLayout; + private final VerticalLayout descriptionLayout; - private VerticalLayout logLayout; + private final VerticalLayout logLayout; - private VerticalLayout attributesLayout; + private final VerticalLayout attributesLayout; - /** - * Initialize components. - */ - @PostConstruct - protected void init() { + protected final ManagementUIState managementUIState; + + protected AbstractTableDetailsLayout(final I18N i18n, final UIEventBus eventBus, + final SpPermissionChecker permissionChecker, final ManagementUIState managementUIState) { + this.i18n = i18n; + this.eventBus = eventBus; + this.permissionChecker = permissionChecker; + this.managementUIState = managementUIState; + detailsLayout = getTabLayout(); + descriptionLayout = getTabLayout(); + logLayout = getTabLayout(); + attributesLayout = getTabLayout(); createComponents(); buildLayout(); - restoreState(); eventBus.subscribe(this); } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - protected SpPermissionChecker getPermissionChecker() { return permissionChecker; } - protected EventBus.SessionEventBus getEventBus() { + protected EventBus.UIEventBus getEventBus() { return eventBus; } @@ -153,7 +149,6 @@ public abstract class AbstractTableDetailsLayout extends detailsTab.setHeight(90, Unit.PERCENTAGE); detailsTab.addStyleName(SPUIStyleDefinitions.DETAILS_LAYOUT_STYLE); detailsTab.setId(getTabSheetId()); - addTabs(detailsTab); } private void buildLayout() { @@ -196,7 +191,7 @@ public abstract class AbstractTableDetailsLayout extends caption.setValue(HawkbitCommonUtil.getSoftwareModuleName(headerCaption, value)); } - private void restoreState() { + protected void restoreState() { if (onLoadIsTableRowSelected()) { populateData(null); editButton.setEnabled(true); @@ -276,22 +271,18 @@ public abstract class AbstractTableDetailsLayout extends } protected VerticalLayout createLogLayout() { - logLayout = getTabLayout(); return logLayout; } protected VerticalLayout createAttributesLayout() { - attributesLayout = getTabLayout(); return attributesLayout; } protected VerticalLayout createDetailsLayout() { - detailsLayout = getTabLayout(); return detailsLayout; } protected VerticalLayout createDescriptionLayout() { - descriptionLayout = getTabLayout(); return descriptionLayout; } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java index b4fd28f3c..b834509ab 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/DistributionSetMetadatadetailslayout.java @@ -24,8 +24,6 @@ import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; import com.vaadin.ui.Button; import com.vaadin.ui.Label; import com.vaadin.ui.Table; @@ -33,13 +31,9 @@ import com.vaadin.ui.UI; import com.vaadin.ui.themes.ValoTheme; /** - * * DistributionSet Metadata details layout. * */ - -@SpringComponent -@ViewScope public class DistributionSetMetadatadetailslayout extends Table { private static final long serialVersionUID = 2913758299611837718L; @@ -48,27 +42,19 @@ public class DistributionSetMetadatadetailslayout extends Table { private static final String VIEW = "view"; - private transient DistributionSetManagement distributionSetManagement; + private final transient DistributionSetManagement distributionSetManagement; - private DsMetadataPopupLayout dsMetadataPopupLayout; + private final DsMetadataPopupLayout dsMetadataPopupLayout; - private SpPermissionChecker permissionChecker; + private final SpPermissionChecker permissionChecker; - private transient EntityFactory entityFactory; + private final transient EntityFactory entityFactory; - private I18N i18n; + private final I18N i18n; private Long selectedDistSetId; - /** - * - * @param i18n - * @param permissionChecker - * @param distributionSetManagement - * @param dsMetadataPopupLayout - * @param entityFactory - */ - public void init(final I18N i18n, final SpPermissionChecker permissionChecker, + public DistributionSetMetadatadetailslayout(final I18N i18n, final SpPermissionChecker permissionChecker, final DistributionSetManagement distributionSetManagement, final DsMetadataPopupLayout dsMetadataPopupLayout, final EntityFactory entityFactory) { this.i18n = i18n; 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 e1398a6c9..c0eb14347 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 @@ -26,11 +26,10 @@ import org.eclipse.hawkbit.ui.management.event.DistributionTableEvent; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; -import org.eclipse.hawkbit.ui.utils.SpringContextHelper; import org.eclipse.hawkbit.ui.utils.UINotification; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.vaadin.spring.events.EventBus.SessionEventBus; +import org.vaadin.spring.events.EventBus; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; @@ -46,9 +45,6 @@ import com.vaadin.ui.themes.ValoTheme; /** * Software module details table. * - * - * - * */ public class SoftwareModuleDetailsTable extends Table { @@ -64,18 +60,18 @@ public class SoftwareModuleDetailsTable extends Table { private boolean isTargetAssigned; - private boolean isUnassignSoftModAllowed; - private SpPermissionChecker permissionChecker; + private final boolean isUnassignSoftModAllowed; + private final SpPermissionChecker permissionChecker; - private transient DistributionSetManagement distributionSetManagement; + private final transient DistributionSetManagement distributionSetManagement; - private I18N i18n; + private final I18N i18n; - private transient SessionEventBus eventBus; + private final transient EventBus.UIEventBus eventBus; - private transient ManageDistUIState manageDistUIState; + private final ManageDistUIState manageDistUIState; - private transient UINotification uiNotification; + private final UINotification uiNotification; /** * Initialize software module table- to be displayed in details layout. @@ -94,16 +90,17 @@ public class SoftwareModuleDetailsTable extends Table { * @param manageDistUIState * ManageDistUIState */ - public void init(final I18N i18n, final boolean isUnassignSoftModAllowed, + public SoftwareModuleDetailsTable(final I18N i18n, final boolean isUnassignSoftModAllowed, final SpPermissionChecker permissionChecker, final DistributionSetManagement distributionSetManagement, - final SessionEventBus eventBus, final ManageDistUIState manageDistUIState) { + final EventBus.UIEventBus eventBus, final ManageDistUIState manageDistUIState, + final UINotification uiNotification) { this.i18n = i18n; this.isUnassignSoftModAllowed = isUnassignSoftModAllowed; this.permissionChecker = permissionChecker; this.distributionSetManagement = distributionSetManagement; this.manageDistUIState = manageDistUIState; this.eventBus = eventBus; - this.uiNotification = SpringContextHelper.getBean(UINotification.class); + this.uiNotification = uiNotification; createSwModuleTable(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java index 5ad02876d..49fc1b0a0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java @@ -25,7 +25,7 @@ import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.ViewScope; +import com.vaadin.spring.annotation.UIScope; import com.vaadin.ui.Button; import com.vaadin.ui.Table; import com.vaadin.ui.UI; @@ -38,7 +38,7 @@ import com.vaadin.ui.themes.ValoTheme; */ @SpringComponent -@ViewScope +@UIScope public class SoftwareModuleMetadatadetailslayout extends Table { private static final long serialVersionUID = 2913758299611838818L; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/TargetFilterQueryDetailsTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/TargetFilterQueryDetailsTable.java index 01a5c174a..ef4bc84d2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/TargetFilterQueryDetailsTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/TargetFilterQueryDetailsTable.java @@ -18,19 +18,13 @@ import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import com.vaadin.data.Container; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; -import com.vaadin.spring.annotation.SpringComponent; -import com.vaadin.spring.annotation.VaadinSessionScope; import com.vaadin.ui.Table; import com.vaadin.ui.themes.ValoTheme; /** - * * DistributionSet TargetFilterQuery table * */ - -@SpringComponent -@VaadinSessionScope public class TargetFilterQueryDetailsTable extends Table { private static final long serialVersionUID = 2913758299611837718L; @@ -38,13 +32,9 @@ public class TargetFilterQueryDetailsTable extends Table { private static final String TFQ_NAME = "name"; private static final String TFQ_QUERY = "query"; - private I18N i18n; + private final I18N i18n; - /** - * - * @param i18n - */ - public void init(final I18N i18n) { + public TargetFilterQueryDetailsTable(final I18N i18n) { this.i18n = i18n; createTable(); } @@ -52,7 +42,8 @@ public class TargetFilterQueryDetailsTable extends Table { /** * Populate software module metadata. * - * @param distributionSet the selected distribution set + * @param distributionSet + * the selected distribution set */ public void populateTableByDistributionSet(final DistributionSet distributionSet) { removeAllItems(); @@ -60,11 +51,11 @@ public class TargetFilterQueryDetailsTable extends Table { return; } - Container dataSource = getContainerDataSource(); - List filters = distributionSet.getAutoAssignFilters(); + final Container dataSource = getContainerDataSource(); + final List filters = distributionSet.getAutoAssignFilters(); filters.forEach(query -> { - Object itemId = dataSource.addItem(); - Item item = dataSource.getItem(itemId); + final Object itemId = dataSource.addItem(); + final Item item = dataSource.getItem(itemId); item.getItemProperty(TFQ_NAME).setValue(query.getName()); item.getItemProperty(TFQ_QUERY).setValue(query.getQuery()); }); @@ -103,5 +94,4 @@ public class TargetFilterQueryDetailsTable extends Table { setColumnHeader(TFQ_QUERY, i18n.get("header.target.filter.query")); } - } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtonClickBehaviour.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtonClickBehaviour.java index e035b8050..c58c3890b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtonClickBehaviour.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterButtonClickBehaviour.java @@ -14,10 +14,6 @@ import com.vaadin.ui.Button; /** * Abstract button click behaviour of filter buttons layout. - * - * - * - * */ public abstract class AbstractFilterButtonClickBehaviour implements Serializable { 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 621bf3b8f..5f2585b25 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 @@ -13,17 +13,15 @@ import static org.eclipse.hawkbit.ui.utils.SPUIDefinitions.NO_TAG_BUTTON_ID; 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 org.vaadin.spring.events.EventBus.UIEventBus; import com.vaadin.data.Item; import com.vaadin.event.dd.DropHandler; @@ -45,28 +43,19 @@ public abstract class AbstractFilterButtons extends Table { protected static final String FILTER_BUTTON_COLUMN = "filterButton"; - @Autowired - protected transient EventBus.SessionEventBus eventBus; + protected transient EventBus.UIEventBus eventBus; - private AbstractFilterButtonClickBehaviour filterButtonClickBehaviour; + protected final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour; + + protected AbstractFilterButtons(final UIEventBus eventBus, + final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { + this.eventBus = eventBus; - /** - * Initialize layout of filter buttons. - * - * @param filterButtonClickBehaviour - * click behaviour of filter buttons. - */ - public void init(final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { this.filterButtonClickBehaviour = filterButtonClickBehaviour; createTable(); eventBus.subscribe(this); } - @PreDestroy - void destroy() { - eventBus.unsubscribe(this); - } - private void createTable() { setImmediate(true); setId(getButtonsTableId()); 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 22e813d25..4eab54951 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 @@ -12,9 +12,10 @@ import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.ui.common.builder.LabelBuilder; import org.eclipse.hawkbit.ui.components.SPUIComponentProvider; import org.eclipse.hawkbit.ui.decorators.SPUIButtonStyleSmallNoBorder; +import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; -import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.spring.events.EventBus; +import org.vaadin.spring.events.EventBus.UIEventBus; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; @@ -25,20 +26,14 @@ import com.vaadin.ui.VerticalLayout; /** * Parent class for filter button header layout. - * - * - * - * */ public abstract class AbstractFilterHeader extends VerticalLayout { private static final long serialVersionUID = -1388340600522323332L; - @Autowired protected SpPermissionChecker permChecker; - @Autowired - protected transient EventBus.SessionEventBus eventBus; + protected transient EventBus.UIEventBus eventBus; private Label title; @@ -46,10 +41,12 @@ public abstract class AbstractFilterHeader extends VerticalLayout { private Button hideIcon; - /** - * Initialize the header layout. - */ - protected void init() { + protected final I18N i18n; + + protected AbstractFilterHeader(final SpPermissionChecker permChecker, final UIEventBus eventBus, final I18N i18n) { + this.permChecker = permChecker; + this.eventBus = eventBus; + this.i18n = i18n; createComponents(); buildLayout(); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterLayout.java index 9c3f6db9f..7b05adf45 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterLayout.java @@ -15,35 +15,25 @@ import com.vaadin.ui.VerticalLayout; /** * Parent class for filter button layout. - * - * - * - * */ public abstract class AbstractFilterLayout extends VerticalLayout { private static final long serialVersionUID = 9190616426688385851L; - private AbstractFilterHeader filterHeader; + private final AbstractFilterHeader filterHeader; - private AbstractFilterButtons filterButtons; + private final AbstractFilterButtons filterButtons; - /** - * Initialize the artifact details layout. - */ - protected void init(final AbstractFilterHeader filterHeader, final AbstractFilterButtons filterButtons, - final AbstractFilterButtonClickBehaviour filterButtonClickBehaviour) { + protected AbstractFilterLayout(final AbstractFilterHeader filterHeader, final AbstractFilterButtons filterButtons) { this.filterHeader = filterHeader; this.filterButtons = filterButtons; - filterButtons.init(filterButtonClickBehaviour); buildLayout(); - restoreState(); } private void buildLayout() { setWidth(SPUIDefinitions.FILTER_BY_TYPE_WIDTH, Unit.PIXELS); setStyleName("filter-btns-main-layout"); - setHeight(100.0f, Unit.PERCENTAGE); + setHeight(100.0F, Unit.PERCENTAGE); setSpacing(false); setMargin(false); @@ -52,10 +42,10 @@ public abstract class AbstractFilterLayout extends VerticalLayout { setComponentAlignment(filterHeader, Alignment.TOP_CENTER); setComponentAlignment(filterButtons, Alignment.TOP_CENTER); - setExpandRatio(filterButtons, 1.0f); + setExpandRatio(filterButtons, 1.0F); } - private void restoreState() { + protected void restoreState() { if (onLoadIsTypeFilterIsClosed()) { setVisible(false); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterMultiButtonClick.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterMultiButtonClick.java index f7d3656b1..db907c86f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterMultiButtonClick.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/filterlayout/AbstractFilterMultiButtonClick.java @@ -25,12 +25,6 @@ public abstract class AbstractFilterMultiButtonClick extends AbstractFilterButto private static final long serialVersionUID = 1L; protected final transient Set