/******************************************************************************* * Copyright (c) 2001, 2006 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jst.j2ee.ejb.internal.impl; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.impl.EFactoryImpl; import org.eclipse.emf.ecore.plugin.EcorePlugin; import org.eclipse.jem.java.JavaHelpers; import org.eclipse.jem.java.JavaParameter; import org.eclipse.jem.java.Method; import org.eclipse.jst.j2ee.ejb.AcknowledgeMode; import org.eclipse.jst.j2ee.ejb.ActivationConfig; import org.eclipse.jst.j2ee.ejb.ActivationConfigProperty; import org.eclipse.jst.j2ee.ejb.AssemblyDescriptor; import org.eclipse.jst.j2ee.ejb.CMPAttribute; import org.eclipse.jst.j2ee.ejb.CMRField; import org.eclipse.jst.j2ee.ejb.ContainerManagedEntity; import org.eclipse.jst.j2ee.ejb.DestinationType; import org.eclipse.jst.j2ee.ejb.EJBJar; import org.eclipse.jst.j2ee.ejb.EJBMethodCategory; import org.eclipse.jst.j2ee.ejb.EJBRelation; import org.eclipse.jst.j2ee.ejb.EJBRelationshipRole; import org.eclipse.jst.j2ee.ejb.EjbFactory; import org.eclipse.jst.j2ee.ejb.EjbPackage; import org.eclipse.jst.j2ee.ejb.Entity; import org.eclipse.jst.j2ee.ejb.ExcludeList; import org.eclipse.jst.j2ee.ejb.MessageDriven; import org.eclipse.jst.j2ee.ejb.MessageDrivenDestination; import org.eclipse.jst.j2ee.ejb.MethodElement; import org.eclipse.jst.j2ee.ejb.MethodElementKind; import org.eclipse.jst.j2ee.ejb.MethodPermission; import org.eclipse.jst.j2ee.ejb.MethodTransaction; import org.eclipse.jst.j2ee.ejb.MultiplicityKind; import org.eclipse.jst.j2ee.ejb.Query; import org.eclipse.jst.j2ee.ejb.QueryMethod; import org.eclipse.jst.j2ee.ejb.Relationships; import org.eclipse.jst.j2ee.ejb.ReturnTypeMapping; import org.eclipse.jst.j2ee.ejb.RoleSource; import org.eclipse.jst.j2ee.ejb.Session; import org.eclipse.jst.j2ee.ejb.SessionType; import org.eclipse.jst.j2ee.ejb.SubscriptionDurabilityKind; import org.eclipse.jst.j2ee.ejb.TransactionAttributeType; import org.eclipse.jst.j2ee.ejb.TransactionType; import org.eclipse.jst.j2ee.ejb.internal.util.CMPKeySynchronizationAdapter; import org.eclipse.wst.common.internal.emf.utilities.AdapterFactoryDescriptor; import org.eclipse.wst.common.internal.emf.utilities.AdapterFactoryUtil; import org.eclipse.wst.common.internal.emf.utilities.ExtendedEcoreUtil; /** * @generated */ public class EjbFactoryImpl extends EFactoryImpl implements EjbFactory { /** * Creates the default factory implementation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public static EjbFactory init() { try { EjbFactory theEjbFactory = (EjbFactory)EPackage.Registry.INSTANCE.getEFactory("ejb.xmi"); //$NON-NLS-1$ if (theEjbFactory != null) { return theEjbFactory; } } catch (Exception exception) { EcorePlugin.INSTANCE.log(exception); } return new EjbFactoryImpl(); } private static List CMP_ADAPTER_FACTORIES = new ArrayList(1); private static List CMP_ADAPTER_FACTORY_DESCRIPTORS = new ArrayList(1); private static List EJB_RELATION_ADAPTER_FACTORIES = new ArrayList(1); private static List EJB_RELATION_ADAPTER_FACTORY_DESCRIPTORS = new ArrayList(1); private static List RELATIONSHIPS_ADAPTER_FACTORIES = new ArrayList(1); private static List RELATIONSHIPS_ADAPTER_FACTORY_DESCRIPTORS = new ArrayList(1); public static final String MM_VERSION = "1.1"; //$NON-NLS-1$ private boolean createdAdapterFactories = false; public EjbFactoryImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public EObject create(EClass eClass) { switch (eClass.getClassifierID()) { case EjbPackage.CONTAINER_MANAGED_ENTITY: return createContainerManagedEntity(); case EjbPackage.METHOD_PERMISSION: return createMethodPermission(); case EjbPackage.ASSEMBLY_DESCRIPTOR: return createAssemblyDescriptor(); case EjbPackage.METHOD_TRANSACTION: return createMethodTransaction(); case EjbPackage.SESSION: return createSession(); case EjbPackage.ENTITY: return createEntity(); case EjbPackage.EJB_METHOD_CATEGORY: return createEJBMethodCategory(); case EjbPackage.EJB_JAR: return createEJBJar(); case EjbPackage.METHOD_ELEMENT: return createMethodElement(); case EjbPackage.CMP_ATTRIBUTE: return createCMPAttribute(); case EjbPackage.RELATIONSHIPS: return createRelationships(); case EjbPackage.QUERY: return createQuery(); case EjbPackage.EJB_RELATION: return createEJBRelation(); case EjbPackage.EJB_RELATIONSHIP_ROLE: return createEJBRelationshipRole(); case EjbPackage.ROLE_SOURCE: return createRoleSource(); case EjbPackage.CMR_FIELD: return createCMRField(); case EjbPackage.MESSAGE_DRIVEN: return createMessageDriven(); case EjbPackage.MESSAGE_DRIVEN_DESTINATION: return createMessageDrivenDestination(); case EjbPackage.EXCLUDE_LIST: return createExcludeList(); case EjbPackage.QUERY_METHOD: return createQueryMethod(); case EjbPackage.ACTIVATION_CONFIG_PROPERTY: return createActivationConfigProperty(); case EjbPackage.ACTIVATION_CONFIG: return createActivationConfig(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$ } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object createFromString(EDataType eDataType, String initialValue) { switch (eDataType.getClassifierID()) { case EjbPackage.TRANSACTION_ATTRIBUTE_TYPE: return createTransactionAttributeTypeFromString(eDataType, initialValue); case EjbPackage.TRANSACTION_TYPE: return createTransactionTypeFromString(eDataType, initialValue); case EjbPackage.SESSION_TYPE: return createSessionTypeFromString(eDataType, initialValue); case EjbPackage.METHOD_ELEMENT_KIND: return createMethodElementKindFromString(eDataType, initialValue); case EjbPackage.ACKNOWLEDGE_MODE: return createAcknowledgeModeFromString(eDataType, initialValue); case EjbPackage.SUBSCRIPTION_DURABILITY_KIND: return createSubscriptionDurabilityKindFromString(eDataType, initialValue); case EjbPackage.RETURN_TYPE_MAPPING: return createReturnTypeMappingFromString(eDataType, initialValue); case EjbPackage.DESTINATION_TYPE: return createDestinationTypeFromString(eDataType, initialValue); case EjbPackage.MULTIPLICITY_KIND: return createMultiplicityKindFromString(eDataType, initialValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$ } } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public String convertToString(EDataType eDataType, Object instanceValue) { switch (eDataType.getClassifierID()) { case EjbPackage.TRANSACTION_ATTRIBUTE_TYPE: return convertTransactionAttributeTypeToString(eDataType, instanceValue); case EjbPackage.TRANSACTION_TYPE: return convertTransactionTypeToString(eDataType, instanceValue); case EjbPackage.SESSION_TYPE: return convertSessionTypeToString(eDataType, instanceValue); case EjbPackage.METHOD_ELEMENT_KIND: return convertMethodElementKindToString(eDataType, instanceValue); case EjbPackage.ACKNOWLEDGE_MODE: return convertAcknowledgeModeToString(eDataType, instanceValue); case EjbPackage.SUBSCRIPTION_DURABILITY_KIND: return convertSubscriptionDurabilityKindToString(eDataType, instanceValue); case EjbPackage.RETURN_TYPE_MAPPING: return convertReturnTypeMappingToString(eDataType, instanceValue); case EjbPackage.DESTINATION_TYPE: return convertDestinationTypeToString(eDataType, instanceValue); case EjbPackage.MULTIPLICITY_KIND: return convertMultiplicityKindToString(eDataType, instanceValue); default: throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$ } } public MethodElement createMethodElement(String aSignature) { MethodElement me = createMethodElement(); me.initializeFromSignature(aSignature); return me; } /** * Helper method to create a MethodElement from a java method. Defaults the type to "Unspecified". */ public MethodElement createMethodElementFrom( Method method) { MethodElement element = createMethodElement(); element.setName(method.getName()); element.setType(MethodElementKind.UNSPECIFIED_LITERAL); JavaParameter[] params = method.listParametersWithoutReturn(); if (params.length == 0) element.applyZeroParams(); else { for (int i = 0; i < params.length; i++) { JavaHelpers helper = (JavaHelpers) params[i].getEType(); element.addMethodParams(helper.getQualifiedName()); } } return element; } /** * Helper method to reflect the method and create a MethodElement. If the parameter is null, creates an element * with a name of "*". Defaults the type to "Unspecified". */ public MethodElement createMethodElementFrom(java.lang.reflect.Method method) { String methodName = method == null ? "*" : method.getName(); //$NON-NLS-1$ MethodElement me = createMethodElement(); me.setName(methodName); me.setType(MethodElementKind.UNSPECIFIED_LITERAL); if (method != null) { Class[] types = method.getParameterTypes(); for (int i = 0; i < types.length; i++) { me.addMethodParams(getTypeName(types[i])); } } return me; } public static EjbFactory getActiveFactory() { return (EjbFactory) getPackage().getEFactoryInstance(); } /* * Utility routine to paper over array type names * Borrowed from a package-visibility helper on java.lang.reflect.Field */ static String getTypeName(Class type) { if (type.isArray()) { try { Class cl = type; int dimensions = 0; while (cl.isArray()) { dimensions++; cl = cl.getComponentType(); } StringBuffer sb = new StringBuffer(); sb.append(cl.getName()); for (int i = 0; i < dimensions; i++) { sb.append("[]");//$NON-NLS-1$ } return sb.toString(); } catch (Throwable e) { /*FALLTHRU*/ } } return type.getName(); } /** * @generated This field/method will be replaced during code generation. */ public MethodPermission createMethodPermission() { MethodPermissionImpl methodPermission = new MethodPermissionImpl(); return methodPermission; } /** * @generated This field/method will be replaced during code generation. */ public AssemblyDescriptor createAssemblyDescriptor() { AssemblyDescriptorImpl assemblyDescriptor = new AssemblyDescriptorImpl(); return assemblyDescriptor; } /** * @generated This field/method will be replaced during code generation. */ public MethodTransaction createMethodTransaction() { MethodTransactionImpl methodTransaction = new MethodTransactionImpl(); return methodTransaction; } /** * @generated This field/method will be replaced during code generation. */ public Entity createEntity() { EntityImpl entity = new EntityImpl(); return entity; } /** * @generated This field/method will be replaced during code generation. */ public ContainerManagedEntity createContainerManagedEntityGen() { ContainerManagedEntityImpl containerManagedEntity = new ContainerManagedEntityImpl(); return containerManagedEntity; } public ContainerManagedEntity createContainerManagedEntity() { ContainerManagedEntity cmp = createContainerManagedEntityGen(); adaptNew(cmp, CMP_ADAPTER_FACTORIES); addKeySynchronizationAdapter(cmp); return cmp; } /** * @param cmp */ private void addKeySynchronizationAdapter(ContainerManagedEntity cmp) { CMPKeySynchronizationAdapter cmpAdapter = new CMPKeySynchronizationAdapter(cmp); Adapter loadingAdapter = ExtendedEcoreUtil.createAdapterForLoading(cmpAdapter,cmp); cmp.eAdapters().add(loadingAdapter); } /** * @generated This field/method will be replaced during code generation. */ public CMPAttribute createCMPAttribute() { CMPAttributeImpl cmpAttribute = new CMPAttributeImpl(); return cmpAttribute; } /** * @generated This field/method will be replaced during code generation. */ public CMRField createCMRField() { CMRFieldImpl cmrField = new CMRFieldImpl(); return cmrField; } /** * @generated This field/method will be replaced during code generation. */ public EJBRelationshipRole createEJBRelationshipRole() { EJBRelationshipRoleImpl ejbRelationshipRole = new EJBRelationshipRoleImpl(); return ejbRelationshipRole; } /** * @generated This field/method will be replaced during code generation. */ public EJBRelation createEJBRelationGen() { EJBRelationImpl ejbRelation = new EJBRelationImpl(); return ejbRelation; } public EJBRelation createEJBRelation() { EJBRelation rel = createEJBRelationGen(); adaptNew(rel, EJB_RELATION_ADAPTER_FACTORIES); return rel; } /** * @generated This field/method will be replaced during code generation. */ public Relationships createRelationshipsGen() { RelationshipsImpl relationships = new RelationshipsImpl(); return relationships; } public Relationships createRelationships() { Relationships rel = createRelationshipsGen(); adaptNew(rel, RELATIONSHIPS_ADAPTER_FACTORIES); return rel; } /** * @generated This field/method will be replaced during code generation. */ public EJBJar createEJBJar() { EJBJarImpl ejbJar = new EJBJarImpl(); return ejbJar; } /** * @generated This field/method will be replaced during code generation. */ public RoleSource createRoleSource() { RoleSourceImpl roleSource = new RoleSourceImpl(); return roleSource; } /** * @generated This field/method will be replaced during code generation. */ public Query createQuery() { QueryImpl query = new QueryImpl(); return query; } /** * @generated This field/method will be replaced during code generation. */ public QueryMethod createQueryMethod() { QueryMethodImpl queryMethod = new QueryMethodImpl(); return queryMethod; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ActivationConfigProperty createActivationConfigProperty() { ActivationConfigPropertyImpl activationConfigProperty = new ActivationConfigPropertyImpl(); return activationConfigProperty; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ActivationConfig createActivationConfig() { ActivationConfigImpl activationConfig = new ActivationConfigImpl(); return activationConfig; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public TransactionAttributeType createTransactionAttributeTypeFromString(EDataType eDataType, String initialValue) { TransactionAttributeType result = TransactionAttributeType.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertTransactionAttributeTypeToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public TransactionType createTransactionTypeFromString(EDataType eDataType, String initialValue) { TransactionType result = TransactionType.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertTransactionTypeToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public SessionType createSessionTypeFromString(EDataType eDataType, String initialValue) { SessionType result = SessionType.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertSessionTypeToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public MethodElementKind createMethodElementKindFromString(EDataType eDataType, String initialValue) { MethodElementKind result = MethodElementKind.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertMethodElementKindToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public AcknowledgeMode createAcknowledgeModeFromString(EDataType eDataType, String initialValue) { AcknowledgeMode result = AcknowledgeMode.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertAcknowledgeModeToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public SubscriptionDurabilityKind createSubscriptionDurabilityKindFromString(EDataType eDataType, String initialValue) { SubscriptionDurabilityKind result = SubscriptionDurabilityKind.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertSubscriptionDurabilityKindToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public ReturnTypeMapping createReturnTypeMappingFromString(EDataType eDataType, String initialValue) { ReturnTypeMapping result = ReturnTypeMapping.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertReturnTypeMappingToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public DestinationType createDestinationTypeFromString(EDataType eDataType, String initialValue) { DestinationType result = DestinationType.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertDestinationTypeToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public MultiplicityKind createMultiplicityKindFromString(EDataType eDataType, String initialValue) { MultiplicityKind result = MultiplicityKind.get(initialValue); if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ return result; } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public String convertMultiplicityKindToString(EDataType eDataType, Object instanceValue) { return instanceValue == null ? null : instanceValue.toString(); } /** * @generated This field/method will be replaced during code generation. */ public MethodElement createMethodElement() { MethodElementImpl methodElement = new MethodElementImpl(); return methodElement; } /** * @generated This field/method will be replaced during code generation. */ public ExcludeList createExcludeList() { ExcludeListImpl excludeList = new ExcludeListImpl(); return excludeList; } /** * @generated This field/method will be replaced during code generation. */ public Session createSession() { SessionImpl session = new SessionImpl(); return session; } /** * @generated This field/method will be replaced during code generation. */ public MessageDriven createMessageDriven() { MessageDrivenImpl messageDriven = new MessageDrivenImpl(); return messageDriven; } /** * @generated This field/method will be replaced during code generation. */ public MessageDrivenDestination createMessageDrivenDestination() { MessageDrivenDestinationImpl messageDrivenDestination = new MessageDrivenDestinationImpl(); return messageDrivenDestination; } /** * @generated This field/method will be replaced during code generation. */ public EJBMethodCategory createEJBMethodCategory() { EJBMethodCategoryImpl ejbMethodCategory = new EJBMethodCategoryImpl(); return ejbMethodCategory; } /** * @generated This field/method will be replaced during code generation. */ public EjbPackage getEjbPackage() { return (EjbPackage)getEPackage(); } /** * @generated This field/method will be replaced during code generation. */ public static EjbPackage getPackage() { return EjbPackage.eINSTANCE; } public static void internalRegisterCMPAdapterFactory(AdapterFactoryDescriptor config) { CMP_ADAPTER_FACTORY_DESCRIPTORS.add(config); } public static void internalRegisterEJBRelationAdapterFactory(AdapterFactoryDescriptor config) { EJB_RELATION_ADAPTER_FACTORY_DESCRIPTORS.add(config); } public static void internalRegisterRelationshipsAdapterFactory(AdapterFactoryDescriptor config) { RELATIONSHIPS_ADAPTER_FACTORY_DESCRIPTORS.add(config); } private void createAdapterFactories() { createdAdapterFactories = true; AdapterFactoryUtil.createAdapterFactories(CMP_ADAPTER_FACTORY_DESCRIPTORS, CMP_ADAPTER_FACTORIES); AdapterFactoryUtil.createAdapterFactories(EJB_RELATION_ADAPTER_FACTORY_DESCRIPTORS, EJB_RELATION_ADAPTER_FACTORIES); AdapterFactoryUtil.createAdapterFactories(RELATIONSHIPS_ADAPTER_FACTORY_DESCRIPTORS, RELATIONSHIPS_ADAPTER_FACTORIES); } private void adaptNew(Notifier notifier, List factories) { if (!createdAdapterFactories) createAdapterFactories(); AdapterFactoryUtil.adaptNew(notifier, factories); } }