Merge branch 'feature_split_repo_into_api_impl' of https://github.com/bsinno/hawkbit.git into feature_split_repo_into_api_impl
This commit is contained in:
@@ -60,9 +60,17 @@ public interface ArtifactManagement {
|
|||||||
ExternalArtifact createExternalArtifact(@NotNull ExternalArtifactProvider externalRepository, String urlSuffix,
|
ExternalArtifact createExternalArtifact(@NotNull ExternalArtifactProvider externalRepository, String urlSuffix,
|
||||||
@NotNull Long moduleId);
|
@NotNull Long moduleId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the total amount of local artifacts stored in the artifact
|
||||||
|
* management
|
||||||
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
||||||
Long countLocalArtifactsAll();
|
Long countLocalArtifactsAll();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the total amount of external artifacts stored in the artifact
|
||||||
|
* management
|
||||||
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY)
|
||||||
Long countExternalArtifactsAll();
|
Long countExternalArtifactsAll();
|
||||||
|
|
||||||
|
|||||||
@@ -187,9 +187,15 @@ public interface DeploymentManagement {
|
|||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Long countActionsByTarget(@NotNull String rsqlParam, @NotNull Target target);
|
Long countActionsByTarget(@NotNull String rsqlParam, @NotNull Target target);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the total amount of stored action status
|
||||||
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Long countActionStatusAll();
|
Long countActionStatusAll();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the total amount of stored actions
|
||||||
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Long countActionsAll();
|
Long countActionsAll();
|
||||||
|
|
||||||
@@ -280,8 +286,20 @@ public interface DeploymentManagement {
|
|||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Slice<Action> findActionsByTarget(@NotNull Pageable pageable, @NotNull Target target);
|
Slice<Action> findActionsByTarget(@NotNull Pageable pageable, @NotNull Target target);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves all {@link Action} which assigned to a specific
|
||||||
|
* {@link DistributionSet}.
|
||||||
|
*
|
||||||
|
* @param pageable
|
||||||
|
* the page request parameter for paging and sorting the result
|
||||||
|
* @param distributionSet
|
||||||
|
* the distribution set which should be assigned to the actions
|
||||||
|
* in the result
|
||||||
|
* @return a list of {@link Action} which are assigned to a specific
|
||||||
|
* {@link DistributionSet}
|
||||||
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Slice<Action> findActionsByDistributionSet(@NotNull Pageable pageable, @NotNull DistributionSet ds);
|
Slice<Action> findActionsByDistributionSet(@NotNull Pageable pageable, @NotNull DistributionSet distributionSet);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves all {@link Action}s assigned to a specific {@link Target} and a
|
* Retrieves all {@link Action}s assigned to a specific {@link Target} and a
|
||||||
@@ -345,8 +363,18 @@ public interface DeploymentManagement {
|
|||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Page<ActionStatus> findActionStatusByAction(@NotNull Pageable pageReq, @NotNull Action action);
|
Page<ActionStatus> findActionStatusByAction(@NotNull Pageable pageReq, @NotNull Action action);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves all {@link ActionStatus} inclusive their messages by a specific
|
||||||
|
* {@link Action}.
|
||||||
|
*
|
||||||
|
* @param pageable
|
||||||
|
* the page request parameter for paging and sorting the result
|
||||||
|
* @param action
|
||||||
|
* the {@link Action} to retrieve the {@link ActionStatus} from
|
||||||
|
* @return a page of {@link ActionStatus} by a speciifc {@link Action}
|
||||||
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
Page<ActionStatus> findActionStatusByActionWithMessages(@NotNull Pageable pageReq, @NotNull Action action);
|
Page<ActionStatus> findActionStatusByActionWithMessages(@NotNull Pageable pageable, @NotNull Action action);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves all {@link Action}s of a specific target ordered by action ID.
|
* Retrieves all {@link Action}s of a specific target ordered by action ID.
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModuleType;
|
|||||||
import org.eclipse.hawkbit.repository.model.TenantMetaData;
|
import org.eclipse.hawkbit.repository.model.TenantMetaData;
|
||||||
import org.eclipse.hawkbit.repository.report.model.SystemUsageReport;
|
import org.eclipse.hawkbit.repository.report.model.SystemUsageReport;
|
||||||
import org.eclipse.hawkbit.tenancy.TenantAware;
|
import org.eclipse.hawkbit.tenancy.TenantAware;
|
||||||
import org.springframework.cache.interceptor.KeyGenerator;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -67,10 +65,6 @@ public interface SystemManagement {
|
|||||||
*/
|
*/
|
||||||
TenantMetaData getTenantMetadata();
|
TenantMetaData getTenantMetadata();
|
||||||
|
|
||||||
// TODO figure out why this is necessary and clean this up
|
|
||||||
@Bean
|
|
||||||
KeyGenerator currentTenantKeyGenerator();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns {@link TenantMetaData} of given and current tenant. Creates for
|
* Returns {@link TenantMetaData} of given and current tenant. Creates for
|
||||||
* new tenants also two {@link SoftwareModuleType} (os and app) and
|
* new tenants also two {@link SoftwareModuleType} (os and app) and
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ public interface TenantConfigurationManagement {
|
|||||||
*/
|
*/
|
||||||
@PreAuthorize(value = SpringEvalExpressions.HAS_AUTH_TENANT_CONFIGURATION + SpringEvalExpressions.HAS_AUTH_OR
|
@PreAuthorize(value = SpringEvalExpressions.HAS_AUTH_TENANT_CONFIGURATION + SpringEvalExpressions.HAS_AUTH_OR
|
||||||
+ SpringEvalExpressions.IS_SYSTEM_CODE)
|
+ SpringEvalExpressions.IS_SYSTEM_CODE)
|
||||||
TenantConfigurationValue<?> getConfigurationValue(TenantConfigurationKey configurationKey);
|
<T> TenantConfigurationValue<T> getConfigurationValue(TenantConfigurationKey configurationKey);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a configuration value from the e.g. tenant overwritten
|
* Retrieves a configuration value from the e.g. tenant overwritten
|
||||||
|
|||||||
@@ -16,44 +16,145 @@ package org.eclipse.hawkbit.repository.model;
|
|||||||
*/
|
*/
|
||||||
public interface RolloutGroup extends NamedEntity {
|
public interface RolloutGroup extends NamedEntity {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the corresponding {@link Rollout} of this group
|
||||||
|
*/
|
||||||
Rollout getRollout();
|
Rollout getRollout();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param rollout
|
||||||
|
* sets the {@link Rollout} for this group
|
||||||
|
*/
|
||||||
void setRollout(Rollout rollout);
|
void setRollout(Rollout rollout);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the current {@link RolloutGroupStatus} for this group
|
||||||
|
*/
|
||||||
RolloutGroupStatus getStatus();
|
RolloutGroupStatus getStatus();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param status
|
||||||
|
* the {@link RolloutGroupStatus} to set for this group
|
||||||
|
*/
|
||||||
void setStatus(RolloutGroupStatus status);
|
void setStatus(RolloutGroupStatus status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the parent group of this group, in case the group is the root
|
||||||
|
* group it does not have a parent and so return {@code null}
|
||||||
|
*/
|
||||||
RolloutGroup getParent();
|
RolloutGroup getParent();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the {@link RolloutGroupSuccessCondition} for this group to
|
||||||
|
* indicate when a group is successful
|
||||||
|
*/
|
||||||
RolloutGroupSuccessCondition getSuccessCondition();
|
RolloutGroupSuccessCondition getSuccessCondition();
|
||||||
|
|
||||||
void setSuccessCondition(RolloutGroupSuccessCondition finishCondition);
|
/**
|
||||||
|
* @param successCondition
|
||||||
|
* the {@link RolloutGroupSuccessCondition} to be set for this
|
||||||
|
* group to indicate when a group is successfully and a next
|
||||||
|
* group might be started
|
||||||
|
*/
|
||||||
|
void setSuccessCondition(RolloutGroupSuccessCondition successCondition);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a String representation of the expression to be evaluated by the
|
||||||
|
* {@link RolloutGroupSuccessCondition} to indicate if the condition
|
||||||
|
* is true, might be {@code null} if no expression must be set for
|
||||||
|
* the {@link RolloutGroupSuccessCondition}
|
||||||
|
*/
|
||||||
String getSuccessConditionExp();
|
String getSuccessConditionExp();
|
||||||
|
|
||||||
void setSuccessConditionExp(String finishExp);
|
/**
|
||||||
|
* @param successConditionExp
|
||||||
|
* sets a String represented expression which is evaluated by the
|
||||||
|
* {@link RolloutGroupSuccessCondition}, might be {@code null} if
|
||||||
|
* the set {@link RolloutGroupSuccessCondition} can handle
|
||||||
|
* {@code null} value
|
||||||
|
*/
|
||||||
|
void setSuccessConditionExp(String successConditionExp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the {@link RolloutGroupErrorCondition} for this group to indicate
|
||||||
|
* when a group should marked as failed
|
||||||
|
*/
|
||||||
RolloutGroupErrorCondition getErrorCondition();
|
RolloutGroupErrorCondition getErrorCondition();
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param errorCondition
|
||||||
|
* the {@link RolloutGroupErrorCondition} to be set for this
|
||||||
|
* group to indicate when a group is marked as failed and the
|
||||||
|
* corresponding {@link RolloutGroupErrorAction} should be
|
||||||
|
* executed
|
||||||
|
*/
|
||||||
void setErrorCondition(RolloutGroupErrorCondition errorCondition);
|
void setErrorCondition(RolloutGroupErrorCondition errorCondition);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a String representation of the expression to be evaluated by the
|
||||||
|
* {@link RolloutGroupErrorCondition} to indicate if the condition
|
||||||
|
* is true, might be {@code null} if no expression must be set for
|
||||||
|
* the {@link RolloutGroupErrorCondition}
|
||||||
|
*/
|
||||||
String getErrorConditionExp();
|
String getErrorConditionExp();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param errorExp
|
||||||
|
* sets a String represented expression which is evaluated by the
|
||||||
|
* {@link RolloutGroupErrorCondition}, might be {@code null} if
|
||||||
|
* the set {@link RolloutGroupErrorCondition} can handle
|
||||||
|
* {@code null} value
|
||||||
|
*/
|
||||||
void setErrorConditionExp(String errorExp);
|
void setErrorConditionExp(String errorExp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a {@link RolloutGroupErrorAction} which is executed when the
|
||||||
|
* given {@link RolloutGroupErrorCondition} is met, might be
|
||||||
|
* {@code null} if no error action is set
|
||||||
|
*/
|
||||||
RolloutGroupErrorAction getErrorAction();
|
RolloutGroupErrorAction getErrorAction();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param errorAction
|
||||||
|
* the {@link RolloutGroupErrorAction} to be set which should be
|
||||||
|
* executed if the {@link RolloutGroupErrorCondition} is met,
|
||||||
|
* might be {@code null} if no error action should be executed
|
||||||
|
*/
|
||||||
void setErrorAction(RolloutGroupErrorAction errorAction);
|
void setErrorAction(RolloutGroupErrorAction errorAction);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a String representation of the expression to be evaluated by the
|
||||||
|
* {@link RolloutGroupErrorAction} might be {@code null} if no
|
||||||
|
* expression must be set for the {@link RolloutGroupErrorAction}
|
||||||
|
*/
|
||||||
String getErrorActionExp();
|
String getErrorActionExp();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param errorActionExp
|
||||||
|
* sets a String represented expression which is evaluated by the
|
||||||
|
* {@link RolloutGroupErrorAction}, might be {@code null} if the
|
||||||
|
* set {@link RolloutGroupErrorAction} can handle {@code null}
|
||||||
|
* value
|
||||||
|
*/
|
||||||
void setErrorActionExp(String errorActionExp);
|
void setErrorActionExp(String errorActionExp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the {@link RolloutGroupSuccessAction} which is executed if the
|
||||||
|
* {@link RolloutGroupSuccessCondition} is met
|
||||||
|
*/
|
||||||
RolloutGroupSuccessAction getSuccessAction();
|
RolloutGroupSuccessAction getSuccessAction();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a String representation of the expression to be evaluated by the
|
||||||
|
* {@link RolloutGroupSuccessAction} might be {@code null} if no
|
||||||
|
* expression must be set for the {@link RolloutGroupSuccessAction}
|
||||||
|
*/
|
||||||
String getSuccessActionExp();
|
String getSuccessActionExp();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the total amount of targets containing in this group
|
||||||
|
*/
|
||||||
long getTotalTargets();
|
long getTotalTargets();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) 2015 Bosch Software Innovations GmbH and others.
|
||||||
|
*
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*/
|
||||||
|
package org.eclipse.hawkbit.repository.jpa;
|
||||||
|
|
||||||
|
import org.springframework.cache.interceptor.KeyGenerator;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines the interfaces to register the {@link KeyGenerator} as bean which is
|
||||||
|
* used by spring caching framework to resolve the key-generator. The
|
||||||
|
* key-generator must registered as bean so spring can resolve the key-generator
|
||||||
|
* by its name.
|
||||||
|
*
|
||||||
|
* When using the {@link Service} annotation e.g. by {@link JpaSystemManagement}
|
||||||
|
* the bean registration must be declared by the interface due spring registers
|
||||||
|
* the bean by the implemented interfaces. So introduce a single interface for
|
||||||
|
* the {@link JpaSystemManagement} implementation to allow it to register the
|
||||||
|
* key-generator bean.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@FunctionalInterface
|
||||||
|
public interface CurrentTenantCacheKeyGenerator {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bean declaration to register a {@code currentTenantKeyGenerator} bean
|
||||||
|
* which is used by the caching framework.
|
||||||
|
*
|
||||||
|
* @return the {@link KeyGenerator} to be used to cache the values of the
|
||||||
|
* current used tenant in the {@link JpaSystemManagement}
|
||||||
|
*/
|
||||||
|
@Bean
|
||||||
|
KeyGenerator currentTenantKeyGenerator();
|
||||||
|
}
|
||||||
@@ -49,7 +49,7 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
@Transactional(readOnly = true, isolation = Isolation.READ_UNCOMMITTED)
|
@Transactional(readOnly = true, isolation = Isolation.READ_UNCOMMITTED)
|
||||||
@Validated
|
@Validated
|
||||||
@Service
|
@Service
|
||||||
public class JpaSystemManagement implements SystemManagement {
|
public class JpaSystemManagement implements CurrentTenantCacheKeyGenerator, SystemManagement {
|
||||||
@Autowired
|
@Autowired
|
||||||
private EntityManager entityManager;
|
private EntityManager entityManager;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user