blob: d7b16f82b50e1b8df79aa6f06e29198c2e3f1787 [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.axis2.jaxws.provider.soapmsgmu;
import org.apache.axis2.jaxws.provider.AttachmentUtil;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.BindingType;
import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
import javax.xml.ws.soap.SOAPBinding;
/**
* This class provides the server side implementation for JAX-WS Provider<MESSAGE>
* for SOAP11 Binding with Mode = MESSAGE.
*
* The receiving message and the sending back message
* must have the headers defined in wsdl.
*/
@WebServiceProvider(
serviceName="SoapMessageMUProviderService",
targetNamespace="http://soapmsgmu.provider.jaxws.axis2.apache.org",
wsdlLocation="META-INF/ProviderSOAPMessage.wsdl",
portName="SimpleProviderServiceSOAP11port0")
@BindingType(SOAPBinding.SOAP11HTTP_BINDING)
@ServiceMode(value = Service.Mode.MESSAGE)
public class SoapMessageMUProvider implements Provider<SOAPMessage> {
/**
* This service receives soap message and return it back to client as is
* or add a soap mustUnderstand attribute header and then return it back to client
*
* @param SOAPMessage object sent by the client
* @return the SOAPMessage
*/
public SOAPMessage invoke(SOAPMessage request) {
System.out.println("----------------------------------------------");
System.out.println("SoapMessageMUProvider:Invoke: Request received");
SOAPMessage response = null;
try {
String string = AttachmentUtil.toString(request);
if (string != null) {
System.out.println("invoke: ---Received message= " + string);
if (string.contains(new StringBuffer(AttachmentUtil.UNDERSTOOD_MU_TEXT))) {
String responseStr =
AttachmentUtil.msgEnvMU_understood.replaceAll(AttachmentUtil.MUHEADER_CLIENT_UNDERSTOOD,
AttachmentUtil.MUHEADER_SERVER_UNDERSTOOD);
response = AttachmentUtil.toSOAPMessage(responseStr);
System.out.println("invoke: ---Response message= "
+ AttachmentUtil.toString(response));
} else if (string.contains(new StringBuffer(AttachmentUtil.MU_TEXT))) {
String responseStr =
AttachmentUtil.msgEnvMU.replaceAll(AttachmentUtil.MUHEADER_CLIENT,
AttachmentUtil.MUHEADER_SERVER);
response = AttachmentUtil.toSOAPMessage(responseStr);
System.out.println("invoke: ---Response message= "
+ AttachmentUtil.toString(response));
} else {
response = request;
response.getMimeHeaders().removeAllHeaders();
}
} else {
String badResult = "***ERROR at Service Endpoint: Received message is NULL.";
throw new NullPointerException(badResult);
}
} catch (Exception e) {
System.out.println("SoapMessageMUProviderService: Failed with exception.");
e.printStackTrace();
}
return response;
}
}