You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by sv...@apache.org on 2005/06/08 02:07:55 UTC
cvs commit: ws-juddi/src/java/org/apache/juddi/registry AbstractService.java AdminService.java PublishService.java InquiryService.java RegistryServlet.java
sviens 2005/06/07 17:07:55
Modified: src/java/org/apache/juddi/registry RegistryServlet.java
Added: src/java/org/apache/juddi/registry AbstractService.java
AdminService.java PublishService.java
InquiryService.java
Log:
Distributed UDDI operations from the single RegistryServlet into the Inquiry, Publish and Admin Servlets.
Revision Changes Path
1.27 +2 -353 ws-juddi/src/java/org/apache/juddi/registry/RegistryServlet.java
Index: RegistryServlet.java
===================================================================
RCS file: /home/cvs/ws-juddi/src/java/org/apache/juddi/registry/RegistryServlet.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- RegistryServlet.java 25 May 2005 17:04:48 -0000 1.26
+++ RegistryServlet.java 8 Jun 2005 00:07:55 -0000 1.27
@@ -18,40 +18,13 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
-import java.util.Vector;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.soap.Detail;
-import javax.xml.soap.MessageFactory;
-import javax.xml.soap.SOAPBody;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPFault;
-import javax.xml.soap.SOAPMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.juddi.IRegistry;
-import org.apache.juddi.datatype.RegistryObject;
-import org.apache.juddi.datatype.response.DispositionReport;
-import org.apache.juddi.datatype.response.ErrInfo;
-import org.apache.juddi.datatype.response.Result;
-import org.apache.juddi.error.BusyException;
-import org.apache.juddi.error.FatalErrorException;
-import org.apache.juddi.error.RegistryException;
-import org.apache.juddi.error.UnsupportedException;
-import org.apache.juddi.handler.HandlerMaker;
-import org.apache.juddi.handler.IHandler;
-import org.apache.juddi.util.Config;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
/**
* This servlet is ONLY used to initialize the jUDDI webapp on
@@ -69,12 +42,6 @@
// private reference to the webapp's logger.
private static Log log = LogFactory.getLog(RegistryServlet.class);
-
- // jUDDI XML Handler maker
- private static HandlerMaker maker = HandlerMaker.getInstance();
-
- // XML Document Builder
- private static DocumentBuilder docBuilder = null;
// registry singleton instance
private static RegistryEngine registry = null;
@@ -126,10 +93,10 @@
RegistryEngine.DEFAULT_OPERATOR_NAME);
props.put(RegistryEngine.PROPNAME_I18N_LANGUAGE_CODE,
- RegistryEngine.DEFAULT_I18N_LANGUAGE_CODE);
+ RegistryEngine.DEFAULT_I18N_LANGUAGE_CODE);
props.put(RegistryEngine.PROPNAME_I18N_COUNTRY_CODE,
- RegistryEngine.DEFAULT_I18N_COUNTRY_CODE);
+ RegistryEngine.DEFAULT_I18N_COUNTRY_CODE);
props.put(RegistryEngine.PROPNAME_DISCOVERY_URL,
RegistryEngine.DEFAULT_DISCOVERY_URL);
@@ -189,292 +156,6 @@
registry = new RegistryEngine(props);
registry.init();
}
-
- /**
- *
- */
- public void doGet(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException
- {
- res.setHeader("Allow","POST");
- res.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED,"Use of the " +
- "HTTP request method 'GET' is not allowed by UDDI specification.");
- }
-
- /**
- *
- */
- public void doPost(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException
- {
- res.setContentType("text/xml; charset=utf-8");
-
- SOAPMessage soapReq = null;
- SOAPMessage soapRes = null;
-
- try
- {
- // Create a MessageFactory, parse the XML found
- // in the HTTP payload into a SOAP request message
- // and create a new SOAP response message.
-
- MessageFactory msgFactory = MessageFactory.newInstance();
- soapReq = msgFactory.createMessage(null,req.getInputStream());
- soapRes = msgFactory.createMessage();
-
- // Extract the UDDI request from the SOAPBody
- // of the SOAP Request message. If a UDDI request
- // message does not exist within the SOAP Body
- // then throw a FatalErrorException and indicate
- // that this is a Client-side (consumer) error.
-
- SOAPBody soapReqBody = soapReq.getSOAPBody();
- Element uddiReq = (Element)soapReqBody.getFirstChild();
- if (uddiReq == null)
- throw new FatalErrorException("A UDDI request was not " +
- "found in the SOAP message.");
-
- // Grab the local name of the UDDI request element
- // from the UDDI Request. If a value isn't returned
- // (either null or an empty String is returned) then
- // throw a FatalError exception. This is probably a
- // configuration problem related to the XML Parser
- // that jUDDI is using.
-
- String function = uddiReq.getLocalName();
- if ((function == null) || (function.trim().length() == 0))
- throw new FatalErrorException("The UDDI request type " +
- "could not be identified.");
-
- // Lookup the appropriate XML handler. Throw an
- // UnsupportedException if one could not be located.
-
- IHandler requestHandler = maker.lookup(function);
- if (requestHandler == null)
- throw new UnsupportedException("The UDDI request " +
- "type specified is unknown or unsupported: " +function);
-
- // Grab the generic attribute value. If one isn't
- // specified or the value specified is not "2.0" then
- // throw an exception (this value must be specified
- // for all UDDI requests and currently only vesion 2.0
- // UDDI requests are supported).
-
- String generic = uddiReq.getAttribute("generic");
- if (generic == null)
- throw new FatalErrorException("A UDDI generic attribute " +
- "value was not found for UDDI request: "+function+" (The " +
- "'generic' attribute must be present)");
- else if (!generic.equals(IRegistry.UDDI_V2_GENERIC))
- throw new UnsupportedException("Currently only UDDI v2 " +
- "requests are supported. The generic attribute value " +
- "received was: "+generic);
-
- // Unmarshal the raw xml into the appropriate jUDDI
- // request object.
-
- RegistryObject uddiReqObj = requestHandler.unmarshal(uddiReq);
-
- // Grab a reference to the shared jUDDI registry
- // instance (make sure it's running) and execute the
- // requested UDDI function.
-
- RegistryObject uddiResObj = null;
- RegistryEngine registry = RegistryServlet.getRegistry();
- if ((registry != null) && (registry.isAvailable()))
- uddiResObj = registry.execute(uddiReqObj);
- else
- throw new BusyException("The Registry is currently unavailable.");
-
- // Lookup the appropriate response handler which will
- // be used to marshal the UDDI object into the appropriate
- // xml format.
-
- IHandler responseHandler = maker.lookup(uddiResObj.getClass().getName());
- if (responseHandler == null)
- throw new FatalErrorException("The response object " +
- "type is unknown: " +uddiResObj.getClass().getName());
-
- // Create a new 'temp' XML element to use as a container
- // in which to marshal the UDDI response data into.
-
- DocumentBuilder docBuilder = getDocumentBuilder();
- Document document = docBuilder.newDocument();
- Element element = document.createElement("temp");
-
- // Lookup the appropriate response handler and marshal
- // the juddi object into the appropriate xml format (we
- // only support UDDI v2.0 at this time). Attach the
- // results to the body of the SOAP response.
-
- responseHandler.marshal(uddiResObj,element);
-
- // Grab a reference to the 'temp' element's
- // only child here (this has the effect of
- // discarding the temp element) and append
- // this child to the soap response body
-
- document.appendChild(element.getFirstChild());
- soapRes.getSOAPBody().addDocument(document);
- }
- catch(Exception ex) // Catch ALL exceptions
- {
- // SOAP Fault values
- String faultCode = null;
- String faultString = null;
- String faultActor = null;
-
- // UDDI DispositionReport values
- String errno = null;
- String errCode = null;
- String errText = null;
-
- // All RegistryException and subclasses of RegistryException
- // should contain values for populating a SOAP Fault as well
- // as a UDDI DispositionReport with specific information
- // about the problem.
- //
- // We've got to dig out the dispositionReport and populate
- // the SOAP Fault 'detail' element with this information.
-
- if (ex instanceof RegistryException)
- {
- // Since we've intercepted a RegistryException type
- // then we can assume this is a "controlled" event
- // and simply log the error message without a stack
- // trace.
-
- log.error(ex.getMessage());
-
- RegistryException rex = (RegistryException)ex;
-
- faultCode = rex.getFaultCode(); // SOAP Fault faultCode
- faultString = rex.getFaultString(); // SOAP Fault faultString
- faultActor = rex.getFaultActor(); // SOAP Fault faultActor
-
- DispositionReport dispRpt = rex.getDispositionReport();
- if (dispRpt != null)
- {
- Result result = null;
- ErrInfo errInfo = null;
-
- Vector results = dispRpt.getResultVector();
- if ((results != null) && (!results.isEmpty()))
- result = (Result)results.elementAt(0);
-
- if (result != null)
- {
- errno = String.valueOf(result.getErrno()); // UDDI Result errno
- errInfo = result.getErrInfo();
-
- if (errInfo != null)
- {
- errCode = errInfo.getErrCode(); // UDDI ErrInfo errCode
- errText = errInfo.getErrMsg(); // UDDI ErrInfo errMsg
- }
- }
- }
- }
- else if (ex instanceof SOAPException)
- {
- log.error(ex.getMessage());
-
- // Because something occured that jUDDI wasn't expecting
- // let's set default SOAP Fault values. Since SOAPExceptions
- // here are most likely XML validation errors let's blame the
- // client by placing "Client" in the Fault Code and pass
- // the Exception message back to the client.
-
- faultCode = "Client";
- faultString = ex.getMessage();
- faultActor = null;
-
- // Let's set default values for the UDDI DispositionReport
- // here. While we didn't catch a RegistryException (or
- // subclass) we're going to be friendly and include a
- // FatalError DispositionReport within the message from the
- // SAX parsing problem in the SOAP Fault anyway.
-
- errno = String.valueOf(Result.E_FATAL_ERROR);
- errCode = Result.lookupErrCode(Result.E_FATAL_ERROR);
- errText = Result.lookupErrText(Result.E_FATAL_ERROR) +
- " " + ex.getMessage();
- }
- else // anything else
- {
- // All other exceptions (other than SOAPException or
- // RegistryException and subclasses) are either a result
- // of a jUDDI configuration problem or something that
- // we *should* be catching and converting to a
- // RegistryException but are not (yet!).
-
- log.error(ex.getMessage(),ex);
-
- // Because something occured that jUDDI wasn't expecting
- // let's set default SOAP Fault values. Since jUDDI
- // should be catching anything significant let's blame
- // jUDDI by placing "Server" in the Fault Code and pass
- // the Exception message on to the client.
-
- faultCode = "Server";
- faultString = ex.getMessage();
- faultActor = null;
-
- // Let's set default values for the UDDI DispositionReport
- // here. While we didn't catch a RegistryException (or
- // subclass) but we're going to be friendly and include a
- // FatalError DispositionReport within the SOAP Fault anyway.
-
- errno = String.valueOf(Result.E_FATAL_ERROR);
- errCode = Result.lookupErrCode(Result.E_FATAL_ERROR);
- errText = Result.lookupErrText(Result.E_FATAL_ERROR) +
- " An internal UDDI server error has " +
- "occurred. Please report this error " +
- "to the UDDI server administrator.";
- }
-
- // We should have everything we need to assemble
- // the SOAPFault so lets piece it together and
- // send it on it's way.
-
- try {
- SOAPBody soapResBody = soapRes.getSOAPBody();
- SOAPFault soapFault = soapResBody.addFault();
- soapFault.setFaultCode(faultCode);
- soapFault.setFaultString(faultString);
- soapFault.setFaultActor(faultActor);
-
- // We're always going to include a DispositionReport (for
- // the hell of it) so that's what we're doing here.
-
- Detail faultDetail = soapFault.addDetail();
-
- SOAPElement dispRpt = faultDetail.addChildElement("dispositionReport","",IRegistry.UDDI_V2_NAMESPACE);
- dispRpt.setAttribute("generic",IRegistry.UDDI_V2_GENERIC);
- dispRpt.setAttribute("operator",Config.getOperator());
-
- SOAPElement result = dispRpt.addChildElement("result");
- result.setAttribute("errno",errno);
-
- SOAPElement errInfo = result.addChildElement("errInfo");
- errInfo.setAttribute("errCode",errCode);
- errInfo.setValue(errText);
- }
- catch (Exception e) { // if we end up in here it's just NOT good.
- log.error("A serious error has occured while assembling the SOAP Fault.",e);
- }
- }
- finally
- {
- try {
- soapRes.setProperty(SOAPMessage.WRITE_XML_DECLARATION,"true");
- soapRes.writeTo(res.getOutputStream());
- }
- catch(SOAPException sex) {
- log.error(sex);
- }
- }
- }
/**
* Grab the shared instance of jUDDI's Registry class and
@@ -500,36 +181,4 @@
{
return registry;
}
-
- /**
- *
- */
- private DocumentBuilder getDocumentBuilder()
- {
- if (docBuilder == null)
- docBuilder = createDocumentBuilder();
- return docBuilder;
- }
-
- /**
- *
- */
- private synchronized DocumentBuilder createDocumentBuilder()
- {
- if (docBuilder != null)
- return docBuilder;
-
- try {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- //factory.setNamespaceAware(true);
- //factory.setValidating(true);
-
- docBuilder = factory.newDocumentBuilder();
- }
- catch(ParserConfigurationException pcex) {
- pcex.printStackTrace();
- }
-
- return docBuilder;
- }
}
\ No newline at end of file
1.1 ws-juddi/src/java/org/apache/juddi/registry/AbstractService.java
Index: AbstractService.java
===================================================================
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.juddi.registry;
import java.io.IOException;
import java.util.Vector;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Detail;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFault;
import javax.xml.soap.SOAPMessage;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.IRegistry;
import org.apache.juddi.datatype.RegistryObject;
import org.apache.juddi.datatype.response.DispositionReport;
import org.apache.juddi.datatype.response.ErrInfo;
import org.apache.juddi.datatype.response.Result;
import org.apache.juddi.error.BusyException;
import org.apache.juddi.error.FatalErrorException;
import org.apache.juddi.error.RegistryException;
import org.apache.juddi.error.UnsupportedException;
import org.apache.juddi.handler.HandlerMaker;
import org.apache.juddi.handler.IHandler;
import org.apache.juddi.util.Config;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
* @author Steve Viens (sviens@apache.org)
*/
public abstract class AbstractService extends HttpServlet
{
// private reference to the webapp's logger.
private static Log log = LogFactory.getLog(AbstractService.class);
// XML Document Builder
private static DocumentBuilder docBuilder = null;
/**
*
*/
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setHeader("Allow","POST");
res.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED,"Use of the " +
"HTTP request method 'GET' is not allowed by UDDI specification.");
}
/**
*
*/
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
res.setContentType("text/xml; charset=utf-8");
SOAPMessage soapReq = null;
SOAPMessage soapRes = null;
try
{
// Create a MessageFactory, parse the XML found
// in the HTTP payload into a SOAP request message
// and create a new SOAP response message.
MessageFactory msgFactory = MessageFactory.newInstance();
soapReq = msgFactory.createMessage(null,req.getInputStream());
soapRes = msgFactory.createMessage();
// Extract the UDDI request from the SOAPBody
// of the SOAP Request message. If a UDDI request
// message does not exist within the SOAP Body
// then throw a FatalErrorException and indicate
// that this is a Client-side (consumer) error.
SOAPBody soapReqBody = soapReq.getSOAPBody();
Element uddiReq = (Element)soapReqBody.getFirstChild();
if (uddiReq == null)
throw new FatalErrorException("A UDDI request was not " +
"found in the SOAP message.");
// Grab the local name of the UDDI request element
// from the UDDI Request. If a value isn't returned
// (either null or an empty String is returned) then
// throw a FatalError exception. This is probably a
// configuration problem related to the XML Parser
// that jUDDI is using.
String operation = uddiReq.getLocalName();
if ((operation == null) || (operation.trim().length() == 0))
throw new FatalErrorException("The UDDI service operation " +
"could not be identified.");
// Grab the generic attribute value (version value). If
// one isn't specified or the value specified is not "2.0"
// then throw an exception (this value must be specified
// for all UDDI requests and currently only vesion 2.0
// UDDI requests are supported).
String version = uddiReq.getAttribute("generic");
if (version == null)
throw new FatalErrorException("A UDDI generic attribute " +
"value was not found for UDDI request: "+operation+" (The " +
"'generic' attribute must be present)");
// Verify that the appropriate endpoint was targeted for
// this service request. The validateRequest method will
// throw an UnsupportedException if anything's amiss.
validateRequest(operation,version,uddiReq);
// Lookup the appropriate XML handler. Throw an
// UnsupportedException if one could not be located.
HandlerMaker maker = HandlerMaker.getInstance();
IHandler requestHandler = maker.lookup(operation);
if (requestHandler == null)
throw new UnsupportedException("The UDDI service operation " +
"specified is unknown or unsupported: " +operation);
// Unmarshal the raw xml into the appropriate jUDDI
// request object.
RegistryObject uddiReqObj = requestHandler.unmarshal(uddiReq);
// Grab a reference to the shared jUDDI registry
// instance (make sure it's running) and execute the
// requested UDDI function.
RegistryObject uddiResObj = null;
RegistryEngine registry = RegistryServlet.getRegistry();
if ((registry != null) && (registry.isAvailable()))
uddiResObj = registry.execute(uddiReqObj);
else
throw new BusyException("The Registry is currently unavailable.");
// Lookup the appropriate response handler which will
// be used to marshal the UDDI object into the appropriate
// xml format.
IHandler responseHandler = maker.lookup(uddiResObj.getClass().getName());
if (responseHandler == null)
throw new FatalErrorException("The response object " +
"type is unknown: " +uddiResObj.getClass().getName());
// Create a new 'temp' XML element to use as a container
// in which to marshal the UDDI response data into.
DocumentBuilder docBuilder = getDocumentBuilder();
Document document = docBuilder.newDocument();
Element element = document.createElement("temp");
// Lookup the appropriate response handler and marshal
// the juddi object into the appropriate xml format (we
// only support UDDI v2.0 at this time). Attach the
// results to the body of the SOAP response.
responseHandler.marshal(uddiResObj,element);
// Grab a reference to the 'temp' element's
// only child here (this has the effect of
// discarding the temp element) and append
// this child to the soap response body
document.appendChild(element.getFirstChild());
soapRes.getSOAPBody().addDocument(document);
}
catch(Exception ex) // Catch ALL exceptions
{
// SOAP Fault values
String faultCode = null;
String faultString = null;
String faultActor = null;
// UDDI DispositionReport values
String errno = null;
String errCode = null;
String errText = null;
// All RegistryException and subclasses of RegistryException
// should contain values for populating a SOAP Fault as well
// as a UDDI DispositionReport with specific information
// about the problem.
//
// We've got to dig out the dispositionReport and populate
// the SOAP Fault 'detail' element with this information.
if (ex instanceof RegistryException)
{
// Since we've intercepted a RegistryException type
// then we can assume this is a "controlled" event
// and simply log the error message without a stack
// trace.
log.error(ex.getMessage());
RegistryException rex = (RegistryException)ex;
faultCode = rex.getFaultCode(); // SOAP Fault faultCode
faultString = rex.getFaultString(); // SOAP Fault faultString
faultActor = rex.getFaultActor(); // SOAP Fault faultActor
DispositionReport dispRpt = rex.getDispositionReport();
if (dispRpt != null)
{
Result result = null;
ErrInfo errInfo = null;
Vector results = dispRpt.getResultVector();
if ((results != null) && (!results.isEmpty()))
result = (Result)results.elementAt(0);
if (result != null)
{
errno = String.valueOf(result.getErrno()); // UDDI Result errno
errInfo = result.getErrInfo();
if (errInfo != null)
{
errCode = errInfo.getErrCode(); // UDDI ErrInfo errCode
errText = errInfo.getErrMsg(); // UDDI ErrInfo errMsg
}
}
}
}
else if (ex instanceof SOAPException)
{
log.error(ex.getMessage());
// Because something occured that jUDDI wasn't expecting
// let's set default SOAP Fault values. Since SOAPExceptions
// here are most likely XML validation errors let's blame the
// client by placing "Client" in the Fault Code and pass
// the Exception message back to the client.
faultCode = "Client";
faultString = ex.getMessage();
faultActor = null;
// Let's set default values for the UDDI DispositionReport
// here. While we didn't catch a RegistryException (or
// subclass) we're going to be friendly and include a
// FatalError DispositionReport within the message from the
// SAX parsing problem in the SOAP Fault anyway.
errno = String.valueOf(Result.E_FATAL_ERROR);
errCode = Result.lookupErrCode(Result.E_FATAL_ERROR);
errText = Result.lookupErrText(Result.E_FATAL_ERROR) +
" " + ex.getMessage();
}
else // anything else
{
// All other exceptions (other than SOAPException or
// RegistryException and subclasses) are either a result
// of a jUDDI configuration problem or something that
// we *should* be catching and converting to a
// RegistryException but are not (yet!).
log.error(ex.getMessage(),ex);
// Because something occured that jUDDI wasn't expecting
// let's set default SOAP Fault values. Since jUDDI
// should be catching anything significant let's blame
// jUDDI by placing "Server" in the Fault Code and pass
// the Exception message on to the client.
faultCode = "Server";
faultString = ex.getMessage();
faultActor = null;
// Let's set default values for the UDDI DispositionReport
// here. While we didn't catch a RegistryException (or
// subclass) but we're going to be friendly and include a
// FatalError DispositionReport within the SOAP Fault anyway.
errno = String.valueOf(Result.E_FATAL_ERROR);
errCode = Result.lookupErrCode(Result.E_FATAL_ERROR);
errText = Result.lookupErrText(Result.E_FATAL_ERROR) +
" An internal UDDI server error has " +
"occurred. Please report this error " +
"to the UDDI server administrator.";
}
// We should have everything we need to assemble
// the SOAPFault so lets piece it together and
// send it on it's way.
try {
SOAPBody soapResBody = soapRes.getSOAPBody();
SOAPFault soapFault = soapResBody.addFault();
soapFault.setFaultCode(faultCode);
soapFault.setFaultString(faultString);
soapFault.setFaultActor(faultActor);
// We're always going to include a DispositionReport (for
// the hell of it) so that's what we're doing here.
Detail faultDetail = soapFault.addDetail();
SOAPElement dispRpt = faultDetail.addChildElement("dispositionReport","",IRegistry.UDDI_V2_NAMESPACE);
dispRpt.setAttribute("generic",IRegistry.UDDI_V2_GENERIC);
dispRpt.setAttribute("operator",Config.getOperator());
SOAPElement result = dispRpt.addChildElement("result");
result.setAttribute("errno",errno);
SOAPElement errInfo = result.addChildElement("errInfo");
errInfo.setAttribute("errCode",errCode);
errInfo.setValue(errText);
}
catch (Exception e) { // if we end up in here it's just NOT good.
log.error("A serious error has occured while assembling the SOAP Fault.",e);
}
}
finally
{
try {
soapRes.setProperty(SOAPMessage.WRITE_XML_DECLARATION,"true");
soapRes.writeTo(res.getOutputStream());
}
catch(SOAPException sex) {
log.error(sex);
}
}
}
/**
*
*/
public abstract void validateRequest(String operation,String generic,Element uddiReq)
throws RegistryException;
/**
*
*/
private DocumentBuilder getDocumentBuilder()
{
if (docBuilder == null)
docBuilder = createDocumentBuilder();
return docBuilder;
}
/**
*
*/
private synchronized DocumentBuilder createDocumentBuilder()
{
if (docBuilder != null)
return docBuilder;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//factory.setNamespaceAware(true);
//factory.setValidating(true);
docBuilder = factory.newDocumentBuilder();
}
catch(ParserConfigurationException pcex) {
pcex.printStackTrace();
}
return docBuilder;
}
}
1.1 ws-juddi/src/java/org/apache/juddi/registry/AdminService.java
Index: AdminService.java
===================================================================
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.juddi.registry;
import java.util.TreeSet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.IRegistry;
import org.apache.juddi.error.FatalErrorException;
import org.apache.juddi.error.RegistryException;
import org.apache.juddi.error.UnsupportedException;
import org.w3c.dom.Element;
/**
* @author Steve Viens (sviens@apache.org)
*/
public class AdminService extends AbstractService
{
// private reference to the webapp's logger.
private static Log log = LogFactory.getLog(AdminService.class);
// collection of valid operations
private TreeSet operations = null;
public void init(ServletConfig config)
throws ServletException
{
super.init(config);
operations = new TreeSet();
operations.add("get_registryinfo");
operations.add("find_publisher");
operations.add("get_publisherdetail");
operations.add("save_publisher");
operations.add("delete_publisher");
}
public void validateRequest(String operation,String version,Element uddiReq)
throws RegistryException
{
// Grab the generic attribute value. If one isn't
// specified or the value specified is not "1.0" then
// throw an exception (this value must be specified
// for all UDDI requests and the endpoint called only
// supports UDDI version 1.0 requests).
if (version == null)
throw new FatalErrorException("A jUDDI generic attribute " +
"value was not found for UDDI request: "+operation+" (The " +
"'generic' attribute must be present)");
else if (!version.equals(IRegistry.JUDDI_V1_GENERIC))
throw new UnsupportedException("Only jUDDI v1 requests " +
"are currently supported. The generic attribute value " +
"received was: "+version);
if ((operation == null) || (operation.trim().length() == 0))
throw new FatalErrorException("The jUDDI service operation " +
"could not be identified.");
else if (!operations.contains(operation.toLowerCase()))
throw new UnsupportedException("The operation "+operation+" is not " +
"supported by the jUDDI Admin API.");
}
}
1.1 ws-juddi/src/java/org/apache/juddi/registry/PublishService.java
Index: PublishService.java
===================================================================
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.juddi.registry;
import java.util.TreeSet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.IRegistry;
import org.apache.juddi.error.FatalErrorException;
import org.apache.juddi.error.RegistryException;
import org.apache.juddi.error.UnsupportedException;
import org.apache.juddi.registry.AbstractService;
import org.w3c.dom.Element;
/**
* @author Steve Viens (sviens@apache.org)
*/
public class PublishService extends AbstractService
{
// private reference to the webapp's logger.
private static Log log = LogFactory.getLog(PublishService.class);
// collection of valid operations
private TreeSet operations = null;
public void init(ServletConfig config)
throws ServletException
{
super.init(config);
operations = new TreeSet();
operations.add("get_authtoken");
operations.add("get_registeredinfo");
operations.add("discard_authtoken");
operations.add("save_business");
operations.add("save_service");
operations.add("save_binding");
operations.add("save_tmodel");
operations.add("delete_business");
operations.add("delete_service");
operations.add("delete_binding");
operations.add("delete_tmodel");
operations.add("add_publisherassertions");
operations.add("set_publisherassertions");
operations.add("get_publisherassertions");
operations.add("delete_publisherassertions");
operations.add("get_assertionstatusreport");
}
public void validateRequest(String operation,String version,Element uddiReq)
throws RegistryException
{
// If the value
// specified is not "2.0" then throw an exception (this
// value must be specified for all UDDI requests and
// only version 2.0 UDDI requests are supported by
// this endpoint).
if (version == null)
throw new FatalErrorException("A UDDI generic attribute " +
"value was not found for UDDI request: "+operation+" (The " +
"'generic' attribute must be present)");
else if (!version.equals(IRegistry.UDDI_V2_GENERIC))
throw new UnsupportedException("Only UDDI v2 " +
"requests are currently supported. The generic attribute value " +
"received was: "+version);
if ((operation == null) || (operation.trim().length() == 0))
throw new FatalErrorException("The UDDI service operation " +
"could not be identified.");
else if (!operations.contains(operation.toLowerCase()))
throw new UnsupportedException("The operation "+operation+" is not " +
"supported by the UDDI version 2 Publish API.");
}
}
1.1 ws-juddi/src/java/org/apache/juddi/registry/InquiryService.java
Index: InquiryService.java
===================================================================
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed 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.juddi.registry;
import java.util.TreeSet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.IRegistry;
import org.apache.juddi.error.FatalErrorException;
import org.apache.juddi.error.RegistryException;
import org.apache.juddi.error.UnsupportedException;
import org.w3c.dom.Element;
/**
* @author Steve Viens (sviens@apache.org)
*/
public class InquiryService extends AbstractService
{
// private reference to the webapp's logger.
private static Log log = LogFactory.getLog(InquiryService.class);
// collection of valid operations
private TreeSet operations = null;
public void init(ServletConfig config)
throws ServletException
{
super.init(config);
operations = new TreeSet();
operations.add("find_business");
operations.add("find_service");
operations.add("find_binding");
operations.add("find_tmodel");
operations.add("find_relatedbusinesses");
operations.add("get_businessdetail");
operations.add("get_businessdetailext");
operations.add("get_servicedetail");
operations.add("get_bindingdetail");
operations.add("get_tmodeldetail");
}
public void validateRequest(String operation,String version,Element uddiReq)
throws RegistryException
{
// If the value
// specified is not "2.0" then throw an exception (this
// value must be specified for all UDDI requests and
// only version 2.0 UDDI requests are supported by
// this endpoint).
if (version == null)
throw new FatalErrorException("A UDDI generic attribute " +
"value was not found for UDDI request: "+operation+" (The " +
"'generic' attribute must be present)");
else if (!version.equals(IRegistry.UDDI_V2_GENERIC))
throw new UnsupportedException("Only UDDI v2 " +
"requests are currently supported. The generic attribute value " +
"received was: "+version);
if ((operation == null) || (operation.trim().length() == 0))
throw new FatalErrorException("The UDDI service operation " +
"could not be identified.");
else if (!operations.contains(operation.toLowerCase()))
throw new UnsupportedException("The operation "+operation+" is not " +
"supported by the UDDI version 2 Inquiry API.");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org