io.gravitee.gateway.services.sync.cache.task.SubscriptionRefresher Maven / Gradle / Ivy
/*
* Copyright © 2015 The Gravitee team (http://gravitee.io)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.gravitee.gateway.services.sync.cache.task;
import io.gravitee.gateway.api.service.Subscription;
import io.gravitee.gateway.api.service.SubscriptionService;
import io.gravitee.repository.management.api.SubscriptionRepository;
import io.gravitee.repository.management.api.search.SubscriptionCriteria;
import java.util.Date;
import java.util.concurrent.Callable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author David BRASSELY (david.brassely at graviteesource.com)
* @author GraviteeSource Team
*/
public abstract class SubscriptionRefresher implements Callable> {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
private SubscriptionRepository subscriptionRepository;
private SubscriptionService subscriptionService;
protected Result doRefresh(SubscriptionCriteria criteria) {
return doRefresh(criteria, false);
}
protected Result doRefresh(SubscriptionCriteria criteria, boolean forceDispatch) {
logger.debug("Refresh subscriptions");
try {
subscriptionRepository
.search(criteria)
.stream()
.map(this::convertModelSubscriptionToCache)
.map(s -> {
s.setForceDispatch(forceDispatch);
return s;
})
.forEach(subscriptionService::save);
return Result.success(true);
} catch (Exception ex) {
return Result.failure(ex);
}
}
public void setSubscriptionRepository(SubscriptionRepository subscriptionRepository) {
this.subscriptionRepository = subscriptionRepository;
}
public void setSubscriptionService(SubscriptionService subscriptionService) {
this.subscriptionService = subscriptionService;
}
private Subscription convertModelSubscriptionToCache(io.gravitee.repository.management.model.Subscription subscriptionModel) {
Subscription subscription = new Subscription();
subscription.setApi(subscriptionModel.getApi());
subscription.setApplication(subscriptionModel.getApplication());
subscription.setClientId(subscriptionModel.getClientId());
subscription.setStartingAt(subscriptionModel.getStartingAt());
subscription.setEndingAt(subscriptionModel.getEndingAt());
subscription.setId(subscriptionModel.getId());
subscription.setPlan(subscriptionModel.getPlan());
if (subscriptionModel.getStatus() != null) {
subscription.setStatus(subscriptionModel.getStatus().name());
}
if (subscriptionModel.getConsumerStatus() != null) {
subscription.setConsumerStatus(Subscription.ConsumerStatus.valueOf(subscriptionModel.getConsumerStatus().name()));
}
if (subscriptionModel.getType() != null) {
subscription.setType(Subscription.Type.valueOf(subscriptionModel.getType().name().toUpperCase()));
}
subscription.setConfiguration(subscriptionModel.getConfiguration());
subscription.setMetadata(subscriptionModel.getMetadata());
return subscription;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy