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

org.ikasan.configurationService.service.PlatformConfigurationServiceImpl Maven / Gradle / Ivy

The newest version!
/*
 * $Id$  
 * $URL$
 * 
 * ====================================================================
 * Ikasan Enterprise Integration Platform
 * 
 * Distributed under the Modified BSD License.
 * Copyright notice: The copyright for this software and a full listing 
 * of individual contributors are as shown in the packaged copyright.txt 
 * file. 
 * 
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
 *
 *  - Redistributions of source code must retain the above copyright notice, 
 *    this list of conditions and the following disclaimer.
 *
 *  - Redistributions in binary form must reproduce the above copyright notice, 
 *    this list of conditions and the following disclaimer in the documentation 
 *    and/or other materials provided with the distribution.
 *
 *  - Neither the name of the ORGANIZATION nor the names of its contributors may
 *    be used to endorse or promote products derived from this software without 
 *    specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 */
package org.ikasan.configurationService.service;

import java.util.List;

import org.ikasan.configurationService.model.ConfigurationParameterMapImpl;
import org.ikasan.configurationService.model.PlatformConfiguration;
import org.ikasan.configurationService.model.PlatformConfigurationConfiguredResource;
import org.ikasan.spec.configuration.Configuration;
import org.ikasan.spec.configuration.ConfigurationManagement;
import org.ikasan.spec.configuration.ConfigurationParameter;
import org.ikasan.spec.configuration.ConfiguredResource;
import org.ikasan.spec.configuration.PlatformConfigurationConstants;
import org.ikasan.spec.configuration.PlatformConfigurationService;

/**
 * 
 * @author Ikasan Development Team
 *
 */
public class PlatformConfigurationServiceImpl implements PlatformConfigurationService
{
	protected ConfigurationManagement configurationManagement;
	
	public PlatformConfigurationServiceImpl(ConfigurationManagement configurationManagement)
	{
		this.configurationManagement = configurationManagement;
		if(this.configurationManagement == null)
		{
			throw new IllegalArgumentException("configuration management cannot be null!");
		}
	}

	/* (non-Javadoc)
	 * @see org.ikasan.spec.configuration.PlatformConfigurationService#getConfigurationValue(java.lang.String)
	 */
	@Override
	public String getConfigurationValue(String paramName)
	{
		PlatformConfigurationConfiguredResource platformConfigurationConfiguredResource = new PlatformConfigurationConfiguredResource();
        
        Configuration configuration = this.configurationManagement.getConfiguration(platformConfigurationConfiguredResource);

        if(configuration == null) {
            platformConfigurationConfiguredResource.setConfiguration(new PlatformConfiguration());
            configuration = this.configurationManagement.createConfiguration(platformConfigurationConfiguredResource);

            this.configurationManagement.saveConfiguration(configuration);
        }
        
        final List parameters = (List)configuration.getParameters();
        
        ConfigurationParameterMapImpl parameterMap = null;
        
        for(ConfigurationParameter parameter: parameters)
        {
        	if(parameter instanceof ConfigurationParameterMapImpl impl)
        	{
        		parameterMap = impl;
        	}
        }
        
        if(parameterMap == null)
        {
        	throw new RuntimeException("Cannot resolve the platform configuration map containing the platform configuration!");
        }
        
        return parameterMap.getValue().get(paramName) == null ? "":parameterMap.getValue().get(paramName);
	}

	@Override
	public void saveConfigurationValue(String paramName, String value)
	{
		PlatformConfigurationConfiguredResource platformConfigurationConfiguredResource = new PlatformConfigurationConfiguredResource();

		Configuration configuration = this.configurationManagement.getConfiguration(platformConfigurationConfiguredResource);

		final List parameters = (List)configuration.getParameters();

		ConfigurationParameterMapImpl parameterMap = null;

		for(ConfigurationParameter parameter: parameters)
		{
			if(parameter instanceof ConfigurationParameterMapImpl impl)
			{
				parameterMap = impl;
			}
		}

		if(parameterMap == null)
		{
			throw new RuntimeException("Cannot resolve the platform configuration map containing the platform configuration!");
		}

		parameterMap.getValue().put(paramName, value);

		this.configurationManagement.saveConfiguration(configuration);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy