dblevins    2005/02/02 19:08:00

  Modified:    modules/openejb-builder/src/java/org/openejb/deployment
                        WSContainerBuilder.java
  Log:

  Revising the WSContainer to better support rpc/encoded strictly against a 
lightweight WSDL->Java mapping.
  Added validation for lightweigth mappings.
  Added ability to download the WSDL via http://foobar.com/someservice?wsdl
  
  Revision  Changes    Path
  1.3       +27 -7     
openejb/modules/openejb-builder/src/java/org/openejb/deployment/WSContainerBuilder.java
  
  Index: WSContainerBuilder.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/java/org/openejb/deployment/WSContainerBuilder.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- WSContainerBuilder.java   26 Jan 2005 15:13:21 -0000      1.2
  +++ WSContainerBuilder.java   3 Feb 2005 00:08:00 -0000       1.3
  @@ -74,16 +74,16 @@
   import org.apache.geronimo.j2ee.deployment.EJBModule;
   import org.apache.geronimo.security.deploy.Security;
   import org.apache.geronimo.xbeans.j2ee.SessionBeanType;
  -import org.openejb.dd.webservices.PortComponent;
  -import org.openejb.dd.webservices.ServiceImplBean;
  -import org.openejb.dd.webservices.WebServiceDescription;
  -import org.openejb.dd.webservices.WebServices;
  -import org.openejb.dd.webservices.WebServicesFactory;
  +import org.apache.geronimo.webservices.*;
  +import org.apache.geronimo.validator.ValidationContext;
  +import org.apache.geronimo.validator.ValidationError;
  +import org.apache.geronimo.validator.ValidationFailure;
   import org.openejb.server.soap.WSContainerGBean;
   import org.openejb.xbeans.ejbjar.OpenejbSessionBeanType;
   
   public class WSContainerBuilder {
   
  +
       private static final Log log = 
LogFactory.getLog(WSContainerBuilder.class);
   
       /*
  @@ -165,6 +165,26 @@
               log.warn("Target namespace declared, but not included in 
document namespace declarations: "+wsdlURL);
           }
   
  +        LightWeightMappingValidator validator = new 
LightWeightMappingValidator(definition);
  +        ValidationContext result = validator.validate();
  +        if (result.hasErrors()){
  +            log.info("Unable to deploy web service");
  +            ValidationError[] errors = result.getErrors();
  +            for (int i = 0; i < errors.length; i++) {
  +                log.error(errors[i]);
  +            }
  +            throw new DeploymentException("Unable to deploy web service.  
See log for details");
  +        }
  +        if (result.hasFailures()){
  +            log.info("The web service could not be deployed as it doesn't 
meed the following requirements for light-weight mapping");
  +            ValidationFailure[] failures = result.getFailures();
  +            for (int i = 0; i < failures.length; i++) {
  +                log.info(failures[i]);
  +            }
  +            throw new DeploymentException("Invalid light-weight mapping.  
See log for details");
  +        }
  +
  +
           String[] strings = portComponent.getWsdlPort().split(":");
           String portName = strings[strings.length - 1];
   
  @@ -226,7 +246,7 @@
               throw new DeploymentException("Cannot determine the encoding of 
the binding: "+port.getBinding().getQName());
           }
   
  -        GBeanData gBean = WSContainerGBean.createGBean(ejbName, 
sessionObjectName, location, wsdlURL, definition.getTargetNamespace(), 
encoding, style);
  +        GBeanData gBean = WSContainerGBean.createGBean(ejbName, 
sessionObjectName, definition, location, wsdlURL, 
definition.getTargetNamespace(), encoding, style);
           return gBean;
       }
   
  
  
  

Reply via email to