[404460] Annotation validator in jaxws.core should not be flagging
errors on the generated async methods in the SEI generated by
wsimport/wsdl2java 
[405206] @FeatureConstructor couldn't be shown in Annotation Properties
view 
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF
index 0017d36..e0f0b75 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.annotations.core/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.annotations.core;singleton:=true
-Bundle-Version: 1.2.0.qualifier
+Bundle-Version: 1.2.1.qualifier
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Vendor: %pluginProvider
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java
index db2d3cc..00f491b 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java
+++ b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/AnnotationsManager.java
@@ -384,7 +384,12 @@
         }
 
         if (javaElement instanceof IMethod) {
-            return getAnnotationsForElementType(javaElement, ElementType.METHOD);
+        	IMethod method = (IMethod) javaElement;
+        	if (method.isConstructor()) {
+                return getAnnotationsForElementType(javaElement, ElementType.CONSTRUCTOR);
+        	} else {
+                return getAnnotationsForElementType(javaElement, ElementType.METHOD);
+        	}
         }
 
         if (javaElement instanceof ILocalVariable) {
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
index 2eb7279..2464956 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jst.ws.jaxws.core;singleton:=true
 Bundle-Vendor: %pluginProvider
-Bundle-Version: 1.0.201.qualifier
+Bundle-Version: 1.0.202.qualifier
 Bundle-ClassPath: .
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/UniqueNamesRule.java b/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/UniqueNamesRule.java
index aab3e67..300073e 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/UniqueNamesRule.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/UniqueNamesRule.java
@@ -28,6 +28,7 @@
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -47,6 +48,7 @@
 import javax.xml.ws.WebFault;
 
 import org.apache.xerces.util.XMLChar;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jst.ws.annotations.core.processor.AbstractAnnotationProcessor;
 import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
 import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCoreMessages;
@@ -58,6 +60,7 @@
 import com.sun.mirror.declaration.AnnotationValue;
 import com.sun.mirror.declaration.ClassDeclaration;
 import com.sun.mirror.declaration.Declaration;
+import com.sun.mirror.declaration.InterfaceDeclaration;
 import com.sun.mirror.declaration.MethodDeclaration;
 import com.sun.mirror.declaration.ParameterDeclaration;
 import com.sun.mirror.declaration.TypeDeclaration;
@@ -125,11 +128,24 @@
         }
     }
 
