package org.openflexo.model;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import org.openflexo.model.exceptions.ModelDefinitionException;
public class ModelContextLibrary {
private static final Map<Class<?>, ModelContext> contexts = new Hashtable<Class<?>, ModelContext>();
public static synchronized ModelContext getModelContext(Class<?> baseClass) throws ModelDefinitionException {
ModelContext context = contexts.get(baseClass);
if (context == null) {
contexts.put(baseClass, context = new ModelContext(baseClass));
}
return context;
}
public static boolean hasContext(Class<?> baseClass) {
return contexts.get(baseClass) != null;
}
public static List<ModelContext> getModelContext(List<Class<?>> classes) throws ModelDefinitionException {
if (classes.size() == 1) {
return Arrays.asList(getModelContext(classes.get(0)));
}
List<ModelContext> contexts = new ArrayList<ModelContext>(classes.size());
for (Class<?> klass : classes) {
contexts.add(getModelContext(klass));
}
return contexts;
}
}