Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.jst.jee/common')
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationFactory.java419
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationModelProvider.java560
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java326
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/ManyToOneRelation.java127
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/MyModelProviderEvent.java82
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/Result.java61
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/BaseRefsMerger.java68
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EJBRefsMerger.java196
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EnvEntriesMerger.java83
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/IMerger.java29
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/JNDIRefsMerger.java118
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/MessageDestinationRefsMerger.java87
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementMerger.java79
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementsMerger.java58
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelException.java35
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceContextRefsMerger.java109
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceUnitRefsMerger.java79
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceEnvRefsMerger.java81
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceRefsMerger.java88
-rw-r--r--plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ServiceRefsMerger.java82
20 files changed, 0 insertions, 2767 deletions
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationFactory.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationFactory.java
deleted file mode 100644
index 337d317e5..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationFactory.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.common;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.jdt.core.IAnnotation;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IField;
-import org.eclipse.jdt.core.IImportDeclaration;
-import org.eclipse.jdt.core.IJavaElement;
-import org.eclipse.jdt.core.IMember;
-import org.eclipse.jdt.core.IMemberValuePair;
-import org.eclipse.jdt.core.IMethod;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.Signature;
-import org.eclipse.jst.javaee.core.Description;
-import org.eclipse.jst.javaee.core.EjbLocalRef;
-import org.eclipse.jst.javaee.core.InjectionTarget;
-import org.eclipse.jst.javaee.core.JavaeeFactory;
-import org.eclipse.jst.javaee.core.ResAuthType;
-import org.eclipse.jst.javaee.core.ResSharingScopeType;
-import org.eclipse.jst.javaee.core.ResourceRef;
-import org.eclipse.jst.javaee.core.RunAs;
-import org.eclipse.jst.javaee.core.SecurityRole;
-import org.eclipse.jst.javaee.core.SecurityRoleRef;
-import org.eclipse.jst.javaee.ejb.SessionBean;
-
-/**
- * @author Kiril Mitov k.mitov@sap.com
- *
- */
-public abstract class AbstractAnnotationFactory {
-
- /**
- * @param value
- * @return true if "value" is an array of objects.
- */
- protected static boolean isArrayOfObject(Object value) {
- return Object[].class.isInstance(value);
- }
-
- protected Object getAnnotatedValue(String name, IMemberValuePair[] memberValuePairs) throws JavaModelException {
- for (IMemberValuePair pair : memberValuePairs) {
- if (name.equals(pair.getMemberName())) {
- return pair.getValue();
- }
- }
- return null;
- }
-
- protected boolean containsImport(ICompilationUnit unit, String importt) throws JavaModelException {
- for (IImportDeclaration declaration : unit.getImports()) {
- if (declaration.getElementName().equals(importt))
- return true;
- }
- return false;
- }
-
- /**
- * Resolve the given <code>toResolve</code> string to an IType in the
- * context of <code>declaringType</code>
- *
- * @param declaringType
- * @param toResolve
- * the type that should be resolved.
- * @return the resolved type or <code>null</code> if such type can not be
- * resolved. Returns <code>null</code> if toResolve is
- * <code>null</code>
- * @throws JavaModelException
- */
- protected IType resolveType(IType declaringType, String toResolve) throws JavaModelException {
- if (toResolve == null)
- return null;
- String[][] fullTypeName = declaringType.resolveType(toResolve);
- if (fullTypeName != null)
- return declaringType.getJavaProject().findType(fullTypeName[0][0], fullTypeName[0][1]);
- return null;
- }
-
- protected void processEjbAnnotation(IAnnotation annotation, List<EjbLocalRef> localRefs, IMember member,
- Collection<IType> dependedTypes) throws JavaModelException {
- int memberType = member.getElementType();
- IMemberValuePair[] pairs = annotation.getMemberValuePairs();
-
- String beanInterfaceValue = (String) getAnnotatedValue("beanInterface", pairs);
- beanInterfaceValue = internalProcessInjection(beanInterfaceValue, member, dependedTypes);
- if (beanInterfaceValue == null)
- return;
-
- /*
- * The name of the reference should be the value of the "name"
- * attribute. If there is no "name" attribute then the name of the
- * reference is the qualified name of the member. Check this at
- * Enterprise Java Beans, 3.0, Section 14.1.5.3
- */
- String refName = (String) getAnnotatedValue("name", pairs);
- if (refName == null) {
- refName = getMemberQualifiedName(member);
- }
- EjbLocalRef ref = JavaeeFactory.eINSTANCE.createEjbLocalRef();
- ref.setEjbRefName(refName);
- localRefs.add(ref);
- ref.setLocal(beanInterfaceValue);
- ref.setLocalHome(beanInterfaceValue);
- ref.setEjbLink((String) getAnnotatedValue("beanName", pairs));
- ref.setMappedName((String) getAnnotatedValue("mappedName", pairs));
- if (memberType == IJavaElement.METHOD || memberType == IJavaElement.FIELD) {
- createInjectionTarget(refName, ref.getInjectionTargets(), annotation);
- }
- }
-
- private void createInjectionTarget(String refName, List<InjectionTarget> injectionTargets, IAnnotation annotation) {
- InjectionTarget injectionTarget = JavaeeFactory.eINSTANCE.createInjectionTarget();
- int index = refName.indexOf('/');
- if (index != -1) {
- injectionTarget.setInjectionTargetClass(refName.substring(0, index));
- injectionTarget.setInjectionTargetName(refName.substring(index + 1));
- } else {
- injectionTarget.setInjectionTargetName(refName);
- injectionTarget.setInjectionTargetClass("");//$NON-NLS-1$
- }
- injectionTargets.add(injectionTarget);
- }
-
- /**
- * Resource annotation can be placed on class, method, field.
- *
- * Checks are made if the resource annotation is valid.
- * <p>
- * If on class there should be a "type" attribute. If on method the method
- * must have one param with type that is an interface. If on field the field
- * type must be an interface.
- *
- * If the type of the method/field can not be resolved the result will
- * contain the unresolved value.
- *
- * In case the type of method/field is array, wildcard, simple type this is
- * not a place for the annotation.
- * </p>
- *
- * <p>
- * In case of method/field the type specified using the "type" attribute has
- * a higher priority that the method/field type.
- * </p>
- *
- * <p>
- * Only resolved types are added to dependedTypes
- * </p>
- *
- * @param sessionBean
- * @param member
- * @param annotation
- * @param dependedTypes
- * @throws JavaModelException
- */
- protected void processResourceRefAnnotation(IAnnotation annotation, List<ResourceRef> resourceRefs, IMember member,
- Collection<IType> dependedTypes) throws JavaModelException {
-
- IMemberValuePair[] pairs = annotation.getMemberValuePairs();
- String specifiedType = (String) getAnnotatedValue("type", pairs);
- specifiedType = internalProcessInjection(specifiedType, member, dependedTypes);
- if (specifiedType == null)
- return;
- String refName = (String) getAnnotatedValue("name", pairs);
- if (refName == null)
- refName = getMemberQualifiedName(member);
- ResourceRef ref = JavaeeFactory.eINSTANCE.createResourceRef();
- ref.setResRefName(refName);
- ref.setResType(specifiedType);
- ref.setMappedName((String) getAnnotatedValue("mappedName", pairs));
- String description = (String) getAnnotatedValue("description", pairs);
- if (description != null) {
- Description desc = JavaeeFactory.eINSTANCE.createDescription();
- desc.setValue(description);
- ref.getDescriptions().clear();
- ref.getDescriptions().add(desc);
- }
- if (member.getElementType() == IJavaElement.METHOD || member.getElementType() == IJavaElement.FIELD) {
- createInjectionTarget(refName, ref.getInjectionTargets(), annotation);
- }
- String value = (String) getAnnotatedValue("authenticationType", pairs);
- /*
- * the default value is AuthenticationType.APPLICATION which is handled
- * by the EMF. no need to check for this value
- */
- if ("AuthenticationType.CONTAINER".equals(value)) {
- ref.setResAuth(ResAuthType.CONTAINER_LITERAL);
- } else if ("CONTAINER".equals(value)
- && containsImport(member.getCompilationUnit(), "AuthenticationType.CONTAINER")) {
- ref.setResAuth(ResAuthType.CONTAINER_LITERAL);
- }
- Boolean shareable = (Boolean) getAnnotatedValue("shareable", pairs);
- /*
- * The default value for sharable is true. Check and process only
- * unsharable
- */
- if (Boolean.FALSE.equals(shareable))
- ref.setResSharingScope(ResSharingScopeType.UNSHAREABLE_LITERAL);
-
- resourceRefs.add(ref);
- }
-
- /**
- * The method has the task of processing the member along with the specified
- * member and return a String. The result is to be used as a reference value
- * for the injection on this member. Usage are the
- *
- * @EJB and
- * @Resource annotations.
- *
- * <p>
- * If the specifiedType is <code>null</code> and member is of type
- * IJavaElement.TYPE the method returns <code>null</code>
- * </p>
- *
- * <p>
- * If the type of the member can be resolved and is an interface the method
- * returns <code>null</code>. Here the "type" of the member is the result
- * from {@link #getUnresolvedType(IMember)}
- * </p>
- *
- *
- * Only if the specifiedType can be calculated and is resolved it is added
- * to the dependedTypes. If the specifiedType can not be resolved nothing is
- * added to dependedTypes.
- *
- * @see {@link #processEjbAnnotation(IAnnotation, SessionBean, IMember, Collection)}
- * @see #processResourceRefAnnotation(SessionBean, IMember, IAnnotation,
- * Collection)
- *
- * @param specifiedType
- * @param member
- * @param dependedTypes
- * @return
- * @throws JavaModelException
- */
- private String internalProcessInjection(String specifiedType, IMember member, Collection<IType> dependedTypes)
- throws JavaModelException {
- boolean methodOrField = member.getElementType() == IJavaElement.METHOD
- || member.getElementType() == IJavaElement.FIELD;
- IType declaringType = (IType) (member.getElementType() == IJavaElement.TYPE ? member : member
- .getDeclaringType());
- String memberType = getUnresolvedType(member);
- // not type for this member can be retrieved. If member is a method or
- // field this means there is an error.
- if (getClassTypeSignature(memberType) == null && methodOrField)
- return null;
-
- // both type are null. This is not a valid case. This will hapen for a
- // type without specified type.
- if (specifiedType == null && memberType == null)
- return null;
-
- IType resolvedType = resolveType(declaringType, memberType);
- // we were able to get a type for the param of a method or type of
- // a field.
- // check if it is an interface. It might not be resolved, but we have a
- // value
- // for unresolved.
- if (methodOrField) {
- // if the resolved type is not null and it is not an interface this
- // annotation is not valid
- if (resolvedType != null) {
- if (resolvedType.isInterface())
- memberType = resolvedType.getFullyQualifiedName();
- else
- // invalid - if the method is with param that is not an
- // interface. Or the type of the field is not an interface.
- return null;
- }
- }
- // from now one use only the specified type for type resolving. If there
- // is no specified type use the member type. The check for whether they
- // were both null is previously made
- IType resolvedSpecifiedType = null;
- if (specifiedType == null) {
- specifiedType = memberType;
- resolvedSpecifiedType = resolvedType;
- } else
- resolvedSpecifiedType = resolveType(declaringType, specifiedType);
- if (resolvedSpecifiedType != null) {
- if (resolvedSpecifiedType.isInterface()) {
- specifiedType = resolvedSpecifiedType.getFullyQualifiedName();
- dependedTypes.add(resolvedSpecifiedType);
- } else
- // we have resolved the specified type and it is not an
- // interface. Not a valid annotation.
- return null;
- }
- return specifiedType;
- }
-
- /**
- * This method returns a qualified name for this member. The name is to be
- * used as ejb-ref-name.
- *
- * If the member is a type then fullyQualifiedName of the type is returned.
- *
- * If the member is a <code>field</code> declared in a <code>type</code>
- * then the result is
- * <code>type.getFullyQualifiedName() +"/" + field.elementName</code>
- *
- * If the member is a <code>method</code> declared in a <code>type</code>
- * and method name begins with "set" then: for type name =
- * "org.eclipse.Bean" and method name = "setMethodOne()" the result is
- * "org.eclipse.Bean/methodOne"
- *
- * Check this at Enterprise Java Beans, 3.0, Section 14.1.5.3
- *
- * @param member
- * @return
- */
- private String getMemberQualifiedName(IMember member) {
- String memberName = member.getElementName();
- int elementType = member.getElementType();
- if (elementType == IJavaElement.METHOD && memberName.startsWith("set")) {
- char ch = Character.toLowerCase(memberName.charAt(3));
- memberName = ch + memberName.substring(4);
- }
- return elementType == IJavaElement.TYPE ? ((IType) member).getFullyQualifiedName() : member.getDeclaringType()
- .getFullyQualifiedName()
- + "/" + memberName;
- }
-
- /**
- * Return the javaee type of this member. For types return <code>null</code>.
- * For methods with one param return the java type of this param. For fields
- * return the return the java type of the field.
- *
- * If the result is <code>null</code> then this member is not valid and a
- * javaee type can not be returned. This may happen for a method with more
- * then one param or for a field with a class type or primitive type
- *
- * @param member
- * @param memberType
- *
- * @return
- * @throws JavaModelException
- */
- private String getUnresolvedType(IMember member) throws JavaModelException {
- int memberType = member.getElementType();
- IType declaringType = member.getDeclaringType();
- String unresolvedTypeName = null;
- if (memberType == IJavaElement.FIELD) {
- unresolvedTypeName = Signature.toString(((IField) member).getTypeSignature());
- } else if (memberType == IJavaElement.METHOD) {
- IMethod method = (IMethod) member;
- if (method.getNumberOfParameters() != 1)
- return null;
- unresolvedTypeName = Signature.toString(method.getParameterTypes()[0]);
- } else if (memberType == IJavaElement.TYPE)
- return null;
- return unresolvedTypeName;
- }
-
- /**
- * Returns the type signature for toResolve only if toResolve is a class or
- * interface.
- *
- * @param toResolve
- * @return <code>null</code> if toResolve is <code>null</code> or simple
- * type, array type, wildcard type
- *
- */
- private String getClassTypeSignature(String toResolve) {
- if (toResolve == null)
- return null;
- toResolve = Signature.createTypeSignature(toResolve, false);
- if (Signature.getTypeSignatureKind(toResolve) != Signature.CLASS_TYPE_SIGNATURE)
- return null;
- return toResolve;
- }
-
- protected void processDeclareRoles(Result result, List<SecurityRoleRef> securityRoleRefs, IAnnotation annotation,
- IType type) throws JavaModelException {
- IMemberValuePair[] pairs = annotation.getMemberValuePairs();
- Object values = getAnnotatedValue("value", pairs);
- if (!isArrayOfObject(values))
- return;
- for (Object roleName : (Object[]) values) {
- SecurityRole role = JavaeeFactory.eINSTANCE.createSecurityRole();
- role.setRoleName((String) roleName);
- result.getAdditional().add(role);
- SecurityRoleRef ref = JavaeeFactory.eINSTANCE.createSecurityRoleRef();
- ref.setRoleName((String) roleName);
- securityRoleRefs.add(ref);
- }
- }
-
- protected void processResourcesAnnotation(IAnnotation annotation, List<ResourceRef> resourceRefs, IType type,
- Collection<IType> dependedTypes) throws JavaModelException {
- IMemberValuePair[] pairs = annotation.getMemberValuePairs();
- if (!isArrayOfObject(pairs[0].getValue()))
- return;
- Object[] values = (Object[]) pairs[0].getValue();
- for (Object resourceAnnotation : values) {
- processResourceRefAnnotation((IAnnotation) resourceAnnotation, resourceRefs, type, dependedTypes);
- }
- }
-
- protected void processRunAs(IAnnotation annotation,RunAs runAs) throws JavaModelException {
- IMemberValuePair[] pairs = annotation.getMemberValuePairs();
- if (pairs.length == 1) {
- String value = (String) getAnnotatedValue("value", pairs);
- runAs.setRoleName(value);
- }
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationModelProvider.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationModelProvider.java
deleted file mode 100644
index 2c37f3552..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractAnnotationModelProvider.java
+++ /dev/null
@@ -1,560 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.common;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceProxy;
-import org.eclipse.core.resources.IResourceProxyVisitor;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.core.ElementChangedEvent;
-import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IElementChangedListener;
-import org.eclipse.jdt.core.IJavaElementDelta;
-import org.eclipse.jdt.core.IJavaProject;
-import org.eclipse.jdt.core.IPackageFragment;
-import org.eclipse.jdt.core.IPackageFragmentRoot;
-import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jst.j2ee.model.IModelProvider;
-import org.eclipse.jst.j2ee.model.IModelProviderEvent;
-import org.eclipse.jst.j2ee.model.IModelProviderListener;
-import org.eclipse.jst.javaee.core.JavaEEObject;
-import org.eclipse.jst.javaee.core.SecurityRole;
-import org.eclipse.jst.javaee.core.SecurityRoleRef;
-import org.eclipse.jst.javaee.ejb.SessionBean;
-import org.eclipse.jst.jee.JEEPlugin;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-
-/**
- * Base implementation for model providers based on annotations in java files.
- *
- * Listeners can be registered with {@link #addListener(IModelProviderListener)}
- *
- * @author Kiril Mitov k.mitov@sap.com
- *
- */
-public abstract class AbstractAnnotationModelProvider<T> implements IElementChangedListener, IModelProvider {
-
- private static final String JAVA_EXTENSION = "java"; //$NON-NLS-1$
-
- /**
- * Find the security role with the given name in the given assembly
- * descriptor.
- *
- * @param assembly
- * @param name
- * @return <code>null</code> if a security role with this name can not be
- * found
- */
- private static SecurityRole findRole(Collection<SecurityRole> securityRoles, String name) {
- for (SecurityRole role : securityRoles) {
- if (role.getRoleName().equals(name))
- return role;
- }
- return null;
- }
-
- protected T modelObject;
-
- private Collection<IModelProviderListener> listeners;
-
- private Lock listenersLock = new ReentrantLock();
-
- protected IFacetedProject facetedProject;
-
- private ManyToOneRelation<SecurityRoleRef, SecurityRole> rolesToRolesRef = new ManyToOneRelation<SecurityRoleRef, SecurityRole>();
-
- /**
- * Constructs a new AnnotationReader for this faceted project. An illegal
- * argument if a project with value <code>null</code> is passed. No loading
- * is done in this constructor. Loading the model is made on demand when
- * calling {@link #getModelObject()}.
- *
- * @param project
- * the ejb project. Can not be <code>null</code>
- */
- public AbstractAnnotationModelProvider(IFacetedProject project) {
- if (project == null)
- throw new IllegalArgumentException("The project argument can not be null");
- this.facetedProject = project;
- }
-
- public T getConcreteModel() {
- if (modelObject == null) {
- preLoad();
- try {
- loadModel();
- /*
- * Adding the resource change listener after loading the model.
- * No resource change event are acceptable while loading the
- * model.
- */
- postLoad();
- } catch (CoreException e) {
- log(e.getStatus());
- return null;
- }
- }
- return modelObject;
- }
-
- public Object getModelObject() {
- return getConcreteModel();
- }
-
- public Object getModelObject(IPath modelPath) {
- return getConcreteModel();
- }
-
- protected abstract void loadModel() throws CoreException;
-
- protected void preLoad() {
- }
-
- protected void postLoad() {
- JavaCore.addElementChangedListener(this);
- }
-
- /**
- * Notifies the currently registered listeners with this model event. If the
- * {@link IModelProviderEvent#getChangedResources()} is empty or
- * <code>null</code> the method returns immediately.
- *
- * @param event
- * the event that should be send to the listeners
- */
- protected void notifyListeners(final IModelProviderEvent event) {
- if (listeners == null)
- return;
- listenersLock.lock();
- try {
- IModelProviderListener[] backup = listeners.toArray(new IModelProviderListener[listeners.size()]);
- notifyListeners(backup, event);
- backup = null;
- } finally {
- listenersLock.unlock();
- }
- }
-
- /**
- * Clears the list of listeners. No notifications can occur while clearing
- * the listeners.
- */
- protected void clearListeners() {
- if (listeners == null)
- return;
- try {
- listenersLock.lock();
- listeners.clear();
- listeners = null;
- } finally {
- listenersLock.unlock();
- }
- }
-
- private void notifyListeners(final IModelProviderListener[] aListeners, final IModelProviderEvent event) {
- if (event.getChangedResources() == null || event.getChangedResources().isEmpty())
- return;
- for (final IModelProviderListener listener : aListeners) {
- SafeRunner.run(new ISafeRunnable() {
- public void handleException(Throwable exception) {
- }
-
- public void run() throws Exception {
- listener.modelsChanged(event);
- }
- });
- }
- }
-
- /**
- * @return the currently registered listeners.
- */
- protected Collection<IModelProviderListener> getListeners() {
- if (listeners == null) {
- listeners = new ArrayList<IModelProviderListener>();
- }
- return listeners;
- }
-
- /**
- * Adds a listener to this instance. No listeners can be added during
- * notifying the current listeners.
- *
- * @param listener
- */
- public void addListener(IModelProviderListener listener) {
- listenersLock.lock();
- try {
- getModelObject();
- getListeners().add(listener);
- } finally {
- listenersLock.unlock();
- }
- }
-
- /**
- * Removes the listener from this instance. Has no effect if an identical
- * listener is not registered.
- *
- * @param listener
- * the listener to be removed.
- */
- public void removeListener(IModelProviderListener listener) {
- listenersLock.lock();
- try {
- getListeners().remove(listener);
- } finally {
- listenersLock.unlock();
- }
-
- }
-
- /**
- * @param javaProject
- * @return true if the given project contains resources that are relative to
- * the model. This method returns <code>true</code> for the
- * ejbProject on which this instance is working a <code>true</code>
- * for its client project.
- */
- protected boolean isProjectRelative(IJavaProject javaProject) {
- if (javaProject == null || facetedProject == null)
- return false;
- else if (javaProject.getProject().equals(facetedProject.getProject()))
- return true;
- return false;
- }
-
- /**
- * Dispose the current instance. The actual dispose may occur in another
- * thread. Use {@link #addListener(IModelProviderListener)} to register a
- * listener that will be notified when the instance is disposed. After all
- * the listeners are notified the list of listeners is cleared.
- */
- public void dispose() {
- IModelProviderEvent modelEvent = createModelProviderEvent();
- modelEvent.addResource(facetedProject.getProject());
- modelEvent.setEventCode(IModelProviderEvent.UNLOADED_RESOURCE);
- JavaCore.removeElementChangedListener(this);
- modelObject = null;
- notifyListeners(modelEvent);
- clearListeners();
- }
-
- /**
- * Process a unit as "removed". The method is allowed not to make checks
- * whether the unit was added/removed/change. It is processing the unit as
- * "removed".
- *
- * If no model object depends on the given file "modelEvent" is not changed.
- *
- * @see #processAddedCompilationUnit(IModelProviderEvent, ICompilationUnit)
- * @param modelEvent
- * @param file
- * the file to be removed.
- * @throws CoreException
- * if there was an error during parsing the file
- */
- protected abstract void processRemovedCompilationUnit(IModelProviderEvent modelEvent, ICompilationUnit unit)
- throws CoreException;
-
- /**
- * Process a unit as "added". The method is allowed not to make checks
- * whether the unit was added/removed/change. It is processing the file as
- * "added". It is the responsibility of the caller to make sure the
- * processing of the file as added will not leave the model in a wrong
- * state.
- *
- * modelEvent is changed to contain information about the added modelObject.
- *
- * @see #processRemovedCompilationUnit(IModelProviderEvent,
- * ICompilationUnit)
- * @param modelEvent
- * @param file
- * the file that was added
- * @throws CoreException
- */
- protected abstract void processAddedCompilationUnit(IModelProviderEvent modelEvent, ICompilationUnit file)
- throws CoreException;
-
- /**
- * Process a unit as "changed". The method is allowed not to make checks
- * whether the unit was added/removed/change. It is processing the unit as
- * "changed". It is the responsibility of the caller to make sure the
- * processing of the file as "changed" will not leave the model in a wrong
- * state.
- *
- * @see #processAddedCompilationUnit(IModelProviderEvent, ICompilationUnit)
- * @see #processRemovedCompilationUnit(IModelProviderEvent,
- * ICompilationUnit)
- * @param modelEvent
- * @param unit
- * the unti that was changed
- * @throws CoreException
- */
- protected abstract void processChangedCompilationUnit(IModelProviderEvent modelEvent, ICompilationUnit file)
- throws CoreException;
-
- protected void log(IStatus status) {
- }
-
- protected MyModelProviderEvent createModelProviderEvent() {
- return new MyModelProviderEvent(0, null, facetedProject.getProject());
- }
-
- // ---------------SECURITY ROLES ---------------------------//
- protected abstract Collection<SecurityRole> getSecurityRoles();
-
- protected abstract Collection<SecurityRoleRef> getSecurityRoleRefs(JavaEEObject target);
-
- /**
- * Deletes the connection maintained by the given bean and the security
- * roles defined in the bean. If this is the only bean in which the role is
- * defined, the role will also be deleted. Calling this method makes sense
- * only if the bean and the security role and the bean were connected with
- * {@link #connectWithRole(SecurityRole, SessionBean)}
- *
- * <p>
- * If the bean is not of type org.eclipse.jst.javaee.ejb.SessionBean the
- * method returns immediately.
- * </p>
- *
- * @see #connectWithRole(SecurityRole, SessionBean)
- * @see #rolesToRolesRef
- * @param bean
- */
- protected void disconnectFromRoles(JavaEEObject target) {
- Collection<SecurityRole> roles = getSecurityRoles();
- if (roles == null)
- return;
- Collection<SecurityRoleRef> refs = getSecurityRoleRefs(target);
- if (refs == null)
- return;
- for (SecurityRoleRef ref : refs) {
- SecurityRole role = rolesToRolesRef.getTarget(ref);
- rolesToRolesRef.disconnectSource(ref);
- if (!rolesToRolesRef.containsTarget(role)) {
- getSecurityRoles().remove(role);
- }
- }
- }
-
- /**
- * A security role was found in the given file. Add this security role to
- * the assembly descriptor. If the ejbJar does not have an assembly
- * descriptor a new one is created.
- *
- * @see #connectRoleWithBean(SecurityRole, SessionBean)s
- * @param file
- * @param securityRole
- */
- protected void securityRoleFound(JavaEEObject object, SecurityRole securityRole) {
- connectWithRole(securityRole, object);
- }
-
- /**
- * A security role can be defined in more the one bean. A bean can define
- * more then one security role. This means we have a many-to-many relation
- * between sessionBeans and securityRoles.
- *
- * <p>
- * Luckily a sessionBean contains a list of securityRoleRefs. This method
- * creates a connection between the securityRole contained in the assembly
- * descriptor and the security role ref contained in the bean.
- *
- * If a security role is define only in one bean, deleting the bean means
- * deleting the security role. But if the security role is defined in two
- * beans only deleting both beans will result in deleting the security role.
- * </p>
- *
- * @see #disconnectFromRoles(JavaEEObject)
- * @see #rolesToRolesRef
- * @param securityRole
- * @param target
- */
- private void connectWithRole(SecurityRole securityRole, JavaEEObject target) {
- Collection<SecurityRole> roles = getSecurityRoles();
- if (roles == null)
- return;
- Collection<SecurityRoleRef> refs = getSecurityRoleRefs(target);
- if (refs == null)
- return;
- /*
- * If there is a security role with this name use the existing security
- * role.
- */
- SecurityRole role = findRole(roles, securityRole.getRoleName());
- if (role == null) {
- roles.add(securityRole);
- role = securityRole;
- }
- for (SecurityRoleRef ref : refs) {
- if (ref.getRoleName().equals(role.getRoleName()))
- rolesToRolesRef.connect(ref, role);
- }
- }
-
- public void elementChanged(final ElementChangedEvent javaEvent) {
- if (javaEvent.getType() == ElementChangedEvent.POST_RECONCILE)
- internalPostReconcile(javaEvent);
- else if (javaEvent.getType() == ElementChangedEvent.POST_CHANGE)
- internalPostChange(javaEvent);
- }
-
- private void internalPostChange(ElementChangedEvent javaEvent) {
- IModelProviderEvent modelEvent = createModelProviderEvent();
- // handles ElementChangedEvent.POST_CHANGE - the case when the
- // compilation unit has been changed
- for (IJavaElementDelta child : javaEvent.getDelta().getAffectedChildren()) {
- if (child.getElement() instanceof IJavaProject) {
- processChangedProject(modelEvent, child);
- notifyListeners(modelEvent);
- }
- }
- }
-
- private void internalPostReconcile(final ElementChangedEvent javaEvent) {
- IModelProviderEvent modelEvent = createModelProviderEvent();
- if (javaEvent.getDelta().getElement() instanceof ICompilationUnit) {
- recursevilyProcessCompilationUnits(modelEvent, javaEvent.getDelta());
- notifyListeners(modelEvent);
- }
- }
-
- protected void processChangedProject(IModelProviderEvent event, IJavaElementDelta projectDelta) {
- if (!isProjectRelative(projectDelta.getElement().getJavaProject())) {
- return;
- }
- Assert.isTrue(projectDelta.getElement() instanceof IJavaProject,
- "An invalid change notification has occured. Element is <" + projectDelta.getElement() + ">"); //$NON-NLS-1$//$NON-NLS-2$
- if (((projectDelta.getFlags() & IJavaElementDelta.F_OPENED) != 0)
- || projectDelta.getKind() == IJavaElementDelta.ADDED) {
- try {
- loadModel();
- } catch (CoreException e) {
- JEEPlugin.getDefault().getLog().log(
- new Status(IStatus.ERROR, JEEPlugin.getDefault().getPluginID(), e.getMessage(), e));
- }
- }
-
- if (((projectDelta.getFlags() & IJavaElementDelta.F_CLOSED) != 0)
- || projectDelta.getKind() == IJavaElementDelta.REMOVED) {
- dispose();
- }
-
- processChangedProjectChildren(event, projectDelta);
- }
-
- protected void processChangedProjectChildren(IModelProviderEvent event, IJavaElementDelta projectDelta) {
- for (IJavaElementDelta childDelta : projectDelta.getAffectedChildren()) {
- if (!(childDelta.getElement() instanceof IPackageFragmentRoot)) {
- continue;
- }
- if ((childDelta.getFlags() & IJavaElementDelta.F_CHILDREN) != 0) {
- recursevilyProcessPackages(event, childDelta);
- }
- }
- }
-
- public void recursevilyProcessPackages(IModelProviderEvent modelEvent, IJavaElementDelta delta) {
- if (delta.getElement() instanceof IPackageFragment) {
- try {
- IPackageFragment fragment = (IPackageFragment) delta.getElement();
- if (delta.getKind() == IJavaElementDelta.ADDED) {
- for (ICompilationUnit unit : fragment.getCompilationUnits()) {
- processAddedCompilationUnit(modelEvent, unit);
- }
- } else if (delta.getKind() == IJavaElementDelta.REMOVED) {
- if (delta.getKind() == IJavaElementDelta.REMOVED) {
- processRemovedPackage(modelEvent, delta);
- }
- } else if (delta.getKind() == IJavaElementDelta.CHANGED) {
- recursevilyProcessCompilationUnits(modelEvent, delta);
- }
- } catch (CoreException e) {
- JEEPlugin.getDefault().getLog().log(
- new Status(IStatus.ERROR, JEEPlugin.getDefault().getPluginID(), e.getMessage(), e));
- }
- } else {
- for (IJavaElementDelta childDelta : delta.getAffectedChildren()) {
- recursevilyProcessPackages(modelEvent, childDelta);
- }
- }
- }
-
- protected abstract void processRemovedPackage(IModelProviderEvent modelEvent, IJavaElementDelta delta)
- throws CoreException;
-
- public void recursevilyProcessCompilationUnits(IModelProviderEvent modelEvent, IJavaElementDelta delta) {
- if (delta.getElement() instanceof ICompilationUnit) {
- if (!isProjectRelative(delta.getElement().getJavaProject()))
- return;
- try {
- final ICompilationUnit unit = (ICompilationUnit) delta.getElement();
-
- if (delta.getKind() == IJavaElementDelta.ADDED) {
- processAddedCompilationUnit(modelEvent, unit);
- }
- if (delta.getKind() == IJavaElementDelta.REMOVED) {
- processRemovedCompilationUnit(modelEvent, unit);
- }
- if (delta.getKind() == IJavaElementDelta.CHANGED) {
- if (((delta.getFlags() & IJavaElementDelta.F_PRIMARY_RESOURCE) == 0)
- || ((delta.getFlags() & IJavaElementDelta.F_PRIMARY_WORKING_COPY) == 0)) {
- processChangedCompilationUnit(modelEvent, unit);
- }
- }
- } catch (CoreException e) {
- JEEPlugin.getDefault().getLog().log(
- new Status(IStatus.ERROR, JEEPlugin.getDefault().getPluginID(), e.getMessage(), e));
- }
- } else {
- for (IJavaElementDelta childDelta : delta.getAffectedChildren()) {
- recursevilyProcessCompilationUnits(modelEvent, childDelta);
- }
- }
- }
-
- protected void visitJavaFiles(final Collection<ICompilationUnit> javaFiles, final IPackageFragmentRoot root)
- throws CoreException {
- if (root.getKind() != IPackageFragmentRoot.K_SOURCE)
- return;
- root.getCorrespondingResource().accept(new IResourceProxyVisitor() {
- public boolean visit(IResourceProxy proxy) throws CoreException {
- if (proxy.getType() == IResource.FILE) {
- if (proxy.getName().endsWith("." + JAVA_EXTENSION)) { //$NON-NLS-1$
- IFile file = (IFile) proxy.requestResource();
- if (!root.getJavaProject().isOnClasspath(file))
- return false;
- if (!file.isSynchronized(IResource.DEPTH_ONE))
- return false;
- javaFiles.add(JavaCore.createCompilationUnitFrom(file));
- }
- return false;
- }
- return true;
- }
- }, IContainer.NONE);
-
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java
deleted file mode 100644
index d8f355532..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/AbstractMergedModelProvider.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.common;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
-import org.eclipse.jst.j2ee.model.IModelProvider;
-import org.eclipse.jst.j2ee.model.IModelProviderEvent;
-import org.eclipse.jst.j2ee.model.IModelProviderListener;
-import org.eclipse.jst.jee.JEEPlugin;
-
-/**
- * A base class for model providers providing a merged view between two
- * different model providers. The instance will be called "mergedModelProvider"
- * where the two composed providers will be called "internalProviders"
- *
- * This class introduces the notation of a disposed state. {@link #dispose()} is
- * used to dispose the model provider. {@link #isDisposed()} is used to get the
- * state of the provider. If the method {@link #getModelObject()} is called for
- * a model provider in a disposed state, the provider should try to move to a
- * non disposed state and return a correct model object.
- * {@link #getModelObject()} is loading the model. Specific implementations may
- * throw exceptions so calling {@link #getModelObject()} on a disposed provider
- * does not guarantee that calling {@link #isDisposed()} after that will return
- * <code>false</code>.
- *
- * <p>
- * Subclasses may enable/disable notifications from internalProviders with the
- * methods {@link #enableInternalNotifications()} and
- * {@link #disableInternalNotifications()}.
- * </p>
- *
- * <p>
- * internalProviders are loaded with {@link #loadDeploymentDescriptorModel()}
- * and {@link #loadAnnotationModel(Object)}. This methods should be override to
- * provide specific model providers.
- * </p>
- *
- * <p>
- * The mergedModelProvider is a listener to the internalProviders. After
- * disposing the instance of a mergedModelProvider it should no longer accept
- * notifications from the internalProviders. It should also properly "dispose"
- * the internalProviders if needed.
- * </p>
- *
- * @author Kiril Mitov k.mitov@sap.com
- *
- */
-public abstract class AbstractMergedModelProvider<T> implements IModelProvider {
-
- protected IModelProvider ddProvider;
-
- protected IModelProvider annotationModelProvider;
-
- private class AnnotationModelListener implements IModelProviderListener {
- public void modelsChanged(IModelProviderEvent event) {
- if (isDisposed() || mergedModel == null)
- return;
- if (shouldDispose(event)) {
- dispose();
- notifyListeners(event);
- return;
- }
- AbstractMergedModelProvider.this.annotationModelChanged(event);
- }
- }
-
- private class XmlModelListener implements IModelProviderListener {
- public void modelsChanged(IModelProviderEvent event) {
- if (isDisposed() || mergedModel == null)
- return;
- if (shouldDispose(event)) {
- mergedModel = null;
- notifyListeners(event);
- return;
- }
- AbstractMergedModelProvider.this.xmlModelChanged(event);
- }
- }
-
- private Collection<IModelProviderListener> listeners;
-
- protected IProject project;
-
- private AnnotationModelListener annotationModelListener;
- private XmlModelListener xmlModelListener;
-
- protected T mergedModel;
-
- public AbstractMergedModelProvider(IProject project) {
- this.project = project;
- }
-
- public void addListener(IModelProviderListener listener) {
- getListeners().add(listener);
- }
-
- /**
- * Returns the model merged from annotation and xml model. If the project is
- * closed or does not exist the returns <code>null</code>
- *
- * @see org.eclipse.jst.j2ee.model.IModelProvider#getModelObject()
- */
- public Object getModelObject() {
- return getMergedModel();
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.jst.j2ee.model.IModelProvider#modify(java.lang.Runnable,
- * org.eclipse.core.runtime.IPath)
- */
- public void modify(Runnable runnable, IPath modelPath) {
- }
-
- public void removeListener(IModelProviderListener listener) {
- getListeners().remove(listener);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.jst.j2ee.model.IModelProvider#validateEdit(org.eclipse.core
- * .runtime.IPath, java.lang.Object)
- */
- public IStatus validateEdit(IPath modelPath, Object context) {
- if (ddProvider == null)
- getModelObject();
- return ddProvider.validateEdit(modelPath, context);
- }
-
- /**
- * Called when the annotationModel has changed. See also
- * {@link #enableInternalNotifications()} and
- * {@link #disableInternalNotifications()}
- *
- * @param event
- */
- protected abstract void annotationModelChanged(IModelProviderEvent event);
-
- /**
- * Called when the xmlModel has changed. See also
- * {@link #enableInternalNotifications()} and
- * {@link #disableInternalNotifications()}
- *
- * @param event
- */
- protected abstract void xmlModelChanged(IModelProviderEvent event);
-
- /**
- * Return a merged view of the two passed models.
- *
- * @param ddModel
- * @param annotationsModel
- * @return
- */
- protected abstract T merge(T ddModel, T annotationsModel);
-
- /**
- * Load the annotation model in the context of the ddModel.
- *
- * @param ddModel
- * @return
- * @throws CoreException
- */
- protected abstract IModelProvider loadAnnotationModel(T ddModel) throws CoreException;
-
- /**
- * @return
- * @throws CoreException
- */
- protected abstract IModelProvider loadDeploymentDescriptorModel() throws CoreException;
-
- protected Collection<IModelProviderListener> getListeners() {
- if (listeners == null)
- listeners = new ArrayList<IModelProviderListener>();
- return listeners;
- }
-
- protected T getMergedModel() {
- try {
- if (mergedModel == null)
- mergedModel = loadModel();
- } catch (CoreException e) {
- JEEPlugin.getDefault().getLog().log(e.getStatus());
- return null;
- }
- return mergedModel;
- }
-
- /**
- * @return a merged view of the models from the internalProviders. This may
- * include loading the internalProviders.
- * @throws CoreException
- */
- protected T loadModel() throws CoreException {
- if (project.isAccessible() == false)
- throw new IllegalStateException("The project <" + project + "> is not accessible."); //$NON-NLS-1$//$NON-NLS-2$
- if (ddProvider == null)
- ddProvider = loadDeploymentDescriptorModel();
- if (ddProvider == null || ddProvider.getModelObject() == null)
- return null;
- if (annotationModelProvider == null)
- annotationModelProvider = loadAnnotationModel((T) ddProvider.getModelObject());
- if (annotationModelProvider == null || annotationModelProvider.getModelObject() == null)
- return null;
- T ddModel = (T) ddProvider.getModelObject();
- T annotationModel = (T) annotationModelProvider.getModelObject();
- mergedModel = createNewModelInstance();
- initMergedModelResource((EObject) ddModel);
-
- enableInternalNotifications();
- return merge(ddModel, annotationModel);
- }
-
- /**
- * Creates a new instance of the model that will be used for mergedModel
- *
- * @return
- */
- protected abstract T createNewModelInstance();
-
- protected void initMergedModelResource(EObject ddModel) {
- Resource resourceDD = ddModel.eResource();
- Resource resourceMM = ((EObject) mergedModel).eResource();
- if (resourceDD != null && resourceMM == null) {
- ResourceImpl resRes = new ResourceImpl(resourceDD.getURI());
- resRes.getContents().add((EObject) mergedModel);
- }
-
- }
-
- /**
- * The method is used for enabling notifications from the internalProviders.
- * This will add the appropriate listener to the internalProviders so that
- * {@link #annotationModelChanged(IModelProviderEvent)} and
- * {@link #xmlModelChanged(IModelProviderEvent)} are called when needed.
- */
- protected final void enableInternalNotifications() {
- xmlModelListener = new XmlModelListener();
- ddProvider.addListener(xmlModelListener);
- annotationModelListener = new AnnotationModelListener();
- annotationModelProvider.addListener(annotationModelListener);
- }
-
- /**
- * Disable notifications from internalProviders. See also
- * {@link #enableInternalNotifications()}
- */
- protected final void disableInternalNotifications() {
- ddProvider.removeListener(xmlModelListener);
- annotationModelProvider.removeListener(annotationModelListener);
- }
-
- protected void notifyListeners(final IModelProviderEvent event) {
- event.setModel(this);
- event.setProject(project);
- final Collection<IModelProviderListener> listeners = getListeners();
- IModelProviderListener[] backup = listeners.toArray(new IModelProviderListener[listeners.size()]);
- for (final IModelProviderListener listener : backup) {
- SafeRunner.run(new ISafeRunnable() {
- public void handleException(Throwable exception) {
- }
-
- public void run() throws Exception {
- listener.modelsChanged(event);
- }
- });
- }
- backup = null;
- }
-
- protected boolean shouldDispose(IModelProviderEvent event) {
- return (event.getEventCode() == IModelProviderEvent.UNLOADED_RESOURCE);
- }
-
- /**
- * Returns the dispose state of this model provider. When the provider is
- * disposed it can not be used until getModelObject is called again.
- *
- * Subclasses may override this method.
- *
- * @return true if the model provider is to be treated as disposed
- */
- public boolean isDisposed() {
- return (ddProvider == null && annotationModelProvider == null);
- }
-
- /**
- * Dispose the model provider. If the provider is already disposed the
- * method has no effect.
- *
- * Subclasses may override this method.
- *
- * @see #isDisposed()
- */
- public void dispose() {
- if (isDisposed())
- return;
- disableInternalNotifications();
- ddProvider = null;
- annotationModelProvider = null;
- mergedModel = null;
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/ManyToOneRelation.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/ManyToOneRelation.java
deleted file mode 100644
index 67111da15..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/ManyToOneRelation.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.common;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-
-/**
- * Introduces the notation of many-to-one relation. This is where the M and O of
- * the type signature comes from.
- *
- * Many unique "source" objects refer to one and only "target" object.
- *
- * The class maintains a connection between the target and all the sources that
- * are referring to it.
- *
- * @author Kiril Mitov k.mitov@sap.com
- *
- * @param <M>
- * the type of the "source" objects.
- * @param <O>
- * the type of the "target" objects.
- */
-public class ManyToOneRelation<M, O> {
-
- private Map<M, O> manyToOne = new HashMap<M, O>();
-
- /**
- * Connects the given source with the given target. If this source was
- * previously connected with another target the old connection is lost.
- *
- * @param source
- * @param target
- * @return
- */
- public boolean connect(M source, O target) {
- manyToOne.put(source, target);
- return false;
- }
-
- /**
- * @param source
- * @return <code>true</code> if the relation contains the given source
- */
- public boolean containsSource(M source) {
- return manyToOne.containsKey(source);
- }
-
- /**
- * @param target
- * @return <code>true</code> if the relation contains the given target
- */
- public boolean containsTarget(O target) {
- return manyToOne.containsValue(target);
- }
-
- /**
- * @param source
- * @return the target with which this source is connected
- */
- public O getTarget(M source) {
- return manyToOne.get(source);
- }
-
- /**
- * @param target
- * @return all the targets that are connected with this source or empty
- * collection if there are no sources connected with this target.
- */
- public Collection<M> getSources(O target) {
- Collection<M> files = new LinkedList<M>();
- for (Map.Entry<M, O> entry : manyToOne.entrySet()) {
- if (entry.getValue().equals(target))
- files.add(entry.getKey());
- }
- return files;
- }
-
- /**
- * Removes the connection between this source and the corresponding target.
- * Other sources will still point to the same target.
- *
- * The target is removed if this was the only source pointing to it and
- * {@link #containsTarget(Object)} will return false.
- *
- * @param source
- */
- public void disconnectSource(M source) {
- manyToOne.remove(source);
- }
-
- /**
- * Removes the given target from the relation. All the sources that are
- * pointing to this target are also removed.
- *
- * If you take the "result" of {@link #getSources(target)} and after that
- * call this method then {@link #containsSource(Object)} will return
- * <code>false</code> for every object in "result".
- *
- * @param target
- */
- public void disconnect(O target) {
- for (Iterator<O> iter = manyToOne.values().iterator(); iter.hasNext();) {
- if (iter.next().equals(target))
- iter.remove();
- }
- }
-
- /**
- * @return a collection of the targets.
- */
- public Collection<O> getTargets() {
- return manyToOne.values();
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/MyModelProviderEvent.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/MyModelProviderEvent.java
deleted file mode 100644
index bf5ef7945..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/MyModelProviderEvent.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.common;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.jst.j2ee.model.IModelProvider;
-import org.eclipse.jst.j2ee.model.IModelProviderEvent;
-
-/**
- * @author Kiril Mitov k.mitov@sap.com
- *
- */
-class MyModelProviderEvent implements IModelProviderEvent {
- private IModelProvider model;
- private IProject proj;
- private int event;
-
- private List resources;
-
- public MyModelProviderEvent(int anEventCode, IModelProvider model, IProject proj) {
- setEventCode(anEventCode);
- setModel(model);
- setProject(proj);
- resources = new ArrayList();
- }
-
- public void setProject(IProject project) {
- proj = project;
-
- }
-
- public void addResource(Object resource) {
- resources.add(resource);
- }
-
- public void addResources(Collection<Object> someResources) {
- resources.addAll(someResources);
-
- }
-
- public List<Object> getChangedResources() {
- return resources;
- }
-
- public int getEventCode() {
- return event;
- }
-
- public IModelProvider getModel() {
- return model;
- }
-
- public void setChangedResources(List<Object> newChangedResources) {
- throw new UnsupportedOperationException();
- }
-
- public void setEventCode(int newEventCode) {
- event = newEventCode;
- }
-
- public void setModel(IModelProvider newModel) {
- model = newModel;
-
- }
-
- public IProject getProject() {
- return proj;
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/Result.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/Result.java
deleted file mode 100644
index ef519af1b..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/common/Result.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.common;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jst.javaee.core.JavaEEObject;
-
-/**
- * @author Kiril Mitov k.mitov@sap.com
- *
- */
-public class Result {
-
- private Collection<IType> dependedTypes;
-
- private Collection<JavaEEObject> modelObjects;
-
- private JavaEEObject mainObject;
-
- public Result() {
- dependedTypes = new HashSet<IType>();
- // most of the time there will be only one object in the model objects
- // list. Exceptions are made for results that will contain security
- // roles for example. This is way here the modelObjects collection is
- // ArrayList with size 1
- modelObjects = new ArrayList<JavaEEObject>(1);
- }
-
- public JavaEEObject getMainObject() {
- return mainObject;
- }
-
- public void setMainObject(JavaEEObject mainObject) {
- this.mainObject = mainObject;
- modelObjects.add(mainObject);
- }
-
- public Collection<JavaEEObject> getAdditional() {
- return modelObjects;
- }
-
- public Collection<IType> getDependedTypes() {
- return dependedTypes;
- }
-
- public boolean isEmpty() {
- return mainObject == null && getAdditional().isEmpty();
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/BaseRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/BaseRefsMerger.java
deleted file mode 100644
index 79e45f641..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/BaseRefsMerger.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Base abstract class for JNDI mergers
- *
- * @author Dimitar Giormov
- */
-public abstract class BaseRefsMerger extends ModelElementsMerger {
-
- /**
- * Constructor for the class
- *
- * @param baseList -
- * base list of references that have higher priority and are
- * result of the merge.
- * @param toMergeList -
- * toMerge list of references
- */
- public BaseRefsMerger(List baseList, List toMergeList) {
- super(baseList, toMergeList);
- }
-
- /**
- * When an entry with the same name is present in both lists, missing valuse
- * in base are filled by toMerge element.
- *
- * @param baseList -
- * base list of references
- * @param toMergeList -
- * toMerge list of references
- */
- protected abstract void copyMissingPropertesInBase(Object base, Object toMerge);
-
- /**
- * @param itListBase
- * @param itListToMerge
- * @return
- */
- protected List mergeIngectionTargets(List itListBase, List itListToMerge) {
- // TODO
- List result = new ArrayList();
- return result;
- }
-
- /**
- * @param descrListBase
- * @param descrListToMerge
- * @return
- */
- protected List mergeDescriptions(List descrListBase, List descrListToMerge) {
- List result = new ArrayList();
- return result;
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EJBRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EJBRefsMerger.java
deleted file mode 100644
index 76d158d1f..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EJBRefsMerger.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.EjbLocalRef;
-import org.eclipse.jst.javaee.core.EjbRef;
-
-/**
- * EjbRef and EjbLocalRef merger.
- *
- * @author Dimitar Giormov
- */
-public class EJBRefsMerger extends BaseRefsMerger {
-
- /**
- * Constructor for the EjbRefs merger.
- *
- * @param _baseEjbRefs - base list of references that have higher priority and are result of the merge.
- * @param _toMergeEjbRefs - toMerge list of references
- */
- public EJBRefsMerger(List _baseEjbRefs, List _toMergeEjbRefs) {
- super(_baseEjbRefs, _toMergeEjbRefs);
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- if (getToMergeElemets() == null || getToMergeElemets().isEmpty()){
- return warnings;
- }
-
- for (Object object : getToMergeElemets()) {
- Object findMatchingRef = null;
- if(object instanceof EjbLocalRef){
- findMatchingRef = findMatchingLocalRef(getBaseElements(), object);
- } else {
- findMatchingRef = findMatchingRef(getBaseElements(), object);
- }
- if (findMatchingRef != null){
- copyMissingPropertesInBase(findMatchingRef, object);
- } else{
- getBaseElements().add(EcoreUtil.copy((EObject) object));
- }
-
-
- }
-
-
- return warnings;
- }
-
- private static EjbRef findMatchingRef(List xmlRefs,
- Object ref) throws ModelException {
- EjbRef result = null;
- for (Object currentXMLRef: xmlRefs) {
- if (isMatchingRef(currentXMLRef, ref)) {
- result = (EjbRef) currentXMLRef;
- break;
- }
- }
- return result;
- }
-
- private static EjbLocalRef findMatchingLocalRef(List xmlRefs,
- Object ref) throws ModelException {
- EjbLocalRef result = null;
- for (Object currentXMLRef: xmlRefs) {
- if (isMatchingRef(currentXMLRef, ref)) {
- result = (EjbLocalRef) currentXMLRef;
- break;
- }
- }
- return result;
-}
-
- private static boolean isMatchingRef(Object xmlRef,
- Object annotatedRef) throws ModelException {
- boolean result = false;
- String xmlRefName = (xmlRef instanceof EjbRef) ? ((EjbRef)xmlRef).getEjbRefName() : ((EjbLocalRef)xmlRef).getEjbRefName();
- String annotatedRefName = (annotatedRef instanceof EjbRef) ? ((EjbRef)annotatedRef).getEjbRefName() : ((EjbLocalRef)annotatedRef).getEjbRefName();
- if (xmlRefName.equals(annotatedRefName)) {
-// if(!isMatchingTargetBean(xmlRef, annotatedRef)){
-// //TODO check if correct
-// return false;
-// }
- result = true;
- }
-
- return result;
- }
-
- private static boolean isMatchingTargetBean(Object localRef,
- Object annotatedRef) throws ModelException {
- String localRefEJBLink = (localRef instanceof EjbRef) ? ((EjbRef)localRef).getEjbLink() : ((EjbLocalRef)localRef).getEjbLink();
- if(localRefEJBLink == null){
- return false;
- }
- String[] tokenizeEjbLink = tokenizeEjbLink(localRefEJBLink);
- String localRefEJBName = null;
- if (tokenizeEjbLink != null && tokenizeEjbLink.length>0){
- localRefEJBName = tokenizeEjbLink[1];
- }
-
- String annRefReferencingBean = annRefReferencingBean = (localRef instanceof EjbRef) ? ((EjbRef)localRef).getEjbLink() : ((EjbLocalRef)localRef).getEjbLink();
-
-
-
- return localRefEJBName != null && annRefReferencingBean != null
- && localRefEJBName.equals(annRefReferencingBean);
- }
-
-
- private static String[] tokenizeEjbLink(String link) {
- String[] result = new String[2];
-
- int index = link.indexOf('#');
- if (index != -1) {
- result[0] = link.substring(0,index);
- result[1] = link.substring(index+1);
- } else {
- result[1] = link;
- }
- return result;
- }
-
- @Override
- protected void copyMissingPropertesInBase(Object base, Object toMerge) {
- if(base instanceof EjbRef){
- copyEjbRefPropsInBase((EjbRef)base, (EjbRef)toMerge);
- } else if (base instanceof EjbLocalRef){
- copyEjbLocalRefPropsInBase((EjbLocalRef)base, (EjbLocalRef)toMerge);
- }
- }
-
- private void copyEjbLocalRefPropsInBase(EjbLocalRef base, EjbLocalRef toMerge) {
- if (base.getEjbLink() == null){
- base.setEjbLink(toMerge.getEjbLink());
- }
-
- if (base.getMappedName() == null){
- base.setMappedName(toMerge.getMappedName());
- }
-
- if (!base.isSetEjbRefType()){
- base.setEjbRefType(toMerge.getEjbRefType());
- }
-
- if (base.getLocal() == null){
- base.setLocal(toMerge.getLocal());
- }
-
- if (base.getLocalHome() == null){
- base.setLocalHome(toMerge.getLocalHome());
- }
-
- }
-
- private void copyEjbRefPropsInBase(EjbRef base, EjbRef toMerge) {
- if (base.getEjbLink() == null){
- base.setEjbLink(toMerge.getEjbLink());
- }
-
- if (base.getMappedName() == null){
- base.setMappedName(toMerge.getMappedName());
- }
-
- if (!base.isSetEjbRefType()){
- base.setEjbRefType(toMerge.getEjbRefType());
- }
-
- if (base.getRemote() == null){
- base.setRemote(toMerge.getRemote());
- }
-
- if (base.getHome() == null){
- base.setHome(toMerge.getHome());
- }
-
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EnvEntriesMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EnvEntriesMerger.java
deleted file mode 100644
index 125e1cc05..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/EnvEntriesMerger.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.EnvEntry;
-
-/**
- * Merges Environment Entries.
- *
- * @author Dimitar Giormov
- */
-public class EnvEntriesMerger extends BaseRefsMerger {
-
- /**
- * Constructor for the class.
- *
- * @param baseList - base list with environment entries
- * @param toMergeList - toMerge list with environment entries
- */
- public EnvEntriesMerger(List baseList, List toMergeList) {
- super(baseList, toMergeList);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- for (Object oToMerge : getToMergeElemets()) {
- EnvEntry envEntry = (EnvEntry) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- EnvEntry envEntryBase = (EnvEntry) oBase;
- if (envEntryBase.getEnvEntryName().equals(envEntry.getEnvEntryName())){
- copyMissingPropertesInBase(envEntryBase, envEntry);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
-
- protected void copyMissingPropertesInBase(EnvEntry baseElement, EnvEntry toMergeElement) {
- if(baseElement.getEnvEntryValue() == null){
- baseElement.setEnvEntryValue(toMergeElement.getEnvEntryValue());
- }
-
- if(baseElement.getMappedName() == null){
- baseElement.setMappedName(toMergeElement.getMappedName());
- }
-
- if(!baseElement.isSetEnvEntryType()){
- baseElement.setEnvEntryType(toMergeElement.getEnvEntryType());
- }
-
- mergeIngectionTargets(baseElement.getInjectionTargets(), toMergeElement.getInjectionTargets());
- mergeDescriptions(baseElement.getDescriptions(), toMergeElement.getDescriptions());
- }
-
-
- protected void copyMissingPropertesInBase(Object base, Object toMerge){
- copyMissingPropertesInBase((EnvEntry) base, (EnvEntry) toMerge);
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/IMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/IMerger.java
deleted file mode 100644
index 1af4622db..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/IMerger.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.List;
-
-/**
- * Base interface for all merger classes.
- *
- * @author Dimitar Giormov
- */
-public interface IMerger {
-
- /**
- * Process method is the actual merge process. It will generate list of warnngs or throw exception.
- *
- * @return list of warnings gathered during execution.
- * @throws Exception
- */
- public abstract List process() throws Exception;
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/JNDIRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/JNDIRefsMerger.java
deleted file mode 100644
index 9e45a4b06..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/JNDIRefsMerger.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jst.javaee.core.JavaEEObject;
-import org.eclipse.jst.javaee.ejb.MessageDrivenBean;
-import org.eclipse.jst.javaee.ejb.SessionBean;
-import org.eclipse.jst.javaee.web.WebApp;
-
-/**
- *
- * JNDI References merger. It can be applied on Enterprise beans or Web resource artifacts.
- *
- * @author Dimitar Giormov
- */
-public class JNDIRefsMerger extends ModelElementMerger {
-
- /**
- *
- * @param base - base list of references that have higher priority and are result of the merge.
- * @param toMerge - toMerge list of references
- * @param kind
- */
- public JNDIRefsMerger(JavaEEObject base,
- JavaEEObject toMerge, int kind) {
- super(base, toMerge, kind);
-
- }
-
- /**
- * @return
- */
- SessionBean getBaseSessionBean() {
- return (SessionBean) getBase();
- }
-
- /**
- * @return
- */
- SessionBean getToMergeSessionBean () {
- return (SessionBean) getToMerge();
- }
-
- /**
- * @return
- */
- MessageDrivenBean getBaseMdbBean() {
- return (MessageDrivenBean) getBase();
- }
-
- /**
- * @return
- */
- MessageDrivenBean getToMergeMdbBean () {
- return (MessageDrivenBean) getToMerge();
- }
-
- /**
- * @return
- */
- WebApp getBaseWebApp() {
- return (WebApp) getBase();
- }
-
- /**
- * @return
- */
- WebApp getToMergeWebApp() {
- return (WebApp) getToMerge();
- }
-
- public List process() throws ModelException {
- List warnings = new ArrayList();
- if(getBase() instanceof SessionBean){
- warnings.addAll(new EnvEntriesMerger(getBaseSessionBean().getEnvEntries(), getToMergeSessionBean().getEnvEntries()).process());
- warnings.addAll(new ResourceEnvRefsMerger(getBaseSessionBean().getResourceEnvRefs(), getToMergeSessionBean().getResourceEnvRefs()).process());
- warnings.addAll(new ResourceRefsMerger(getBaseSessionBean().getResourceRefs(), getToMergeSessionBean().getResourceRefs()).process());
- warnings.addAll(new MessageDestinationRefsMerger(getBaseSessionBean().getMessageDestinationRefs(), getToMergeSessionBean().getMessageDestinationRefs()).process());
- warnings.addAll(new ServiceRefsMerger(getBaseSessionBean().getServiceRefs(), getToMergeSessionBean().getServiceRefs()).process());
- warnings.addAll(new PersistenceContextRefsMerger(getBaseSessionBean().getPersistenceContextRefs(), getToMergeSessionBean().getPersistenceContextRefs()).process());
- warnings.addAll(new PersistenceUnitRefsMerger(getBaseSessionBean().getPersistenceUnitRefs(), getToMergeSessionBean().getPersistenceUnitRefs()).process());
- warnings.addAll(new EJBRefsMerger(getBaseSessionBean().getEjbLocalRefs(), getToMergeSessionBean().getEjbLocalRefs()).process());
- warnings.addAll(new EJBRefsMerger(getBaseSessionBean().getEjbRefs(), getToMergeSessionBean().getEjbRefs()).process());
- } else if(getBase() instanceof MessageDrivenBean) {
- warnings.addAll(new EnvEntriesMerger(getBaseMdbBean().getEnvEntries(), getToMergeMdbBean().getEnvEntries()).process());
- warnings.addAll(new ResourceEnvRefsMerger(getBaseMdbBean().getResourceEnvRefs(), getToMergeMdbBean().getResourceEnvRefs()).process());
- warnings.addAll(new ResourceRefsMerger(getBaseMdbBean().getResourceRefs(), getToMergeMdbBean().getResourceRefs()).process());
- warnings.addAll(new MessageDestinationRefsMerger(getBaseMdbBean().getMessageDestinationRefs(), getToMergeMdbBean().getMessageDestinationRefs()).process());
- warnings.addAll(new ServiceRefsMerger(getBaseMdbBean().getServiceRefs(), getToMergeMdbBean().getServiceRefs()).process());
- warnings.addAll(new PersistenceContextRefsMerger(getBaseMdbBean().getPersistenceContextRefs(), getToMergeMdbBean().getPersistenceContextRefs()).process());
- warnings.addAll(new PersistenceUnitRefsMerger(getBaseMdbBean().getPersistenceUnitRefs(), getToMergeMdbBean().getPersistenceUnitRefs()).process());
- warnings.addAll(new EJBRefsMerger(getBaseMdbBean().getEjbLocalRefs(), getToMergeMdbBean().getEjbLocalRefs()).process());
- warnings.addAll(new EJBRefsMerger(getBaseMdbBean().getEjbRefs(), getToMergeMdbBean().getEjbRefs()).process());
- } else if(getBase() instanceof WebApp) {
- warnings.addAll(new EnvEntriesMerger(getBaseWebApp().getEnvEntries(), getToMergeWebApp().getEnvEntries()).process());
- warnings.addAll(new ResourceEnvRefsMerger(getBaseWebApp().getResourceEnvRefs(), getToMergeWebApp().getResourceEnvRefs()).process());
- warnings.addAll(new ResourceRefsMerger(getBaseWebApp().getResourceRefs(), getToMergeWebApp().getResourceRefs()).process());
- warnings.addAll(new MessageDestinationRefsMerger(getBaseWebApp().getMessageDestinationRefs(), getToMergeWebApp().getMessageDestinationRefs()).process());
- warnings.addAll(new ServiceRefsMerger(getBaseWebApp().getServiceRefs(), getToMergeWebApp().getServiceRefs()).process());
- warnings.addAll(new PersistenceContextRefsMerger(getBaseWebApp().getPersistenceContextRefs(), getToMergeWebApp().getPersistenceContextRefs()).process());
- warnings.addAll(new PersistenceUnitRefsMerger(getBaseWebApp().getPersistenceUnitRefs(), getToMergeWebApp().getPersistenceUnitRefs()).process());
- warnings.addAll(new EJBRefsMerger(getBaseWebApp().getEjbLocalRefs(), getToMergeWebApp().getEjbLocalRefs()).process());
- warnings.addAll(new EJBRefsMerger(getBaseWebApp().getEjbRefs(), getToMergeWebApp().getEjbRefs()).process());
- }
- return warnings;
- }
- }
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/MessageDestinationRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/MessageDestinationRefsMerger.java
deleted file mode 100644
index 2c17259a2..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/MessageDestinationRefsMerger.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.MessageDestinationRef;
-
-/**
- * MessageDestinationRefsMerger merges MessageDestinationRef objects.
- *
- * @author Dimitar Giormov
- *
- */
-public class MessageDestinationRefsMerger extends BaseRefsMerger {
-
-
- /**
- * Constructor for the class.
- *
- * @param base - base list with message destination references.
- * that have higher priority and are result of the merge.
- * @param toMerge - toMerge list to be imported in base list.
- */
- public MessageDestinationRefsMerger(List base, List toMerge) {
- super(base, toMerge);
- }
-
- public List<String> process() throws ModelException {
- List<String> warnings = new ArrayList<String>();
- for (Object oToMerge : getToMergeElemets()) {
- MessageDestinationRef envEntry = (MessageDestinationRef) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- MessageDestinationRef envEntryBase = (MessageDestinationRef) oBase;
- if (envEntryBase.getMessageDestinationRefName().equals(envEntry.getMessageDestinationRefName())){
- copyMissingPropertesInBase(envEntryBase, envEntry);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
- protected void copyMissingPropertesInBase(MessageDestinationRef baseElement, MessageDestinationRef toMergeElement) {
-
- if(baseElement.getMappedName() == null){
- baseElement.setMappedName(toMergeElement.getMappedName());
- }
-
- if(baseElement.getMessageDestinationLink() == null){
- baseElement.setMessageDestinationLink(toMergeElement.getMessageDestinationLink());
- }
-
- if(baseElement.getMessageDestinationType() == null){
- baseElement.setMessageDestinationType(toMergeElement.getMessageDestinationType());
- }
-
- if(!baseElement.isSetMessageDestinationUsage()){
- baseElement.setMessageDestinationUsage(toMergeElement.getMessageDestinationUsage());
- }
-
- mergeIngectionTargets(baseElement.getInjectionTargets(), toMergeElement.getInjectionTargets());
- mergeDescriptions(baseElement.getDescriptions(), toMergeElement.getDescriptions());
- }
-
-
- protected void copyMissingPropertesInBase(Object base, Object toMerge){
- copyMissingPropertesInBase((MessageDestinationRef) base, (MessageDestinationRef) toMerge);
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementMerger.java
deleted file mode 100644
index 4bf37ddc3..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementMerger.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.List;
-
-import org.eclipse.jst.javaee.core.JavaEEObject;
-
-/**
- * Model element merger is bease class for Java EE mergers.
- * It contains the base and toMerge elements.
- *
- * Base element is the main element that values will be taken with highest priority.
- * toMerge element will give all of his extra values to base.
- *
- * @author Dimitar Giormov
- */
-public abstract class ModelElementMerger implements IMerger {
-
- public static int ADD = 0x1;
-
- public static int CHANGE = 0x2;
-
- public static int REMOVE = 0x4;
-
- JavaEEObject base;
- JavaEEObject toMerger;
-
- private int kind;
-
-
- /**
- * Constructor of the class.
- *
- * @param _base element is the main element that values will be taken with highest priority.
- * @param _toMerge element will give all of his extra values to base.
- * @param _kind
- */
- public ModelElementMerger(JavaEEObject _base, JavaEEObject _toMerge, int _kind) {
- base = _base;
- toMerger = _toMerge;
- kind = _kind;
- }
-
- /**
- * Returns the base element, which is also the merged result.
- *
- * @return base element.
- */
- protected JavaEEObject getBase() {
- return base;
- }
-
- /**
- *
- * @return toMerge element, which will be merged in base.
- */
- protected JavaEEObject getToMerge() {
- return toMerger;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.Merger#process()
- */
- public abstract List process() throws ModelException;
-
- public int getKind() {
- return kind;
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementsMerger.java
deleted file mode 100644
index 4031ab524..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelElementsMerger.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Base merger adapted to deal with Lists.
- *
- * @author Dimitar Giormov
- *
- */
-public class ModelElementsMerger implements IMerger {
-
- private List baseElements;
- private List toMergeList;
-
- /**
- * @param _baseList
- * @param _toMergeList
- */
- public ModelElementsMerger(List _baseList, List _toMergeList) {
- baseElements = _baseList;
- toMergeList = _toMergeList;
- }
-
-
- /**
- * @return
- */
- protected List getBaseElements() {
- return baseElements;
- }
-
- /**
- * @return
- */
- protected List getToMergeElemets() {
- return toMergeList;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.Merger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- return warnings;
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelException.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelException.java
deleted file mode 100644
index 7958d0f39..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ModelException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-/**
- * ModelException is thrown when invalid values or inconsistencies are detected in the model.
- *
- * @author Dimitar Giormov
- */
-public class ModelException extends Exception {
-
- /**
- *
- */
- private static final long serialVersionUID = -1239223181526060738L;
-
-
- public ModelException(Exception e) {
- super(e);
- }
-
-
- public ModelException() {
- super();
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceContextRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceContextRefsMerger.java
deleted file mode 100644
index 253cefd3b..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceContextRefsMerger.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.PersistenceContextRef;
-import org.eclipse.jst.javaee.core.PropertyType;
-
-/**
- * Merges persistence context references artifacts.
- *
- * @author Dimitar Giormov
- *
- */
-public class PersistenceContextRefsMerger extends BaseRefsMerger {
-
- /**
- * Constructor for the class.
- *
- * @param base - base list with persistence context references.
- * that have higher priority and are result of the merge.
- * @param toMerge - toMerge list to be imported in base list.
- */
- public PersistenceContextRefsMerger(List _base, List _toMerge) {
- super(_base, _toMerge);
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- for (Object oToMerge : getToMergeElemets()) {
- PersistenceContextRef envEntry = (PersistenceContextRef) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- PersistenceContextRef envEntryBase = (PersistenceContextRef) oBase;
- if (envEntryBase.getPersistenceContextRefName().equals(envEntry.getPersistenceContextRefName())){
- copyMissingPropertesInBase(envEntryBase, envEntry);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
-
- protected void copyMissingPropertesInBase(PersistenceContextRef baseElement, PersistenceContextRef toMergeElement) {
- if(baseElement.getPersistenceUnitName() == null){
- baseElement.setPersistenceUnitName(toMergeElement.getPersistenceUnitName());
- }
-
- if(baseElement.getPersistenceContextType() == null){
- baseElement.setPersistenceContextType(toMergeElement.getPersistenceContextType());
- }
-
- if(baseElement.getMappedName() == null){
- baseElement.setMappedName(toMergeElement.getMappedName());
- }
-
- copyMissingPersistentPropertiesInBase(baseElement.getPersistenceProperties(), toMergeElement.getPersistenceProperties());
- }
-
-
- private void copyMissingPersistentPropertiesInBase(
- List persistenceProperties, List persistenceProperties2) {
- for (Object mergeProps : persistenceProperties2) {
- PropertyType mProp = (PropertyType) mergeProps;
- if(!containsProperty(persistenceProperties , mProp)){
- persistenceProperties.add( mProp);
- }
-
- }
- }
-
- private boolean containsProperty(List list, PropertyType p){
- for (Object baseProps : list) {
- PropertyType bProp = (PropertyType) baseProps;
- if(p.getName().equals(bProp.getName())){
- return true;
- }
- }
- return false;
- }
-
-
- protected void copyMissingPropertesInBase(Object base, Object toMerge){
- copyMissingPropertesInBase((PersistenceContextRef) base, (PersistenceContextRef) toMerge);
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceUnitRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceUnitRefsMerger.java
deleted file mode 100644
index 0ba9d5de6..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/PersistenceUnitRefsMerger.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.PersistenceUnitRef;
-
-/**
- *
- * Merges persistence unit references artifacts.
- *
- * @author Dimitar Giormov
- */
-
-public class PersistenceUnitRefsMerger extends BaseRefsMerger {
-
- /**
- * Constructor for the class.
- *
- * @param base - base list with persistence unit references.
- * that have higher priority and are result of the merge.
- * @param toMerge - toMerge list to be imported in base list.
- */
- public PersistenceUnitRefsMerger(List base, List toMerge) {
- super(base, toMerge);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- for (Object oToMerge : getToMergeElemets()) {
- PersistenceUnitRef resRef = (PersistenceUnitRef) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- PersistenceUnitRef resRefBase = (PersistenceUnitRef) oBase;
- if (resRefBase.getPersistenceUnitRefName().equals(resRef.getPersistenceUnitRefName())){
- copyMissingPropertesInBase(resRefBase, resRef);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
-
- protected void copyMissingPropertesInBase(PersistenceUnitRef baseElement, PersistenceUnitRef toMergeElement) {
- if(baseElement.getPersistenceUnitName() == null){
- baseElement.setPersistenceUnitName(toMergeElement.getPersistenceUnitName());
- }
- if(baseElement.getMappedName() == null){
- baseElement.setMappedName(toMergeElement.getMappedName());
- }
- }
-
-
- protected void copyMissingPropertesInBase(Object base, Object toMerge){
- copyMissingPropertesInBase((PersistenceUnitRef) base, (PersistenceUnitRef) toMerge);
- }
-
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceEnvRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceEnvRefsMerger.java
deleted file mode 100644
index 2697a2a3c..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceEnvRefsMerger.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.ResourceEnvRef;
-
-/**
- * Merges Resource Environment References artifacts.
- *
- * @author Dimitar Giormov
- *
- */
-public class ResourceEnvRefsMerger extends BaseRefsMerger {
-
- /**
- * Constructor for the class.
- *
- * @param base - base list with resource environment references.
- * that have higher priority and are result of the merge.
- * @param toMerge - toMerge list to be imported in base list.
- */
- public ResourceEnvRefsMerger(List base, List toMerge) {
- super(base, toMerge);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- for (Object oToMerge : getToMergeElemets()) {
- ResourceEnvRef resEnvRef = (ResourceEnvRef) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- ResourceEnvRef resourceEnvRefBase = (ResourceEnvRef) oBase;
- if (resourceEnvRefBase.getResourceEnvRefName().equals(resEnvRef.getResourceEnvRefName())){
- copyMissingPropertesInBase(resourceEnvRefBase, resEnvRef);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
- protected void copyMissingPropertesInBase(ResourceEnvRef baseRef, ResourceEnvRef toMergeRef) {
- if(baseRef.getResourceEnvRefType() == null){
- baseRef.setResourceEnvRefType(toMergeRef.getResourceEnvRefType());
- }
-
- if(baseRef.getMappedName() == null){
- baseRef.setMappedName(toMergeRef.getMappedName());
- }
-
- mergeIngectionTargets(baseRef.getInjectionTargets(), toMergeRef.getInjectionTargets());
- mergeDescriptions(baseRef.getDescriptions(), toMergeRef.getDescriptions());
- }
-
- @Override
- protected void copyMissingPropertesInBase(Object base, Object toMerge) {
- copyMissingPropertesInBase((ResourceEnvRef) base, (ResourceEnvRef)toMerge);
-
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceRefsMerger.java
deleted file mode 100644
index 1875797bb..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ResourceRefsMerger.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.ResourceRef;
-
-/**
- * Merges Resource References artifacts.
- *
- * @author Dimitar Giormov
- *
- */
-public class ResourceRefsMerger extends BaseRefsMerger {
-
- /**
- * Constructor for the class.
- *
- * @param base - base list with resource references.
- * that have higher priority and are result of the merge.
- * @param toMerge - toMerge list to be imported in base list.
- */
- public ResourceRefsMerger(List base, List toMerge) {
- super(base, toMerge);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- for (Object oToMerge : getToMergeElemets()) {
- ResourceRef resRef = (ResourceRef) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- ResourceRef resRefBase = (ResourceRef) oBase;
- if (resRefBase.getResRefName().equals(resRef.getResRefName())){
- copyMissingPropertesInBase(resRefBase, resRef);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
- protected void copyMissingPropertesInBase(ResourceRef baseElement, ResourceRef toMergeElement) {
- if(baseElement.getResType() == null){
- baseElement.setResType(toMergeElement.getResType());
- }
-
- if(!baseElement.isSetResAuth()){
- baseElement.setResAuth(toMergeElement.getResAuth());
- }
-
- if(!baseElement.isSetResSharingScope()){
- baseElement.setResSharingScope(toMergeElement.getResSharingScope());
- }
-
- if(baseElement.getMappedName() == null){
- baseElement.setMappedName(toMergeElement.getMappedName());
- }
-
-
- }
-
- @Override
- protected void copyMissingPropertesInBase(Object base, Object toMerge) {
- copyMissingPropertesInBase((ResourceRef) base, (ResourceRef )toMerge);
-
- }
-}
diff --git a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ServiceRefsMerger.java b/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ServiceRefsMerger.java
deleted file mode 100644
index e7ce04ed9..000000000
--- a/plugins/org.eclipse.jst.jee/common/org/eclipse/jst/jee/model/internal/mergers/ServiceRefsMerger.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/***********************************************************************
- * Copyright (c) 2008 by SAP AG, Walldorf.
- * 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:
- * SAP AG - initial API and implementation
- ***********************************************************************/
-package org.eclipse.jst.jee.model.internal.mergers;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-import org.eclipse.jst.javaee.core.ServiceRef;
-
-/**
- * @author Dimitar Giormov
- *
- */
-public class ServiceRefsMerger extends BaseRefsMerger {
-
-
- /**
- * Constructor for the class.
- *
- * @param base - base list with service references.
- * that have higher priority and are result of the merge.
- * @param toMerge - toMerge list to be imported in base list.
- */
- public ServiceRefsMerger(List _baseRefs, List _toMergeRefs) {
- super(_baseRefs, _toMergeRefs);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jst.javaee.ejb.model.mergers.common.ModelElementsMerger#process()
- */
- public List process() throws ModelException {
- List warnings = new ArrayList();
- for (Object oToMerge : getToMergeElemets()) {
- ServiceRef servivceRef = (ServiceRef) oToMerge;
- boolean found = false;
- for (Object oBase : getBaseElements()) {
- ServiceRef ServiceRefBase = (ServiceRef) oBase;
- if (ServiceRefBase.getServiceRefName().equals(servivceRef.getServiceRefName())){
- copyMissingPropertesInBase(ServiceRefBase, servivceRef);
- found = true;
- break;
- }
- }
- if (found){
- continue;
- }
- getBaseElements().add(EcoreUtil.copy((EObject) oToMerge));
- }
- return warnings;
- }
-
-
- @Override
- protected void copyMissingPropertesInBase(Object base, Object toMerge) {
- copyMissingPropertesInBase((ServiceRef) base, (ServiceRef) toMerge);
- }
- protected void copyMissingPropertesInBase(ServiceRef base, ServiceRef toMerge) {
- if (base.getMappedName() == null){
- base.setMappedName(toMerge.getMappedName());
- }
-
- if (base.getWsdlFile() == null){
- base.setWsdlFile(toMerge.getWsdlFile());
- }
- // if (base.getServiceInterface().equals("javax.xml.ws.Service")) {
- if (base.getServiceInterface() == null) {
- base.setServiceInterface(toMerge.getServiceInterface());
- }
- // }
- }
-
-}

Back to the top