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

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Fri Jul 27 05:55:49 EDT 2012


Author: xcoulon
Date: 2012-07-27 05:55:48 -0400 (Fri, 27 Jul 2012)
New Revision: 42752

Added:
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBuiltinHttpMethod.java
Modified:
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuilder.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/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/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/JaxrsResourceMethod.java
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/Annotation.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/IJaxrsHttpMethod.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/jdt/JaxrsAnnotationScannerTestCase.java
Log:
Fixed - JBIDE-12224
Building JAX-RS metamodel is very slow at times 

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuilder.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuilder.java	2012-07-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelBuilder.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -96,20 +96,6 @@
 	 *            the progress monitor
 	 */
 	private void build(final int buildKind, final IProject project, final IProgressMonitor progressMonitor) {
-		/*
-		 * progressMonitor.beginTask("Building JAX-RS Metamodel", 4 * SCALE);
-		 * Logger.debug("Building JAX-RS Metamodel for project {}...", project.getName()); // extract the relevant delta
-		 * bound to this built (some resources or entire project) final List<ResourceDelta> affectedResources =
-		 * extractAffectedResources(project, progressMonitor); progressMonitor.worked(SCALE); // compute changes on the
-		 * JAX-RS Application(s), HttpMethods, Resources, etc. final boolean withReset = (buildKind == FULL_BUILD ||
-		 * buildKind == CLEAN_BUILD); final JaxrsMetamodelDelta metamodelDelta = resourceChangedProcessor
-		 * .processAffectedResources(project, withReset, affectedResources, new SubProgressMonitor(progressMonitor,
-		 * SCALE)); progressMonitor.worked(SCALE); new
-		 * JaxrsMetamodelChangedProcessor().processAffectedMetamodel(metamodelDelta, new
-		 * SubProgressMonitor(progressMonitor, SCALE)); progressMonitor.worked(SCALE); new
-		 * JaxrsElementChangedPublisher().publish(metamodelDelta, new SubProgressMonitor(progressMonitor, SCALE));
-		 * progressMonitor.worked(SCALE);
-		 */
 		ResourceChangedBuildJob job = new ResourceChangedBuildJob(project, getResourceChangeEvent(project, buildKind));
 		job.setRule(MutexJobSchedulingRule.getInstance());
 		job.schedule();

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessor.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -30,6 +30,7 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeHierarchy;
 import org.eclipse.jdt.core.JavaCore;
@@ -102,18 +103,18 @@
 		final JaxrsMetamodel metamodel = JaxrsMetamodel.create(JavaCore.create(project));
 		final JaxrsMetamodelDelta metamodelDelta = new JaxrsMetamodelDelta(metamodel, deltaKind);
 		try {
-			progressMonitor.beginTask("Processing Project '" + project.getName() + "'...", 1);
-			Logger.debug("Processing Project '" + project.getName() + "'...");
+			progressMonitor.beginTask("Processing project '" + project.getName() + "'...", 1);
+			Logger.debug("Processing project '" + project.getName() + "'...");
 			metamodelDelta.addAll(processEvent(new ResourceDelta(project, ADDED, 0), progressMonitor));
 			if(WtpUtils.hasWebDeploymentDescriptor(project)) {
 				processEvent(new ResourceDelta(WtpUtils.getWebDeploymentDescriptor(project), ADDED, 0), progressMonitor);
 			}
 			progressMonitor.worked(1);
 		} catch (CoreException e) {
-			Logger.error("Failed while processing Resource results", e);
+			Logger.error("Failed while processing resource results", e);
 		} finally {
 			progressMonitor.done();
-			Logger.debug("Done processing Resource results.");
+			Logger.debug("Done processing resource results.");
 
 		}
 
@@ -144,7 +145,6 @@
 				elementChanges.addAll(processEvent(event, progressMonitor));
 				progressMonitor.worked(1);
 			}
