// response.setStatusCode(HttpStatus.SC_MOVED_PERMANENTLY);
// response.addHeader(LOCATION, servicePath + "/");
// serverHandler.commitResponseHideExceptions(conn, response);
} else if (serviceName != null && parameters.containsKey("wsdl")) {
AxisService service = cfgCtx.getAxisConfiguration().
getServices().get(serviceName);
if (service != null) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
String parameterValue = parameters.get("wsdl");
if (parameterValue == null) {
service.printWSDL(baos, getIpAddress());
} else {
// here the parameter value should be the wsdl file name
service.printUserWSDL(baos, parameterValue);
}
response.addHeader(CONTENT_TYPE, TEXT_XML);
serverHandler.commitResponseHideExceptions(conn, response);
os.write(baos.toByteArray());
} catch (Exception e) {
handleBrowserException(
"Error generating ?wsdl output for service : " + serviceName, e);
return;
}
} else {
processGetAndDelete("GET");
return;
}
} else if (serviceName != null && parameters.containsKey("wsdl2")) {
AxisService service = cfgCtx.getAxisConfiguration().
getServices().get(serviceName);
if (service != null) {
String parameterValue = (String) service.getParameterValue("serviceType");
if ("proxy".equals(parameterValue) && !isWSDLProvidedForProxyService(service)) {
handleBrowserException("No WSDL was provided for the Service " + serviceName +
". A WSDL cannot be generated.", null);
return;
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
service.printWSDL2(baos, getIpAddress());
response.addHeader(CONTENT_TYPE, TEXT_XML);
serverHandler.commitResponseHideExceptions(conn, response);
os.write(baos.toByteArray());
} catch (Exception e) {
handleBrowserException(
"Error generating ?wsdl2 output for service : " + serviceName, e);
return;
}
} else {
processGetAndDelete("GET");
return;
}
} else if (serviceName != null && parameters.containsKey("xsd")) {
if (parameters.get("xsd") == null || "".equals(parameters.get("xsd"))) {
AxisService service = cfgCtx.getAxisConfiguration()
.getServices().get(serviceName);
if (service != null) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
service.printSchema(baos);
response.addHeader(CONTENT_TYPE, TEXT_XML);
serverHandler.commitResponseHideExceptions(conn, response);
os.write(baos.toByteArray());
} catch (Exception e) {
handleBrowserException(
"Error generating ?xsd output for service : " + serviceName, e);
return;
}
}
} else {
//cater for named xsds - check for the xsd name
String schemaName = parameters.get("xsd");
AxisService service = cfgCtx.getAxisConfiguration()
.getServices().get(serviceName);
if (service != null) {
//run the population logic just to be sure
service.populateSchemaMappings();
//write out the correct schema
Map schemaTable = service.getSchemaMappingTable();
XmlSchema schema = (XmlSchema)schemaTable.get(schemaName);
if (schema == null) {
int dotIndex = schemaName.indexOf('.');
if (dotIndex > 0) {
String schemaKey = schemaName.substring(0,dotIndex);
schema = (XmlSchema) schemaTable.get(schemaKey);
}
}
//schema found - write it to the stream
if (schema != null) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
schema.write(baos);
response.addHeader(CONTENT_TYPE, TEXT_XML);
serverHandler.commitResponseHideExceptions(conn, response);
os.write(baos.toByteArray());
} catch (Exception e) {
handleBrowserException(
"Error generating named ?xsd output for service : " + serviceName, e);
return;
}
} else {
// no schema available by that name - send 404
response.setStatusCode(HttpStatus.SC_NOT_FOUND);
}
}
}
}
else if (serviceName != null && parameters.containsKey("info")) {
AxisService service = cfgCtx.getAxisConfiguration().
getServices().get(serviceName);
if (service != null) {
String parameterValue = (String) service.getParameterValue("serviceType");
if ("proxy".equals(parameterValue) && !isWSDLProvidedForProxyService(service)) {
handleBrowserException("No WSDL was provided for the Service " + serviceName +
". A WSDL cannot be generated.", null);
return;
}