blob: b3ea0ef43fa1be892b25ac157eff0325760f07f3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 by SAP AG, Walldorf.
* 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.ws.jaxws.dom.runtime.tests.dom.persistence.serializer;
import static org.eclipse.jst.ws.jaxws.dom.runtime.persistence.WSAnnotationFeatures.PORT_NAME_ATTRIBUTE;
import static org.eclipse.jst.ws.jaxws.dom.runtime.persistence.WSAnnotationFeatures.SERVICE_NAME_ATTRIBUTE;
import static org.eclipse.jst.ws.jaxws.dom.runtime.persistence.WSAnnotationFeatures.TARGET_NAMESPACE_ATTRIBUTE;
import static org.eclipse.jst.ws.jaxws.dom.runtime.persistence.WSAnnotationFeatures.WSDL_LOCATION_ATTRIBUTE;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaModel;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jst.ws.jaxws.dom.runtime.api.IWebService;
import org.eclipse.jst.ws.jaxws.dom.runtime.persistence.IAnnotationSerializer;
import org.eclipse.jst.ws.jaxws.dom.runtime.persistence.JaxWsWorkspaceResource;
import org.eclipse.jst.ws.jaxws.dom.runtime.persistence.WSAnnotationFeatures;
import org.eclipse.jst.ws.jaxws.dom.runtime.persistence.serializer.WsSerializerAdapter;
import org.eclipse.jst.ws.jaxws.utils.annotations.AnnotationFactory;
import org.eclipse.jst.ws.jaxws.utils.annotations.IAnnotation;
import org.eclipse.jst.ws.jaxws.utils.annotations.IAnnotationInspector;
import org.eclipse.jst.ws.jaxws.utils.annotations.IParamValuePair;
/**
* Tests for {@link WsSerializerAdapter} class.
*
* @author Georgi Vachkov
*/
public class WsSerializerAdapterTest extends SerializerAdapterTestFixture
{
public void testCreateIAnnotationIWebServiceNpe() throws JavaModelException
{
try {
new MyWsSerializerAdapter(resource).createIAnnotation((IWebService)null, project.getJavaProject().getJavaModel());
fail("NullPointerException not thrown");
} catch (NullPointerException _) {}
try {
new MyWsSerializerAdapter(resource).createIAnnotation(ws, null);
fail("NullPointerException not thrown");
} catch (NullPointerException _) {}
}
public void testCreateIAnnotationIWebServiceExplicit() throws JavaModelException
{
final IAnnotation<? extends IJavaElement> annotation = new MyWsSerializerAdapter(resource).createIAnnotation(ws, project.getJavaProject().getJavaModel());
assertEquals(5, annotation.getParamValuePairs().size());
checkIWebServiceIAnnotation(annotation);
assertNotNull(annotation.getPropertyValue(WSAnnotationFeatures.ENDPOINT_INTERFACE_ATTRIBUTE));
assertEquals(implBeanType.getFullyQualifiedName(), ((IType)annotation.getAppliedElement()).getFullyQualifiedName());
}
public void testCreateIAnnotationIWebServiceImplicit() throws JavaModelException
{
final IAnnotation<? extends IJavaElement> annotation = new MyWsSerializerAdapter(resource).createIAnnotation(wsImplicit, project.getJavaProject().getJavaModel());
assertEquals(5, annotation.getParamValuePairs().size());
checkIWebServiceIAnnotation(annotation);
assertEquals("ImplicitName", annotation.getPropertyValue(WSAnnotationFeatures.NAME_ATTRIBUTE));
assertEquals(implBeanImplicit.getFullyQualifiedName(), ((IType)annotation.getAppliedElement()).getFullyQualifiedName());
}
public void testCreateIAnnotationIWebServiceDefault() throws JavaModelException
{
resource.disableSaving();
wsImplicit.getServiceEndpoint().setName("ImplicitImplBean");
wsImplicit.setName("ImplicitImplBeanService");
wsImplicit.setPortName("ImplicitImplBeanPort");
wsImplicit.setTargetNamespace("http://test/");
wsImplicit.setWsdlLocation(null);
final IAnnotation<? extends IJavaElement> annotation =new MyWsSerializerAdapter(resource).createIAnnotation(wsImplicit, project.getJavaProject().getJavaModel());
assertEquals(0, annotation.getParamValuePairs().size());
}
public void testSaveAnnotation() throws JavaModelException
{
resource.getSerializerFactory().adapt(ws, IAnnotationSerializer.class);
ws.setName("ChangedService");
IAnnotationInspector inspector = AnnotationFactory.createAnnotationInspector(implBeanType);
IAnnotation<IType> found = inspector.inspectType(WS_ANNOTATION);
assertNotNull(found);
assertEquals("ChangedService", found.getPropertyValue(SERVICE_NAME_ATTRIBUTE));
assertEquals(PORT_NAME, found.getPropertyValue(PORT_NAME_ATTRIBUTE));
assertEquals(TARGET_NAMESPACE, found.getPropertyValue(TARGET_NAMESPACE_ATTRIBUTE));
assertEquals(WSDL_LOCATION, found.getPropertyValue(WSDL_LOCATION_ATTRIBUTE));
}
public static void checkIWebServiceIAnnotation(IAnnotation<? extends IJavaElement> annotation)
{
boolean [] found = {false, false, false, false};
String [] params = {"serviceName", "portName", "targetNamespace", "wsdlLocation" };
for (IParamValuePair paramValuePair : annotation.getParamValuePairs())
{
String param = paramValuePair.getParam();
if (param.equals(WSAnnotationFeatures.SERVICE_NAME_ATTRIBUTE)) {
assertEquals(SERVICE_NAME, paramValuePair.getValue().toString());
found[0] = true;
}
if (param.equals(WSAnnotationFeatures.PORT_NAME_ATTRIBUTE)) {
assertEquals(PORT_NAME, paramValuePair.getValue().toString());
found[1] = true;
}
if (param.equals(WSAnnotationFeatures.TARGET_NAMESPACE_ATTRIBUTE)) {
assertEquals(TARGET_NAMESPACE, paramValuePair.getValue().toString());
found[2] = true;
}
if (param.equals(WSAnnotationFeatures.WSDL_LOCATION_ATTRIBUTE)) {
assertEquals(WSDL_LOCATION, paramValuePair.getValue().toString());
found[3] = true;
}
}
for (int i=0; i < found.length; i++)
{
assertTrue("Annotation param " + params[i] + " not found", found[i]);
}
}
protected class MyWsSerializerAdapter extends WsSerializerAdapter
{
public MyWsSerializerAdapter(JaxWsWorkspaceResource resource) {
super(resource);
}
@Override
public IAnnotation<? extends IJavaElement> createIAnnotation(final IWebService ws, final IJavaModel javaModel) throws JavaModelException
{
return super.createIAnnotation(ws, javaModel);
}
}
}