-
 		} catch (CoreException e) {
 			Logger.error("Failed while processing Resource results", e);
 			elementChanges.clear();
@@ -167,7 +167,9 @@
 		final IJavaElement scope = JavaCore.create(resource);
 		final JaxrsMetamodel metamodel = JaxrsMetamodelLocator.get(resource.getProject());
 		final int deltaKind = event.getDeltaKind();
-		if (scope != null) {
+		if (scope != null && 
+				// ignore changes on binary files (added/removed/changed jars to improve builder performances)
+				!(scope.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT && ((IPackageFragmentRoot)scope).isArchive())) {
 			switch (deltaKind) {
 			case ADDED:
 			case CHANGED:

Added: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBuiltinHttpMethod.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBuiltinHttpMethod.java	                        (rev 0)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsBuiltinHttpMethod.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -0,0 +1,86 @@
+/******************************************************************************* 
+ * 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.internal.metamodel.domain;
+
+import org.jboss.tools.ws.jaxrs.core.jdt.Annotation;
+
+/**
+ * Built-in Http Methods as part of the JAX-RS 1.1 specification
+ * @author Xavier Coulon
+ *
+ */
+public class JaxrsBuiltinHttpMethod extends JaxrsHttpMethod {
+
+	public static final JaxrsHttpMethod GET = new JaxrsBuiltinHttpMethod("javax.ws.rs.GET", "GET"); 
+	public static final JaxrsHttpMethod POST = new JaxrsBuiltinHttpMethod("javax.ws.rs.POST", "POST"); 
+	public static final JaxrsHttpMethod PUT = new JaxrsBuiltinHttpMethod("javax.ws.rs.PUT", "PUT"); 
+	public static final JaxrsHttpMethod DELETE = new JaxrsBuiltinHttpMethod("javax.ws.rs.DELETE", "DELETE"); 
+	public static final JaxrsHttpMethod OPTIONS = new JaxrsBuiltinHttpMethod("javax.ws.rs.OPTIONS", "OPTIONS"); 
+	public static final JaxrsHttpMethod HEAD = new JaxrsBuiltinHttpMethod("javax.ws.rs.HEAD", "HEAD"); 
+
+	private final String annotationName;
+	private final String httpVerb;
+	
+	public JaxrsBuiltinHttpMethod(String annotationName, String annotationValue) {
+		super(null, new Annotation(null, annotationName, annotationValue, null), null);
+		this.annotationName = annotationName;
+		this.httpVerb = annotationValue;
+	} 
+
+	@Override
+	public String getHttpVerb() {
+		return this.httpVerb;
+	}
+	
+	@Override
+	public String getFullyQualifiedName() {
+		return annotationName;
+	}
+
+	/* (non-Javadoc)
+	 * @see java.lang.Object#hashCode()
+	 */
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = super.hashCode();
+		result = prime * result + ((annotationName == null) ? 0 : annotationName.hashCode());
+		return result;
+	}
+
+	/* (non-Javadoc)
+	 * @see java.lang.Object#equals(java.lang.Object)
+	 */
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (!super.equals(obj)) {
+			return false;
+		}
+		if (getClass() != obj.getClass()) {
+			return false;
+		}
+		JaxrsBuiltinHttpMethod other = (JaxrsBuiltinHttpMethod) obj;
+		if (annotationName == null) {
+			if (other.annotationName != null) {
+				return false;
+			}
+		} else if (!annotationName.equals(other.annotationName)) {
+			return false;
+		}
+		return true;
+	}
+	
+	
+	
+}


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

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactory.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -213,7 +213,7 @@
 			JaxrsMetamodel metamodel, JaxrsResource parentResource) throws JavaModelException {
 		final List<String> httpMethodAnnotationNames = new ArrayList<String>();
 		for (IJaxrsHttpMethod httpMethod : metamodel.getAllHttpMethods()) {
-			httpMethodAnnotationNames.add(httpMethod.getJavaElement().getFullyQualifiedName());
+			httpMethodAnnotationNames.add(httpMethod.getFullyQualifiedName());
 		}
 		final List<String> annotationNames = new ArrayList<String>();
 		annotationNames.addAll(Arrays.asList(PATH.qualifiedName, PRODUCES.qualifiedName, CONSUMES.qualifiedName));

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -376,7 +376,7 @@
 
 	@Override
 	public IJavaProject getJavaProject() {
-		return this.httpMethod.getJavaElement().getJavaProject();
+		return this.metamodel.getJavaProject();
 	}
 
 }

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -93,9 +93,9 @@
 			return OTHER;
 		}
 	}
