package org.cloudifysource.rest.util; import java.lang.reflect.InvocationTargetException; import org.apache.commons.beanutils.BeanUtils; import org.cloudifysource.domain.statistics.AbstractConfig; import org.openspaces.admin.pu.statistics.InstancesStatisticsConfig; import org.openspaces.admin.pu.statistics.TimeWindowStatisticsConfig; /** * Converts Domain POJO objects into openspaces config POJOS. * * @author adaml * */ public class OpenspacesDomainStatisticsAdapter { private static final String OPENSPACES_STATISTICS_CONFIG_PACKAGE_NAME = "org.openspaces.admin.pu.statistics"; private org.openspaces.admin.config.AbstractConfig createStatisticsConfig( final AbstractConfig config) throws InstantiationException, IllegalAccessException, ClassNotFoundException, InvocationTargetException { final String configClassName = config.getClass().getSimpleName(); final String openspacesInstanceStatisticsClass = OPENSPACES_STATISTICS_CONFIG_PACKAGE_NAME + "." + configClassName; Object obj = Class.forName(openspacesInstanceStatisticsClass).newInstance(); //copy all properties from DSL POJO to its equivalent openspaces object. BeanUtils.copyProperties(obj, config); return (org.openspaces.admin.config.AbstractConfig) obj; } /** * Create an openspaces instance statistics config object using the DSL config POJO. * @param config * instance statistics config DSL POJO. * @return * the equivalent openspaces instance statistics config object. * @throws InstantiationException . * @throws IllegalAccessException . * @throws ClassNotFoundException . * @throws InvocationTargetException . */ public InstancesStatisticsConfig createInstanceStatisticsConfig(final AbstractConfig config) throws InstantiationException, IllegalAccessException, ClassNotFoundException, InvocationTargetException { return (InstancesStatisticsConfig) createStatisticsConfig(config); } /** * Create an openspaces time window statistics config object using the DSL config POJO. * @param config * instance statistics config DSL POJO. * @return * the equivalent openspaces time window statistics config object. * @throws InstantiationException . * @throws IllegalAccessException . * @throws ClassNotFoundException . * @throws InvocationTargetException . */ public TimeWindowStatisticsConfig createTimeWindowStatisticsConfig(final AbstractConfig config) throws InstantiationException, IllegalAccessException, ClassNotFoundException, InvocationTargetException { return (TimeWindowStatisticsConfig) createStatisticsConfig(config); } }