Author: xcoulon
Date: 2012-06-04 11:38:47 -0400 (Mon, 04 Jun 2012)
New Revision: 41686
Modified:
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JavaMethodSignaturesVisitor.java
branches/jbosstools-3.3.x/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java
Log:
Fixed - JBIDE-11886
NPE when adding PathParam annotation through Annotation Properties view
Modified:
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java
===================================================================
---
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java 2012-06-04
15:37:24 UTC (rev 41685)
+++
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsEndpoint.java 2012-06-04
15:38:47 UTC (rev 41686)
@@ -233,7 +233,7 @@
private void refreshUriPathTemplate() {
// compute the URI Path Template from the chain of Methods/Resources
StringBuilder uriPathTemplateBuilder = new StringBuilder();
- if (application != null) {
+ if (application != null && application.getApplicationPath() != null) {
uriPathTemplateBuilder.append(application.getApplicationPath());
}
for (JaxrsResourceMethod resourceMethod : resourceMethods) {
@@ -266,8 +266,10 @@
for (Iterator<JavaMethodParameter> iterator = matrixParameters.iterator();
iterator.hasNext();) {
JavaMethodParameter matrixParam = iterator.next();
final Annotation matrixParamAnnotation =
matrixParam.getAnnotation(MatrixParam.class.getName());
- uriPathTemplateBuilder.append(";").append(matrixParamAnnotation.getValue("value")).append("={")
- .append(matrixParam.getTypeName()).append("}");
+ if(matrixParamAnnotation.getValue("value") != null) {
+ uriPathTemplateBuilder.append(";").append(matrixParamAnnotation.getValue("value")).append("={")
+ .append(matrixParam.getTypeName()).append("}");
+ }
}
}
@@ -286,18 +288,20 @@
JavaMethodParameter queryParam = iterator.next();
final Annotation queryParamAnnotation =
queryParam.getAnnotation(QueryParam.class.getName());
final String paramName = queryParamAnnotation.getValue("value");
- final String paramType = queryParam.getTypeName();
- uriPathTemplateBuilder.append(paramName).append("={");
- uriPathTemplateBuilder.append(paramName).append(":").append(paramType);
- final Annotation defaultValueAnnotation =
queryParam.getAnnotation(DefaultValue.class.getName());
- if (defaultValueAnnotation != null) {
- uriPathTemplateBuilder.append('=').append(defaultValueAnnotation.getValue("value"));
+ if(paramName != null) {
+ final String paramType = queryParam.getTypeName();
+ uriPathTemplateBuilder.append(paramName).append("={");
+ uriPathTemplateBuilder.append(paramName).append(":").append(paramType);
+ final Annotation defaultValueAnnotation =
queryParam.getAnnotation(DefaultValue.class.getName());
+ if (defaultValueAnnotation != null) {
+ uriPathTemplateBuilder.append('=').append(defaultValueAnnotation.getValue("value"));
+ }
+ uriPathTemplateBuilder.append('}');
+
+ if (iterator.hasNext()) {
+ uriPathTemplateBuilder.append('&');
+ }
}
- uriPathTemplateBuilder.append('}');
-
- if (iterator.hasNext()) {
- uriPathTemplateBuilder.append('&');
- }
}
}
}
Modified:
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java
===================================================================
---
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java 2012-06-04
15:37:24 UTC (rev 41685)
+++
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsHttpMethod.java 2012-06-04
15:38:47 UTC (rev 41686)
@@ -172,6 +172,9 @@
@Override
public final int compareTo(final IJaxrsHttpMethod other) {
+ if(this.getHttpVerb() == null) {
+ return 1;
+ }
if (this.getHttpVerb().equals(other.getHttpVerb())) {
return 0;
}
Modified:
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java
===================================================================
---
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java 2012-06-04
15:37:24 UTC (rev 41685)
+++
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/domain/JaxrsResourceMethod.java 2012-06-04
15:38:47 UTC (rev 41686)
@@ -276,7 +276,7 @@
for (JavaMethodParameter parameter : this.javaMethodParameters) {
final Annotation annotation = parameter
.getAnnotation(PathParam.class.getName());
- if (annotation != null
+ if (annotation != null && annotation.getValue("value") != null
&& annotation.getValue("value").equals(proposal)) {
matching = true;
break;
@@ -309,14 +309,16 @@
.getAnnotation(PathParam.class.getName());
if (annotation != null) {
final String value = annotation.getValue("value");
- if (!pathParamValueProposals.contains(value)) {
- final String msg = NLS
- .bind(ValidationMessages.INVALID_PATHPARAM_VALUE,
- pathParamValueProposals);
- final TypedRegion region = annotation.getRegion();
- ValidatorMessage validationMsg = createValidationMessage(msg,
IMarker.SEVERITY_ERROR, region.getOffset(), region.getLength());
- hasErrors(true);
- messages.add(validationMsg);
+ if(value != null) {
+ if (!pathParamValueProposals.contains(value)) {
+ final String msg = NLS
+ .bind(ValidationMessages.INVALID_PATHPARAM_VALUE,
+ pathParamValueProposals);
+ final TypedRegion region = annotation.getRegion();
+ ValidatorMessage validationMsg = createValidationMessage(msg,
IMarker.SEVERITY_ERROR, region.getOffset(), region.getLength());
+ hasErrors(true);
+ messages.add(validationMsg);
+ }
}
}
}
@@ -484,7 +486,7 @@
public List<String> getPathParamValueProposals() {
final List<String> proposals = new ArrayList<String>();
final Annotation methodPathAnnotation = getPathAnnotation();
- if (methodPathAnnotation != null) {
+ if (methodPathAnnotation != null &&
methodPathAnnotation.getValue("value") != null) {
final String value = methodPathAnnotation.getValue("value");
proposals.addAll(extractParamsFromUriTemplateFragment(value));
}
Modified:
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JavaMethodSignaturesVisitor.java
===================================================================
---
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JavaMethodSignaturesVisitor.java 2012-06-04
15:37:24 UTC (rev 41685)
+++
branches/jbosstools-3.3.x/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/jdt/JavaMethodSignaturesVisitor.java 2012-06-04
15:38:47 UTC (rev 41686)
@@ -138,12 +138,14 @@
final Map<String, List<String>> annotationElements = new HashMap<String,
List<String>>();
for (IMemberValuePairBinding binding : annotationBinding.getAllMemberValuePairs()) {
final List<String> values = new ArrayList<String>();
- if (binding.getValue() instanceof Object[]) {
- for (Object v : (Object[]) binding.getValue()) {
- values.add(v.toString());
+ if(binding.getValue() != null) {
+ if (binding.getValue() instanceof Object[]) {
+ for (Object v : (Object[]) binding.getValue()) {
+ values.add(v.toString());
+ }
+ } else {
+ values.add(binding.getValue().toString());
}
- } else {
- values.add(binding.getValue().toString());
}
annotationElements.put(binding.getName(), values);
}
Modified:
branches/jbosstools-3.3.x/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java
===================================================================
---
branches/jbosstools-3.3.x/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java 2012-06-04
15:37:24 UTC (rev 41685)
+++
branches/jbosstools-3.3.x/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/jdt/JdtUtilsTestCase.java 2012-06-04
15:38:47 UTC (rev 41686)
@@ -30,6 +30,7 @@
import javax.ws.rs.GET;
import javax.ws.rs.HttpMethod;
import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
@@ -454,6 +455,22 @@
}
@Test
+ public void shouldResolveJavaMethodSignaturesWithNullAnnotationValue() throws
CoreException {
+ // pre-condition
+ final IType type =
getType("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
+ IMethod method = WorkbenchUtils.getMethod(type, "getCustomer");
+ method = WorkbenchUtils.replaceFirstOccurrenceOfCode(method,
"@PathParam(\"id\") Integer id", "@PathParam() Integer id",
+ false);
+ // operation
+ final JavaMethodSignature methodSignature = JdtUtils.resolveMethodSignature(method,
+ JdtUtils.parse(type, progressMonitor));
+ // verification
+ Assert.assertNotNull(methodSignature);
+ Assert.assertEquals(2, methodSignature.getMethodParameters().size());
+ Assert.assertNull(methodSignature.getMethodParameters().get(0).getAnnotation(PathParam.class.getName()).getValue("value"));
+ }
+
+ @Test
public void shouldResolveJavaMethodSignaturesForParameterizedType() throws CoreException
{
final IType type =
getType("org.jboss.tools.ws.jaxrs.sample.services.ParameterizedResource");
// operation
Show replies by date