package org.marketcetera.core; import java.util.Arrays; import java.util.List; import org.marketcetera.util.misc.ClassVersion; import org.marketcetera.util.ws.ContextClassProvider; import com.google.common.collect.Lists; /* $License$ */ /** * Provides common behavior for <code>ContextClassProvider</code> instances. * * @author <a href="mailto:colin@marketcetera.com">Colin DuPlantis</a> * @version $Id: ContextClassAggregator.java 16901 2014-05-11 16:14:11Z colin $ * @since 2.4.0 */ @ClassVersion("$Id: ContextClassAggregator.java 16901 2014-05-11 16:14:11Z colin $") public class ContextClassAggregator implements ContextClassProvider { /* (non-Javadoc) * @see org.marketcetera.util.ws.ContextClassProvider#getContextClasses() */ @Override public Class<?>[] getContextClasses() { return allClasses.toArray(new Class<?>[allClasses.size()]); } /** * Create a new ContextClassAggregator instance. */ public ContextClassAggregator() {} /** * Create a new ContextClassAggregator instance. * * @param inProviders a <code>ContextClassProvider...</code> value */ public ContextClassAggregator(ContextClassProvider...inProviders) { if(inProviders != null) { for(ContextClassProvider provider : inProviders) { allClasses.addAll(Arrays.asList(provider.getContextClasses())); } } } /** * Sets the context class providers to aggregate. * * @param inProviders a <code>List<ContextClassProvider></code> value */ public void setContextClassProviders(List<ContextClassProvider> inProviders) { allClasses.clear(); if(inProviders != null) { for(ContextClassProvider provider : inProviders) { allClasses.addAll(Arrays.asList(provider.getContextClasses())); } } } /** * contains all classes */ private final List<Class<?>> allClasses = Lists.newArrayList(); }