blob: 250696e8fe636efceccd506d33a789df96007893 [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.jaxrs;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.AxisBindingOperation;
import org.apache.axis2.description.AxisEndpoint;
import org.apache.axis2.description.AxisBinding;
import org.apache.axis2.description.WSDL2Constants;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.xml.namespace.QName;
import java.util.Iterator;
//root level annotations. some of these can be overriden by method level annotations.
@Path("testroot/")
@Consumes(value={"text/xml","application/xml"})
@Produces("text/xml")
public class Service {
/*
* These are some operations for testing with plain archive deployment. here we try to test
* proper functionality of http:location & http:method. since these values can be overriden in the Services xml
* there are some test methods to test that behaviour too.
*/
// uses the root path, root input-output serialization & default httpMethod
@Path("add/{data1}")
public String addDataFromURL(String data1){
return data1+" created";
}
@POST
@Path("getFromBody/{data1}")
@Consumes("application/xml")
@Produces("text/xml")
public String addDataFromURLandBody(String data1,String data2){
return data1+" and "+data2+" created";
}
@PUT
@Produces("application/xml")
@Path("update/{data1}")
public String updateDataFromURL(String data1){
return data1+" updated";
}
@PUT
@Path("getFromBody/{data1}")
public String updateDataFromURLandBody(String data1,String data2){
return data1+" and "+data2+" updated";
}
@GET
@Path("get/{data1}")
public String getDataFromURL(String data1){
return data1+" read";
}
@GET
@Path("getFromBody/{data1}")
public String getDataFromURLandBody(String data1,String data2){
return data1+" and "+data2+" read";
}
@DELETE
@Path("delete/{data1}")
public String deleteDataFromURL(String data1){
return data1+" deleted";
}
@DELETE
@Path("getFromBody/{data1}")
public String deleteDataFromURLandBody(String data1,String data2){
return data1+" and "+data2+" deleted";
}
@POST
@Path("wrong/error/{data1}")
public String checkServicesXMLoverriding(String data1,String data2){
return data1+" and "+data2+" correct";
}
public boolean checkTypePublishing(){
MessageContext msgctx= MessageContext.getCurrentMessageContext();
AxisService axisServce= msgctx.getAxisService();
AxisEndpoint axisEndpoint= axisServce.getEndpoint("AnnotationServiceHttpEndpoint");
AxisBinding axisBinding=axisEndpoint.getBinding();
AxisBindingOperation axisBindingOperation;
Iterator<AxisBindingOperation> iterator=axisBinding.getChildren();
while(iterator.hasNext()){
axisBindingOperation=iterator.next();
if(axisBindingOperation.getName().equals(new QName("addDataFromURLandBody"))){
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION).equals("testroot/getFromBody/{data1}")){
System.out.println("wrong http location : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION)+" expected : testroot/getFromBody/{data1}" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_METHOD).equals("POST")){
System.out.println("wrong http method : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_METHOD)+" expected : POST" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION).equals("application/xml")){
System.out.println("INPUT SERIALIZATION TESTS");
System.out.println("wrong input serialization : found : "+ axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION) +" expected : application/xml" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_OUTPUT_SERIALIZATION).equals("text/xml")){
System.out.println("OUTPUT SERIALIZATION TEST");
System.out.println("wrong output serialization : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_OUTPUT_SERIALIZATION)+" expected : text/xml" );
return false;
}
System.out.println("Type publishing test \"addDataFromURLandBody\" OK.........");
}
if(axisBindingOperation.getName().equals(new QName("updateDataFromURL"))){
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION).equals("testroot/update/{data1}")){
System.out.println("wrong http location : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION)+" expected : testroot/update/{data1}" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_METHOD).equals("PUT")){
System.out.println("wrong http method : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_METHOD)+" expected : PUT" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION).equals("text/xml")){
System.out.println("wrong input serialization : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION)+" expected : text/xml" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_OUTPUT_SERIALIZATION).equals("application/xml")) {
System.out.println("wrong output serialization : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_OUTPUT_SERIALIZATION)+" expected : application/xml" );
return false;
}
System.out.println("Type publishing test \"updateDataFromURL\" OK.........");
}
if(axisBindingOperation.getName().equals(new QName("checkServicesXMLoverriding"))){
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION).equals("serviceroot/check")){
System.out.println("wrong http location : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION)+" expected : serviceroot/check" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_METHOD).equals("POST")){
System.out.println("wrong http method : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_METHOD)+" expected : POST" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION).equals("application/xml")){
System.out.println("wrong input serialization : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_INPUT_SERIALIZATION)+" expected : application/xml" );
return false;
}
if(!axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_OUTPUT_SERIALIZATION).equals("application/xml")) {
System.out.println("wrong output serialization : found : "+axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_OUTPUT_SERIALIZATION)+" expected : application/xml" );
return false;
}
System.out.println("Type publishing test \"checkServicesXMLoverriding\" OK.........");
}
}
return true; // all the test are ok
}
}