/** * <copyright> * * Copyright (c) 2005, 2006, 2007, 2008 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: ExtensionUtil.java,v 1.12 2009/03/15 14:49:49 mtaal Exp $ */ package org.eclipse.emf.teneo.extension; import org.eclipse.emf.teneo.PersistenceOptions; import org.eclipse.emf.teneo.annotations.mapper.AnnotationGenerator; import org.eclipse.emf.teneo.annotations.mapper.BasicPamodelBuilder; import org.eclipse.emf.teneo.annotations.mapper.BidirectionalManyToManyAnnotator; import org.eclipse.emf.teneo.annotations.mapper.EClassAnnotator; import org.eclipse.emf.teneo.annotations.mapper.EDataTypeAnnotator; import org.eclipse.emf.teneo.annotations.mapper.EFeatureAnnotator; import org.eclipse.emf.teneo.annotations.mapper.ManyToOneReferenceAnnotator; import org.eclipse.emf.teneo.annotations.mapper.OneToManyAttributeAnnotator; import org.eclipse.emf.teneo.annotations.mapper.OneToManyReferenceAnnotator; import org.eclipse.emf.teneo.annotations.mapper.OneToOneReferenceAnnotator; import org.eclipse.emf.teneo.annotations.mapper.PersistenceFileProvider; import org.eclipse.emf.teneo.annotations.mapper.PersistenceMappingBuilder; import org.eclipse.emf.teneo.annotations.mapper.SingleAttributeAnnotator; import org.eclipse.emf.teneo.annotations.mapper.UnidirectionalManyToManyAnnotator; import org.eclipse.emf.teneo.annotations.parser.EAnnotationParserImporter; import org.eclipse.emf.teneo.annotations.xml.XmlElementToEStructuralFeatureMapper; import org.eclipse.emf.teneo.annotations.xml.XmlPersistenceContentHandler; import org.eclipse.emf.teneo.annotations.xml.XmlPersistenceMapper; import org.eclipse.emf.teneo.mapping.strategy.EntityNameStrategy; import org.eclipse.emf.teneo.mapping.strategy.SQLNameStrategy; import org.eclipse.emf.teneo.mapping.strategy.impl.EntityResolvingNameStrategy; import org.eclipse.emf.teneo.mapping.strategy.impl.TeneoSQLNameStrategy; /** * Contains simple utility methods. * * @author <a href="mailto:mtaal@elver.org">Martin Taal</a> * @version $Revision: 1.12 $ */ public class ExtensionUtil { /** Creates a default extension */ public static Extension createExtension(Class<?> extensionPoint, Class<?> clz) { return createExtension(extensionPoint, clz, true); } public static Extension createExtension(Class<?> extensionPoint, Class<?> clz, boolean defaultExtension) { final Extension extension = new Extension(); extension.setPoint(extensionPoint.getName()); extension.setClassName(clz.getName()); extension.setDefaultExtension(defaultExtension); return extension; } public static Extension createExtension(String pointClassName, boolean singleton) { final Extension extension = new Extension(); extension.setPoint(pointClassName); extension.setClassName(pointClassName); extension.setDefaultExtension(true); extension.setSingleton(singleton); return extension; } public static Extension createExtension(String pointClassName, String className, boolean singleton) { final Extension extension = new Extension(); extension.setPoint(pointClassName); extension.setClassName(className); extension.setDefaultExtension(true); extension.setSingleton(singleton); return extension; } /** Register a number of default Extensions */ public static void registerDefaultExtensions(ExtensionManager em) { // the ones coming from this plugin em.registerExtension(createExtension(BasicPamodelBuilder.class, BasicPamodelBuilder.class)); em.registerExtension(createExtension(AnnotationGenerator.class, AnnotationGenerator.class)); em.registerExtension(createExtension(EAnnotationParserImporter.class, EAnnotationParserImporter.class)); em.registerExtension(createExtension(PersistenceMappingBuilder.class, PersistenceMappingBuilder.class)); em.registerExtension(createExtension(XmlPersistenceMapper.class, XmlPersistenceMapper.class)); em.registerExtension(createExtension(PersistenceFileProvider.class, PersistenceFileProvider.class)); // from now on always use the classloader // em.registerExtension(createExtension(ClassLoaderStrategy.class, // ContextClassLoaderStrategy.class)); em.registerExtension(createExtension(EntityNameStrategy.class, EntityResolvingNameStrategy.class)); em.registerExtension(createExtension(SQLNameStrategy.class, TeneoSQLNameStrategy.class)); em.registerExtension(createExtension( XmlPersistenceContentHandler.class, XmlPersistenceContentHandler.class)); em.registerExtension(createExtension( XmlElementToEStructuralFeatureMapper.class, XmlElementToEStructuralFeatureMapper.class)); em.registerExtension(createExtension(PersistenceOptions.class, PersistenceOptions.class)); // annotator related em.registerExtension(createExtension(EClassAnnotator.class, EClassAnnotator.class)); em.registerExtension(createExtension(EFeatureAnnotator.class, EFeatureAnnotator.class)); em.registerExtension(createExtension(OneToManyAttributeAnnotator.class, OneToManyAttributeAnnotator.class)); em.registerExtension(createExtension(SingleAttributeAnnotator.class, SingleAttributeAnnotator.class)); em.registerExtension(createExtension( BidirectionalManyToManyAnnotator.class, BidirectionalManyToManyAnnotator.class)); em.registerExtension(createExtension( UnidirectionalManyToManyAnnotator.class, UnidirectionalManyToManyAnnotator.class)); em.registerExtension(createExtension(EDataTypeAnnotator.class, EDataTypeAnnotator.class)); em.registerExtension(createExtension(OneToManyReferenceAnnotator.class, OneToManyReferenceAnnotator.class)); em.registerExtension(createExtension(OneToOneReferenceAnnotator.class, OneToOneReferenceAnnotator.class)); em.registerExtension(createExtension(ManyToOneReferenceAnnotator.class, ManyToOneReferenceAnnotator.class)); // from the hibernate plugin em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.HbContext", true)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerAccessor", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerFeatureIDAccessor", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerFeatureIDPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.econtainer.EContainerPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.property.EListPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.property.EReferencePropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.property.FeatureMapEntryFeatureURIPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.econtainer.NewEContainerFeatureIDPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.property.FeatureMapEntryPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.property.FeatureMapPropertyHandler", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.property.VersionPropertyHandler", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.EMFInterceptor", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEList", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableEMap", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.elist.HibernatePersistableFeatureMap", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.elist.HbExtraLazyPersistableEList", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.elist.MapHibernatePersistableEMap", false)); // hibernate mapper em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.HibernateMappingGenerator", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.MappingContext", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.BasicMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.EmbeddedMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.EntityMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.FeatureMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.IdMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.ManyAttributeMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.ManyToManyMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.ManyToOneMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.MappingContext", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.OneToManyMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.OneToOneMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapper.ManyExternalReferenceMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.hibernate.mapping.EMFInitializeCollectionEventListener", false)); // jpox mapping em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.association.EmbeddedMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.association.ManyToManyMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.association.ManyToOneMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.association.OneToManyMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.association.OneToOneMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.BasicMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.ColumnMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.EClassFeatureMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.IdMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.InheritanceMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.JoinColumnMapper", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.ManyBasicMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.property.TableMapper", false)); em .registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.JPOXMappingGenerator", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.MappingContext", false)); em.registerExtension(createExtension( "org.eclipse.emf.teneo.jpox.mapper.NamingHandler", false)); } }