You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by di...@apache.org on 2003/04/28 03:55:51 UTC

cvs commit: xml-axis/java/src/org/apache/axis/description ServiceDesc.java

dims        2003/04/27 18:55:51

  Modified:    java/src/org/apache/axis/wsdl/fromJava Emitter.java
               java/src/org/apache/axis/description ServiceDesc.java
  Added:       java/test/wsdl/qname build.xml foo.java MyServiceImpl.java
                        MyServiceInterface.java
  Log:
  Fix and Test cases for Bug 19274 - Java2WSDL failure: Attempted to write schema for bad QName
  from bkeane@6thStreet.net (Brian Keane)
  
  Revision  Changes    Path
  1.1                  xml-axis/java/test/wsdl/qname/build.xml
  
  Index: build.xml
  ===================================================================
  <?xml version="1.0" ?>
  <!DOCTYPE project [
          <!ENTITY properties SYSTEM "file:../../../xmls/properties.xml">
          <!ENTITY paths  SYSTEM "file:../../../xmls/path_refs.xml">
          <!ENTITY taskdefs SYSTEM "file:../../../xmls/taskdefs.xml">
          <!ENTITY taskdefs_post_compile SYSTEM "file:../../../xmls/taskdefs_post_compile.xml">
          <!ENTITY targets SYSTEM "file:../../../xmls/targets.xml">
  ]>
  
  <!-- ===================================================================
  <description>
     Test/Sample Component file for Axis
  
  Notes:
     This is a build file for use with the Jakarta Ant build tool.
  
  Prerequisites:
  
     jakarta-ant from http://jakarta.apache.org
  
  Build Instructions:
     To compile
          ant compile
     To execute
          ant run
  
  Author:
    Matt Seibert mseibert@us.ibm.com
  
  Copyright:
    Copyright (c) 2002-2003 Apache Software Foundation.
  </description>
  ==================================================================== -->
  
  <project default="compile">
  
  <property name="axis.home" location="../../.." />
  <property name="componentName" value="test/wsdl/qname" />
          &properties;
          &paths;
          &taskdefs;
          &taskdefs_post_compile;
          &targets;
  
  <target name="clean">
      <echo message="componentName is ${componentName}"/>
      <echo message="Removing ${build.dir}/**/test/wsdl/qname" />
      <delete dir="${build.dir}/classes/test/wsdl/qname"/>
      <delete dir="${build.dir}/work/test/wsdl/qname"/>
  </target>
  
  <!-- main target, always start from scratch -->
  <target name="compile" depends="setenv, clean">
    <echo message="Compiling test.wsdl.qname"/>
    
      <!-- Compile the test classes for Java2WSDL -->
      <javac srcdir="${axis.home}/test/wsdl/qname" 
             destdir="${build.dest}" 
             fork="${javac.fork}"
             debug="${debug}">
        <classpath refid="classpath" />
        <include name="foo.java" />
        <include name="MyServiceImpl.java" />
        <include name="MyServiceInterface.java" />
      </javac>
      
      <mkdir dir="${build.dir}/work/test/wsdl/qname"/>
      
      <!-- Test #1 for Bug 19274 - Java2WSDL failure: Attempted to write schema for bad QName -->
      <!-- Generate WSDL from java -->
      <java2wsdl classname="test.wsdl.qname.MyServiceInterface"
                 implclass="test.wsdl.qname.MyServiceImpl"
                 location="http://whereever/MyService/servicesMyservice"
                 namespace="urn:sample"
                 namespaceimpl="urn:sample-impl"
                 style="WRAPPED"
                 serviceelementname="MyService" 
                 output="${build.dir}/work/test/wsdl/qname/MyService.wsdl">
          <mapping package="test.wsdl.qname" namespace="http://test.com/qname" />
      </java2wsdl>
      
      <!-- Test #2 for Bug 19274 - Java2WSDL failure: Attempted to write schema for bad QName -->
      <!-- Generate WSDL from java -->
      <java2wsdl classname="test.wsdl.qname.foo"
                 location="http://yada.yada/"
                 namespace="urn:sample2"
                 namespaceimpl="urn:sample2-impl"
  		       style="DOCUMENT"
                 use="LITERAL"
  		       serviceelementname="Foo"                
                 output="${build.dir}/work/test/wsdl/qname/MyService2.wsdl">
          <mapping package="test.wsdl.qname" namespace="http://test.com/qname" />
      </java2wsdl>
      
  </target>
  
  <target name="run" >
    <antcall target="execute-Component" />
  </target>
  
  </project>
  
  
  
  1.1                  xml-axis/java/test/wsdl/qname/foo.java
  
  Index: foo.java
  ===================================================================
  package test.wsdl.qname;
  
  public class foo
  {
     public void bar(String foobar)
     {
     }
  }
  
  
  1.1                  xml-axis/java/test/wsdl/qname/MyServiceImpl.java
  
  Index: MyServiceImpl.java
  ===================================================================
  package test.wsdl.qname;
  
  import java.rmi.RemoteException;
  
  public class MyServiceImpl implements MyServiceInterface {
    public MyServiceImpl() {
    }
  
    public String Hello(String pName) throws java.rmi.RemoteException {
      return "Hello, " + pName;
    }
  
    public String HelloAgain(int pName) throws java.rmi.RemoteException {
      return "Hello Again, " + Integer.toString(pName);
    }
  
  }
  
  
  1.1                  xml-axis/java/test/wsdl/qname/MyServiceInterface.java
  
  Index: MyServiceInterface.java
  ===================================================================
  package test.wsdl.qname;
  
  import java.rmi.Remote;
  
  public interface MyServiceInterface extends Remote {
  
    public String Hello(String pName) throws java.rmi.RemoteException;
  
    public String HelloAgain(int pName) throws java.rmi.RemoteException;
  
  }
  
  
  1.90      +8 -1      xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java
  
  Index: Emitter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/fromJava/Emitter.java,v
  retrieving revision 1.89
  retrieving revision 1.90
  diff -u -r1.89 -r1.90
  --- Emitter.java	22 Apr 2003 19:36:10 -0000	1.89
  +++ Emitter.java	28 Apr 2003 01:55:50 -0000	1.90
  @@ -568,8 +568,15 @@
                   }
               }
   
  -            if(cls != null)
  + 			// set the namespaces in the serviceDesc(s)
  + 			serviceDesc.setDefaultNamespace(intfNS);
  + 			if (serviceDesc2 != null) {
  +                serviceDesc2.setDefaultNamespace(implNS);
  +            }
  + 	
  +            if(cls != null) {
                   namespaces.put(cls.getName(), intfNS, "intf");
  +            }
               namespaces.putPrefix(implNS, "impl");
           }
       }
  
  
  
  1.75      +4 -2      xml-axis/java/src/org/apache/axis/description/ServiceDesc.java
  
  Index: ServiceDesc.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/ServiceDesc.java,v
  retrieving revision 1.74
  retrieving revision 1.75
  diff -u -r1.74 -r1.75
  --- ServiceDesc.java	22 Apr 2003 19:34:22 -0000	1.74
  +++ ServiceDesc.java	28 Apr 2003 01:55:51 -0000	1.75
  @@ -1140,13 +1140,15 @@
               for (int k = 0; k < paramTypes.length; k++) {
                   Class type = paramTypes[k];
                   ParameterDesc paramDesc = new ParameterDesc();
  +                String opNamespace = operation.getElementQName().getNamespaceURI();
  +
                   // If we have a name for this param, use it, otherwise call
                   // it "in*"
                   if (paramNames != null && paramNames[k] != null &&
                           paramNames[k].length()>0) {
  -                    paramDesc.setName(paramNames[k]);
  +                    paramDesc.setQName(new QName(opNamespace, paramNames[k]));
                   } else {
  -                    paramDesc.setName("in" + k);
  +                    paramDesc.setQName(new QName(opNamespace, "in" + k));
                   }
   
                   // If it's a Holder, mark it INOUT, and set the XML type QName