blob: 56ff5196e824057e5fd35bde360df648099ad618 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Shane Clarke.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Shane Clarke - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.jaxws.core.tests;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.xml.ws.WebServiceRef;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.ILocalVariable;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.dom.Annotation;
import org.eclipse.jdt.core.dom.MemberValuePair;
import org.eclipse.jdt.core.dom.NormalAnnotation;
import org.eclipse.jst.ws.annotations.core.AnnotationsCore;
import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
public class AddMemberValuePairToAnnotationTest extends AbstractAnnotationTest {
@Override
protected Annotation getAnnotation() {
return null;
}
@Override
protected String getClassContents() {
StringBuilder classContents = new StringBuilder("package com.example;\n\n");
classContents.append("import javax.jws.WebService;\n");
classContents.append("import javax.jws.WebMethod;\n");
classContents.append("import javax.jws.WebParam;\n");
classContents.append("import javax.xml.ws.WebServiceRef;\n\n");
classContents.append("@WebService()\n");
classContents.append("public class Calculator {\n\n");
classContents.append("\t@WebServiceRef()\n");
classContents.append("\tpublic String myField;\n\n");
classContents.append("\t@WebMethod()\n");
classContents.append("\tpublic int add(@WebParam() int i, int k) {");
classContents.append("\n\t\treturn i + k;\n\t}\n}");
return classContents.toString();
}
@Override
protected String getClassName() {
return "Calculator.java";
}
@Override
protected String getPackageName() {
return "com.example";
}
public void testAddMemberValuePairToAnnotation() {
try {
//@WebService
IType type = source.findPrimaryType();
assertTrue(AnnotationUtils.isAnnotationPresent(source, "WebService"));
Annotation webService = AnnotationUtils.getAnnotation(type, WebService.class);
assertNotNull(webService);
assertTrue(webService instanceof NormalAnnotation);
NormalAnnotation webServiceAnnotation = (NormalAnnotation) webService;
assertTrue(webServiceAnnotation.values().size() == 0);
MemberValuePair nameValuePair = AnnotationsCore.createStringMemberValuePair(ast, "name", "Calculator");
AnnotationUtils.addMemberValuePair(webServiceAnnotation, nameValuePair);
webServiceAnnotation = (NormalAnnotation) AnnotationUtils.getAnnotation(type, WebService.class);
assertTrue(webServiceAnnotation.values().size() == 1);
//@WebServiceRef
IField field = type.getField("myField");
assertTrue(AnnotationUtils.isAnnotationPresent(field, "WebServiceRef"));
Annotation webServiceRef = AnnotationUtils.getAnnotation(field, WebServiceRef.class);
assertNotNull(webServiceRef);
assertTrue(webServiceRef instanceof NormalAnnotation);
NormalAnnotation webServiceRefAnnotation = (NormalAnnotation) webServiceRef;
assertTrue(webServiceRefAnnotation.values().size() == 0);
MemberValuePair mappedNameValuePair = AnnotationsCore.createStringMemberValuePair(ast, "mappedName", "myField");
AnnotationUtils.addMemberValuePair(webServiceRefAnnotation, mappedNameValuePair);
webServiceRefAnnotation = (NormalAnnotation) AnnotationUtils.getAnnotation(field, WebServiceRef.class);
assertTrue(webServiceRefAnnotation.values().size() == 1);
//@WebMethod
IMethod method = type.getMethod("add", new String[] { "I", "I" });
assertTrue(AnnotationUtils.isAnnotationPresent(method, "WebMethod"));
Annotation webMethod = AnnotationUtils.getAnnotation(method, WebMethod.class);
assertNotNull(webMethod);
assertTrue(webMethod instanceof NormalAnnotation);
NormalAnnotation webMethodAnnotation = (NormalAnnotation) webMethod;
assertTrue(webMethodAnnotation.values().size() == 0);
MemberValuePair operationNameValuePair = AnnotationsCore.createStringMemberValuePair(ast, "operationName", "add");
AnnotationUtils.addMemberValuePair(webMethodAnnotation, operationNameValuePair);
webMethodAnnotation = (NormalAnnotation) AnnotationUtils.getAnnotation(method, WebMethod.class);
assertTrue(webMethodAnnotation.values().size() == 1);
//@WebParam
ILocalVariable localVariable = AnnotationUtils.getLocalVariable(method, "i");
assertTrue(AnnotationUtils.isAnnotationPresent(localVariable, "WebParam"));
Annotation webParam = AnnotationUtils.getAnnotation(localVariable, WebParam.class);
assertNotNull(webParam);
assertTrue(webParam instanceof NormalAnnotation);
NormalAnnotation webParamAnnotation = (NormalAnnotation) webParam;
assertTrue(webParamAnnotation.values().size() == 0);
MemberValuePair partNameValuePair = AnnotationsCore.createStringMemberValuePair(ast, "partName", "i");
AnnotationUtils.addMemberValuePair(webParamAnnotation, partNameValuePair);
webParamAnnotation = (NormalAnnotation) AnnotationUtils.getAnnotation(localVariable, WebParam.class);
assertTrue(webParamAnnotation.values().size() == 1);
} catch (CoreException ce) {
fail(ce.getLocalizedMessage());
}
}
}