All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avanza.astrix.serviceunit.ServiceRegistryExportedService Maven / Gradle / Ivy

/*
 * Copyright 2014 Avanza Bank AB
 *
 * 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 com.avanza.astrix.serviceunit;

import com.avanza.astrix.beans.service.ServiceComponent;
import com.avanza.astrix.beans.service.ServiceProperties;
import com.avanza.astrix.beans.service.UnsupportedTargetTypeException;

class ServiceRegistryExportedService {
	
	private final ServiceComponent serviceComponent;
	private volatile boolean publishServices;
	private final ExportedServiceBeanDefinition serviceBeanDefinition;
	
	public ServiceRegistryExportedService(ServiceComponent serviceComponent, ExportedServiceBeanDefinition serviceBeanDefinition, boolean publishServices) {
		this.serviceBeanDefinition = serviceBeanDefinition;
		this.publishServices = publishServices;
		if (!serviceComponent.canBindType(serviceBeanDefinition.getBeanType())) {
			throw new UnsupportedTargetTypeException(serviceComponent.getName(), serviceBeanDefinition.getBeanType());
		}
		this.serviceComponent = serviceComponent;
	}

	public ServiceProperties exportServiceProperties() {
		ServiceProperties serviceProperties = serviceComponent.createServiceProperties(serviceBeanDefinition.getServiceDefinition());
		serviceProperties.getProperties().put(ServiceProperties.PUBLISHED, Boolean.toString(isPublished()));
		serviceProperties.setApi(serviceBeanDefinition.getBeanKey().getBeanType());
		serviceProperties.setQualifier(serviceBeanDefinition.getBeanKey().getQualifier());
		serviceProperties.setComponent(serviceComponent.getName());
		return serviceProperties;
	}

	private boolean isPublished() {
		if (serviceBeanDefinition.isAlwaysActive()) {
			return true;
		}
		if (!publishServices) {
			return false;
		}
		return serviceBeanDefinition.getServiceDefinition().isVersioned();
	}
	
	public void setPublishServices(boolean published) {
		this.publishServices = published;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy