[jbosstools-commits] JBoss Tools SVN: r42787 - in trunk/ws: plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain and 11 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Mon Jul 30 11:15:39 EDT 2012


Author: xcoulon
Date: 2012-07-30 11:15:37 -0400 (Mon, 30 Jul 2012)
New Revision: 42787

Added:
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/utils/Pair.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsClassname.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementCategory.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java
Removed:
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsElements.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumKind.java
Modified:
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessor.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementDelta.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessor.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessor.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBaseElement.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactory.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaApplication.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaElement.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsParamBeanProperty.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsProvider.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResource.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceField.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsWebxmlApplication.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidator.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationsScanner.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsApplication.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsProvider.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsResourceMethod.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/WorkbenchUtils.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessorTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessorTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessorTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactoryTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodelTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidatorTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/utils/WtpUtilsTestCase.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java
Log:
Renaming EnumKind to EnumElementKind to better reflect usage

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessor.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessor.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessor.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -21,7 +21,7 @@
 import static org.eclipse.jdt.core.IJavaElementDelta.CHANGED;
 import static org.eclipse.jdt.core.IJavaElementDelta.REMOVED;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_NONE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -55,8 +55,8 @@
 import org.jboss.tools.ws.jaxrs.core.jdt.CompilationUnitsRepository;
 import org.jboss.tools.ws.jaxrs.core.jdt.JaxrsAnnotationsScanner;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsMetamodelDelta;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsMetamodelLocator;
 
@@ -111,33 +111,36 @@
 		if (metamodel == null) {
 			metamodel = JaxrsMetamodel.create(javaProject);
 		}
-
 		switch (deltaKind) {
 		case ADDED:
-			switch (elementType) {
-			case JAVA_PROJECT:
-				return processAddition(element, metamodel, progressMonitor);
-			case PACKAGE_FRAGMENT_ROOT:
-				return processAddition(element, metamodel, progressMonitor);
-			case COMPILATION_UNIT:
-				return processAddition((ICompilationUnit) element, ast, metamodel, progressMonitor);
-			case TYPE:
-				return processAddition((IType) element, ast, metamodel, progressMonitor);
-			case METHOD:
-				return processAddition((IMethod) element, ast, metamodel, progressMonitor);
-			case FIELD:
-				return processAddition((IField) element, ast, metamodel, progressMonitor);
-			case ANNOTATION:
-				return processAddition((IAnnotation) element, ast, metamodel, progressMonitor);
-			}
+			//if(element.exists()) { // needed to prevent exception for edge cases such as 'package-info.java' that holds some shadow 'A' type..
+				switch (elementType) {
+				case JAVA_PROJECT:
+					return processAddition(element, metamodel, progressMonitor);
+				case PACKAGE_FRAGMENT_ROOT:
+					return processAddition(element, metamodel, progressMonitor);
+				case COMPILATION_UNIT:
+					return processAddition((ICompilationUnit) element, ast, metamodel, progressMonitor);
+				case TYPE:
+					return processAddition((IType) element, ast, metamodel, progressMonitor);
+				case METHOD:
+					return processAddition((IMethod) element, ast, metamodel, progressMonitor);
+				case FIELD:
+					return processAddition((IField) element, ast, metamodel, progressMonitor);
+				case ANNOTATION:
+					return processAddition((IAnnotation) element, ast, metamodel, progressMonitor);
+				}
+			//}
 			break;
 		case CHANGED:
-			switch (elementType) {
-			case METHOD:
-				return processChange((IMethod) element, ast, metamodel, progressMonitor);
-			case ANNOTATION:
-				return processChange((IAnnotation) element, ast, metamodel, progressMonitor);
-			}
+			//if(element.exists()) { // needed to prevent exception for edge cases such as 'package-info.java' that holds some shadow 'A' type..
+				switch (elementType) {
+					case METHOD:
+					return processChange((IMethod) element, ast, metamodel, progressMonitor);
+				case ANNOTATION:
+					return processChange((IAnnotation) element, ast, metamodel, progressMonitor);
+				}
+			//}
 			break;
 		case REMOVED:
 			switch (elementType) {
@@ -315,7 +318,7 @@
 			if (createdElement != null) {
 				metamodel.add(createdElement);
 				changes.add(new JaxrsElementDelta(createdElement, ADDED));
-				switch (createdElement.getElementKind()) {
+				switch (createdElement.getElementCategory()) {
 				case RESOURCE_FIELD:
 				case RESOURCE_METHOD:
 					JaxrsResource parentResource = ((JaxrsResourceElement<?>) createdElement).getParentResource();
@@ -353,7 +356,7 @@
 				if (createdElement != null) {
 					metamodel.add(createdElement);
 					changes.add(new JaxrsElementDelta(createdElement, ADDED));
-					switch (createdElement.getElementKind()) {
+					switch (createdElement.getElementCategory()) {
 					case RESOURCE_FIELD:
 					case RESOURCE_METHOD:
 						JaxrsResource parentResource = ((JaxrsResourceElement<?>) createdElement).getParentResource();
@@ -377,7 +380,7 @@
 			JaxrsMetamodel metamodel, IProgressMonitor progressMonitor) throws CoreException {
 		final List<JaxrsElementDelta> changes = new ArrayList<JaxrsElementDelta>();
 		final JaxrsBaseElement jaxrsElement = metamodel.getElement(javaMethod);
-		if (jaxrsElement != null && jaxrsElement.getElementKind() == EnumElementKind.RESOURCE_METHOD) {
+		if (jaxrsElement != null && jaxrsElement.getElementCategory() == EnumElementCategory.RESOURCE_METHOD) {
 			final int flag = ((JaxrsResourceMethod) jaxrsElement).update(CompilationUnitsRepository.getInstance()
 					.getMethodSignature(javaMethod));
 			if (flag != F_NONE) {
@@ -452,7 +455,7 @@
 		if (element != null) {
 			// The logic is the same for all the kinds of elements
 			final int flag = element.removeAnnotation(javaAnnotation.getHandleIdentifier());
-			if (element.getKind() == EnumKind.UNDEFINED) {
+			if (element.getElementKind() == EnumElementKind.UNDEFINED) {
 				metamodel.remove(element);
 				changes.add(new JaxrsElementDelta(element, REMOVED));
 			} else {
@@ -478,7 +481,7 @@
 		final List<JaxrsElementDelta> changes = new ArrayList<JaxrsElementDelta>();
 		final List<JaxrsBaseElement> elements = metamodel.getElements(method);
 		for (JaxrsBaseElement element : elements) {
-			if (element.getElementKind() == EnumElementKind.RESOURCE_METHOD) {
+			if (element.getElementCategory() == EnumElementCategory.RESOURCE_METHOD) {
 				metamodel.remove(element);
 				changes.add(new JaxrsElementDelta(element, REMOVED));
 			}

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementDelta.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementDelta.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsElementDelta.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -21,7 +21,7 @@
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsBaseElement;
 import org.jboss.tools.ws.jaxrs.core.internal.utils.ConstantUtils;
 import org.jboss.tools.ws.jaxrs.core.internal.utils.Logger;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
 
 public class JaxrsElementDelta implements Comparable<JaxrsElementDelta> {
 
@@ -110,7 +110,7 @@
 	@Override
 	public String toString() {
 		StringBuilder s = new StringBuilder();
-		s.append("JaxrsElementChange: [").append(ConstantUtils.toCamelCase(element.getElementKind().toString()))
+		s.append("JaxrsElementChange: [").append(ConstantUtils.toCamelCase(element.getElementCategory().toString()))
 				.append(" ").append(ConstantUtils.getStaticFieldName(IJavaElementDelta.class, deltaKind)).append("] ")
 				.append(element.getName());
 
@@ -142,8 +142,8 @@
 
 	@Override
 	public int compareTo(JaxrsElementDelta other) {
-		final EnumKind elementKind = this.element.getKind();
-		final EnumKind otherElementKind = other.getElement().getKind();
+		final EnumElementKind elementKind = this.element.getElementKind();
+		final EnumElementKind otherElementKind = other.getElement().getElementKind();
 		return elementKind.ordinal() - otherElementKind.ordinal();
 	}
 

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessor.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessor.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessor.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -36,8 +36,8 @@
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResourceMethod;
 import org.jboss.tools.ws.jaxrs.core.internal.utils.Logger;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsApplication;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResource;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResourceMethod;
@@ -87,7 +87,7 @@
 	@SuppressWarnings("incomplete-switch")
 	private List<JaxrsEndpointDelta> processEvent(final JaxrsElementDelta event) throws CoreException {
 		final JaxrsBaseElement element = event.getElement();
-		final EnumElementKind elementKind = element.getElementKind();
+		final EnumElementCategory elementKind = element.getElementCategory();
 		final int flags = event.getFlags();
 		switch (event.getDeltaKind()) {
 		case ADDED:
@@ -169,10 +169,10 @@
 		if (resource == null) {
 			Logger.warn("Found an orphan resource method: " + resourceMethod);
 		} else {
-			switch (resourceMethod.getKind()) {
+			switch (resourceMethod.getElementKind()) {
 			case RESOURCE_METHOD:
 			case SUBRESOURCE_METHOD:
-				switch (resource.getKind()) {
+				switch (resource.getElementKind()) {
 				case ROOT_RESOURCE:
 					changes.addAll(processRootResourceMethodAddition(resourceMethod, metamodel));
 					break;
@@ -184,7 +184,7 @@
 				break;
 			case SUBRESOURCE_LOCATOR:
 				// FIXME : support multiple levels of subresource locators
-				switch (resource.getKind()) {
+				switch (resource.getElementKind()) {
 				case ROOT_RESOURCE:
 					changes.addAll(processSubresourceLocatorAddition(resourceMethod, metamodel));
 					break;
@@ -208,7 +208,7 @@
 		for (IJaxrsResource otherResource : metamodel.getAllResources()) {
 			if (((JaxrsResource) otherResource).isRootResource()) {
 				for (JaxrsResourceMethod otherResourceMethod : ((JaxrsResource) otherResource).getMethods().values()) {
-					if (otherResourceMethod.getKind() == EnumKind.SUBRESOURCE_LOCATOR) {
+					if (otherResourceMethod.getElementKind() == EnumElementKind.SUBRESOURCE_LOCATOR) {
 						final String returnTypeHandler = (otherResourceMethod.getReturnType() != null) ? otherResourceMethod
 								.getReturnType().getHandleIdentifier() : null;
 						if (returnTypeHandler != null && supertypesHandlers.contains(returnTypeHandler)) {
@@ -256,7 +256,7 @@
 						if (resourceHandleIdentifier.equals(returnType.getHandleIdentifier())
 								|| subtypesHandlers.contains(resourceHandleIdentifier)) {
 							for (JaxrsResourceMethod resourceMethod : resource.getMethods().values()) {
-								switch (resourceMethod.getKind()) {
+								switch (resourceMethod.getElementKind()) {
 								case RESOURCE_METHOD:
 								case SUBRESOURCE_METHOD:
 									final JaxrsHttpMethod httpMethod = metamodel.getHttpMethod(resourceMethod
@@ -349,7 +349,7 @@
 			}
 			// create endpoints using this resourceMethod:
 			changes.addAll(processAddition(changedResourceMethod));
-		} else if (changedResourceMethod.getKind() == EnumKind.SUBRESOURCE_LOCATOR
+		} else if (changedResourceMethod.getElementKind() == EnumElementKind.SUBRESOURCE_LOCATOR
 				&& (flags & F_METHOD_RETURN_TYPE) > 0) {
 
 			for (Iterator<JaxrsEndpoint> endpointIterator = changedResourceMethod.getMetamodel().getEndpoints()

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessor.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessor.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessor.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -15,7 +15,7 @@
 import static org.eclipse.jdt.core.IJavaElementDelta.REMOVED;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_ELEMENT_KIND;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_FINE_GRAINED;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -51,7 +51,7 @@
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodSignature;
 import org.jboss.tools.ws.jaxrs.core.jdt.JaxrsAnnotationsScanner;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsApplication;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsMetamodelDelta;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsMetamodelLocator;
@@ -227,14 +227,14 @@
 		final IJaxrsApplication application = metamodel.getApplication();
 		if (resolvedApplicationPath != null) {
 			final JaxrsWebxmlApplication webxmlApplication = factory.createApplication(resolvedApplicationPath, resource, metamodel);
-			if (application == null || application.getKind() == EnumKind.APPLICATION_JAVA) {
+			if (application == null || application.getElementKind() == EnumElementKind.APPLICATION_JAVA) {
 				metamodel.add(webxmlApplication);
 				results.add(new JaxrsElementDelta(webxmlApplication, ADDED));
-			} else if (application != null && application.getKind() == EnumKind.APPLICATION_WEBXML) {
+			} else if (application != null && application.getElementKind() == EnumElementKind.APPLICATION_WEBXML) {
 				int flags = webxmlApplication.update(webxmlApplication);
 				results.add(new JaxrsElementDelta(webxmlApplication, CHANGED, flags));
 			}
-		} else if(application != null && application.getKind() == EnumKind.APPLICATION_WEBXML){
+		} else if(application != null && application.getElementKind() == EnumElementKind.APPLICATION_WEBXML){
 			final JaxrsWebxmlApplication webxmlApplication = (JaxrsWebxmlApplication) application;
 			metamodel.remove(webxmlApplication);
 			results.add(new JaxrsElementDelta(webxmlApplication, REMOVED));
@@ -656,7 +656,7 @@
 			final JaxrsResourceField existingField = entry.getValue();
 			final JaxrsResourceField matchingField = matchingResource.getFields().get(entry.getKey());
 			int flags = existingField.mergeAnnotations(matchingField.getAnnotations());
-			if ((flags & F_ELEMENT_KIND) > 0 && existingField.getKind() == EnumKind.UNDEFINED) {
+			if ((flags & F_ELEMENT_KIND) > 0 && existingField.getElementKind() == EnumElementKind.UNDEFINED) {
 				metamodel.remove(existingField);
 				changes.add(new JaxrsElementDelta(existingField, REMOVED));
 			} else if (flags > 0) {
@@ -697,7 +697,7 @@
 			final JavaMethodSignature matchingResourceMethodSignature = JdtUtils.resolveMethodSignature(matchingMethod.getJavaElement(), matchingResourceAST);
 			if(matchingResourceMethodSignature != null) {
 				flags += existingMethod.update(matchingResourceMethodSignature);
-				if ((flags & F_ELEMENT_KIND) > 0 && existingMethod.getKind() == EnumKind.UNDEFINED) {
+				if ((flags & F_ELEMENT_KIND) > 0 && existingMethod.getElementKind() == EnumElementKind.UNDEFINED) {
 					metamodel.remove(existingMethod);
 					changes.add(new JaxrsElementDelta(existingMethod, REMOVED));
 				} else if (flags > 0) {

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBaseElement.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBaseElement.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBaseElement.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -5,8 +5,8 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.wst.validation.ValidatorMessage;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsElement;
 
 public abstract class JaxrsBaseElement implements IJaxrsElement {
@@ -46,10 +46,10 @@
 		return metamodel;
 	}
 
+	public abstract EnumElementCategory getElementCategory();
+
 	public abstract EnumElementKind getElementKind();
 
-	public abstract EnumKind getKind();
-
 	public abstract IResource getResource();
 	
 	public abstract List<ValidatorMessage> validate() throws JavaModelException;

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactory.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactory.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactory.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -14,42 +14,48 @@
 import static org.eclipse.jdt.core.IJavaElement.FIELD;
 import static org.eclipse.jdt.core.IJavaElement.METHOD;
 import static org.eclipse.jdt.core.IJavaElement.TYPE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.COOKIE_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DEFAULT_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HEADER_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.MATRIX_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PRODUCES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.QUERY_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.COOKIE_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DEFAULT_VALUE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HEADER_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.MATRIX_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PRODUCES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PROVIDER;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.QUERY_PARAM;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.jdt.core.IAnnotation;
 import org.eclipse.jdt.core.IField;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.ITypeHierarchy;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.dom.CompilationUnit;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResourceMethod.Builder;
 import org.jboss.tools.ws.jaxrs.core.internal.utils.Logger;
+import org.jboss.tools.ws.jaxrs.core.internal.utils.Pair;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodParameter;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodSignature;
 import org.jboss.tools.ws.jaxrs.core.jdt.JaxrsAnnotationsScanner;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 
 public class JaxrsElementFactory {
@@ -152,7 +158,7 @@
 			internalCreateField(javaField, ast, metamodel, resource);
 		}
 		// well, sorry.. this is not a valid JAX-RS resource..
-		if (resource.getKind() == EnumKind.UNDEFINED) {
+		if (resource.getElementKind() == EnumElementKind.UNDEFINED) {
 			return null;
 		}
 		return resource;
@@ -353,7 +359,7 @@
 			// yet..
 			parentResource = internalCreateResource(parentType, ast, metamodel);
 		}
-		if (parentResource != null && parentResource.getElementKind() == EnumElementKind.RESOURCE) {
+		if (parentResource != null && parentResource.getElementCategory() == EnumElementCategory.RESOURCE) {
 			final JaxrsResourceField field = internalCreateField(javaField, ast, metamodel,
 					(JaxrsResource) parentResource);
 			return field;
@@ -380,4 +386,77 @@
 	public JaxrsWebxmlApplication createApplication(String applicationPath, IResource resource, JaxrsMetamodel metamodel) {
 		return new JaxrsWebxmlApplication(applicationPath, resource, metamodel);
 	}
+
+	/**
+	 * Creates a JAX-RS Provider from the given Type. A valid Provider must be annotated with
+	 * <code>javax.ws.rs.ext.MessageBodyReader</code>, <code>javax.ws.rs.ext.MessageBodyWriter</code> or
+	 * <code>javax.ws.rs.ext.ExceptionMapper</code>. If the given type is not annotated with
+	 * <code>javax.ws.rs.ext.Provider</code>, a should be reported to the user.
+	 * 
+	 * @param javaType
+	 * @param metamodel
+	 * @throws CoreException in case of underlying exception
+	 * @return a representation of the given provider or null in case of invalid type (ie, not a valid JAX-RS Provider)
+	 */
+	public JaxrsProvider createProvider(final IType javaType, final CompilationUnit ast, final JaxrsMetamodel metamodel, final IProgressMonitor progressMonitor ) throws CoreException {
+
+		final Map<String, Annotation> annotations = JdtUtils.resolveAnnotations(javaType, ast, PROVIDER.qualifiedName,
+				CONSUMES.qualifiedName, PRODUCES.qualifiedName);
+		// assert that given java type is not abstract 
+		if(JdtUtils.isAbstractType(javaType)) {
+			return null;
+		}
+		ITypeHierarchy providerTypeHierarchy = JdtUtils.resolveTypeHierarchy(javaType, false, progressMonitor);
+		IType[] subtypes = providerTypeHierarchy.getSubtypes(javaType);
+		// assert that given java type has no sub-type, or continue;
+		if (subtypes != null && subtypes.length > 0) {
+			return null;
+		}
+		Map<EnumElementKind, IType> providedKinds = getProvidedKinds(javaType, ast, providerTypeHierarchy, progressMonitor);
+
+		//TODO: annotations are splitted here, but they are aggregated later again in the JaxrsProvider :-/
+		final Annotation providerAnnotation = annotations.get(PROVIDER.qualifiedName);
+		final Annotation consumesAnnotation = annotations.get(CONSUMES.qualifiedName);
+		final Annotation producesAnnotation = annotations.get(PRODUCES.qualifiedName);
+		
+		final JaxrsProvider provider = new JaxrsProvider.Builder(javaType, metamodel).providing(providerAnnotation, providedKinds)
+				.consumes(consumesAnnotation).produces(producesAnnotation).build();
+		if(provider.getElementKind() == null) {
+			return null;
+		}
+		return provider;
+	}
+	
+	/**
+	 * @param metamodel
+	 * @param providerType
+	 * @param providerTypeHierarchy
+	 * @param providerInterfaces
+	 * @param progressMonitor
+	 * @param providerTypeHierarchy
+	 * @return
+	 * @throws CoreException
+	 * @throws JavaModelException
+	 */
+	private static Map<EnumElementKind, IType> getProvidedKinds(final IType providerType,
+			final CompilationUnit compilationUnit, final ITypeHierarchy providerTypeHierarchy,
+			final IProgressMonitor progressMonitor)
+			throws CoreException, JavaModelException {
+		final Map<EnumElementKind, IType> providerKinds = new HashMap<EnumElementKind, IType>();
+		List<Pair<EnumJaxrsClassname, EnumElementKind>> pairs = new ArrayList<Pair<EnumJaxrsClassname, EnumElementKind>>();
+		pairs.add(Pair.makePair(EnumJaxrsClassname.MESSAGE_BODY_READER, EnumElementKind.MESSAGE_BODY_READER));
+		pairs.add(Pair.makePair(EnumJaxrsClassname.MESSAGE_BODY_WRITER, EnumElementKind.MESSAGE_BODY_WRITER));
+		pairs.add(Pair.makePair(EnumJaxrsClassname.EXCEPTION_MAPPER, EnumElementKind.EXCEPTION_MAPPER));
+		
+		for (Pair<EnumJaxrsClassname, EnumElementKind> pair : pairs) {
+			final IType matchingGenericType = JdtUtils.resolveType(pair.a.qualifiedName, providerType.getJavaProject(), progressMonitor);
+			List<IType> argumentTypes = JdtUtils.resolveTypeArguments(providerType, compilationUnit,
+					matchingGenericType, providerTypeHierarchy, progressMonitor);
+			if (argumentTypes == null || argumentTypes.size() == 0) {
+				continue;
+			}
+			providerKinds.put(pair.b, argumentTypes.get(0));
+		}
+		return providerKinds;
+	}
 }

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -18,9 +18,9 @@
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PATH_VALUE;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PRODUCED_MEDIATYPES_VALUE;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_QUERY_PARAM_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DEFAULT_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.MATRIX_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.QUERY_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DEFAULT_VALUE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.MATRIX_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.QUERY_PARAM;
 
 import java.util.ArrayList;
 import java.util.Arrays;

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -12,7 +12,7 @@
 package org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain;
 
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_HTTP_METHOD_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -22,8 +22,8 @@
 import org.eclipse.wst.validation.ValidatorMessage;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsMetamodelBuilder;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 
 /**
@@ -99,8 +99,8 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.HTTP_METHOD;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.HTTP_METHOD;
 	}
 
 	@Override
@@ -183,11 +183,11 @@
 	}
 
 	@Override
-	public EnumKind getKind() {
+	public EnumElementKind getElementKind() {
 		if (getHttpMethodAnnotation() != null) {
-			return EnumKind.HTTP_METHOD;
+			return EnumElementKind.HTTP_METHOD;
 		}
-		return EnumKind.UNDEFINED;
+		return EnumElementKind.UNDEFINED;
 	}
 
 	/**

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaApplication.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaApplication.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaApplication.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -11,7 +11,7 @@
 package org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain;
 
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_APPLICATION_PATH_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -19,8 +19,8 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.wst.validation.ValidatorMessage;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsApplication;
 
 /**
@@ -43,16 +43,16 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.APPLICATION;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.APPLICATION;
 	}
 
 	@Override
-	public EnumKind getKind() {
+	public EnumElementKind getElementKind() {
 		if (getAnnotation(APPLICATION_PATH.qualifiedName) != null) {
-			return EnumKind.APPLICATION_JAVA;
+			return EnumElementKind.APPLICATION_JAVA;
 		}
-		return EnumKind.UNDEFINED;
+		return EnumElementKind.UNDEFINED;
 	}
 
 	@Override

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaElement.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaElement.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaElement.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -22,15 +22,15 @@
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PATH_VALUE;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PRODUCED_MEDIATYPES_VALUE;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_QUERY_PARAM_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DEFAULT_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.MATRIX_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PRODUCES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.QUERY_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DEFAULT_VALUE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.MATRIX_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PRODUCES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.QUERY_PARAM;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -43,7 +43,7 @@
 import org.eclipse.jdt.core.IMember;
 import org.jboss.tools.ws.jaxrs.core.internal.utils.CollectionUtils;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 
 /**
@@ -118,7 +118,7 @@
 			return 0;
 		}
 		boolean changed = false;
-		final EnumKind previousKind = getKind();
+		final EnumElementKind previousKind = getElementKind();
 		final String annotationName = annotation.getName();
 		if (annotations.containsKey(annotation.getName())) {
 			changed = annotations.get(annotation.getName()).update(annotation);
@@ -156,9 +156,9 @@
 		return flags;
 	}
 
-	private int qualifyChange(final String annotationName, EnumKind previousKind) {
+	private int qualifyChange(final String annotationName, EnumElementKind previousKind) {
 		int flag = F_NONE;
-		final EnumKind currentKind = getKind();
+		final EnumElementKind currentKind = getElementKind();
 		if (annotationName.equals(PATH.qualifiedName)) {
 			flag = F_PATH_VALUE;
 		} else if (annotationName.equals(APPLICATION_PATH.qualifiedName)) {
@@ -203,7 +203,7 @@
 			Annotation annotation = entry.getValue();
 			if (annotation.getJavaAnnotation().getHandleIdentifier().equals(handleIdentifier)) {
 				this.metamodel.unindexElement(this, handleIdentifier);
-				final EnumKind previousKind = getKind();
+				final EnumElementKind previousKind = getElementKind();
 				final String annotationName = entry.getKey();
 				iterator.remove();
 				if (annotationName.equals(PATH.qualifiedName)) {
@@ -230,7 +230,7 @@
 						}
 					}
 				}
-				final EnumKind currentKind = getKind();
+				final EnumElementKind currentKind = getElementKind();
 				if (currentKind != previousKind) {
 					flag += F_ELEMENT_KIND;
 				}

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -35,7 +35,7 @@
 import org.jboss.tools.ws.jaxrs.core.internal.utils.Logger;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsApplication;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsEndpoint;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
@@ -153,7 +153,7 @@
 	}
 
 	public void add(JaxrsJavaElement<?> element) {
-		switch (element.getElementKind()) {
+		switch (element.getElementCategory()) {
 		case APPLICATION:
 			this.applications.add((JaxrsJavaApplication) element);
 			break;
@@ -182,7 +182,7 @@
 		Collections.sort(this.applications, new Comparator<IJaxrsApplication>() {
 			@Override
 			public int compare(IJaxrsApplication app1, IJaxrsApplication app2) {
-				return app1.getKind().compareTo(app2.getKind());
+				return app1.getElementKind().compareTo(app2.getElementKind());
 			}
 		});
 		indexElement(application, javaProject);
@@ -205,7 +205,7 @@
 		for (Entry<String, Annotation> entry : jaxrsElement.getAnnotations().entrySet()) {
 			indexElement(jaxrsElement, entry.getValue());
 		}
-		if (jaxrsElement.getElementKind() == EnumElementKind.RESOURCE) {
+		if (jaxrsElement.getElementCategory() == EnumElementCategory.RESOURCE) {
 			JaxrsResource resource = (JaxrsResource) jaxrsElement;
 			for (JaxrsResourceMethod resourceMethod : resource.getMethods().values()) {
 				indexElement(resourceMethod);
@@ -243,7 +243,7 @@
 	protected void unindexElement(final JaxrsBaseElement jaxrsElement) {
 		// if the given element is a JAX-RS Resource, also unindex its children
 		// ResourceMethod
-		if (jaxrsElement.getElementKind() == EnumElementKind.RESOURCE) {
+		if (jaxrsElement.getElementCategory() == EnumElementCategory.RESOURCE) {
 			final JaxrsResource resource = (JaxrsResource) jaxrsElement;
 			for (JaxrsResourceMethod resourceMethod : resource.getMethods().values()) {
 				unindexElement(resourceMethod);
@@ -349,7 +349,7 @@
 		IType annotationType = JdtUtils.resolveType(annotationName, javaProject, new NullProgressMonitor());
 		if (annotationType != null) {
 			final JaxrsBaseElement element = getElement(annotationType);
-			if (element != null && element.getElementKind() == EnumElementKind.HTTP_METHOD) {
+			if (element != null && element.getElementCategory() == EnumElementCategory.HTTP_METHOD) {
 				return (IJaxrsHttpMethod) element;
 			}
 		}
@@ -418,7 +418,7 @@
 	}
 
 	public void remove(JaxrsBaseElement element) {
-		switch (element.getKind()) {
+		switch (element.getElementKind()) {
 		case APPLICATION_WEBXML:
 			remove((JaxrsWebxmlApplication) element);
 			break;
@@ -438,7 +438,7 @@
 		if (element == null) {
 			return;
 		}
-		switch (element.getElementKind()) {
+		switch (element.getElementCategory()) {
 		case APPLICATION:
 			this.applications.remove(element);
 			break;

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsParamBeanProperty.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsParamBeanProperty.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsParamBeanProperty.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -16,8 +16,8 @@
 import org.eclipse.jdt.core.IMethod;
 import org.eclipse.wst.validation.ValidatorMessage;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsParamBeanProperty;
 
 /**
@@ -31,8 +31,8 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.RESOURCE_FIELD;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.RESOURCE_FIELD;
 	}
 
 	@Override
@@ -42,7 +42,7 @@
 	}
 
 	@Override
-	public EnumKind getKind() {
+	public EnumElementKind getElementKind() {
 		return null;
 	}
 

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsProvider.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsProvider.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsProvider.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -13,20 +13,18 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.wst.validation.ValidatorMessage;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsProvider;
 
 /**
- * JAX-RS Provider class Providers *must* implement MessageBodyReader,
- * MessageBodyWriter or ExceptionMapper Providers *may* be annotated with
- * <code>javax.ws.rs.ext.Provider</code> annotation.
+ * JAX-RS Provider class Providers <strong>must</strong> implement MessageBodyReader, MessageBodyWriter or
+ * ExceptionMapper Providers *may* be annotated with <code>javax.ws.rs.ext.Provider</code> annotation.
  * 
  * @author xcoulon
  */
@@ -38,97 +36,71 @@
 	 * @author xcoulon
 	 */
 	public static class Builder {
+		final IType javaType;
+		final JaxrsMetamodel metamodel;
+		private Annotation consumesAnnotation;
+		private Annotation producesAnnotation;
+		private Annotation providerAnnotation;
+		private Map<EnumElementKind, IType> providedKinds;
 
-		private final JaxrsMetamodel metamodel;
-		private final IType javaType;
-
-		/**
-		 * Mandatory attributes of the enclosing 'Provider' element.
-		 * 
-		 * @param javaType
-		 * @param metamodel
-		 */
 		public Builder(final IType javaType, final JaxrsMetamodel metamodel) {
 			this.javaType = javaType;
 			this.metamodel = metamodel;
 		}
 
-		/**
-		 * Builds and returns the elements. Internally calls the merge() method.
-		 * 
-		 * @param progressMonitor
-		 * @return
-		 * @throws CoreException
-		 */
-		public JaxrsProvider build(IProgressMonitor progressMonitor) throws CoreException {
-			JaxrsProvider provider = new JaxrsProvider(this);
-			// provider.merge(javaType, progressMonitor);
-			return provider;
+		public Builder withProviderAnnotation(final Annotation providerAnnotation) {
+			this.providerAnnotation = providerAnnotation;
+			return this;
 		}
+
+		public Builder consumes(final Annotation consumesAnnotation) {
+			this.consumesAnnotation = consumesAnnotation;
+			return this;
+		}
+
+		public Builder produces(final Annotation producesAnnotation) {
+			this.producesAnnotation = producesAnnotation;
+			return this;
+		}
+
+		public JaxrsProvider build() {
+			List<Annotation> annotations = new ArrayList<Annotation>();
+			if (providerAnnotation != null) {
+				annotations.add(providerAnnotation);
+			}
+			if (consumesAnnotation != null) {
+				annotations.add(consumesAnnotation);
+			}
+			if (producesAnnotation != null) {
+				annotations.add(producesAnnotation);
+			}
+			return new JaxrsProvider(javaType, annotations, providedKinds, metamodel);
+		}
+
+		public Builder providing(final Annotation providerAnnotation, final Map<EnumElementKind, IType> providedKinds) {
+			this.providerAnnotation = providerAnnotation;
+			this.providedKinds = providedKinds;
+			return this;
+		}
 	}
 
+	private final Map<EnumElementKind, IType> providedKinds;
 	/**
-	 * Full constructor using the inner 'MediaTypeCapabilitiesBuilder' static
-	 * class.
+	 * Full constructor using the inner 'MediaTypeCapabilitiesBuilder' static class.
+	 * @param providedKinds 
 	 * 
 	 * @param builder
 	 */
-	private JaxrsProvider(Builder builder) {
-		super(builder.javaType, (Annotation) null, builder.metamodel);
+	private JaxrsProvider(final IType javaType, final List<Annotation> annotations, final Map<EnumElementKind, IType> providedKinds, final JaxrsMetamodel metamodel) {
+		super(javaType, annotations, metamodel);
+		this.providedKinds = providedKinds;
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.PROVIDER;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.PROVIDER;
 	}
 
-	/**
-	 * @param javaType
-	 * @return
-	 * @throws CoreException
-	 * @Override public final Set<EnumElementChange> merge(final IType javaType,
-	 *           final IProgressMonitor progressMonitor) throws
-	 *           InvalidModelElementException, CoreException { if
-	 *           (!JdtUtils.isTopLevelType(javaType)) { throw new
-	 *           InvalidModelElementException("Type is not a top-level type"); }
-	 *           Set<EnumElementChange> changes = new
-	 *           HashSet<EnumElementChange>();
-	 * 
-	 *           CompilationUnit compilationUnit =
-	 *           getCompilationUnit(progressMonitor); Set<IProblem> problems =
-	 *           JdtUtils.resolveErrors(javaType, compilationUnit); if (problems
-	 *           != null && problems.size() > 0) { //
-	 *           metamodel.reportErrors(javaType, problems); return changes; }
-	 *           IAnnotationBinding annotationBinding =
-	 *           JdtUtils.resolveAnnotationBinding(javaType, compilationUnit,
-	 *           javax.ws.rs.ext.Provider.class); // annotation was removed, or
-	 *           import was removed if (annotationBinding == null) { throw new
-	 *           InvalidModelElementException (
-	 *           "SimpleAnnotation binding not found : missing 'import' statement ?"
-	 *           ); } ITypeHierarchy providerTypeHierarchy =
-	 *           JdtUtils.resolveTypeHierarchy(javaType, false,
-	 *           progressMonitor); IType[] subtypes =
-	 *           providerTypeHierarchy.getSubtypes(javaType); // assert that the
-	 *           class is not abstract and has no // sub-type, or continue; if
-	 *           (JdtUtils.isAbstractType(javaType) || (subtypes != null &&
-	 *           subtypes.length > 0)) { throw new InvalidModelElementException(
-	 *           "Type is an abstract type or has subtypes" ); } Map<EnumKind,
-	 *           IType> providerKinds = getProviderKinds(javaType,
-	 *           compilationUnit, providerTypeHierarchy,
-	 *           container.getProviderInterfaces(), null); // removes previous
-	 *           kinds and capabilities for (Iterator<EnumKind> iterator =
-	 *           this.getProvidedKinds().keySet().iterator();
-	 *           iterator.hasNext();) { EnumKind kind = iterator.next(); if
-	 *           (providerKinds == null || !providerKinds.containsKey(kind)) {
-	 *           iterator.remove(); } } // add new kind and capabilities based
-	 *           on resolved types and // annotations if (providerKinds != null)
-	 *           { for (Entry<EnumKind, IType> entry : providerKinds.entrySet())
-	 *           { JaxrsMediaTypeCapabilities mediaTypes =
-	 *           resolveMediaTypeCapabilities(getJavaElement(), compilationUnit,
-	 *           entry.getKey()); addProviderKind(entry.getKey(),
-	 *           entry.getValue(), mediaTypes); } } return changes; }
-	 */
-
 	@Override
 	public List<ValidatorMessage> validate() {
 		List<ValidatorMessage> messages = new ArrayList<ValidatorMessage>();
@@ -136,9 +108,25 @@
 	}
 
 	@Override
-	public EnumKind getKind() {
-		// TODO Auto-generated method stub
+	public EnumElementKind getElementKind() {
+		final boolean isMessageBodyReader = providedKinds.get(EnumElementKind.MESSAGE_BODY_READER) != null;
+		final boolean isMessageBodyWriter = providedKinds.get(EnumElementKind.MESSAGE_BODY_WRITER) != null;
+		final boolean isExceptionMapper = providedKinds.get(EnumElementKind.EXCEPTION_MAPPER) != null;
+		if(isMessageBodyReader && isMessageBodyWriter) {
+			return EnumElementKind.ENTITY_MAPPER;
+		} else if(isMessageBodyReader) {
+			return EnumElementKind.MESSAGE_BODY_READER;
+		} else if(isMessageBodyWriter) {
+			return EnumElementKind.MESSAGE_BODY_WRITER;
+		} else if(isExceptionMapper) {
+			return EnumElementKind.EXCEPTION_MAPPER;
+		}
 		return null;
 	}
 
+	@Override
+	public IType getProvidedType(EnumElementKind providerKind) {
+		return providedKinds.get(providerKind);
+	}
+
 }

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResource.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResource.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResource.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -11,9 +11,9 @@
 
 package org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain;
 
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PRODUCES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PRODUCES;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -26,8 +26,8 @@
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.wst.validation.ValidatorMessage;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResource;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResourceField;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResourceMethod;
@@ -95,27 +95,27 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.RESOURCE;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.RESOURCE;
 	}
 
 	public final boolean isRootResource() {
-		return getKind() == EnumKind.ROOT_RESOURCE;
+		return getElementKind() == EnumElementKind.ROOT_RESOURCE;
 	}
 
 	public boolean isSubresource() {
-		return getKind() == EnumKind.SUBRESOURCE;
+		return getElementKind() == EnumElementKind.SUBRESOURCE;
 	}
 
 	@Override
-	public final EnumKind getKind() {
+	public final EnumElementKind getElementKind() {
 		final Annotation pathAnnotation = getAnnotation(PATH.qualifiedName);
 		if (pathAnnotation != null) {
-			return EnumKind.ROOT_RESOURCE;
+			return EnumElementKind.ROOT_RESOURCE;
 		} else if (resourceMethods.size() > 0 || resourceFields.size() > 0 || paramBeanProperties.size() > 0) {
-			return EnumKind.SUBRESOURCE;
+			return EnumElementKind.SUBRESOURCE;
 		}
-		return EnumKind.UNDEFINED;
+		return EnumElementKind.UNDEFINED;
 	}
 
 	public final String getName() {
@@ -180,7 +180,7 @@
 	}
 
 	public void addElement(JaxrsResourceElement<?> element) {
-		switch (element.getElementKind()) {
+		switch (element.getElementCategory()) {
 		case RESOURCE_FIELD:
 			this.resourceFields.put(element.getJavaElement().getHandleIdentifier(), (JaxrsResourceField) element);
 			break;

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceField.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceField.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceField.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -10,10 +10,10 @@
  ******************************************************************************/
 package org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain;
 
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DEFAULT_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.MATRIX_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.QUERY_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DEFAULT_VALUE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.MATRIX_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.QUERY_PARAM;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,8 +21,8 @@
 import org.eclipse.jdt.core.IField;
 import org.eclipse.wst.validation.ValidatorMessage;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResourceField;
 
 /** @author xcoulon */
@@ -39,8 +39,8 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.RESOURCE_FIELD;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.RESOURCE_FIELD;
 	}
 
 	public Annotation getPathParamAnnotation() {
@@ -66,17 +66,17 @@
 	}
 
 	@Override
-	public EnumKind getKind() {
+	public EnumElementKind getElementKind() {
 		if (getPathParamAnnotation() != null) {
-			return EnumKind.PATH_PARAM_FIELD;
+			return EnumElementKind.PATH_PARAM_FIELD;
 		}
 		if (getQueryParamAnnotation() != null) {
-			return EnumKind.QUERY_PARAM_FIELD;
+			return EnumElementKind.QUERY_PARAM_FIELD;
 		}
 		if (getMatrixParamAnnotation() != null) {
-			return EnumKind.MATRIX_PARAM_FIELD;
+			return EnumElementKind.MATRIX_PARAM_FIELD;
 		}
-		return EnumKind.UNDEFINED;
+		return EnumElementKind.UNDEFINED;
 	}
 
 	@Override

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -19,7 +19,7 @@
 import java.util.Arrays;
 import java.util.List;
 
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.*;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.*;
 
 
 
@@ -40,8 +40,8 @@
 import org.jboss.tools.ws.jaxrs.core.jdt.CompilationUnitsRepository;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodParameter;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodSignature;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResourceMethod;
 
@@ -196,8 +196,8 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.RESOURCE_METHOD;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.RESOURCE_METHOD;
 	}
 
 	@Override
@@ -367,17 +367,17 @@
 	 * ()
 	 */
 	@Override
-	public final EnumKind getKind() {
+	public final EnumElementKind getElementKind() {
 		final Annotation pathAnnotation = getPathAnnotation();
 		final Annotation httpMethodAnnotation = getHttpMethodAnnotation();
 		if (pathAnnotation == null && httpMethodAnnotation != null) {
-			return EnumKind.RESOURCE_METHOD;
+			return EnumElementKind.RESOURCE_METHOD;
 		} else if (pathAnnotation != null && httpMethodAnnotation != null) {
-			return EnumKind.SUBRESOURCE_METHOD;
+			return EnumElementKind.SUBRESOURCE_METHOD;
 		} else if (pathAnnotation != null && httpMethodAnnotation == null) {
-			return EnumKind.SUBRESOURCE_LOCATOR;
+			return EnumElementKind.SUBRESOURCE_LOCATOR;
 		}
-		return EnumKind.UNDEFINED;
+		return EnumElementKind.UNDEFINED;
 	}
 
 	/*
@@ -471,7 +471,7 @@
 	public final String toString() {
 		return "ResourceMethod '" + parentResource.getName() + "."
 				+ getJavaElement().getElementName() + "' ("
-				+ getKind().toString() + ")";
+				+ getElementKind().toString() + ")";
 	}
 
 	@Override

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsWebxmlApplication.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsWebxmlApplication.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsWebxmlApplication.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -6,8 +6,8 @@
 
 import org.eclipse.core.resources.IResource;
 import org.eclipse.wst.validation.ValidatorMessage;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsApplication;
 
 public class JaxrsWebxmlApplication extends JaxrsBaseElement implements IJaxrsApplication {
@@ -52,13 +52,13 @@
 	}
 
 	@Override
-	public EnumElementKind getElementKind() {
-		return EnumElementKind.APPLICATION;
+	public EnumElementCategory getElementCategory() {
+		return EnumElementCategory.APPLICATION;
 	}
 
 	@Override
-	public EnumKind getKind() {
-		return EnumKind.APPLICATION_WEBXML;
+	public EnumElementKind getElementKind() {
+		return EnumElementKind.APPLICATION_WEBXML;
 	}
 
 	@Override

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidator.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidator.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidator.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -28,7 +28,7 @@
 import org.jboss.tools.ws.jaxrs.core.internal.utils.ConstantUtils;
 import org.jboss.tools.ws.jaxrs.core.internal.utils.Logger;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsMetamodelLocator;
 
 public class JaxrsMetamodelValidator extends AbstractValidator {
@@ -55,7 +55,7 @@
 				}
 				List<JaxrsBaseElement> elements = jaxrsMetamodel.getElements(JdtUtils.getCompilationUnit(resource));
 				for(JaxrsBaseElement element : elements) {
-					if (element.getElementKind() == EnumElementKind.RESOURCE) {
+					if (element.getElementCategory() == EnumElementCategory.RESOURCE) {
 						Logger.debug("Validating the JAX-RS Metamodel after {} was {}", resource.getName(),
 								ConstantUtils.getStaticFieldName(IResourceDelta.class, kind));
 						List<ValidatorMessage> validationMessages = element.validate();

Added: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/utils/Pair.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/utils/Pair.java	                        (rev 0)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/utils/Pair.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -0,0 +1,71 @@
+package org.jboss.tools.ws.jaxrs.core.internal.utils;
+
+public class Pair<A, B> {
+
+	public static <P, Q> Pair<P, Q> makePair(P p, Q q) {
+		return new Pair<P, Q>(p, q);
+	}
+
+	public final A a;
+	public final B b;
+
+	public Pair(A a, B b) {
+		this.a = a;
+		this.b = b;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((a == null) ? 0 : a.hashCode());
+		result = prime * result + ((b == null) ? 0 : b.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (obj == null) {
+			return false;
+		}
+		if (getClass() != obj.getClass()) {
+			return false;
+		}
+		@SuppressWarnings("rawtypes")
+		Pair other = (Pair) obj;
+		if (a == null) {
+			if (other.a != null) {
+				return false;
+			}
+		} else if (!a.equals(other.a)) {
+			return false;
+		}
+		if (b == null) {
+			if (other.b != null) {
+				return false;
+			}
+		} else if (!b.equals(other.b)) {
+			return false;
+		}
+		return true;
+	}
+
+	public boolean isInstance(Class<?> classA, Class<?> classB) {
+		return classA.isInstance(a) && classB.isInstance(b);
+	}
+
+	@SuppressWarnings("unchecked")
+	public static <P, Q> Pair<P, Q> cast(Pair<?, ?> pair, Class<P> pClass, Class<Q> qClass) {
+
+		if (pair.isInstance(pClass, qClass)) {
+			return (Pair<P, Q>) pair;
+		}
+
+		throw new ClassCastException();
+
+	}
+
+}
\ No newline at end of file


Property changes on: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/utils/Pair.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Copied: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsClassname.java (from rev 42714, trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsElements.java)
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsClassname.java	                        (rev 0)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsClassname.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -0,0 +1,81 @@
+/******************************************************************************* 
+ * Copyright (c) 2012 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is 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: 
+ * Red Hat, Inc. - initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.ws.jaxrs.core.jdt;
+
+/**
+ * @author Xavier Coulon
+ *
+ */
+public enum EnumJaxrsClassname {
+	
+	DELETE("javax.ws.rs.DELETE"),
+	
+	GET("javax.ws.rs.GET"),
+	
+	POST("javax.ws.rs.POST"),
+	
+	PUT("javax.ws.rs.PUT"),
+	
+	HEAD("javax.ws.rs.HEAD"),
+	
+	OPTIONS("javax.ws.rs.OPTIONS"),
+	
+	HTTP_METHOD("javax.ws.rs.HttpMethod"),
+	
+	APPLICATION("javax.ws.rs.core.Application"), 
+	
+	APPLICATION_PATH("javax.ws.rs.ApplicationPath"),
+	
+	MESSAGE_BODY_READER("javax.ws.rs.ext.MessageBodyReader"),
+
+	MESSAGE_BODY_WRITER("javax.ws.rs.ext.MessageBodyWriter"),
+	
+	EXCEPTION_MAPPER("javax.ws.rs.ext.ExceptionMapper"),
+	
+	PATH("javax.ws.rs.Path"),
+	
+	PATH_PARAM("javax.ws.rs.PathParam"),
+	
+	CONSUMES("javax.ws.rs.Consumes"),
+	
+	PRODUCES("javax.ws.rs.Produces"),
+	
+	DEFAULT_VALUE("javax.ws.rs.DefaultValue"),
+
+	COOKIE_PARAM("javax.ws.rs.CookieParam"),
+
+	HEADER_PARAM("javax.ws.rs.HeaderParam"),
+
+	MATRIX_PARAM("javax.ws.rs.MatrixParam"),
+	
+	QUERY_PARAM("javax.ws.rs.QueryParam"),
+	
+	CONTEXT("javax.ws.rs.core.Context"),
+	
+	HTTP_HEADERS("javax.ws.rs.core.HttpHeaders"),
+
+	REQUEST("javax.ws.rs.core.Request"),
+
+	RESPONSE("javax.ws.rs.core.Response"),
+	
+	URI_INFO("javax.ws.rs.core.UriInfo"),
+	
+	ENCODED("javax.ws.rs.Encoded"),
+	
+	PROVIDER("javax.ws.rs.ext.Provider");
+	
+	public final String qualifiedName;
+	
+	private EnumJaxrsClassname(final String qualifiedName) {
+		this.qualifiedName = qualifiedName;
+	}
+
+}


Property changes on: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsClassname.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Deleted: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsElements.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsElements.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/EnumJaxrsElements.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -1,75 +0,0 @@
-/******************************************************************************* 
- * Copyright (c) 2012 Red Hat, Inc. 
- * Distributed under license by Red Hat, Inc. All rights reserved. 
- * This program is 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: 
- * Red Hat, Inc. - initial API and implementation 
- ******************************************************************************/
-package org.jboss.tools.ws.jaxrs.core.jdt;
-
-/**
- * @author Xavier Coulon
- *
- */
-public enum EnumJaxrsElements {
-	
-	DELETE("javax.ws.rs.DELETE"),
-	
-	GET("javax.ws.rs.GET"),
-	
-	POST("javax.ws.rs.POST"),
-	
-	PUT("javax.ws.rs.PUT"),
-	
-	HEAD("javax.ws.rs.HEAD"),
-	
-	OPTIONS("javax.ws.rs.OPTIONS"),
-	
-	HTTP_METHOD("javax.ws.rs.HttpMethod"),
-	
-	APPLICATION("javax.ws.rs.core.Application"), 
-	
-	APPLICATION_PATH("javax.ws.rs.ApplicationPath"),
-	
-	PATH("javax.ws.rs.Path"),
-	
-	PATH_PARAM("javax.ws.rs.PathParam"),
-	
-	CONSUMES("javax.ws.rs.Consumes"),
-	
-	PRODUCES("javax.ws.rs.Produces"),
-	
-	DEFAULT_VALUE("javax.ws.rs.DefaultValue"),
-
-	COOKIE_PARAM("javax.ws.rs.CookieParam"),
-
-	HEADER_PARAM("javax.ws.rs.HeaderParam"),
-
-	MATRIX_PARAM("javax.ws.rs.MatrixParam"),
-	
-	QUERY_PARAM("javax.ws.rs.QueryParam"),
-	
-	CONTEXT("javax.ws.rs.core.Context"),
-	
-	HTTP_HEADERS("javax.ws.rs.core.HttpHeaders"),
-
-	REQUEST("javax.ws.rs.core.Request"),
-
-	RESPONSE("javax.ws.rs.core.Response"),
-	
-	URI_INFO("javax.ws.rs.core.UriInfo"),
-	
-	ENCODED("javax.ws.rs.Encoded"),
-	
-	PROVIDER("javax.ws.rs.ext.Provider");
-	
-	public final String qualifiedName;
-	
-	private EnumJaxrsElements(final String qualifiedName) {
-		this.qualifiedName = qualifiedName;
-	}
-
-}

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationsScanner.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationsScanner.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationsScanner.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -11,10 +11,10 @@
 
 package org.jboss.tools.ws.jaxrs.core.jdt;
 
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PROVIDER;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PROVIDER;
 
 import java.util.ArrayList;
 import java.util.List;

Copied: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementCategory.java (from rev 42677, trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java)
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementCategory.java	                        (rev 0)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementCategory.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -0,0 +1,16 @@
+/******************************************************************************* 
+ * Copyright (c) 2008 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is 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: 
+ * Xavier Coulon - Initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.ws.jaxrs.core.metamodel;
+
+public enum EnumElementCategory {
+	APPLICATION, HTTP_METHOD, PROVIDER, RESOURCE, RESOURCE_FIELD, RESOURCE_METHOD
+
+}


Property changes on: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementCategory.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Deleted: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -1,16 +0,0 @@
-/******************************************************************************* 
- * Copyright (c) 2008 Red Hat, Inc. 
- * Distributed under license by Red Hat, Inc. All rights reserved. 
- * This program is 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: 
- * Xavier Coulon - Initial API and implementation 
- ******************************************************************************/
-package org.jboss.tools.ws.jaxrs.core.metamodel;
-
-public enum EnumElementKind {
-	APPLICATION, HTTP_METHOD, PROVIDER, RESOURCE, RESOURCE_FIELD, RESOURCE_METHOD
-
-}

Copied: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java (from rev 42677, trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumKind.java)
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java	                        (rev 0)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumElementKind.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -0,0 +1,54 @@
+/******************************************************************************* 
+ * Copyright (c) 2008 Red Hat, Inc. 
+ * Distributed under license by Red Hat, Inc. All rights reserved. 
+ * This program is 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: 
+ * Xavier Coulon - Initial API and implementation 
+ ******************************************************************************/
+package org.jboss.tools.ws.jaxrs.core.metamodel;
+
+/**
+ * The functional type of the JAX-RS ElementKind. Keeping that order ensures that the elements are sorted according to
+ * the order of priority into which they should be processed
+ * */
+public enum EnumElementKind {
+
+	/**
+	 * UNDEFINED KIND (when no annotation nor any other java element can define precisely what the element is.
+	 */
+	UNDEFINED,
+	/** A JAX-RS Application declared in the web deployment descriptor.*/
+	// must be declared *before* APPLICATION_JAVA constant to enable comparison ! 
+	APPLICATION_WEBXML,
+	/** A java annotated type based JAX-RS Application */
+	APPLICATION_JAVA,
+	/** An HTTP method. */
+	HTTP_METHOD,
+	/** A message producer. */
+	MESSAGE_BODY_WRITER,
+	/** A message consumer. */
+	MESSAGE_BODY_READER,
+	/** An Entity Mapper (ie, both reader and writer). */
+	ENTITY_MAPPER,
+	/** An exception mapper. */
+	EXCEPTION_MAPPER,
+	/** A root resource. */
+	ROOT_RESOURCE,
+	/** A subresource. */
+	SUBRESOURCE,
+	/** A resource method. */
+	RESOURCE_METHOD,
+	/** A subresource method. */
+	SUBRESOURCE_METHOD,
+	/** A subresource locator. */
+	SUBRESOURCE_LOCATOR,
+	/** PathParam field. */
+	PATH_PARAM_FIELD,
+	/** QueryParam field. */
+	QUERY_PARAM_FIELD,
+	/** MatrixParam field. */
+	MATRIX_PARAM_FIELD;
+}

Deleted: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumKind.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumKind.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/EnumKind.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -1,52 +0,0 @@
-/******************************************************************************* 
- * Copyright (c) 2008 Red Hat, Inc. 
- * Distributed under license by Red Hat, Inc. All rights reserved. 
- * This program is 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: 
- * Xavier Coulon - Initial API and implementation 
- ******************************************************************************/
-package org.jboss.tools.ws.jaxrs.core.metamodel;
-
-/**
- * The functional type of the JAX-RS ElementKind. Keeping that order ensures that the elements are sorted according to
- * the order of priority into which they should be processed
- * */
-public enum EnumKind {
-
-	/**
-	 * UNDEFINED KIND (when no annotation nor any other java element can define precisely what the element is.
-	 */
-	UNDEFINED,
-	/** A JAX-RS Application declared in the web deployment descriptor.*/
-	// must be declared *before* APPLICATION_JAVA constant to enable comparison ! 
-	APPLICATION_WEBXML,
-	/** A java annotated type based JAX-RS Application */
-	APPLICATION_JAVA,
-	/** An HTTP method. */
-	HTTP_METHOD,
-	/** A message producer. */
-	PRODUCER,
-	/** A message consumer. */
-	CONSUMER,
-	/** An exception mapper. */
-	EXCEPTION_MAPPER,
-	/** A root resource. */
-	ROOT_RESOURCE,
-	/** A subresource. */
-	SUBRESOURCE,
-	/** A resource method. */
-	RESOURCE_METHOD,
-	/** A subresource method. */
-	SUBRESOURCE_METHOD,
-	/** A subresource locator. */
-	SUBRESOURCE_LOCATOR,
-	/** PathParam field. */
-	PATH_PARAM_FIELD,
-	/** QueryParam field. */
-	QUERY_PARAM_FIELD,
-	/** MatrixParam field. */
-	MATRIX_PARAM_FIELD;
-}

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsApplication.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsApplication.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsApplication.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -14,6 +14,6 @@
 
 	public abstract String getApplicationPath();
 
-	public abstract EnumKind getKind();
+	public abstract EnumElementKind getElementKind();
 
 }

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsProvider.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsProvider.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsProvider.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -10,6 +10,10 @@
  ******************************************************************************/
 package org.jboss.tools.ws.jaxrs.core.metamodel;
 
+import org.eclipse.jdt.core.IType;
+
 public interface IJaxrsProvider extends IJaxrsElement{
 
+	public IType getProvidedType(EnumElementKind messageBodyReader);
+
 }

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsResourceMethod.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsResourceMethod.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsResourceMethod.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -30,7 +30,7 @@
 	 */
 	public abstract void hasErrors(final boolean h);
 
-	public abstract EnumKind getKind();
+	public abstract EnumElementKind getElementKind();
 
 	abstract String getPathTemplate();
 

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.ui/src/org/jboss/tools/ws/jaxrs/ui/contentassist/PathParamAnnotationValueCompletionProposalComputer.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -11,7 +11,7 @@
 
 package org.jboss.tools.ws.jaxrs.ui.contentassist;
 
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH_PARAM;
 
 import java.util.ArrayList;
 import java.util.Collections;

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/WorkbenchUtils.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/WorkbenchUtils.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/WorkbenchUtils.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -30,6 +30,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.core.resources.IFile;
@@ -870,7 +871,7 @@
 	 * @throws CoreException
 	 * @throws IOException
 	 */
-	public static IResource createContent(IFolder folder, String fileName, InputStream stream) throws CoreException,
+	public static IResource createFileFromStream(IFolder folder, String fileName, InputStream stream) throws CoreException,
 			IOException {
 		if (!folder.exists()) {
 			folder.create(true, true, new NullProgressMonitor());
@@ -900,26 +901,15 @@
 	 * @throws CoreException
 	 * @throws IOException
 	 */
-	public static void replaceContent(IResource resource, InputStream stream) throws CoreException, IOException {
+	public static void replaceContent(IResource resource, InputStream stream, boolean useWorkingCopy) throws CoreException, IOException {
 		final IProject project = resource.getProject();
 		final IFile file = project.getFile(resource.getProjectRelativePath());
-		if (file.exists()) {
-			file.delete(true, new NullProgressMonitor());
-		}
-		file.create(stream, true, null);
-		LOGGER.debug("Content:");
-		final InputStream contents = file.getContents();
-		final char[] buffer = new char[0x10000];
-		StringBuilder out = new StringBuilder();
-		Reader in = new InputStreamReader(contents, "UTF-8");
-		int read;
-		do {
-			read = in.read(buffer, 0, buffer.length);
-			if (read > 0) {
-				out.append(buffer, 0, read);
-			}
-		} while (read >= 0);
-		LOGGER.debug(out.toString());
+		ICompilationUnit unit = getCompilationUnit(JdtUtils.getCompilationUnit(file), useWorkingCopy);
+		IBuffer buffer = ((IOpenable) unit).getBuffer();
+		buffer.setContents(IOUtils.toString(stream));
+		saveAndClose(unit);
+		
+		
 	}
 
 	/**
@@ -946,10 +936,10 @@
 		InputStream stream = FileLocator.openStream(bundle, new Path("resources").append(webxmlReplacementName), false);
 		assertThat(stream, notNullValue());
 		if (webxmlResource != null) {
-			replaceContent(webxmlResource, stream);
+			replaceContent(webxmlResource, stream, false);
 			return webxmlResource;
 		} else {
-			return createContent(webInfFolder, "web.xml", stream);
+			return createFileFromStream(webInfFolder, "web.xml", stream);
 		}
 	}
 

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessorTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessorTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementChangedProcessorTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -29,23 +29,23 @@
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_METHOD_RETURN_TYPE;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PATH_VALUE;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PRODUCED_MEDIATYPES_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONTEXT;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DEFAULT_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DELETE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.ENCODED;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.GET;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.MATRIX_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.POST;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PRODUCES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PUT;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.QUERY_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.RESPONSE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.URI_INFO;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONTEXT;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DEFAULT_VALUE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DELETE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.ENCODED;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.GET;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.MATRIX_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.POST;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PRODUCES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PUT;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.QUERY_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.RESPONSE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.URI_INFO;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assert.fail;
 import static org.mockito.Matchers.any;
@@ -83,10 +83,10 @@
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResourceField;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResourceMethod;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
-import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements;
+import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodParameter;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsMetamodelDelta;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -121,7 +121,7 @@
 	 * @throws CoreException
 	 * @throws JavaModelException
 	 */
-	private JaxrsHttpMethod createHttpMethod(EnumJaxrsElements httpMethodElement) throws CoreException, JavaModelException {
+	private JaxrsHttpMethod createHttpMethod(EnumJaxrsClassname httpMethodElement) throws CoreException, JavaModelException {
 		final IType httpMethodType = JdtUtils.resolveType(httpMethodElement.qualifiedName, javaProject, progressMonitor);
 		final Annotation httpMethodAnnotation = getAnnotation(httpMethodType, HTTP_METHOD.qualifiedName);
 		final JaxrsHttpMethod httpMethod = new JaxrsHttpMethod(httpMethodType, httpMethodAnnotation, metamodel);
@@ -224,7 +224,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsJavaApplication) impacts.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		verify(metamodel, times(1)).add(any(JaxrsJavaApplication.class));
@@ -241,7 +241,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsJavaApplication) impacts.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		verify(metamodel, times(1)).add(any(JaxrsJavaApplication.class));
@@ -259,7 +259,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsJavaApplication) impacts.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		verify(metamodel, times(1)).add(any(JaxrsJavaApplication.class));
@@ -296,7 +296,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(((JaxrsJavaApplication) impacts.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(1));
@@ -348,7 +348,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsJavaApplication) impacts.get(0).getElement()), equalTo(application));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -367,7 +367,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsJavaApplication) impacts.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -386,7 +386,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(impacts.get(0).getElement(), is(notNullValue()));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -423,7 +423,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(impacts.get(0).getElement(), is(notNullValue()));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -439,7 +439,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsHttpMethod) impacts.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		verify(metamodel, times(1)).add(any(JaxrsHttpMethod.class));
@@ -456,7 +456,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsHttpMethod) impacts.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		//verify(metamodel, times(1)).add(any(HTTP_METHOD.qualifiedName));
@@ -474,7 +474,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsHttpMethod) impacts.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		verify(metamodel, times(1)).add(any(JaxrsHttpMethod.class));
@@ -511,7 +511,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(((JaxrsHttpMethod) impacts.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(1));
@@ -564,7 +564,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsHttpMethod) impacts.get(0).getElement()), equalTo(httpMethod));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -583,7 +583,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsHttpMethod) impacts.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -602,7 +602,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(impacts.get(0).getElement(), is(notNullValue()));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -638,7 +638,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts.get(0).getElement(), is(notNullValue()));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -659,7 +659,7 @@
 		final List<JaxrsElementDelta> impacts = processEvent(event, progressMonitor);
 		// verifications
 		assertThat(impacts.size(), equalTo(1));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(impacts, everyItem(Matchers.<JaxrsElementDelta> hasProperty("deltaKind", equalTo(REMOVED))));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
 	}
@@ -1986,7 +1986,7 @@
 		assertThat(impacts.size(), equalTo(1));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(impacts.get(0).getFlags(), equalTo(F_METHOD_PARAMETERS));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_METHOD));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(3)); // @HTTP + resource + resourceMethod
 	}
 
@@ -2017,7 +2017,7 @@
 		assertThat(impacts.size(), equalTo(1));
 		assertThat(impacts.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(impacts.get(0).getFlags(), equalTo(F_METHOD_PARAMETERS));
-		assertThat(impacts.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_METHOD));
+		assertThat(impacts.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_METHOD));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(3)); // @HTTP + resource + resourceMethod
 	}
 
@@ -2370,5 +2370,5 @@
 	public void shouldUpdateResourceMethodWhenRemovingThrowsException() throws CoreException {
 		fail("Not implemented yet - postponed along with support for providers");
 	}
-
+	
 }

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessorTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessorTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessorTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -21,13 +21,13 @@
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getType;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_ELEMENT_KIND;
 import static org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JaxrsElementDelta.F_PATH_VALUE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.GET;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.POST;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PRODUCES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.GET;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.POST;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PRODUCES;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.spy;
 
@@ -52,11 +52,11 @@
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResourceMethod;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsResourceMethod.Builder;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
-import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements;
+import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodParameter;
 import org.jboss.tools.ws.jaxrs.core.jdt.JavaMethodSignature;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsEndpoint;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.metamodel.JaxrsEndpointDelta;
@@ -95,7 +95,7 @@
 	}
 
 	private JaxrsResourceMethod createResourceMethod(String methodName, JaxrsResource parentResource,
-			EnumJaxrsElements httpMethodElement) throws CoreException, JavaModelException {
+			EnumJaxrsClassname httpMethodElement) throws CoreException, JavaModelException {
 		final IType javaType = parentResource.getJavaElement();
 		final ICompilationUnit compilationUnit = javaType.getCompilationUnit();
 		final IMethod javaMethod = getMethod(javaType, methodName);
@@ -274,7 +274,7 @@
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerSubresourceMethod = createResourceMethod("getCustomer", customerResource,
 				null);
-		assertThat(customerSubresourceMethod.getKind(), equalTo(EnumKind.SUBRESOURCE_LOCATOR));
+		assertThat(customerSubresourceMethod.getElementKind(), equalTo(EnumElementKind.SUBRESOURCE_LOCATOR));
 		// operation
 		Annotation httpAnnotation = getAnnotation(customerSubresourceMethod.getJavaElement(), GET.qualifiedName);
 		final int flags = customerSubresourceMethod.addOrUpdateAnnotation(httpAnnotation);

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessorTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessorTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessorTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -19,13 +19,13 @@
 import static org.hamcrest.Matchers.notNullValue;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getAnnotation;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getType;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION_PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.DELETE;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.GET;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.POST;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PUT;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION_PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.DELETE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.GET;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.POST;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PUT;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Matchers.any;
@@ -60,10 +60,10 @@
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsWebxmlApplication;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
 import org.jboss.tools.ws.jaxrs.core.jdt.CompilationUnitsRepository;
-import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements;
+import org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementCategory;
 import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsApplication;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsMetamodel;
@@ -134,7 +134,7 @@
 	 * @throws CoreException
 	 * @throws JavaModelException
 	 */
-	private JaxrsHttpMethod createHttpMethod(EnumJaxrsElements httpMethodElement) throws CoreException, JavaModelException {
+	private JaxrsHttpMethod createHttpMethod(EnumJaxrsClassname httpMethodElement) throws CoreException, JavaModelException {
 		final IType httpMethodType = JdtUtils.resolveType(httpMethodElement.qualifiedName, javaProject, progressMonitor);
 		final Annotation httpMethodAnnotation = getAnnotation(httpMethodType, HTTP_METHOD.qualifiedName);
 		final JaxrsHttpMethod httpMethod = new JaxrsHttpMethod(httpMethodType, httpMethodAnnotation, metamodel);
@@ -268,7 +268,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(1));
 	}
@@ -284,7 +284,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((IJaxrsApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		verify(metamodel, times(1)).add(any(JaxrsJavaApplication.class));
@@ -302,7 +302,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(((IJaxrsApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		verify(metamodel, times(1)).add(any(JaxrsJavaApplication.class));
@@ -322,7 +322,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((IJaxrsApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/app"));
 		verify(metamodel, times(1)).add(any(JaxrsHttpMethod.class));
@@ -342,7 +342,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsJavaApplication) affectedElements.get(0).getElement()), equalTo(application));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -362,7 +362,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((IJaxrsHttpMethod) affectedElements.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -382,7 +382,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getElement(), is(notNullValue()));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -398,7 +398,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsWebxmlApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/hello"));
 		verify(metamodel, times(1)).add(any(JaxrsWebxmlApplication.class));
@@ -428,7 +428,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((JaxrsWebxmlApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/hello"));
 		verify(metamodel, times(1)).add(any(JaxrsWebxmlApplication.class));
@@ -450,7 +450,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
 		final JaxrsWebxmlApplication webxmlApplication = (JaxrsWebxmlApplication) affectedElements.get(0).getElement();
-		assertThat(webxmlApplication.getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(webxmlApplication.getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(webxmlApplication.getApplicationPath(), equalTo("/hello"));
 		verify(metamodel, times(1)).add(any(JaxrsWebxmlApplication.class));
@@ -471,7 +471,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(((JaxrsWebxmlApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/hello"));
 		verify(metamodel, times(1)).add(any(JaxrsWebxmlApplication.class));
@@ -506,7 +506,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsWebxmlApplication) affectedElements.get(0).getElement()).getApplicationPath(), equalTo("/hello"));
 		verify(metamodel, times(1)).remove(any(JaxrsWebxmlApplication.class));
@@ -527,7 +527,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsWebxmlApplication) affectedElements.get(0).getElement()), equalTo(application));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -549,7 +549,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.APPLICATION));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.APPLICATION));
 		assertThat(affectedElements.get(0).getElement(), is(notNullValue()));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -583,7 +583,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
 		assertThat(((IJaxrsHttpMethod) affectedElements.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		verify(metamodel, times(1)).add(any(JaxrsHttpMethod.class));
@@ -601,7 +601,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(CHANGED));
 		assertThat(((IJaxrsHttpMethod) affectedElements.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		verify(metamodel, times(1)).add(any(JaxrsHttpMethod.class));
@@ -621,7 +621,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((IJaxrsHttpMethod) affectedElements.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		verify(metamodel, times(1)).add(any(JaxrsHttpMethod.class));
@@ -642,7 +642,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsHttpMethod) affectedElements.get(0).getElement()), equalTo(httpMethod));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -662,7 +662,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((IJaxrsHttpMethod) affectedElements.get(0).getElement()).getHttpVerb(), equalTo("FOO"));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -683,7 +683,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.HTTP_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.HTTP_METHOD));
 		assertThat(affectedElements.get(0).getElement(), is(notNullValue()));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -703,7 +703,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE));
 		// HttpMethods, Resource, ResourceMethods and ResourceFields
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(11));
 	}
@@ -765,7 +765,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource method
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_METHOD));
 		// 4 HttpMethods + 2 resources (including their methods and fields)
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(8));
 	}
@@ -783,7 +783,7 @@
 		// operation
 		for (Iterator<JaxrsResourceMethod> iterator = bookResource.getMethods().values().iterator(); iterator.hasNext();) {
 			JaxrsResourceMethod resourceMethod = iterator.next();
-			if (resourceMethod.getKind() == EnumKind.SUBRESOURCE_METHOD) {
+			if (resourceMethod.getElementKind() == EnumElementKind.SUBRESOURCE_METHOD) {
 				WorkbenchUtils.replaceFirstOccurrenceOfCode(resourceMethod.getJavaElement(), "@Path(\"/{id}\")",
 						"@Path(\"/{foo}\")", false);
 				WorkbenchUtils.delete(resourceMethod.getHttpMethodAnnotation().getJavaAnnotation(), false);
@@ -794,9 +794,9 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(2)); // 2 resource methods
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(CHANGED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_METHOD));
 		assertThat(affectedElements.get(1).getDeltaKind(), equalTo(CHANGED));
-		assertThat(affectedElements.get(1).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_METHOD));
+		assertThat(affectedElements.get(1).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_METHOD));
 		// 4 HttpMethods + 2 resources (including their methods and fields)
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(8));
 	}
@@ -813,7 +813,7 @@
 		// operation
 		for (Iterator<JaxrsResourceMethod> iterator = bookResource.getMethods().values().iterator(); iterator.hasNext();) {
 			JaxrsResourceMethod resourceMethod = iterator.next();
-			if (resourceMethod.getKind() == EnumKind.RESOURCE_METHOD) {
+			if (resourceMethod.getElementKind() == EnumElementKind.RESOURCE_METHOD) {
 				WorkbenchUtils.delete(resourceMethod.getHttpMethodAnnotation().getJavaAnnotation(), false);
 			}
 		}
@@ -822,7 +822,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource method
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_METHOD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_METHOD));
 		// 4 HttpMethods + 1 resource (including their remaining methods and fields)
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(7));
 	}
@@ -843,7 +843,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource field
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(ADDED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_FIELD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_FIELD));
 		// 4 HttpMethods + 2 resources (including their methods and fields)
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(9));
 	}
@@ -872,7 +872,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource field
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(CHANGED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_FIELD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_FIELD));
 		// 4 HttpMethods + 2 resources (including their methods and fields)
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(9));
 	}
@@ -899,7 +899,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource field
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE_FIELD));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE_FIELD));
 		// 4 HttpMethods + 2 resources (including their methods and fields)
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(8));
 	}
@@ -922,7 +922,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE));
 		// 4 HttpMethods left only
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(4));
 	}
@@ -942,7 +942,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE));
 		assertThat(((JaxrsResource) affectedElements.get(0).getElement()), equalTo(resource));
 		// 4 HttpMethods left only
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(4));
@@ -963,7 +963,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE));
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
 		assertThat(((JaxrsResource) affectedElements.get(0).getElement()), equalTo(resource));
 		// 4 HttpMethods left only
@@ -984,7 +984,7 @@
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE));
 		verify(metamodel, times(1)).remove(any(JaxrsResource.class));
 		// nothing left
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
@@ -1025,7 +1025,7 @@
 		// verifications
 		assertThat(affectedElements.size(), equalTo(1)); // 1 resource method
 		assertThat(affectedElements.get(0).getDeltaKind(), equalTo(REMOVED));
-		assertThat(affectedElements.get(0).getElement().getElementKind(), equalTo(EnumElementKind.RESOURCE));
+		assertThat(affectedElements.get(0).getElement().getElementCategory(), equalTo(EnumElementCategory.RESOURCE));
 		// 4 HttpMethods left only
 		assertThat(metamodel.getElements(javaProject).size(), equalTo(4));
 	}

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactoryTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactoryTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactoryTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -16,11 +16,12 @@
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getAnnotation;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getMethod;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getType;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.GET;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.QUERY_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.GET;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.QUERY_PARAM;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.spy;
 
@@ -33,6 +34,7 @@
 import org.jboss.tools.ws.jaxrs.core.AbstractCommonTestCase;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResource;
 import org.junit.Before;
@@ -77,7 +79,7 @@
 	}
 
 	@Test
-	public void shouldCreateSubesourceFromType() throws CoreException {
+	public void shouldCreateSubresourceFromType() throws CoreException {
 		// pre-conditions
 		final IType type = getType("org.jboss.tools.ws.jaxrs.sample.services.BookResource", javaProject);
 		// operation
@@ -165,5 +167,62 @@
 		assertThat(element.getQueryParamAnnotation().getValue("value"), equalTo("foo"));
 		assertThat(element.getDefaultValueAnnotation().getValue("value"), equalTo("foo!"));
 	}
+	
+	@Test
+	public void shouldCreateMessageBodyWriterProviderFromType() throws CoreException {
+		// pre-conditions
+		final IType providerType = getType("org.jboss.tools.ws.jaxrs.sample.services.providers.CustomerVCardMessageBodyWriter", javaProject);
+		// operation
+		JaxrsProvider element = factory.createProvider(providerType, JdtUtils.parse(providerType, progressMonitor), metamodel, progressMonitor);
+		// verifications
+		assertNotNull(element);
+		assertThat(element.getAnnotations().size(), equalTo(2));
+		assertThat(element.getElementKind(), equalTo(EnumElementKind.MESSAGE_BODY_WRITER));
+		assertNull(element.getProvidedType(EnumElementKind.MESSAGE_BODY_READER));
+		assertThat(element.getProvidedType(EnumElementKind.MESSAGE_BODY_WRITER).getFullyQualifiedName(), equalTo("org.jboss.tools.ws.jaxrs.sample.domain.Customer"));
+		assertNull(element.getProvidedType(EnumElementKind.EXCEPTION_MAPPER));
+	}
+	
+	
+	@Test
+	public void shouldCreateEntityProviderFromType() throws CoreException {
+		// pre-conditions
+		final IType providerType = getType("org.jboss.tools.ws.jaxrs.sample.extra.DummyProvider", javaProject);
+		// operation
+		JaxrsProvider element = factory.createProvider(providerType, JdtUtils.parse(providerType, progressMonitor), metamodel, progressMonitor);
+		// verifications
+		assertNotNull(element);
+		assertThat(element.getAnnotations().size(), equalTo(3));
+		assertThat(element.getElementKind(), equalTo(EnumElementKind.ENTITY_MAPPER));
+		assertThat(element.getProvidedType(EnumElementKind.MESSAGE_BODY_READER).getFullyQualifiedName(), equalTo(String.class.getName()));
+		assertThat(element.getProvidedType(EnumElementKind.MESSAGE_BODY_WRITER).getFullyQualifiedName(), equalTo(Number.class.getName()));
+		assertNull(element.getProvidedType(EnumElementKind.EXCEPTION_MAPPER));
+	}
 
+	@Test
+	public void shouldCreateExceptionMapperProviderFromType() throws CoreException {
+		// pre-conditions
+		final IType providerType = getType("org.jboss.tools.ws.jaxrs.sample.extra.TestQualifiedExceptionMapper", javaProject);
+		// operation
+		JaxrsProvider element = factory.createProvider(providerType, JdtUtils.parse(providerType, progressMonitor), metamodel, progressMonitor);
+		// verifications
+		assertNotNull(element);
+		assertThat(element.getAnnotations().size(), equalTo(1));
+		assertThat(element.getElementKind(), equalTo(EnumElementKind.EXCEPTION_MAPPER));
+		assertNull(element.getProvidedType(EnumElementKind.MESSAGE_BODY_READER));
+		assertNull(element.getProvidedType(EnumElementKind.MESSAGE_BODY_WRITER));
+		assertThat(element.getProvidedType(EnumElementKind.EXCEPTION_MAPPER).getFullyQualifiedName(), equalTo("org.jboss.tools.ws.jaxrs.sample.extra.TestQualifiedException$TestException"));
+	}
+
+	@Test
+	public void shouldNotCreateProviderFromType() throws CoreException {
+		// pre-conditions
+		final IType providerType = getType("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator", javaProject);
+		// operation
+		JaxrsProvider element = factory.createProvider(providerType, JdtUtils.parse(providerType, progressMonitor), metamodel, progressMonitor);
+		// verifications
+		assertNull(element);
+	}
+
+	
 }

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodelTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodelTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodelTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -19,7 +19,7 @@
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getAnnotation;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getMethod;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getType;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
 import static org.junit.Assert.assertThat;
 
 import java.lang.annotation.Target;
@@ -39,7 +39,7 @@
 import org.jboss.tools.ws.jaxrs.core.builder.AbstractMetamodelBuilderTestCase;
 import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
 import org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils;
-import org.jboss.tools.ws.jaxrs.core.metamodel.EnumKind;
+import org.jboss.tools.ws.jaxrs.core.metamodel.EnumElementKind;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsEndpoint;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.metamodel.IJaxrsResource;
@@ -136,7 +136,7 @@
 		Assert.assertEquals(7, metamodel.getAllResources().size());
 		for (IJaxrsResource jaxrsResource : metamodel.getAllResources()) {
 			assertThat(((JaxrsResource) jaxrsResource).getJavaElement(), notNullValue());
-			assertThat(((JaxrsResource) jaxrsResource).getKind(), notNullValue());
+			assertThat(((JaxrsResource) jaxrsResource).getElementKind(), notNullValue());
 			assertThat(jaxrsResource.getAllMethods().size(), greaterThan(0));
 		}
 	}
@@ -159,7 +159,7 @@
 	}
 	@Test
 	public void shouldRetrieveApplicationPath() throws CoreException {
-		assertThat(metamodel.getApplication().getKind(), equalTo(EnumKind.APPLICATION_WEBXML));
+		assertThat(metamodel.getApplication().getElementKind(), equalTo(EnumElementKind.APPLICATION_WEBXML));
 		assertThat(metamodel.getApplication().getApplicationPath(), equalTo("/hello"));
 	}
 	

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidatorTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidatorTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/validation/JaxrsMetamodelValidatorTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -12,8 +12,8 @@
 
 import static org.hamcrest.Matchers.equalTo;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getAnnotation;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
 import static org.junit.Assert.assertThat;
 
 import java.util.List;

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/utils/WtpUtilsTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/utils/WtpUtilsTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/utils/WtpUtilsTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -3,7 +3,7 @@
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.notNullValue;
 import static org.hamcrest.Matchers.nullValue;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.APPLICATION;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.APPLICATION;
 import static org.junit.Assert.assertThat;
 
 import org.eclipse.core.resources.IResource;

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java	2012-07-30 14:56:26 UTC (rev 42786)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java	2012-07-30 15:15:37 UTC (rev 42787)
@@ -20,14 +20,14 @@
 import static org.hamcrest.Matchers.notNullValue;
 import static org.hamcrest.Matchers.nullValue;
 import static org.jboss.tools.ws.jaxrs.core.WorkbenchUtils.getAnnotation;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.CONSUMES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.ENCODED;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.GET;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.HTTP_METHOD;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PATH_PARAM;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.PRODUCES;
-import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsElements.RESPONSE;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.CONSUMES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.ENCODED;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.GET;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.HTTP_METHOD;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PATH_PARAM;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.PRODUCES;
+import static org.jboss.tools.ws.jaxrs.core.jdt.EnumJaxrsClassname.RESPONSE;
 import static org.junit.Assert.assertThat;
 
 import java.util.List;



More information about the jbosstools-commits mailing list