DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15675>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15675 Ant Task WDSL2java - property namespacemappingfile broken Summary: Ant Task WDSL2java - property namespacemappingfile broken Product: Axis Version: current (nightly) Platform: PC OS/Version: Windows XP Status: NEW Severity: Normal Priority: Other Component: WSDL processing AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] ******************************************* *** Example ******************************************* <target name="wsdl2java"> <wsdl2java url="sample2.wsdl" output="outputdir" <!-- mapping file is not loaded, but file exists and is readable; no warning or error message displayed --> namespacemappingfile="c:\sample2\namespace2package.properties" /> </target> ******************************************* *** Patch ******************************************* Here are three patches which solve the problem 1) org/apache/axis/tools/ant/wsdl/Wsdl2javaAntTask.java 2) org/apache/axis/i18n/resource.properties 3) org/apache/axis/wsdl/toJava/Emitter.java Index: Wsdl2javaAntTask.java =================================================================== RCS file: /home/cvspublic/xml- axis/java/tools/org/apache/axis/tools/ant/wsdl/Wsdl2javaAntTask.java,v retrieving revision 1.8 diff -r1.8 Wsdl2javaAntTask.java 199,201c199 < if(namespaceMappingFile==null) { < namespaceMappingFile = getProject().resolveFile ("NStoPkg.properties"); < } --- > 237c235,237 < emitter.setNStoPkg(namespaceMappingFile); --- > if (namespaceMappingFile != null) { > emitter.setNStoPkg(namespaceMappingFile.toString()); > } 434a435,436 > > Index: resource.properties =================================================================== RCS file: /home/cvspublic/xml- axis/java/src/org/apache/axis/i18n/resource.properties,v retrieving revision 1.38 diff -u -r1.38 resource.properties --- resource.properties 20 Dec 2002 17:28:22 -0000 1.38 +++ resource.properties 27 Dec 2002 00:05:18 -0000 @@ -1083,3 +1083,7 @@ wsdlFileMissing=Unable to find WSDL file or resource {0} nullEngine=Null engine passed to SOAPService.setEngine()! servletEngineWebInfError03=Unable to find config file. Creating new servlet engine config file: {0} +nsToPkgFileNotFound00=WARNING: Unable to open namespace-to-package mapping file "{0}". Using default mappings. +nsToPkgFileLoaded00=INFO: Loaded namespace-to-package mapping file "{0}". +nsToPkgDefaultFileLoaded00=INFO: Loaded default namespace-to-package mapping file "{0}" as java resource. +nsToPkgDefaultFileNotFound00=WARNING: Unable to open default namespace-to- package mapping file "{0}". Using default mappings. Index: Emitter.java =================================================================== RCS file: /home/cvspublic/xml- axis/java/src/org/apache/axis/wsdl/toJava/Emitter.java,v retrieving revision 1.54 diff -u -r1.54 Emitter.java --- Emitter.java 11 Dec 2002 22:38:30 -0000 1.54 +++ Emitter.java 27 Dec 2002 00:06:29 -0000 @@ -34,7 +34,8 @@ * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * WARRANTIES, INCLUD + * ING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, @@ -58,6 +59,7 @@ import org.apache.axis.encoding.DefaultTypeMappingImpl; import org.apache.axis.encoding.TypeMapping; import org.apache.axis.enum.Scope; +import org.apache.axis.i18n.Messages; import org.apache.axis.utils.ClassUtils; import org.apache.axis.utils.JavaUtils; import org.apache.axis.wsdl.gen.GeneratorFactory; @@ -88,12 +90,16 @@ * @author Steve Graham ([EMAIL PROTECTED]) */ public class Emitter extends Parser { + + public static final String DEFAULT_NSTOPKG_FILE = "NStoPkg.properties"; + + protected HashMap namespaceMap = new HashMap(); protected String typeMappingVersion = "1.1"; protected BaseTypeMapping baseTypeMapping = null; protected Namespaces namespaces = null; - protected String NStoPkgFilename = "NStoPkg.properties"; - protected File NStoPkgFile = null; + protected String NStoPkgFilename = null; + //protected File NStoPkgFile = null; private boolean bEmitServer = false; private boolean bDeploySkeleton = false; @@ -249,12 +255,7 @@ } } // setNStoPkg - /** - * Set the NStoPkg mappings file. - */ - public void setNStoPkg(File NStoPkgFile) { - this.NStoPkgFile = NStoPkgFile; - } // setNStoPkg + /** * Set a map of namespace -> Java package names @@ -422,36 +423,72 @@ } } // setup + /** - * Look for a NStoPkg.properties file in the CLASSPATH. If it exists, - * then collect the namespace->package mappings from it. + * Tries to load the namespace-to-package mapping file. + * <ol> + * <li>if a file name is explicitly set using <code>setNStoPkg() </code>, tries + * to load the mapping from this file. If this fails, the built- in default + * mapping is used. + * + * <li>if no file name is set, tries to load the file <code>DEFAULT_NSTOPKG_FILE</code> + * as a java resource. If this fails, the built-in dfault mapping is used. + * </ol> + * + * @param namespaces a hashmap which is filled with the namespace-to- package mapping + * in this method + * + * @see #setNStoPkg(String) + * @see #DEFAULT_NSTOPKG_FILE + * @see org.apache.axis.utils.ClassUtils#getResourceAsStream (java.lang.Class,String) + * */ private void getNStoPkgFromPropsFile(HashMap namespaces) { - try { - Properties mappings = new Properties(); - if (NStoPkgFile != null) { - try { - mappings.load(new FileInputStream(NStoPkgFilename)); - } catch (Throwable t) { - mappings.load(ClassUtils.getResourceAsStream( - Emitter.class, NStoPkgFilename)); - } - } - else { + + Properties mappings = new Properties(); + if (NStoPkgFilename != null) { + try { mappings.load(new FileInputStream(NStoPkgFilename)); + System.out.println( + Messages.getMessage("nsToPkgFileLoaded00", NStoPkgFilename) + ); + } catch (Throwable t) { + // loading the custom mapping file failed. We do not try + // to load the mapping from a default mapping file. + System.err.println( + Messages.getMessage("nsToPkgFileNotFound00", NStoPkgFilename) + ); } - Enumeration keys = mappings.propertyNames(); - while (keys.hasMoreElements()) { - try { - String key = (String) keys.nextElement(); - namespaces.put(key, mappings.getProperty(key)); - } - catch (Throwable t) { - } + } + else { + try { + mappings.load(new FileInputStream(DEFAULT_NSTOPKG_FILE)); + System.out.println( + Messages.getMessage("nsToPkgFileLoaded00", DEFAULT_NSTOPKG_FILE) + ); + } catch (Throwable t) { + try { + mappings.load(ClassUtils.getResourceAsStream( + Emitter.class, DEFAULT_NSTOPKG_FILE)); + System.out.println( + Messages.getMessage("nsToPkgDefaultFileLoaded00", DEFAULT_NSTOPKG_FILE) + ); + + } catch(Throwable t1) { + // loading the default mapping file failed. The built-in default + // mapping is used + System.err.println( + Messages.getMessage ("nsToPkgDefaultFileNotFound00", DEFAULT_NSTOPKG_FILE) + ); + } } } - catch (Throwable t) { + + Enumeration keys = mappings.propertyNames(); + while (keys.hasMoreElements()) { + String key = (String) keys.nextElement(); + namespaces.put(key, mappings.getProperty(key)); } } // getNStoPkgFromPropsFile