From 7a469d8da0d67b63c3a3ec93dd03099c9d7b2137 Mon Sep 17 00:00:00 2001 From: kaizimmerm Date: Mon, 28 Nov 2016 15:52:06 +0100 Subject: [PATCH] Removed dependency injection where not necessary Signed-off-by: kaizimmerm --- .../org/eclipse/hawkbit/app/MyLoginUI.java | 8 + .../java/org/eclipse/hawkbit/app/MyUI.java | 5 +- .../org/eclipse/hawkbit/app/MyLoginUI.java | 8 + .../java/org/eclipse/hawkbit/app/MyUI.java | 5 +- .../scenarios/ConfigurableScenario.java | 3 - .../autoconfigure/ui/UIAutoConfiguration.java | 10 +- .../hawkbit/ControllerPollProperties.java | 5 +- .../repository/SpPermissionChecker.java | 11 +- .../org/eclipse/hawkbit/ui/ErrorView.java | 17 +- .../org/eclipse/hawkbit/ui/HawkbitUI.java | 15 +- .../org/eclipse/hawkbit/ui/UiProperties.java | 21 ++- .../ui/artifacts/UploadArtifactView.java | 71 ++++++--- .../details/ArtifactDetailsLayout.java | 66 +++----- .../event/UploadViewAcceptCriteria.java | 8 + .../footer/SMDeleteActionsLayout.java | 41 +++-- .../UploadViewConfirmationWindowLayout.java | 23 ++- .../SoftwareModuleAddUpdateWindow.java | 42 ++--- .../smtable/SoftwareModuleDetails.java | 49 +++--- .../smtable/SoftwareModuleTable.java | 45 ++++-- .../smtable/SoftwareModuleTableHeader.java | 33 ++-- .../smtable/SoftwareModuleTableLayout.java | 44 +++--- .../CreateUpdateSoftwareTypeLayout.java | 21 ++- .../smtype/SMTypeFilterButtonClick.java | 37 ++--- .../artifacts/smtype/SMTypeFilterButtons.java | 31 ++-- .../artifacts/smtype/SMTypeFilterHeader.java | 35 ++--- .../artifacts/smtype/SMTypeFilterLayout.java | 68 +++----- .../artifacts/state/ArtifactUploadState.java | 8 +- .../ui/artifacts/upload/UploadHandler.java | 17 +- .../ui/artifacts/upload/UploadLayout.java | 66 +++----- .../artifacts/upload/UploadResultWindow.java | 4 +- .../upload/UploadStatusInfoWindow.java | 47 ++---- .../ui/common/AbstractAcceptCriteria.java | 13 +- .../common/AbstractMetadataPopupLayout.java | 31 ++-- .../AbstractConfirmationWindowLayout.java | 20 +-- ...amedVersionedEntityTableDetailsLayout.java | 9 ++ .../AbstractTableDetailsLayout.java | 57 +++---- .../SoftwareModuleDetailsTable.java | 15 +- .../AbstractFilterButtonClickBehaviour.java | 4 - .../filterlayout/AbstractFilterButtons.java | 25 +-- .../filterlayout/AbstractFilterHeader.java | 21 ++- .../filterlayout/AbstractFilterLayout.java | 22 +-- .../AbstractFilterMultiButtonClick.java | 16 -- .../AbstractFilterSingleButtonClick.java | 26 ---- .../footer/AbstractDeleteActionsLayout.java | 39 ++--- .../hawkbit/ui/common/grid/AbstractGrid.java | 32 ++-- .../ui/common/grid/AbstractGridHeader.java | 15 +- .../ui/common/grid/AbstractGridLayout.java | 22 ++- .../table/AbstractNamedVersionTable.java | 11 +- .../ui/common/table/AbstractTable.java | 36 ++--- .../ui/common/table/AbstractTableHeader.java | 40 +++-- .../ui/common/table/AbstractTableLayout.java | 2 + .../common/tagdetails/AbstractTagToken.java | 26 ++-- .../tagdetails/AbstractTargetTagToken.java | 22 ++- .../tagdetails/DistributionTagToken.java | 33 ++-- .../ui/common/tagdetails/TargetTagToken.java | 24 +-- .../ui/distributions/DistributionsView.java | 116 ++++++++------ .../CreateUpdateDistSetTypeLayout.java | 26 ++-- .../disttype/DSTypeFilterButtonClick.java | 38 ++--- .../disttype/DSTypeFilterButtons.java | 28 ++-- .../disttype/DSTypeFilterHeader.java | 37 ++--- .../disttype/DSTypeFilterLayout.java | 74 +++------ .../dstable/DistributionSetDetails.java | 80 +++++----- .../dstable/DistributionSetTable.java | 66 ++++---- .../dstable/DistributionSetTableHeader.java | 20 +-- .../dstable/DistributionSetTableLayout.java | 57 ++++--- .../dstable/DsMetadataPopupLayout.java | 23 +-- .../DistributionsViewAcceptCriteria.java | 8 + .../footer/DSDeleteActionsLayout.java | 46 +++--- ...DistributionsConfirmationWindowLayout.java | 28 ++-- .../smtable/SwMetadataPopupLayout.java | 24 +-- .../smtable/SwModuleBeanQuery.java | 2 +- .../smtable/SwModuleDetails.java | 51 +++--- .../distributions/smtable/SwModuleTable.java | 52 ++++--- .../smtable/SwModuleTableHeader.java | 42 +++-- .../smtable/SwModuleTableLayout.java | 45 +++--- .../smtype/DistSMTypeFilterButtonClick.java | 39 ++--- .../smtype/DistSMTypeFilterButtons.java | 25 +-- .../smtype/DistSMTypeFilterHeader.java | 33 ++-- .../smtype/DistSMTypeFilterLayout.java | 73 +++------ .../state/ManageDistUIState.java | 13 +- .../AutoCompleteTextFieldComponent.java | 47 +++--- .../CreateOrUpdateFilterHeader.java | 63 ++++---- .../CreateOrUpdateFilterTable.java | 51 +++--- .../DistributionSetSelectTable.java | 35 +---- .../DistributionSetSelectWindow.java | 40 +++-- .../FilterManagementView.java | 74 ++++++--- .../filtermanagement/TargetFilterHeader.java | 28 ++-- .../filtermanagement/TargetFilterTable.java | 63 ++++---- .../footer/TargetFilterCountMessageLabel.java | 34 +--- .../AbstractCreateUpdateTagLayout.java | 34 ++-- .../ui/layouts/CreateUpdateTypeLayout.java | 11 ++ .../hawkbit/ui/login/HawkbitLoginUI.java | 15 +- .../eclipse/hawkbit/ui/login/LoginView.java | 21 ++- .../hawkbit/ui/management/DeploymentView.java | 147 ++++++++++++------ .../actionhistory/ActionHistoryComponent.java | 44 ++---- .../actionhistory/ActionHistoryHeader.java | 24 +-- .../actionhistory/ActionHistoryTable.java | 55 +++---- .../DistributionAddUpdateWindowLayout.java | 53 +++---- .../dstable/DistributionDetails.java | 60 +++---- .../management/dstable/DistributionTable.java | 87 +++++------ .../dstable/DistributionTableHeader.java | 22 +-- .../dstable/DistributionTableLayout.java | 50 +++--- ...eateUpdateDistributionTagLayoutWindow.java | 22 ++- .../dstag/DistributionTagButtonClick.java | 32 +--- .../dstag/DistributionTagButtons.java | 45 +++--- .../dstag/DistributionTagHeader.java | 33 ++-- .../dstag/DistributionTagLayout.java | 72 +++------ .../event/DistributionTagDropEvent.java | 40 ++--- .../event/ManagementViewAcceptCriteria.java | 11 +- .../footer/ActionTypeOptionGroupLayout.java | 15 +- .../management/footer/CountMessageLabel.java | 48 ++---- .../footer/DeleteActionsLayout.java | 58 ++++--- .../ManangementConfirmationWindowLayout.java | 34 ++-- .../management/state/ManagementUIState.java | 25 +-- .../targettable/BulkUploadHandler.java | 13 +- .../TargetAddUpdateWindowLayout.java | 42 +++-- .../targettable/TargetBulkTokenTags.java | 46 ++---- .../TargetBulkUpdateWindowLayout.java | 58 ++++--- .../management/targettable/TargetDetails.java | 38 +++-- .../management/targettable/TargetTable.java | 64 ++++---- .../targettable/TargetTableHeader.java | 68 ++++---- .../targettable/TargetTableLayout.java | 50 +++--- .../AbstractTargetTagFilterLayout.java | 13 +- .../CreateUpdateTargetTagLayoutWindow.java | 23 ++- .../CustomTargetTagFilterButtonClick.java | 36 ++--- .../targettag/FilterByStatusLayout.java | 44 ++---- .../targettag/MultipleTargetFilter.java | 80 +++++----- .../targettag/TargetFilterQueryButtons.java | 28 ++-- .../targettag/TargetTagFilterButtonClick.java | 33 +--- .../targettag/TargetTagFilterButtons.java | 62 ++++---- .../targettag/TargetTagFilterHeader.java | 29 ++-- .../targettag/TargetTagFilterLayout.java | 63 +++----- .../hawkbit/ui/menu/DashboardEvent.java | 5 +- .../hawkbit/ui/menu/DashboardMenu.java | 25 +-- .../ui/push/DelayedEventBusPushStrategy.java | 18 ++- .../hawkbit/ui/rollout/RolloutView.java | 73 +++++---- .../rollout/AddUpdateRolloutWindowLayout.java | 57 ++++--- .../rollout/DistributionBeanQuery.java | 25 --- .../ui/rollout/rollout/RolloutBeanQuery.java | 17 +- .../ui/rollout/rollout/RolloutListGrid.java | 78 +++++----- .../ui/rollout/rollout/RolloutListHeader.java | 43 +++-- .../ui/rollout/rollout/RolloutListView.java | 35 +++-- .../rolloutgroup/RolloutGroupBeanQuery.java | 11 +- .../rolloutgroup/RolloutGroupListGrid.java | 58 ++++--- .../rolloutgroup/RolloutGroupsListHeader.java | 36 +---- .../rolloutgroup/RolloutGroupsListView.java | 27 ++-- .../RolloutGroupTargetsBeanQuery.java | 94 +++++------ .../RolloutGroupTargetsCountLabelMessage.java | 38 ++--- .../RolloutGroupTargetsListGrid.java | 74 +++++---- .../RolloutGroupTargetsListHeader.java | 46 ++---- .../RolloutGroupTargetsListView.java | 32 ++-- .../ui/rollout/state/RolloutUIState.java | 8 +- .../AuthenticationConfigurationView.java | 46 +++--- .../DefaultDistributionSetTypeLayout.java | 30 ++-- .../PollingConfigurationView.java | 47 ++---- .../TenantConfigurationDashboardView.java | 66 +++++--- ...AuthenticationTenantConfigurationItem.java | 11 +- ...wnloadAuthenticationConfigurationItem.java | 21 +-- ...ficateAuthenticationConfigurationItem.java | 31 ++-- ...yTokenAuthenticationConfigurationItem.java | 36 ++--- ...yTokenAuthenticationConfigurationItem.java | 29 +--- .../org/eclipse/hawkbit/ui/utils/I18N.java | 9 +- .../hawkbit/ui/utils/UINotification.java | 6 +- 163 files changed, 2697 insertions(+), 3189 deletions(-) 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-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 524925882..1a86ed049 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,18 @@ */ package org.eclipse.hawkbit.ui.artifacts; +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.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 +30,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; @@ -57,35 +64,25 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW public static final String VIEW_NAME = "spUpload"; private static final long serialVersionUID = 8754632011301553682L; - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final 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 +91,29 @@ 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) { + 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); + this.uploadLayout = new UploadLayout(i18n, uiNotification, eventBus, artifactUploadState, spInfo); + this.deleteActionsLayout = new SMDeleteActionsLayout(i18n, permChecker, eventBus, uiNotification, + artifactUploadState, softwareManagement, uploadViewAcceptCriteria); + } + + @PostConstruct + void init() { buildLayout(); restoreState(); checkNoDataAvaialble(); @@ -109,7 +127,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 +136,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 +290,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 f0dd3cc1a..bf19e6bbe 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; @@ -37,11 +34,11 @@ 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 +47,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.UIScope; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; @@ -65,12 +60,7 @@ import com.vaadin.ui.themes.ValoTheme; /** * Display the details of the artifacts for a selected software module. - * - * */ - -@SpringComponent -@UIScope public class ArtifactDetailsLayout extends VerticalLayout { private static final long serialVersionUID = -5189069028037133891L; @@ -91,17 +81,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 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 +97,17 @@ public class ArtifactDetailsLayout extends VerticalLayout { private Table maxArtifactDetailsTable; - private boolean fullWindowMode = false; + private boolean fullWindowMode; - private boolean readOnly = false; + private boolean readOnly; + + public ArtifactDetailsLayout(final I18N i18n, final UIEventBus eventBus, + final ArtifactUploadState artifactUploadState, final UINotification uINotification) { + this.i18n = i18n; + this.eventBus = eventBus; + this.artifactUploadState = artifactUploadState; + this.uINotification = uINotification; - /** - * Initialize the artifact details layout. - */ - @PostConstruct - private void init() { createComponents(); buildLayout(); eventBus.subscribe(this); @@ -140,9 +128,9 @@ public class ArtifactDetailsLayout extends VerticalLayout { * @param readOnly * value true for read only. */ + // TODO kaizimmerm: fix this public void init(final boolean readOnly) { this.readOnly = readOnly; - init(); } private void createComponents() { @@ -192,7 +180,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 +190,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); } @@ -308,15 +296,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 +448,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 +474,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 1dba95d15..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,6 +14,9 @@ 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; @@ -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 42eb6088b..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.UIScope; 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 -@UIScope 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 ec4df46ae..28f760583 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.UIScope; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.Table.Align; /** * Abstract layout of confirm actions window. - * - * - * */ -@SpringComponent -@UIScope 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 SoftwareManagement softwareManagement; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; + + public 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 8ec87254f..1d6e29016 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.UIScope; 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 -@UIScope 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 EventBus.UIEventBus eventBus; - @Autowired - private transient SoftwareManagement softwareManagement; + private final SoftwareManagement softwareManagement; - @Autowired - private transient EntityFactory entityFactory; + private final EntityFactory entityFactory; private TextField nameTextField; @@ -83,6 +72,17 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { 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. */ @@ -102,14 +102,6 @@ public class SoftwareModuleAddUpdateWindow extends CustomComponent { } } - /** - * Initialize Distribution Add and Edit Window. - */ - @PostConstruct - void init() { - createRequiredComponents(); - } - /** * Create window for new software module. * 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 61009037d..4fd194926 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.UIScope; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; @@ -39,41 +39,39 @@ import com.vaadin.ui.Window; * * */ -@SpringComponent -@UIScope 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 SoftwareManagement softwareManagement; - @Autowired - private SwMetadataPopupLayout swMetadataPopupLayout; + private final SwMetadataPopupLayout swMetadataPopupLayout; - @Autowired - private transient EntityFactory entityFactory; + private final SoftwareModuleMetadatadetailslayout swmMetadataTable; - private SoftwareModuleMetadatadetailslayout swmMetadataTable; + public 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 +166,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 +192,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 999e3bc2f..57fa5a65a 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 @@ -11,7 +11,9 @@ package org.eclipse.hawkbit.ui.artifacts.smtable; import java.util.List; import java.util.Map; +import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.SoftwareManagement; +import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.ui.artifacts.event.SMFilterEvent; import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleEvent; @@ -24,15 +26,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 +46,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.UIScope; import com.vaadin.ui.Button; import com.vaadin.ui.Table; import com.vaadin.ui.UI; /** - * Header of Software module table. + * The Software module table. */ -@UIScope -@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 SoftwareManagement softwareManagement; - @Autowired - private UploadViewAcceptCriteria uploadViewAcceptCriteria; + private final UploadViewAcceptCriteria uploadViewAcceptCriteria; - @Autowired - private SwMetadataPopupLayout swMetadataPopupLayout; + private final SwMetadataPopupLayout swMetadataPopupLayout; - @EventBusListenerMethod(scope = EventScope.SESSION) + public SoftwareModuleTable(final UIEventBus eventBus, final I18N i18n, final UINotification uiNotification, + final ArtifactUploadState artifactUploadState, final SoftwareManagement softwareManagement, + final UploadViewAcceptCriteria uploadViewAcceptCriteria, final EntityFactory entityFactory, + final SpPermissionChecker permChecker, 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 +164,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 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 d040e4a15..2c0984b02 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.UIScope; 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 -@UIScope 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; + public 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 e03cb16ad..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.UIScope; - /** * Software module type filter buttons layout. - * - * - * */ -@SpringComponent -@UIScope 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/upload/UploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadHandler.java index cd6d82194..781aa0c1d 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; @@ -68,7 +66,7 @@ public class UploadHandler implements StreamVariable, Receiver, SucceededListene 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 f5a813228..2b35366c9 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,9 +17,6 @@ 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.exception.ArtifactUploadFailedException; import org.eclipse.hawkbit.repository.model.SoftwareModule; @@ -43,9 +40,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 +55,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.UIScope; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.DragAndDropWrapper; @@ -74,36 +69,24 @@ import com.vaadin.ui.VerticalLayout; /** * Upload files layout. */ -@UIScope -@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 EventBus.UIEventBus eventBus; - @Autowired - private ArtifactUploadState artifactUploadState; + private final ArtifactUploadState artifactUploadState; - @Autowired - private transient SPInfo spInfo; + private final SPInfo spInfo; private final List duplicateFileNamesList = new ArrayList<>(); @@ -115,7 +98,7 @@ public class UploadLayout extends VerticalLayout { private VerticalLayout dropAreaLayout; - private UI ui; + private final UI ui; private HorizontalLayout fileUploadLayout; @@ -125,11 +108,15 @@ public class UploadLayout extends VerticalLayout { private Button uploadStatusButton; - /** - * Initialize the upload layout. - */ - @PostConstruct - void init() { + public UploadLayout(final I18N i18n, final UINotification uiNotification, final UIEventBus eventBus, + final ArtifactUploadState artifactUploadState, final SPInfo spInfo) { + this.uploadInfoWindow = new UploadStatusInfoWindow(eventBus, artifactUploadState, i18n); + this.i18n = i18n; + this.uiNotification = uiNotification; + this.eventBus = eventBus; + this.artifactUploadState = artifactUploadState; + this.spInfo = spInfo; + createComponents(); buildLayout(); restoreState(); @@ -137,7 +124,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 +137,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(); 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..e3bcc0856 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 @@ -67,7 +67,7 @@ public class UploadResultWindow implements Button.ClickListener { private static final String REASON = "reason"; - private transient EventBus.SessionEventBus eventBus; + private transient EventBus.UIEventBus eventBus; /** @@ -81,7 +81,7 @@ public class UploadResultWindow implements Button.ClickListener { public UploadResultWindow(final List uploadResultList, final I18N i18n) { this.uploadResultList = uploadResultList; this.i18n = i18n; - eventBus = SpringContextHelper.getBean( EventBus.SessionEventBus.class); + eventBus = SpringContextHelper.getBean( EventBus.UIEventBus.class); createComponents(); createLayout(); } 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 06e0ba2c1..992ea64fe 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.UIScope; 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. */ -@UIScope -@SpringComponent public class UploadStatusInfoWindow extends Window { - @Autowired - private transient EventBus.SessionEventBus eventBus; + private final 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,9 +71,9 @@ 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; @@ -91,7 +81,7 @@ public class UploadStatusInfoWindow extends Window { private Button minimizeButton; - private VerticalLayout mainLayout; + private final VerticalLayout mainLayout; private Label windowCaption; @@ -99,15 +89,15 @@ public class UploadStatusInfoWindow extends Window { private Button resizeButton; - private UI ui; + private final UI ui; private ConfirmationDialog confirmDialog; - /** - * Default Constructor. - */ - @PostConstruct - void init() { + public UploadStatusInfoWindow(final UIEventBus eventBus, final ArtifactUploadState artifactUploadState, + final I18N i18n) { + this.eventBus = eventBus; + this.artifactUploadState = artifactUploadState; + this.i18n = i18n; setPopupProperties(); createStatusPopupHeaderComponents(); @@ -130,7 +120,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 +156,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/common/AbstractAcceptCriteria.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractAcceptCriteria.java index a5f2e195a..564d133c7 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 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..bbaacde1f 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 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/SoftwareModuleDetailsTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleDetailsTable.java index e1398a6c9..1e858e836 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 @@ -30,7 +30,7 @@ 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 +46,6 @@ import com.vaadin.ui.themes.ValoTheme; /** * Software module details table. * - * - * - * */ public class SoftwareModuleDetailsTable extends Table { @@ -67,15 +64,15 @@ public class SoftwareModuleDetailsTable extends Table { private boolean isUnassignSoftModAllowed; private SpPermissionChecker permissionChecker; - private transient DistributionSetManagement distributionSetManagement; + private DistributionSetManagement distributionSetManagement; private I18N i18n; - private transient SessionEventBus eventBus; + private EventBus.UIEventBus eventBus; - private transient ManageDistUIState manageDistUIState; + private ManageDistUIState manageDistUIState; - private transient UINotification uiNotification; + private UINotification uiNotification; /** * Initialize software module table- to be displayed in details layout. @@ -96,7 +93,7 @@ public class SoftwareModuleDetailsTable extends Table { */ public void init(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) { this.i18n = i18n; this.isUnassignSoftModAllowed = isUnassignSoftModAllowed; this.permissionChecker = permissionChecker; 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..730f64a67 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 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..5101985ad 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 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