package bsh;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.Binding;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.Handler;
import java.io.File;
import java.io.FileInputStream;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
import static junit.framework.TestCase.*;
/**
* Created by miran on 02/03/15.
*/
public class Util {
// utility methods to be made available to the test clients
/**
* Method used to add a Handler to a stub or dispatch object.
*/
public static void addHandler(Handler handler, Object provider) {
BindingProvider bindingProvider = (BindingProvider) provider;
Binding binding = bindingProvider.getBinding();
List<Handler> handlers = binding.getHandlerChain();
handlers.add(handler);
binding.setHandlerChain(handlers);
}
/**
* Method used to clear any handlers from a stub or dispatch object.
*/
public static void clearHandlers(Object provider) {
BindingProvider bindingProvider = (BindingProvider) provider;
Binding binding = bindingProvider.getBinding();
binding.setHandlerChain(new java.util.ArrayList());
}
/**
* Reads Source into a SOAP Message
*/
public static SOAPMessage getSOAPMessage(Source msg) {
try {
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
message.getSOAPPart().setContent(msg);
message.saveChanges();
return message;
} catch (SOAPException e) {
e.printStackTrace();
fail("Can't get SOAPMessage");
return null;
}
}
/**
* Reads Source into a SOAP Message
*/
public static SOAPMessage getSOAPMessage12(Source msg) {
try {
MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage message = factory.createMessage();
message.getSOAPPart().setContent(msg);
message.saveChanges();
return message;
} catch (SOAPException e) {
e.printStackTrace();
fail("Error getting SOAP12 Message");
return null;
}
}
/**
* Creates JAXBContext for the current compiled artifacts
*/
public static JAXBContext createJAXBContext(Class<?> objectFactory) {
try {
return JAXBContext.newInstance(new Class[]{objectFactory});
} catch (JAXBException e) {
e.printStackTrace();
fail("Error creating JAXBContext");
return null;
}
}
public static java.io.File resource(String path) {
URL resource = Util.class.getResource("/" + path);
if (resource != null) {
try {
return new File(resource.toURI());
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
} else {
String pwd = System.getenv("PWD");
File f = new File(pwd + "/client-classes/client/" + path);
if (f.exists()) {
return f;
} else {
throw new RuntimeException("No resource found! resource: " + path + ", path = " + pwd);
}
}
}
public static javax.xml.transform.stream.StreamSource streamSource(File file) throws java.io.FileNotFoundException {
return new StreamSource(new FileInputStream(file));
}
}