-
-	public JaxrsHttpMethod(IType javaType, Annotation httpMehodAnnotation, JaxrsMetamodel metamodel) {
-		super(javaType, httpMehodAnnotation, metamodel);
+	
+	public JaxrsHttpMethod(IType javaType, Annotation httpMethodAnnotation, JaxrsMetamodel metamodel) {
+		super(javaType, httpMethodAnnotation, metamodel);
 	}
 
 	@Override
@@ -133,7 +133,7 @@
 	 * ()
 	 */
 	@Override
-	public final String getHttpVerb() {
+	public String getHttpVerb() {
 		final Annotation httpVerbAnnotation = getHttpMethodAnnotation();
 		if (httpVerbAnnotation != null) {
 			return httpVerbAnnotation.getValue("value");
@@ -155,8 +155,8 @@
 	 * ()
 	 */
 	@Override
-	public final String getSimpleName() {
-		return getJavaElement().getElementName();
+	public String getFullyQualifiedName() {
+		return getJavaElement().getFullyQualifiedName();
 	}
 
 	/*
@@ -166,7 +166,7 @@
 	 */
 	@Override
 	public final String toString() {
-		return "HttpMethod [@" + getSimpleName() + ":" + getHttpMethodAnnotation() + "]";
+		return "HttpMethod [@" + getFullyQualifiedName() + ":" + getHttpMethodAnnotation() + "]";
 	}
 
 	@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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsJavaElement.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -179,7 +179,7 @@
 			flag = F_PRODUCED_MEDIATYPES_VALUE;
 		} else {
 			for (IJaxrsHttpMethod httpMethod : metamodel.getAllHttpMethods()) {
-				if (httpMethod.getJavaElement().getFullyQualifiedName().equals(annotationName)) {
+				if (httpMethod.getFullyQualifiedName().equals(annotationName)) {
 					flag = F_HTTP_METHOD_VALUE;
 					break;
 				}
@@ -224,7 +224,7 @@
 					flag = F_PRODUCED_MEDIATYPES_VALUE;
 				} else {
 					for (IJaxrsHttpMethod httpMethod : metamodel.getAllHttpMethods()) {
-						if (httpMethod.getJavaElement().getFullyQualifiedName().equals(annotationName)) {
+						if (httpMethod.getFullyQualifiedName().equals(annotationName)) {
 							flag = F_HTTP_METHOD_VALUE;
 							break;
 						}

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodel.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -96,8 +96,26 @@
 	 */
 	private JaxrsMetamodel(final IJavaProject javaProject) throws CoreException {
 		this.javaProject = javaProject;
+		preloadHttpMethods();
 	}
 
+	/**
+	 * Preload the HttpMethods collection with 6 items from the specification:
+	 * <ul>
+	 * <li>@GET</li>
+	 * <li>@POST</li>
+	 * <li>@PUT</li>
+	 * <li>@DELETE</li>
+	 * <li>@OPTIONS</li>
+	 * <li>@HEAD</li>
+	 * </ul>
+	 */
+	private void preloadHttpMethods() {
+		httpMethods.addAll(Arrays.asList(JaxrsBuiltinHttpMethod.GET, JaxrsBuiltinHttpMethod.POST,
+				JaxrsBuiltinHttpMethod.PUT, JaxrsBuiltinHttpMethod.DELETE, JaxrsBuiltinHttpMethod.HEAD,
+				JaxrsBuiltinHttpMethod.OPTIONS));
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * @see org.jboss.tools.ws.jaxrs.core.internal.metamodel.IMetamodel#getJavaProject ()
@@ -454,7 +472,7 @@
 	public JaxrsHttpMethod getHttpMethod(Annotation httpMethodAnnotation) {
 		if (httpMethodAnnotation != null) {
 			for (IJaxrsHttpMethod httpMethod : httpMethods) {
-				final String handleIdentifier1 = httpMethod.getJavaElement().getFullyQualifiedName();
+				final String handleIdentifier1 = httpMethod.getFullyQualifiedName();
 				final String handleIdentifier2 = httpMethodAnnotation.getName();
 				if (handleIdentifier1.equals(handleIdentifier2)) {
 					return (JaxrsHttpMethod) httpMethod;

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -413,7 +413,7 @@
 	public Annotation getHttpMethodAnnotation() {
 		for (IJaxrsHttpMethod httpMethod : getMetamodel().getAllHttpMethods()) {
 			final Annotation annotation = getAnnotation(httpMethod
-					.getJavaElement().getFullyQualifiedName());
+					.getFullyQualifiedName());
 			if (annotation != null) {
 				return annotation;
 			}

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/Annotation.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/Annotation.java	2012-07-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/Annotation.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -10,6 +10,7 @@
  ******************************************************************************/
 package org.jboss.tools.ws.jaxrs.core.jdt;
 
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,16 +33,34 @@
 	 * Full constructor
 	 * 
 	 * @param annotation
-	 * @param name
+	 * @param annotationName
 	 * @param annotationElements
+	 * @param sourceRange
 	 */
-	public Annotation(IAnnotation annotation, String name, Map<String, List<String>> annotationElements,
+	public Annotation(final IAnnotation annotation, final String annotationName, final Map<String, List<String>> annotationElements,
 			final ISourceRange sourceRange) {
 		this.javaAnnotation = annotation;
-		this.javaAnnotationName = name;
+		this.javaAnnotationName = annotationName;
 		this.javaAnnotationElements = new HashMap<String, List<String>>(annotationElements);
 		this.sourceRange = sourceRange;
 	}
+	
+	/**
+	 * Full constructor with a single unnamed 'value'
+	 * 
+	 * @param annotation
+	 * @param annotationName
+	 * @param annotationValue
+	 * @param sourceRange
+	 */
+	public Annotation(final IAnnotation annotation, final String annotationName, final String annotationValue,
+			final ISourceRange sourceRange) {
+		this.javaAnnotation = annotation;
+		this.javaAnnotationName = annotationName;
+		this.javaAnnotationElements = new HashMap<String, List<String>>();
+		this.javaAnnotationElements.put("value", Arrays.asList(annotationValue));
+		this.sourceRange = sourceRange;
+	}
 
 	public boolean update(Annotation annotation) {
 		assert annotation != null;

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationsScanner.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -140,8 +140,8 @@
 			throws CoreException {
 		IJavaSearchScope searchScope = null;
 		if (scope instanceof IJavaProject) {
-			IJavaProject javaProject = (IJavaProject) scope;
-			searchScope = SearchEngine.createJavaSearchScope(javaProject.getPackageFragmentRoots());
+			searchScope = SearchEngine.createJavaSearchScope(new IJavaElement[] { scope },
+					IJavaSearchScope.SOURCES | IJavaSearchScope.REFERENCED_PROJECTS);
 		} else {
 			searchScope = SearchEngine.createJavaSearchScope(new IJavaElement[] { scope });
 		}
@@ -195,7 +195,7 @@
 		List<String> annotations = new ArrayList<String>(httpMethods.size() + 1);
 		annotations.add(PATH.qualifiedName);
 		for (IJaxrsHttpMethod httpMethod : httpMethods) {
-			annotations.add(httpMethod.getJavaElement().getFullyQualifiedName());
+			annotations.add(httpMethod.getFullyQualifiedName());
 		}
 		return searchForAnnotatedMethods(annotations, searchScope, progressMonitor);
 	}

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsHttpMethod.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsHttpMethod.java	2012-07-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/metamodel/IJaxrsHttpMethod.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -19,7 +19,7 @@
 	String getHttpVerb();
 
 	/** @return the name */
-	String getSimpleName();
+	String getFullyQualifiedName();
 
 	Annotation getHttpMethodAnnotation();
 

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JaxrsMetamodelChangedProcessorTestCase.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -43,6 +43,7 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
 import org.jboss.tools.ws.jaxrs.core.AbstractCommonTestCase;
+import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsBuiltinHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsEndpoint;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsHttpMethod;
 import org.jboss.tools.ws.jaxrs.core.internal.metamodel.domain.JaxrsJavaApplication;
@@ -115,14 +116,14 @@
 		return resourceMethod;
 	}
 
-	private JaxrsHttpMethod createHttpMethod(EnumJaxrsElements element) throws JavaModelException, CoreException {
-		final IType type = getType(element.qualifiedName, javaProject);
+	private JaxrsHttpMethod createHttpMethod(String qualifiedName) throws JavaModelException, CoreException {
+		final IType type = getType(qualifiedName, javaProject);
 		final Annotation httpAnnotation = getAnnotation(type, HTTP_METHOD.qualifiedName);
 		final JaxrsHttpMethod httpMethod = new JaxrsHttpMethod(type, httpAnnotation, metamodel);
 		metamodel.add(httpMethod);
 		return httpMethod;
 	}
-
+	
 	private JaxrsEndpoint createEndpoint(JaxrsMetamodel metamodel, JaxrsHttpMethod httpMethod, JaxrsResourceMethod... resourceMethods) {
 		JaxrsEndpoint endpoint = new JaxrsEndpoint(metamodel, httpMethod, new LinkedList<JaxrsResourceMethod>(
 				Arrays.asList(resourceMethods)));
@@ -148,7 +149,7 @@
 	@Test
 	public void shouldConstructSimpleEndpoint() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		customerResource.addOrUpdateAnnotation(getAnnotation(customerResource.getJavaElement(), CONSUMES.qualifiedName));
 		customerResource.addOrUpdateAnnotation(getAnnotation(customerResource.getJavaElement(), PRODUCES.qualifiedName));
@@ -169,7 +170,7 @@
 	@Test
 	public void shouldConstructEndpointFromSubresource() throws CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource producLocatorResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productLocatorMethod = createResourceMethod("getProductResourceLocator",
 				producLocatorResource, GET);
@@ -189,7 +190,7 @@
 	@Test
 	public void shouldConstructEndpointWithQueryParams() throws CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomers", customerResource,
 				GET);
@@ -203,7 +204,6 @@
 	@Test
 	public void shoudCreateEndpointWhenAddingResourceMethodInRootResource() throws CoreException {
 		// pre-conditions
-		createHttpMethod(GET);
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomers", customerResource,
 				GET);
@@ -218,7 +218,6 @@
 	@Test
 	public void shoudCreateEndpointWhenAddingSubresourceMethodInRootResource() throws JavaModelException, CoreException {
 		// pre-conditions
-		createHttpMethod(GET);
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerSubresourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -234,7 +233,6 @@
 	public void shoudCreateEndpointWhenAddingSubresourceLocatorMethodInRootResource() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		createHttpMethod(GET);
 		final JaxrsResource bookResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.BookResource");
 		createResourceMethod("getProduct", bookResource, GET);
 		// createEndpoint(httpMethod, bookResourceMethod);
@@ -257,7 +255,6 @@
 	@Test
 	public void shoudCreateEndpointWhenAddingResourceMethodInSubresource() throws JavaModelException, CoreException {
 		// pre-conditions
-		createHttpMethod(GET);
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		createResourceMethod("getProductResourceLocator", productResourceLocator, null);
 		final JaxrsResource bookResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.BookResource");
@@ -274,7 +271,6 @@
 	public void shoudCreateEndpointWhenChangingSubresourceLocatorMethodIntoSubresourceMethod()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		createHttpMethod(GET);
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerSubresourceMethod = createResourceMethod("getCustomer", customerResource,
 				null);
@@ -293,7 +289,6 @@
 	@Test
 	public void shoudCreateEndpointWhenAddingSubresourceMethodInSubresource() throws JavaModelException, CoreException {
 		// pre-conditions
-		createHttpMethod(GET);
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		createResourceMethod("getProductResourceLocator", productResourceLocator, null);
 		final JaxrsResource bookResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.BookResource");
@@ -315,7 +310,7 @@
 	public void shoudChangeUriPathTemplateWhenAddingApplication() throws JavaModelException, CoreException {
 		// the subresource becomes a root resource !
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -336,7 +331,7 @@
 	public void shoudChangeUriPathTemplateWhenAddingResourcePathAnnotation() throws JavaModelException, CoreException {
 		// the subresource becomes a root resource !
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomers", customerResource,
 				GET);
@@ -355,7 +350,7 @@
 	@Test
 	public void shoudChangeUriPathTemplateWhenAddingMethodPathAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -381,7 +376,7 @@
 	public void shoudChangeUriPathTemplateWhenChangingApplicationPathAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
 		final JaxrsJavaApplication application = createApplication("org.jboss.tools.ws.jaxrs.sample.services.RestApplication");
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -404,7 +399,7 @@
 	@Test
 	public void shoudChangeUriPathTemplateWhenChangingResourcePathAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -427,7 +422,7 @@
 	@Test
 	public void shoudChangeUriPathTemplateWhenChangingMethodPathAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -451,7 +446,7 @@
 	public void shoudChangeUriPathTemplateWhenRemovingResourcePathAnnotationAndMatchingSubresourceLocatorFound()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		// the subresource locator that will match the resourcemethod when the
 		// rootresource becomes a subresource
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
@@ -480,7 +475,7 @@
 	@Test
 	public void shoudChangeHttpVerbWhenChangingHttpMethodAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = createHttpMethod("org.jboss.tools.ws.jaxrs.sample.services.FOO");
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -502,7 +497,7 @@
 	public void shoudChangeUriPathTemplateWhenRemovingMetamodelApplication() throws JavaModelException, CoreException {
 		// pre-conditions
 		final JaxrsJavaApplication application = createApplication("org.jboss.tools.ws.jaxrs.sample.services.RestApplication");
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -524,7 +519,7 @@
 	@Test
 	public void shoudChangeUriPathTemplateWhenRemovingMethodPathAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -547,7 +542,7 @@
 	@Test
 	public void shoudChangeConsumedMediatypesWhenAddingResourceAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("createCustomer", customerResource,
 				POST);
@@ -570,7 +565,7 @@
 	public void shoudChangeConsumedMediatypesWhenAddingResourceMethodAnnotation() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("createCustomer", customerResource,
 				POST);
@@ -593,7 +588,7 @@
 	public void shoudChangeConsumedMediatypesWhenChangingResourceMethodAnnotation() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("createCustomer", customerResource,
 				POST);
@@ -618,7 +613,7 @@
 	@Test
 	public void shoudChangeConsumedMediatypesWhenChangingResourceAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final Annotation annotation = getAnnotation(customerResource.getJavaElement(), CONSUMES.qualifiedName,
 				"application/foo");
@@ -644,7 +639,7 @@
 	public void shoudChangeConsumedMediatypesWhenRemovingMethodAnnotationWithResourceDefault()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		customerResource.addOrUpdateAnnotation(getAnnotation(customerResource.getJavaElement(), CONSUMES.qualifiedName,
 				"application/xml"));
@@ -671,7 +666,7 @@
 	public void shoudChangeConsumedMediatypesWhenRemovingMethodAnnotationWithoutResourceDefault()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("createCustomer", customerResource,
 				POST);
@@ -695,7 +690,7 @@
 	@Test
 	public void shoudChangeProducedMediatypesWhenAddingResourceAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomerAsVCard", customerResource,
 				GET);
@@ -718,7 +713,7 @@
 	public void shoudChangeProducedMediatypesWhenAddingResourceMethodAnnotation() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomerAsVCard", customerResource,
 				GET);
@@ -740,7 +735,7 @@
 	@Test
 	public void shoudChangeProducedMediatypesWhenChangingResourceAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final Annotation annotation = getAnnotation(customerResource.getJavaElement(), PRODUCES.qualifiedName,
 				"application/foo");
@@ -766,7 +761,7 @@
 	public void shoudChangeProducedMediatypesWhenChangingResourceMethodAnnotation() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomerAsVCard", customerResource,
 				POST);
@@ -792,7 +787,7 @@
 	public void shoudChangeProducedMediatypesWhenRemovingMethodAnnotationWithResourceDefault()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		customerResource.addOrUpdateAnnotation(getAnnotation(customerResource.getJavaElement(), PRODUCES.qualifiedName,
 				"application/xml"));
@@ -819,7 +814,7 @@
 	public void shoudChangeProducedMediatypesWhenRemovingMethodAnnotationWithoutResourceDefault()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(POST);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.POST;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("createCustomer", customerResource,
 				POST);
@@ -843,7 +838,7 @@
 	@Test
 	public void shoudRemoveEndpointWhenRemovingHttpMethodAnnotation() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = createHttpMethod("org.jboss.tools.ws.jaxrs.sample.services.FOO");
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -863,7 +858,7 @@
 	public void shoudRemoveEndpointWhenRemovingResourcePathAnnotationAndMatchingSubresourceLocatorNotFound()
 			throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -885,7 +880,7 @@
 	@Test
 	public void shoudRemoveEndpointsWhenRemovingRootResource() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod1 = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -907,7 +902,7 @@
 	@Test
 	public void shoudRemoveEndpointsWhenRemovingSubresource() throws JavaModelException, CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productResourceLocatorMethod = createResourceMethod("getProductResourceLocator",
 				productResourceLocator, null);
@@ -930,7 +925,7 @@
 	@Test
 	public void shoudRemoveEndpointsWhenRemovingHttpMethod() throws JavaModelException, CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		createResourceMethod("getProductResourceLocator", productResourceLocator, null);
 		final JaxrsResource bookResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.BookResource");
@@ -954,7 +949,7 @@
 	@Test
 	public void shoudAddEndpointsWhenChangingSubresourceLocatorReturnType() throws JavaModelException, CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productResourceLocatorMethod = createResourceMethod("getProductResourceLocator",
 				productResourceLocator, null);
@@ -984,7 +979,7 @@
 	@Test
 	public void shoudRemoveEndpointsWhenChangingSubresourceLocatorReturnType() throws JavaModelException, CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productResourceLocatorMethod = createResourceMethod("getProductResourceLocator",
 				productResourceLocator, null);
@@ -1014,7 +1009,7 @@
 	@Test
 	public void shoudRemoveEndpointsWhenRemovingSubresourceLocatorResource() throws JavaModelException, CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productResourceLocatorMethod = createResourceMethod("getProductResourceLocator",
 				productResourceLocator, null);
@@ -1038,7 +1033,7 @@
 	@Test
 	public void shoudRemoveEndpointWhenRemovingResourceMethodInRootResource() throws JavaModelException, CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomers", customerResource,
 				GET);
@@ -1057,7 +1052,7 @@
 	public void shoudRemoveEndpointWhenRemovingSubresourceMethodInRootResource() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		final JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		final JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource customerResource = createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
 		final JaxrsResourceMethod customerResourceMethod = createResourceMethod("getCustomer", customerResource,
 				GET);
@@ -1077,7 +1072,7 @@
 	@Test
 	public void shoudRemoveEndpointWhenRemovingSubresourceLocatorMethod() throws JavaModelException, CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productResourceLocatorMethod = createResourceMethod("getProductResourceLocator",
 				productResourceLocator, null);
@@ -1102,7 +1097,7 @@
 	public void shoudRemoveEndpointWhenSubresourceLocatorRootResourceBecomesSubresource() throws JavaModelException,
 			CoreException {
 		// pre-conditions
-		JaxrsHttpMethod httpMethod = createHttpMethod(GET);
+		JaxrsHttpMethod httpMethod = JaxrsBuiltinHttpMethod.GET;
 		final JaxrsResource productResourceLocator = createResource("org.jboss.tools.ws.jaxrs.sample.services.ProductResourceLocator");
 		final JaxrsResourceMethod productResourceLocatorMethod = createResourceMethod("getProductResourceLocator",
 				productResourceLocator, null);

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/ResourceChangedProcessorTestCase.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -171,21 +171,9 @@
 		return affectedMetamodel.getAffectedElements();
 	}
 
-	/**
-	 * Because sometimes, generics are painful...
-	 * 
-	 * @param elements
-	 * @return private List<IJaxrsElement<?>> asList(IJaxrsElement<?>... elements) { final List<IJaxrsElement<?>> result
-	 *         = new ArrayList<IJaxrsElement<?>>(); result.addAll(Arrays.asList(elements)); return result; }
-	 */
-
 	@Test
 	public void shouldAddHttpMethodsAndResourcesWhenAddingSourceFolderWithExistingMetamodel() throws CoreException {
 		// pre-conditions
-		metamodel.add(createHttpMethod(GET));
-		metamodel.add(createHttpMethod(POST));
-		metamodel.add(createHttpMethod(PUT));
-		metamodel.add(createHttpMethod(DELETE));
 		// operation
 		final IPackageFragmentRoot sourceFolder = WorkbenchUtils.getPackageFragmentRoot(javaProject, "src/main/java",
 				progressMonitor);
@@ -196,21 +184,17 @@
 		assertThat(affectedMetamodel.getDeltaKind(), equalTo(CHANGED));
 		assertThat(affectedMetamodel.getMetamodel(), equalTo((IJaxrsMetamodel) metamodel));
 		final List<JaxrsElementDelta> affectedElements = affectedMetamodel.getAffectedElements();
-		// 1 application + 1 HttpMethod + 4 RootResources + 2 Subresources
+		// 1 application + 1 HttpMethod + 7 Resources
 		assertThat(affectedElements.size(), equalTo(9));
 		assertThat(affectedElements, everyItem(Matchers.<JaxrsElementDelta> hasProperty("deltaKind", equalTo(ADDED))));
-		// all HttpMethods, Resources, ResourceMethods and ResourceFields
-		assertThat(metamodel.getElements(javaProject).size(), equalTo(34));
+		// all HttpMethods, Resources, ResourceMethods and ResourceFields. only application is available: the java-based one found in src/main/java
+		assertThat(metamodel.getElements(javaProject).size(), equalTo(30));
 	}
 
 	@Test
 	public void shouldAddHttpMethodsAndResourcesWhenAddingSourceFolderWithExistingMetamodelWithReset()
 			throws CoreException {
 		// pre-conditions
-		metamodel.add(createHttpMethod(GET));
-		metamodel.add(createHttpMethod(POST));
-		metamodel.add(createHttpMethod(PUT));
-		metamodel.add(createHttpMethod(DELETE));
 		// operation
 		final IPackageFragmentRoot sourceFolder = WorkbenchUtils.getPackageFragmentRoot(javaProject, "src/main/java",
 				progressMonitor);
@@ -222,11 +206,12 @@
 		metamodel = (JaxrsMetamodel) affectedMetamodel.getMetamodel();
 		assertThat(metamodel, equalTo((IJaxrsMetamodel) metamodel));
 		final List<JaxrsElementDelta> affectedElements = affectedMetamodel.getAffectedElements();
-		// 1 application + 1 HttpMethod + 4 RootResources + 2 Subresources
-		assertThat(affectedElements.size(), equalTo(15));
+		// 1 application + 1 HttpMethod + 7 Resources  
+		assertThat(affectedElements.size(), equalTo(9));
 		assertThat(affectedElements, everyItem(Matchers.<JaxrsElementDelta> hasProperty("deltaKind", equalTo(ADDED))));
-		// all Applications, HttpMethods (including @OPTIONS and @HEAD), Resources, ResourceMethods and ResourceFields
-		assertThat(metamodel.getElements(javaProject).size(), equalTo(37));
+		// all project-specific Applications, HttpMethods, Resources, ResourceMethods and ResourceFields (built-in HttpMethods are not bound to a project)
+		// 2 applications are available: the java-based and the web.xml since a full build was performed
+		assertThat(metamodel.getElements(javaProject).size(), equalTo(31));
 	}
 
 	/**
@@ -255,25 +240,22 @@
 		metamodel = (JaxrsMetamodel) affectedMetamodel.getMetamodel();
 		assertThat(metamodel, notNullValue());
 		final List<JaxrsElementDelta> affectedElements = affectedMetamodel.getAffectedElements();
-		assertThat(affectedElements.size(), equalTo(15));
-		// all Applications, HttpMethods (including @OPTIONS and @HEAD), project Resources, ResourceMethods and ResourceFields
-		assertThat(metamodel.getElements(javaProject).size(), equalTo(37));
+		assertThat(affectedElements.size(), equalTo(9));
+		// all Applications, HttpMethods, Resources, ResourceMethods and ResourceFields specific to the project
+		assertThat(metamodel.getElements(javaProject).size(), equalTo(31));
 
 	}
 
 	@Test
-	public void shouldAdd6HttpMethodsAnd0ResourceWhenAddingBinaryLib() throws CoreException {
+	public void shouldNotAddAnythingAddingBinaryLib() throws CoreException {
 		// pre-conditions
 		final IPackageFragmentRoot lib = WorkbenchUtils.getPackageFragmentRoot(javaProject,
 				"lib/jaxrs-api-2.0.1.GA.jar", progressMonitor);
 		// operation
 		final ResourceDelta event = createEvent(lib.getResource(), ADDED);
 		final List<JaxrsElementDelta> affectedElements = processResourceChanges(event, progressMonitor);
-		// verifications. Damned : none in the jar...
-		assertThat(affectedElements.size(), equalTo(6));
-		assertThat(affectedElements, everyItem(Matchers.<JaxrsElementDelta> hasProperty("deltaKind", equalTo(ADDED))));
-		verify(metamodel, times(6)).add(any(JaxrsHttpMethod.class));
-		assertThat(metamodel.getElements(javaProject).size(), equalTo(6));
+		// verifications: jar should not be taken into account, even if if it contains matching elements...
+		assertThat(affectedElements.size(), equalTo(0));
 	}
 
 	@Test
@@ -574,7 +556,7 @@
 	}
 
 	@Test
-	public void shouldRemoveHttpMethodWhenRemovingBinaryLib() throws CoreException {
+	public void shouldNotRemoveHttpMethodWhenRemovingBinaryLib() throws CoreException {
 		// pre-conditions
 		final IPackageFragmentRoot lib = WorkbenchUtils.getPackageFragmentRoot(javaProject,
 				"lib/jaxrs-api-2.0.1.GA.jar", progressMonitor);
@@ -587,10 +569,7 @@
 		final ResourceDelta event = createEvent(lib.getResource(), REMOVED);
 		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, everyItem(Matchers.<JaxrsElementDelta> hasProperty("deltaKind", equalTo(REMOVED))));
-		assertThat(metamodel.getElements(javaProject).size(), equalTo(0));
+		assertThat(affectedElements.size(), equalTo(0));
 	}
 
 	@Test

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsElementFactoryTestCase.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -62,9 +62,8 @@
 		// verifications
 		assertNotNull(element);
 		final IJaxrsResource resource = (IJaxrsResource) element;
-		// only @Path annotation is known by the metamodel, so pure resource
-		// methods with @GET, etc. are not created here.
-		assertThat(resource.getAllMethods().size(), equalTo(4));
+		// result contains a mix of resource methods and subresource methods since http methods are built-in the metamodel
+		assertThat(resource.getAllMethods().size(), equalTo(6));
 	}
 
 	@Test

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-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsMetamodelTestCase.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -118,7 +118,7 @@
 	
 	@Test
 	public void shouldAssertHTTPMethods() throws CoreException {
-		// 6 HttpMethods in the jax-rs API (@GET, etc.) + 1 in the project
+		// 6 fixed HttpMethods as part of the jax-rs API (@GET, etc.) + 1 in the project
 		// (@FOO)
 		Assert.assertEquals(1 * 7, metamodel.getAllHttpMethods().size());
 		Set<IJaxrsHttpMethod> jaxrsHttpMethods = new HashSet<IJaxrsHttpMethod>();
@@ -224,6 +224,7 @@
 		Collections.sort(httpMethods);
 		assertThat(httpMethods.get(0).getHttpVerb(), equalTo("GET"));
 		assertThat(httpMethods.get(5).getHttpVerb(), equalTo("OPTIONS"));
+		assertThat(httpMethods.get(6).getHttpVerb(), equalTo("FOO"));
 		
 	}
 	

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationScannerTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationScannerTestCase.java	2012-07-27 08:56:30 UTC (rev 42751)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JaxrsAnnotationScannerTestCase.java	2012-07-27 09:55:48 UTC (rev 42752)
@@ -80,10 +80,10 @@
 	public void shouldRetrieveAllHttpMethodsInProject() throws CoreException {
 		// pre-conditions
 		// operation
-		final List<IType> resourceMethods = JaxrsAnnotationsScanner.findHttpMethodTypes(javaProject,
+		final List<IType> httpMethods = JaxrsAnnotationsScanner.findHttpMethodTypes(javaProject,
 				new NullProgressMonitor());
 		// verifications
-		assertThat(resourceMethods.size(), equalTo(7));
+		assertThat(httpMethods.size(), equalTo(1));
 	}
 
 	@Test



More information about the jbosstools-commits mailing list