blob: 9ec2029ea0d0c6cf79f8015f480edcb52d5dcea5 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.geronimo.jaxws.greeter_provider;
import java.util.Properties;
import javax.activation.DataSource;
import javax.annotation.PostConstruct;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Source;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceRef;
import javax.xml.ws.http.HTTPBinding;
import junit.framework.Assert;
import org.apache.geronimo.jaxws.greeter_provider.common.MessageUtils;
import org.apache.geronimo.jaxws.greeter_provider.ejb.EchoLocal;
import org.apache.geronimo.jaxws.greeter_provider.ejb.EchoRemote;
/**
* For each type provider, the test items include :
* a. Invoke the extra method via local interface
* b. Invoke the extra method via remote interface
* c. Invoke the invoke method of the Provider interface via local interface
*/
public class TestServletEJB extends TestServlet {
public static final String ECHO_WORDS = "Geronimo";
private InitialContext localContext;
private InitialContext remoteContext;
@WebServiceRef(name = "services/ejb/Provider")
private Service myService;
private void assertEchoInvocation(String beanName) throws Exception {
EchoLocal echoLocal = lookupEchoLocal(beanName);
Assert.assertEquals(echoLocal.echo(ECHO_WORDS), ECHO_WORDS);
EchoRemote echoRemote = null;
echoRemote = lookupEchoRemote(beanName);
Assert.assertEquals(echoRemote.echo(ECHO_WORDS), ECHO_WORDS);
}
private EchoLocal lookupEchoLocal(String beanName) throws Exception {
return (EchoLocal) localContext.lookup(beanName + "Local");
}
private EchoRemote lookupEchoRemote(String beanName) throws Exception {
return (EchoRemote) remoteContext.lookup(beanName + "Remote");
}
private Provider<?> lookupProvider(String beanName) throws Exception {
return (Provider<?>) localContext.lookup(beanName + "Local");
}
@PostConstruct
private void myInit() throws Exception {
this.service = myService;
Properties localProps = new Properties();
localProps.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
localContext = new InitialContext(localProps);
Properties remoteProps = new Properties();
remoteProps.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.openejb.client.RemoteInitialContextFactory");
remoteProps.setProperty(Context.PROVIDER_URL, "ejbd://localhost:4201");
remoteContext = new InitialContext(remoteProps);
}
@Override
public void testHTTPDataSource() throws Exception {
super.testHTTPDataSource();
assertEchoInvocation("GreeterHTTPDataSourceProvider");
Provider<DataSource> provider = (Provider<DataSource>) lookupProvider("GreeterHTTPDataSourceProvider");
DataSource ejbResponseDataSource = provider.invoke(MessageUtils.createRequestHTTPDataSource());
AssertUtils.assertResponseHTTPDataSource(ejbResponseDataSource);
}
@Override
public void testHTTPSourceMessageMode() throws Exception {
super.testHTTPSourceMessageMode();
assertEchoInvocation("GreeterHTTPSourceMessageModeProvider");
Provider<Source> provider = (Provider<Source>) lookupProvider("GreeterHTTPSourceMessageModeProvider");
Source source = provider.invoke(MessageUtils.createRequestHTTPSource());
AssertUtils.assertResponseHTTPSource(source);
}
@Override
public void testHTTPSourcePayloadMode() throws Exception {
super.testHTTPSourcePayloadMode();
assertEchoInvocation("GreeterHTTPSourcePayloadModeProvider");
Provider<Source> provider = (Provider<Source>) lookupProvider("GreeterHTTPSourcePayloadModeProvider");
Source source = provider.invoke(MessageUtils.createRequestHTTPSource());
AssertUtils.assertResponseHTTPSource(source);
}
@Override
public void testSOAP11SOAPMessage() throws Exception {
super.testSOAP11SOAPMessage();
assertEchoInvocation("GreeterSOAP11SOAPMessageProvider");
Provider<SOAPMessage> provider = (Provider<SOAPMessage>) lookupProvider("GreeterSOAP11SOAPMessageProvider");
SOAPMessage soapMessage = provider.invoke(MessageUtils
.createRequestSOAPMessage(SOAPConstants.SOAP_1_1_PROTOCOL));
AssertUtils.assertResponseSOAPMessage(soapMessage, SOAPConstants.SOAP_1_1_PROTOCOL);
}
@Override
public void testSOAP11SourceMessageMode() throws Exception {
super.testSOAP11SourceMessageMode();
assertEchoInvocation("GreeterSOAP11SourceMessageModeProvider");
Provider<Source> provider = (Provider<Source>) lookupProvider("GreeterSOAP11SourceMessageModeProvider");
Source source = provider.invoke(MessageUtils.createRequestSOAPSource(SOAPConstants.SOAP_1_1_PROTOCOL,
Service.Mode.MESSAGE));
AssertUtils.assertResponseSOAPSource(source, SOAPConstants.SOAP_1_1_PROTOCOL, Service.Mode.MESSAGE);
}
@Override
public void testSOAP11SourcePayloadMode() throws Exception {
super.testSOAP11SourcePayloadMode();
assertEchoInvocation("GreeterSOAP11SourcePayloadModeProvider");
Provider<Source> provider = (Provider<Source>) lookupProvider("GreeterSOAP11SourcePayloadModeProvider");
Source source = provider.invoke(MessageUtils.createRequestSOAPSource(SOAPConstants.SOAP_1_1_PROTOCOL,
Service.Mode.PAYLOAD));
AssertUtils.assertResponseSOAPSource(source, SOAPConstants.SOAP_1_1_PROTOCOL, Service.Mode.PAYLOAD);
}
@Override
public void testSOAP12SOAPMessage() throws Exception {
super.testSOAP12SOAPMessage();
assertEchoInvocation("GreeterSOAP12SOAPMessageProvider");
Provider<SOAPMessage> provider = (Provider<SOAPMessage>) lookupProvider("GreeterSOAP12SOAPMessageProvider");
SOAPMessage soapMessage = provider.invoke(MessageUtils
.createRequestSOAPMessage(SOAPConstants.SOAP_1_2_PROTOCOL));
AssertUtils.assertResponseSOAPMessage(soapMessage, SOAPConstants.SOAP_1_2_PROTOCOL);
}
@Override
public void testSOAP12SourceMessageMode() throws Exception {
super.testSOAP12SourceMessageMode();
assertEchoInvocation("GreeterSOAP12SourceMessageModeProvider");
Provider<Source> provider = (Provider<Source>) lookupProvider("GreeterSOAP12SourceMessageModeProvider");
Source source = provider.invoke(MessageUtils.createRequestSOAPSource(SOAPConstants.SOAP_1_2_PROTOCOL,
Service.Mode.MESSAGE));
AssertUtils.assertResponseSOAPSource(source, SOAPConstants.SOAP_1_2_PROTOCOL, Service.Mode.MESSAGE);
}
@Override
public void testSOAP12SourcePayloadMode() throws Exception {
super.testSOAP12SourcePayloadMode();
assertEchoInvocation("GreeterSOAP12SourcePayloadModeProvider");
Provider<Source> provider = (Provider<Source>) lookupProvider("GreeterSOAP12SourcePayloadModeProvider");
Source source = provider.invoke(MessageUtils.createRequestSOAPSource(SOAPConstants.SOAP_1_2_PROTOCOL,
Service.Mode.PAYLOAD));
AssertUtils.assertResponseSOAPSource(source, SOAPConstants.SOAP_1_2_PROTOCOL, Service.Mode.PAYLOAD);
}
}