+    private boolean isAsyncMethod(MethodDeclaration methodDeclaration) {
+    	if (methodDeclaration.getReturnType() instanceof InterfaceDeclaration) {
+    		InterfaceDeclaration id = (InterfaceDeclaration) methodDeclaration.getReturnType();
+    		String qn = Signature.getTypeErasure(id.getQualifiedName());
+    		if (qn.equals("javax.xml.ws.Response") || qn.equals("java.util.concurrent.Future")) { //$NON-NLS-1$ //$NON-NLS-2$
+    			return true;
+    		}
+    	}
+    	return false;
+    }
+    
     private void checkOperationNames(Collection<? extends MethodDeclaration> methods) {
         Map<Declaration, QName> nameMap = new HashMap<Declaration, QName>();
         for (MethodDeclaration methodDeclaration : methods) {
-            nameMap.put(methodDeclaration, new QName(getTargetNamespace(methodDeclaration.getDeclaringType()),
-                    getOperationName(methodDeclaration)));
+        	if (!isAsyncMethod(methodDeclaration)) {
+                nameMap.put(methodDeclaration, new QName(getTargetNamespace(methodDeclaration.getDeclaringType()),
+                        getOperationName(methodDeclaration)));
+        	}
         }
 
         Declaration[] keys = nameMap.keySet().toArray(new Declaration[nameMap.size()]);
@@ -168,6 +184,14 @@
         methods.addAll(environment.getDeclarationsAnnotatedWith(requestWrapperDeclaration));
         methods.addAll(environment.getDeclarationsAnnotatedWith(resposeWrapperDeclaration));
 
+        Iterator<Declaration> methodsIter = methods.iterator();
+        while(methodsIter.hasNext()) {
+        	Declaration dec = methodsIter.next();
+        	if (dec instanceof MethodDeclaration && isAsyncMethod((MethodDeclaration) dec)) {        
+        		methodsIter.remove();
+        	}
+        }
+
         List<AnnotationValue> classNames = new ArrayList<AnnotationValue>();
         Map<Object, QName> qNames = new HashMap<Object, QName>();
 
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/WebServiceParametersReturnTypesRule.java b/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/WebServiceParametersReturnTypesRule.java
index 72bea3b..7bccfba 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/WebServiceParametersReturnTypesRule.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/validation/WebServiceParametersReturnTypesRule.java
@@ -25,6 +25,7 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.ITypeHierarchy;
 import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
 import org.eclipse.jst.ws.annotations.core.processor.AbstractAnnotationProcessor;
 import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
 import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCoreMessages;
@@ -217,7 +218,16 @@
 
     private boolean isSuitableInterface(InterfaceDeclaration interfaceDeclaration) {
         return isJavaType(interfaceDeclaration.getQualifiedName()) && JAVA_TYPES.contains(interfaceDeclaration.getQualifiedName())
-        || isXMLType(interfaceDeclaration);
+        || isXMLType(interfaceDeclaration) || isAsyncType(interfaceDeclaration);
+    }
+    
+    private boolean isAsyncType(InterfaceDeclaration interfaceDeclaration) {
+    	String qn = Signature.getTypeErasure(interfaceDeclaration.getQualifiedName());
+		if (qn.equals("javax.xml.ws.Response") || qn.equals("java.util.concurrent.Future") //$NON-NLS-1$ //$NON-NLS-2$
+			|| qn.equals("javax.xml.ws.AsyncHandler")) { //$NON-NLS-1$
+			return true;
+		}
+        return false;
     }
 
     private boolean isXMLType(InterfaceDeclaration interfaceDeclaration) {
diff --git a/features/org.eclipse.jst.ws.jaxws.feature.patch/buildnotes_org.eclipse.jst.ws.jaxws.feature.patch.html b/features/org.eclipse.jst.ws.jaxws.feature.patch/buildnotes_org.eclipse.jst.ws.jaxws.feature.patch.html
index 9c4c1c7..2db7925 100644
--- a/features/org.eclipse.jst.ws.jaxws.feature.patch/buildnotes_org.eclipse.jst.ws.jaxws.feature.patch.html
+++ b/features/org.eclipse.jst.ws.jaxws.feature.patch/buildnotes_org.eclipse.jst.ws.jaxws.feature.patch.html
@@ -18,5 +18,7 @@
 	<li>org.eclipse.jst.ws.annotations.core</li>

 </ul>

 

+<p>Bug <a href='https://bugs.eclipse.org/404460'>404460</a>. Annotation validator in jaxws.core should not be flagging errors on the generated async methods in the SEI generated by wsimport/wsdl2java  </p>

+<p>Bug <a href='https://bugs.eclipse.org/405206'>405206</a>. @FeatureConstructor couldn't be shown in Annotation Properties view</p>

 

 </body></html>
\ No newline at end of file
diff --git a/features/org.eclipse.jst.ws.jaxws.feature.patch/feature.xml b/features/org.eclipse.jst.ws.jaxws.feature.patch/feature.xml
index 589d64d..68a7350 100644
--- a/features/org.eclipse.jst.ws.jaxws.feature.patch/feature.xml
+++ b/features/org.eclipse.jst.ws.jaxws.feature.patch/feature.xml
@@ -27,5 +27,12 @@
          install-size="0"

          version="0.0.0"

          unpack="false"/>

+         

+   <plugin

+         id="org.eclipse.jst.ws.annotations.core"

+         download-size="0"

+         install-size="0"

+         version="0.0.0"

+         unpack="false"/>

 

 </feature>