/** * <copyright> * * Copyright (c) 2009, 2010 Springsite BV (The Netherlands) and others * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Martin Taal - Initial API and implementation * * </copyright> * * $Id: ModelAnnotatorRegistry.java,v 1.8 2011/08/25 12:34:30 mtaal Exp $ */ package org.eclipse.emf.texo.generator; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.texo.annotations.AnnotationModelSuffixHandler; /** * Manages the available model annotators. * * @author <a href="mtaal@elver.org">Martin Taal</a> */ public class ModelAnnotatorRegistry { private static ModelAnnotatorRegistry instance = new ModelAnnotatorRegistry(); public static ModelAnnotatorRegistry getInstance() { return instance; } public static void setInstance(ModelAnnotatorRegistry instance) { ModelAnnotatorRegistry.instance = instance; } private List<ModelAnnotator> modelAnnotators = new ArrayList<ModelAnnotator>(); public void addModelAnnotator(ModelAnnotator modelAnnotator) { modelAnnotators.add(modelAnnotator); AnnotationModelSuffixHandler.getInstance().getSuffixes().add(modelAnnotator.getAnnotationModelSuffix()); } public List<ModelAnnotator> getModelAnnotators() { if (modelAnnotators.isEmpty()) { modelAnnotators = new ArrayList<ModelAnnotator>(); // initialize them ExtensionPointUtils.readModelAnnotatorsFromExtensions(); } return modelAnnotators; } public ModelAnnotator getModelAnnotator(Class<?> modelAnnotatorClass) { for (ModelAnnotator modelAnnotator : getModelAnnotators()) { if (modelAnnotatorClass.isAssignableFrom(modelAnnotator.getClass())) { return modelAnnotator; } } throw new IllegalArgumentException("No model annotator for model annotator class: " //$NON-NLS-1$ + modelAnnotatorClass); } }