You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2012/05/17 04:47:30 UTC

svn commit: r1339454 - in /geronimo/bundles/trunk/axis2: ./ src/main/java/org/apache/axis2/jaxws/marshaller/ src/main/java/org/apache/axis2/jaxws/marshaller/impl/ src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/ src/main/resources/ src/main/re...

Author: xuhaihong
Date: Thu May 17 02:47:30 2012
New Revision: 1339454

URL: http://svn.apache.org/viewvc?rev=1339454&view=rev
Log:
AXIS2-5323 Follow the latest exclude rule for properties in the exception class

Added:
    geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/
    geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/
    geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/
    geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java   (with props)
    geronimo/bundles/trunk/axis2/src/main/resources/
    geronimo/bundles/trunk/axis2/src/main/resources/org/
    geronimo/bundles/trunk/axis2/src/main/resources/org/apache/
    geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/
    geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/
    geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/
    geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties   (with props)
Modified:
    geronimo/bundles/trunk/axis2/pom.xml

Modified: geronimo/bundles/trunk/axis2/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/bundles/trunk/axis2/pom.xml?rev=1339454&r1=1339453&r2=1339454&view=diff
==============================================================================
--- geronimo/bundles/trunk/axis2/pom.xml (original)
+++ geronimo/bundles/trunk/axis2/pom.xml Thu May 17 02:47:30 2012
@@ -332,7 +332,11 @@
                            org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.class=target/classes/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.class,
                            org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl$1.class=target/classes/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl$1.class,
                            org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.class=target/classes/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.class,
-                           org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl$1.class=target/classes/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl$1.class
+                           org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl$1.class=target/classes/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl$1.class,
+                           
+                           <!--Axis2-5323-->
+                           org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.class=target/classes/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.class,
+                           org/apache/axis2/jaxws/i18n/resource.properties=target/classes/org/apache/axis2/jaxws/i18n/resource.properties
                         </Include-Resource>
                         <SPI-Provider>true</SPI-Provider>
                     </instructions>

Added: geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java
URL: http://svn.apache.org/viewvc/geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java?rev=1339454&view=auto
==============================================================================
--- geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java (added)
+++ geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java Thu May 17 02:47:30 2012
@@ -0,0 +1,331 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.axis2.jaxws.marshaller.impl.alt;
+
+import org.apache.axis2.jaxws.ExceptionFactory;
+import org.apache.axis2.jaxws.description.FaultDescription;
+import org.apache.axis2.jaxws.i18n.Messages;
+import org.apache.axis2.jaxws.runtime.description.marshal.FaultBeanDesc;
+import org.apache.axis2.jaxws.runtime.description.marshal.MarshalServiceRuntimeDescription;
+import org.apache.axis2.jaxws.utility.PropertyDescriptorPlus;
+import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;
+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperToolImpl;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.xml.ws.WebServiceException;
+
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+
+/**
+ * The JAX-WS Specification (chapter 3.7) indicates that JAX-WS
+ * supports exceptions that do not match the normal pattern (the normal
+ * pattern is defined in chapter 2.5.  
+ * 
+ * These non-matching exceptions are the result of running WSGen
+ * on a pre-existing webservice.  I am going to use the term, legacy exception,
+ * to describe these non-matching exceptions.
+ * 
+ * The JAX-WS marshaller (server) must marshal a legacy exception thrown from
+ * the web service impl.  The marshalling/mapping algorithm is defined in chapter 3.7.
+ * 
+ * On the client, the JAX-WS engine will need to demarshal exceptions.  However
+ * the specification assumes that the client is always created via wsimport; therefore
+ * the assumption is that all exceptions on the client are compliant (never legacy exceptions).
+ * I have included some code here in case we have to deal with legacy exceptions on the client...this is non-spec.
+ * 
+ *
+ */
+
+class LegacyExceptionUtil {
+
+    private static Log log = LogFactory.getLog(LegacyExceptionUtil.class);
+
+    private static Set<String> ignore = new HashSet<String>();
+
+    static {
+        // Per Chap 3.7 rule 3, ignore these properties from java.lang.Throwable hierarchy except the message property
+        try {
+            for (PropertyDescriptor pd : Introspector.getBeanInfo(Throwable.class).getPropertyDescriptors()) {
+                if (pd.getName().equals("message")) {
+                    continue;
+                }
+                ignore.add(pd.getName());
+            }
+        } catch (IntrospectionException e) {
+            log.error(Messages.getMessage("faultProcessingExcludedExceptionProperties", e.getMessage()), e);
+        }
+    }
+
+    /** Static class.  Constructor is intentionally private */
+    private LegacyExceptionUtil() {
+    }
+
+
+    /**
+     * Create a FaultBean populated with the data from the Exception t The algorithm used to
+     * populate the FaultBean is described in JAX-WS 3.7
+     *
+     * @param t
+     * @param fd
+     * @param marshalDesc
+     * @return faultBean
+     */
+    static Object createFaultBean(Throwable t, FaultDescription fd,
+                                  MarshalServiceRuntimeDescription marshalDesc)
+            throws WebServiceException {
+
+        Object faultBean = null;
+        try {
+            // Get the fault bean name from the fault description.
+            // REVIEW The default name should be:
+            //      Package = <SEI package> or <SEI package>.jaxws
+            //      Name = <exception name> + Bean
+            FaultBeanDesc faultBeanDesc = marshalDesc.getFaultBeanDesc(fd);
+            String faultBeanName = faultBeanDesc.getFaultBeanClassName();
+
+            // TODO Add check that faultBeanName is correct
+            if (log.isDebugEnabled()) {
+                log.debug("Legacy Exception FaultBean name is = " + faultBeanName);
+            }
+
+            // Load the FaultBean Class
+            Class faultBeanClass = null;
+            if (faultBeanName != null && faultBeanName.length() > 0) {
+                try {
+                    try {
+                        faultBeanClass = MethodMarshallerUtils.loadClass(faultBeanName);
+                    } catch (ClassNotFoundException e){
+                        faultBeanClass = MethodMarshallerUtils.loadClass(faultBeanName, fd.getOperationDescription().getEndpointInterfaceDescription().getEndpointDescription().getAxisService().getClassLoader());
+                    }
+                } catch (Throwable throwable) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Cannot load fault bean class = " + faultBeanName +
+                                ".  Fallback to using the exception object");
+                    }
+                }
+            }
+
+            if (faultBeanClass != null) {
+
+                // Get the properties names from the exception class
+                Map<String, PropertyDescriptorPlus> pdMap =
+                        marshalDesc.getPropertyDescriptorMap(t.getClass());
+
+                // We need to assign the legacy exception data to the java bean class.
+                // We will use the JAXBWrapperTool.wrap utility to do this.
+
+                // Get the map of child objects
+                Map<String, Object> childObjects = getChildObjectsMap(t, pdMap);
+                Map<String, Class> declaringClass = new HashMap<String, Class>();
+                List<String> childNames = new ArrayList<String>(childObjects.keySet());
+
+                if (log.isErrorEnabled()) {
+                    log.debug("List of properties on the Legacy Exception is " + childNames);
+                }
+                // Use the wrapper tool to get the child objects.
+                JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
+                Map<String, PropertyDescriptorPlus> pdMapForBean =
+                        marshalDesc.getPropertyDescriptorMap(faultBeanClass);
+                faultBean =
+                        wrapperTool.wrap(faultBeanClass, childNames, childObjects, declaringClass, pdMapForBean);
+                if (log.isErrorEnabled()) {
+                    log.debug("Completed creation of the fault bean.");
+                }
+            } else {
+                throw ExceptionFactory.makeWebServiceException(
+                		Messages.getMessage("faultProcessingNotSupported",t.getClass().getName()));
+            }
+
+        } catch (Exception e) {
+            throw ExceptionFactory.makeWebServiceException(e);
+        }
+        return faultBean;
+    }
+
+    /**
+     * Create an Exception using the data in the JAXB object. The specification is silent on this
+     * issue.
+     *
+     * @param exceptionClass
+     * @param jaxb
+     * @param marshalDesc
+     * @return
+     */
+    static Exception createFaultException(Class exceptionClass,
+                                          Object jaxb,
+                                          MarshalServiceRuntimeDescription marshalDesc) {
+        Exception e = null;
+        try {
+            if (log.isErrorEnabled()) {
+                log.debug("Create Legacy Exception for " + exceptionClass.getName());
+            }
+            // Get the properties names from the exception class
+            Map<String, PropertyDescriptorPlus> pdMap =
+                    marshalDesc.getPropertyDescriptorMap(exceptionClass);
+
+            // Now get a list of PropertyDescriptorPlus objects that map to the jaxb bean properties
+            Iterator<Entry<String, PropertyDescriptorPlus>> it = pdMap.entrySet().iterator();
+            List<PropertyDescriptorPlus> piList = new ArrayList<PropertyDescriptorPlus>();
+            while (it.hasNext()) {
+                Entry<String, PropertyDescriptorPlus> entry = it.next();
+                String propertyName = entry.getValue().getPropertyName();
+                // Some propertyNames should be ignored.
+                if (!ignore.contains(propertyName)) {
+                    piList.add(entry.getValue());
+                }
+            }
+
+            // Find a matching constructor
+            List<String>  childNames = new ArrayList<String>();
+            if (log.isErrorEnabled()) {
+                log.debug("List of childNames on legacy exception is " + childNames);
+            }
+            Constructor constructor = findConstructor(exceptionClass, piList, childNames);
+
+            if (log.isErrorEnabled()) {
+                log.debug("The constructor used to create the exception is " + constructor);
+            }
+            // Use the wrapper tool to unwrap the jaxb object
+            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
+            Map<String, PropertyDescriptorPlus> pdMapForBean =
+                    marshalDesc.getPropertyDescriptorMap(jaxb.getClass());
+            Object[] childObjects = wrapperTool.unWrap(jaxb, childNames, pdMapForBean);
+
+            if (log.isErrorEnabled()) {
+                log.debug("Calling newInstance on the constructor " + constructor);
+            }
+            e = (Exception)constructor.newInstance(childObjects);
+        } catch (Exception ex) {
+            throw ExceptionFactory.makeWebServiceException(ex);
+        }
+        return e;
+    }
+
+    /**
+     * Find a construcor that matches this set of properties
+     *
+     * @param cls
+     * @param pdList
+     * @param childNames returned in the order that they occur in the constructor
+     * @return Constructor or null
+     */
+    private static Constructor findConstructor(Class cls, List<PropertyDescriptorPlus> pdList,
+                                               List<String> childNames) {
+        Constructor[] constructors = cls.getConstructors();
+        Constructor constructor = null;
+        if (constructors != null) {
+            for (int i = 0; i < constructors.length && constructor == null; i++) {
+                Constructor tryConstructor = constructors[i];
+                if (tryConstructor.getParameterTypes().length == pdList.size()) {
+                    // Try and find the best match using the property types
+                    List<PropertyDescriptorPlus> list =
+                            new ArrayList<PropertyDescriptorPlus>(pdList);
+                    List<PropertyDescriptorPlus> args = new ArrayList<PropertyDescriptorPlus>();
+
+                    Class[] parms = tryConstructor.getParameterTypes();
+                    boolean valid = true;
+
+                    // Assume the message is first in the constructor
+                    for (int j = 0; j < list.size(); j++) {
+                        if ("message".equals(list.get(j).getPropertyName())) {
+                            args.add(list.remove(j));
+                        }
+                    }
+                    if (args.size() != 1 ||
+                            !parms[0].isAssignableFrom(args.get(0).getPropertyType())) {
+                        valid = false;
+                    }
+
+                    // Now process the rest of the args
+                    for (int j = 1; j < parms.length && valid; j++) {
+                        // Find a compatible argument
+                        Class parm = parms[j];
+                        boolean found = false;
+                        for (int k = 0; k < list.size() && !found; k++) {
+                            Class arg = list.get(k).getPropertyType();
+                            if (parm.isAssignableFrom(arg)) {
+                                found = true;
+                                args.add(list.remove(k));
+                            }
+                        }
+                        // If no compatible argument then this constructor is not valid
+                        if (!found) {
+                            valid = false;
+                        }
+                    }
+                    // A constructor is found
+                    if (valid) {
+                        constructor = tryConstructor;
+                        for (int index = 0; index < args.size(); index++) {
+                            childNames.add(args.get(index).getPropertyName());
+                        }
+                    }
+                }
+            }
+        }
+
+        return constructor;
+    }
+
+
+    /**
+     * Get the child objects map that is required by the wrapper tool.
+     *
+     * @param t                       Exception
+     * @param ParameterDescriptorPlus map for Throwable t
+     * @return Map with key is bean property names and values are objects from the Exception
+     * @throws IntrospectionException
+     */
+    private static Map<String, Object> getChildObjectsMap(Throwable t,
+                                                          Map<String, PropertyDescriptorPlus> pdMap)
+            throws IntrospectionException, InvocationTargetException, IllegalAccessException {
+
+
+        Map<String, Object> coMap = new HashMap<String, Object>();
+
+        Iterator<Entry<String, PropertyDescriptorPlus>> it = pdMap.entrySet().iterator();
+        while (it.hasNext()) {
+            Entry<String, PropertyDescriptorPlus> entry = it.next();
+            String propertyName = entry.getValue().getPropertyName();
+            String xmlName = entry.getKey();
+            // Some propertyNames should be ignored.
+            if (!ignore.contains(propertyName)) {
+                Object value = entry.getValue().get(t);
+                coMap.put(xmlName, value);
+            }
+        }
+        return coMap;
+    }
+
+}

Propchange: geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/bundles/trunk/axis2/src/main/java/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties
URL: http://svn.apache.org/viewvc/geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties?rev=1339454&view=auto
==============================================================================
--- geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties (added)
+++ geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties Thu May 17 02:47:30 2012
@@ -0,0 +1,310 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+
+# Translation instructions.
+# 1.  Each message line is of the form key=value.
+#     Translate the value, DO NOT translate the key.
+# 2.  The messages may contain arguments that will be filled in
+#     by the runtime.  These are of the form: {0}, {1}, etc.
+#     These must appear as is in the message, though the order
+#     may be changed to support proper language syntax.
+# 3.  If a single quote character is to appear in the resulting
+#     message, it must appear in this file as two consecutive
+#     single quote characters.
+# 4.  Lines beginning with "#" (like this one) are comment lines
+#     and may contain translation instructions.  They need not be
+#     translated unless your translated file, rather than this file,
+#     will serve as a base for other translators.
+#
+# Do not remove the following comment line. It is a variable used by a translation tool.
+#NLS_MESSAGEFORMAT_VAR
+#NLS_ENCODING=UNICODE
+#ISMESSAGEFILE TRUE
+
+#############################################################################
+# DO NOT TOUCH THESE PROPERTIES - THEY ARE AUTOMATICALLY UPDATED BY THE BUILD
+# PROCESS.
+axisVersion=Apache Axis2 version: #axisVersion#
+axisVersionRaw=#axisVersion#
+axisBuiltOnRaw=#today#
+axisUserAgent=Axis/#axisVersion#
+builtOn=Built on #today#
+#############################################################################
+test01=This string is a test string 01.
+faultProcessingNotSupported=User fault processing is not supported. The @WebFault faultbean is missing for {0}
+exceptionDuringExceptionFlow=An exception occurred during exception processing.  The exception is swallowed and is not propagated back to the caller.
+serviceClientCreateError=The ServiceClient cannot be created. 
+cannotSetExcutorToNull=An attempt was made to set the Executor to a null value. This is not allowed.
+getPortInvalidSEI=An attempt was made to call getPort with the {0} port and {1} service endpoint interface (SEI). However, this call is not allowed.
+createDispatchFail0=Dispatch creation failed. The port QName cannot be null.
+createDispatchFail1=Dispatch creation failed. The {0} port cannot be found.  Verify that the port has been added to the service.
+createDispatchFail2=Dispatch creation failed. The service cannot find Port data for the {0} port.
+addPortDup=An attempt was made to add the {0} port to the ServiceDelegate. The port already exists.
+addPortErr0=Only the SOAP11HTTP_BINDING, SOAP12HTTP_BINDING, SOAP11HTTP_MTOM_BINDING, SOAP12HTTP_MTOM_BINDING and HTTP_BINDING ports are supported at this time. The {0} port cannot be added to the ServiceDelegate.
+addPortErr1=An attempt was made to add the {0} port with the {1} endpoint address, which is not valid, to the ServiceDelegate. This addition is not allowed.
+addPortErr2=An attempt was made to add a port without a name to the ServiceDelegate object. This addition is not allowed.
+serviceDelegateConstruct0=An attempt was made to construct the ServiceDelegate object with an service name that is not valid: {0}.
+serviceDescErr0=The service class is not valid. The service QName cannot be null.
+serviceDescErr1=The service class is not valid. The Service class {0} must be assignable to javax.xml.ws.Service.
+serviceDescErr2=The service is not valid. The {0} service QName cannot be found in the WSDL file.
+wsdlNotFoundErr=The WSDL file could not be found: {0}
+wsdlException=The following WSDL exception occurred: {0}
+portInfoErr0=The system cannot construct the port data. The {0} service name is not valid.
+portInfoErr1=The system cannot construct the port data. The {0} port name is not valid.
+portInfoErr2=The system cannot construct the port data. The {0} binding id is not valid.
+# The key portInfoErr3 is not currently used.
+# portInfoErr3=The system cannot construct the port data. The {0} service endpoint is not valid.
+handlerChainErr1=The {0} handler should not directly implement the javax.xml.ws.handler.Handler interface.
+handlerChainErr2=The {0} handler must implement javax.xml.ws.handler.LogicalHandler or javax.xml.ws.handler.soap.SOAPHandler.
+ICErr1=An internal error occurred. The invocation context is null.
+ICErr2= An internal error occurred. The message context is null.
+ICErr4=The system cannot perform an asynchronous invoke with a null callback.
+ICCreateOpClientErr1=The system cannot create the OperationClient. The ServiceClient is null.
+ICCreateOpClientErr2=The system cannot create the OperationClient. The operation qname is null.
+proxyErr1=An attempt was made to invoke the {0} method, but this method is not available on the javax.xml.ws.BindingProvider or {1} class.
+proxyErr2=The @SOAPBinding annotation Style for the service endpoint interface (SEI) and the @SOAPBinding annotation Style for the method should be same.
+proxyErr3=Operation Description was not set.
+proxyPrivateMethod=Invalid method call.  The method {0} is not a valid method.
+proxyExcludedMethod=Invalid method call.  The method {0} has been excluded using the @WebMethod(exclude=true) annotation.
+proxyNullCallback=Invalid AsyncHandler object.  The AsynchHandler cannot be null for an asynchronous callback invocation.
+JAXWSMessageReceiverNoServiceClass=The service class cannot be found for this AxisService.
+EndpointControllerErr2=The service class is not configured for this endpoint. Processing cannot continue.
+EndpointControllerErr4=The {0} provider implementation class cannot be loaded due to an error. Processing cannot continue.
+EndpointControllerErr5=A service implementation class cannot be found.
+EndpointControllerErr6=The service is unable to load the {0} service implementation class.
+BlockImplErr1=An internal error occurred. The {0} block object is already consumed. Processing cannot continue.  Run with the debug option to determine where the block was first consumed.
+XMLPartImplErr1=An internal error occurred. The XML part is already consumed.  Processing cannot continue. Run with the debug option to determine where the block was first consumed.
+XMLPartImplErr2=An internal error occurred. The content of the XML part cannot be determined.
+RESTIsNotSupported=The REST protocol is not supported in this version of the system.
+ProtocolIsNotKnown=The protocol has not been set. This error might indicate an internal error in the JAX-WS layer.
+SourceNotSupported=The {0} class is not a supported extension of the javax.xml.transform.Source.
+SourceMissingSupport=An internal error occurred. The code to make a copy of this javax.xml.transform.Source ({0}) is not supported in this version of the system.
+resetReaderErr=An internal error occurred. The system cannot reset a XMLStreamReader that does not support the reset feature.
+SAAJConverterErr1=The SOAPElement parent that was passed to the toSAAJ method is not attached to a SOAPEnvelope. Processing cannot continue.
+SAAJConverterErr2=An unexpected XMLStreamReader event, {0}, occurred when converting an OM to a SOAPElement.
+XMLSRErr1=The getProperty method was called with a null key argument.
+XMLSRErr2=All of the events of the XMLStreamReader have been processed.  There are no more events.
+XMLSRErr3=The Require method failed. The system expected {0}, but found {1}.
+XMLSRErr4=A failure occurred in the {0} method.
+XMLSRErr5=The XMLStreamReader event, {0}, is not supported when processing a SOAPMessage.
+InvalidProvider=The {0} Provider implementation is not valid. Only String, Source, and SOAPMessage are supported by the JAX-WS specification.
+InvalidProviderCreate=The creation of the {0} provider instance failed. 
+JAXBWrapperErr1=An internal assertion error occurred. The JAXB object argument to the unwrap method is null.
+JAXBWrapperErr2=An internal assertion error occurred. The child names argument to the unwrap method is null.
+JAXBWrapperErr3=An internal assertion error occurred. The child objects or child names argument to the wrap method is null.
+JAXBWrapperErr4=An internal assertion error occurred. The number of child objects does not match the number of child names in the wrap method.
+JAXBWrapperErr6=An internal assertion error occurred. The {0} JAXB object does not have a {1} xml property.
+JAXBSourceNamespaceErr=The DOMSource value must be Namespace Aware.
+JavaBeanDispatcherErr1=A Java method was not found for the operation. If the WSDL operation name is different from the Java method name, make sure that the @WebMethod annotation name is present.
+SOAP12WithSAAJ12Err=A SOAP 1.2 message cannot be rendered in an SAAJ 1.2 object model.
+dispatchNullParamMessageMode=The parameter cannot be a null value for a Dispatch invocation using the MESSAGE mode.
+dispatchNullParamHttpBinding=The parameter cannot be a null value for a Dispatch invocation using the XML/HTTP binding.
+dispatchInvalidParam=The parameter for the Dispatch invocation was not valid.
+dispatchInvalidType=Unsupported Dispatch Type, Dispatch can only be of the java.lang.String, javax.xml.transform.Source, javax.xml.soap.SOAPMessage, javax.xml.soap.SOAPEnvelope or org.apache.axiom.om.OMElement type.
+prepareRequestFail=An error occurred when the system was preparing the request message.
+checkUserName=Error: The javax.xml.ws.security.auth.username property was set, but no value was specified.
+NoMaintainSessionProperty=Error: Maintain Session is enabled but none of the session properties (Cookies, Over-written URL) are returned.
+NullValueForMaintainSessionProperty=Error: The value of the {0} Session property is NULL.
+JAXBBlockFactoryErr1=An internal assertion error occurred. The context parameter of the JAXBBlockFactory.createFrom method should be a JAXBBlockContext object, but a {0} object was found.
+WSDL4JWrapperErr1=Unable to read wsdl from relative path.
+WebServiceContextInjectionImplErr1=A null service instance cannot be injected into the resource.
+WebServiceContextInjectionImplErr3=A null service instance cannot be injected into the webservices context.
+WebServiceContextInjectionImplErr6=The injection can happen using a method if the method name that starts with \"set\" returns a void, only has one parameter, and the type of this parameter is compatible with the resource.
+ResourceInjectionFactoryErr1=An unknown resource type was found, Only a javax.xml.ws.WebServiceContext resource type can be injected.
+EndpointLifecycleManagerImplErr1=EndpointLifecycleManager object is null.
+ClassUtilsErr2={0} might not be a valid package because the encoding is unsupported.
+ClassUtilsErr3=An IOException error was thrown when trying to get all of the resources for {0}
+ClassUtilsErr4=An IOException error was thrown when trying to read the jar file.
+MethodMarshallerUtilErr1=Empty Body Block Found in response Message for wsdl Operation defintion that expects an Output. Return type associated with SEI operation is not void, Body Block cannot be null.
+SourceReadErr=A problem was encountered while reading the Source object.  Please verify that your Source object is correct.  The class of the Source object is {0}
+JABGraphProblem=The system threw a StackOverflowError at the JAXB level.  This usually means that your JAXB object has a circular reference.  This is not supported by JAXB.
+SchemaReaderErr1=Invlid wsdl Definition provided.
+XSDListNotSupported=An attempt was made to marshal or unmarshal an xsd:list with a component type that is a {0}.  This scenario is not supported for rpc/literal processing.  Please use document/literal processing
+dispatchBadDOMSource=An invalid DOMSource was encountered during Dispatch.  Please use a DOMSource that contains a Node.
+convertProblem=An internal error occurred during JAX-WS marshalling. An object of type {0} cannot be converted into the destination type of {1}
+invalidPropValue=The value of property {0} was invalid.  {1} does not match expected type {2}.
+NullParamErr2=Input argument(s) in operation method {0} is null.  This is not allowed for rpc/lit messages.
+NullParamErr3=Return argument(s) in operation method {0} is null.  This is not allowed for rpc/lit messages.
+unknownHost=The host specified by the URL is unknown.
+connectionRefused=An attempt to connect to the URL was refused.
+urlStream=The WSDL file could not be located.
+schemaImportError=An internal error occurred resolving imported schema {0} relative to parent document {1}
+ExecutorShutdown=RejectedExcecutionException. The request is rejected because the Executor Service for the service is shutdown.
+handlerChainNS=The @HandlerChain configuration file {0} in the class {1} could not be loaded.
+hcConfigLoadFail=The @HandlerChain configuration file {0} in the class {1} could not be loaded due to the following error: {2}
+serverSideAsync=The server-side SEI {0} contains the asynchronous method {1}. Asynchronous methods are not allowed for server-side artifacts.
+onewayAsync=The async listener property was set.  A one way invocation cannot be performed using an async response channel.
+soapBindingUseEncoded=The SEI {0} contains method {1} with an unsupported SOAPBinding annotation value. SOAPBinding.Use field cannot be set to ENCODED.
+soapBindingStyle=The SEI {0} contains method {1} with annotation SOAPBinding.Style set to RPC.
+handlerSourceFail=Internal error. Multiple sources were supplied for the handler chain configuration information in the class {0}.
+failureLogger=A {0} throwable was caught.  The detail message is: {1}
+clientConfigCtxtErr=Error getting Client Configuration Context : {0}
+createServiceDescrErr=A ServiceDescription was not created for {0}
+createSrvcDescrDBCMapErr=The ServiceDescription failed to validate due to the following errors -- Validation Phase 2 failure: {0}, Failing composite: {1}, Failing Service Description: {2}
+regHandlerHeadersErr=Unable to add Parameter for header QNames to AxisService {0}. {1}
+endpointDescriptionErr1=EndpointDescription: PortQName was null and could not be determined by runtime for class {0}; ServiceDescription: {1}
+endpointDescriptionErr2=Caught {0} attempting to complete configuration on AxisService for ServiceDesription: {1}
+endpointDescriptionErr3=EndpointDescription.EndpointDescription: parents DBC is null
+endpointDescriptionErr4=EndpointDescription: Unable to add parameters to AxisService
+endpointDescriptionErr5=Cannot add AxisService param: {0}
+RespectBindingConfiguratorErr1=Client side RespectBindingConfiguration failed, EndpointDescription was NULL.
+RespectBindingConfiguratorErr2=Client side RespectBindingConfiguration failed, EndpointDescriptionWSDL was NULL.
+operationDescriptionErr1=OperationDescription: Unable to add parameters to AxisOperation
+updateWithSEIErr1=Can not update an SEI on a dynamic port.  PortQName: {0}
+updateWithSEIErr2=EndpointDescription.updateWithSEI was passed a null SEI.  PortQName: {0}
+setupAxisServiceErr1=Unable to create AxisService for {0}
+setupAxisServiceErr2=Exception when adding service parameters.
+setupAxisServiceErr3=Exception when generating WSDL to create AxisService
+bldAxisSrvcFromWSDLErr=The WSDL file could not be used due to an exception.  The WSDL will be ignored and annotations will be used.  Implementation class: {0}; WSDL Location: {1}; Exception Message: {2}
+serviceDescErr3=WSDL Port not found for port {0}
+generateWSDLErr=EndpointDescriptionImpl: WSDLException thrown when attempting to instantiate WSDL4JWrapper
+handlerChainsTypeErr=EndpointDescriptionImpl.getHandlerChain: fileName: {0}; className: {1}
+eiDescrImplErr=Unable to build AxisOperation for generic Provider; caught exception.
+seiMethodsErr=SEI methods must be public.
+seiProcessingErr=The seiClass is already set; reseting it is not supported.
+seiNotFoundErr=EndpointInterfaceDescriptionImpl: cannot find super class that was specified for this class.
+clientAxisOprErr=Caught exception trying to create AxisOperation.
+createAxisOprErr1=Could not setup Doc/Lit/Bare operation because input message is null.
+createAxisOprErr2=Could not setup Doc/Lit/Bare operation because part namespace is empty.
+createAxisOprErr3=Could not setup Doc/Lit/Bare operation because name is empty.
+seiMethodErr=Can not set an SEI method once it has been set.
+regMUHeadersErr=Unable to add Parameter for header QNames to AxisOperation {0} due to AxisFault {1}
+genParamTypesErr=OperationDescriptionImpl.getParameterActualGenericType not supported for DBC.
+updateEPDescrErr1=ServiceDescription.updateEndpointDescription: Cannot do a getPort on a port added via addPort().  PortQN: {0}
+updateEPDescrErr2=ServiceDescription.updateEndpointDescription: Cannot do a getPort with a null SEI.  PortQN: {0}
+updateEPDescrErr3=ServiceDescription.updateEndpointDescription: Cannot do a getPort() specifying a different SEI than the previous getPort().  PortQN: {0}; current SEI: {1}; previous SEI: {2}
+dbclIntegrityErr=Validation phase 1 failure: {0}; Failing composite: {1}
+validateIntegrityErr1=Validation error: This is a Provider based endpoint that does not contain a WebServiceProvider annotation.  Provider class: {0}
+validateIntegrityErr2=Validation error: WebService annotation and WebServiceProvider annotation cannot coexist.  Implementation class: {0}
+validateIntegrityErr3=Validation error: This is a Provider that does not specify a valid Provider interface.   Implementation class: {0}
+validateIntegrityErr4=Validation error: Provider must have a public default constructor.  Implementation class: {0}
+validateIntegrityErr5=Validation error: Provider must have a public invoke method.  Implementation class: {0}
+validateIntegrityErr6=Validation error: ServiceMode annotation can only be specified for WebServiceProvider.   Implementation class: {0}
+validateIntegrityErr7=Validation error: cannot find WSDL Definition specified by this WebService annotation. Implementation class: {0}; WSDL location: {1}
+validateIntegrityErr8=Validation error: cannot find SEI specified by the WebService.endpointInterface.  Implementaiton class: {0}; EndpointInterface: {1}
+validateIntegrityErr9=Validation error: invalid annotations specified when WebService annotation specifies an endpoint interface.  Implemntation class: {0}
+validateIntegrityErr10=Validation error: WebService.name must not be specified when the bean specifies an endpoint interface.  Implentation class: {0}; WebService.name: {1}
+validateIntegrityErr11=Validation error: WebMethod annotations cannot exist on implentation when WebService.endpointInterface is set.  Implementation class: {0}
+validateIntegrityErr12=Validation error: Improper usage: cannot invoke this method with an interface.  Implementation class: {0}
+validateIntegrityErr13=Validation error: Unsupported SOAPBinding annotation value. The ENCODED setting is not supported for SOAPBinding.Use. Implementation class: {0}
+validatePIsErr1=Validation error: SOAPMessage and DataSource objects cannot be used when ServiceMode specifies PAYLOAD. Implementation class: {0}
+validatePIsErr2=Validation error: SOAPMessage objects cannot be used with HTTP binding type. Implementation class: {0}
+validatePIsErr3=Validation error: DataSource objects must be used with HTTP binding type. Implementation class: {0}
+validateImplErr=Validation error: Implementation subclass does not implement method on specified interface.  Implementation class: {0}; missing method name: {1}; endpointInterface: {2}
+validateMethodParamErr1=Validation error: SEI indicates no parameters but implementation method specifies parameters: {0}; Implementation class: {1}; Method name: {2}; Endpoint Interface: {3}
+validateMethodParamErr2=Validation error: SEI indicates parameters {0} but implementation method specifies no parameters; Implementation class: {1}; Method name: {2}; Endpoint Interface: {3}
+validateMethodParamErr3=Validation error: The number of parameters on the SEI method ({0}) does not match the number of parameters on the implementation ({1}); Implementation class: {2}; Method name: {3}; Endpoint Interface: {4}
+validateMethodRVErr1=Validation error: SEI indicates no return value but implementation method specifies return value: {0}; Implementation class: {1}; Method name: {2}; Endpoint Interface: {3}
+validateMethodRVErr2=Validation error: SEI indicates return value {0} but implementation method specifies no return value; Implementation class: {1}; Method name: {2}; Endpoint Interface: {3}
+validateMethodRVErr3=Validation error: SEI return value {0} does not match implementation method return value {1}; Implementation class: {2}; Method name: {3}; Endpoint Interface: {4}
+validateMethodExceptionErr1=Validation error: Implementation method signature has more checked exceptions than SEI method signature (0): Implementation class: {0}; method name: {1}; endpointInterface: {2}
+validateMethodExceptionErr2=Validation error: Implementation method signature has more checked exceptions ({0}) than SEI method signature ({1}): Implementation class: {2}; method name: {3}; endpointInterface: {4}
+validateMethodExceptionErr3=Validation error: Implementation method signature throws exception {0} which is not declared on the SEI method signature: Implementation class: {1}; method name: {2}; endpointInterface: {3}
+validateSEIErr1=Validation error: SEI does not contain a WebService annotation.  Implementation class: {0}; SEI: {1}
+validateSEIErr2=Validation error: SEI must not set a value for @WebService.endpointInterface.  Implementation class: {0}; SEI: {1}; Invalid endpointInterface value: {2}
+validateSEIErr3=Validation error: Unsupported SOAPBinding annotation value. The ENCODED setting is not supported for SOAPBinding.Use. Implementation class: {0}
+createDispatchFail3=ServiceDescription.updateEndpointDescription: Can not specify an SEI when creating a Dispatch. PortQN: {0}
+roleValidatioErr=The role of 'none' is not allowed.
+threadClsLoaderErr=Attemping to use ClassLoader of type {0}, which is incompatible with current ClassLoader of type {1}
+getErr=The task was cancelled.
+getErr1=The client timed out while waiting for an asynchronous response.
+processRespErr=null response.
+addPropertiesErr=Unable to convert WSDL location URL to URI.  URL: {0}; Service: {1}
+invokeAsyncErr=A client outbound handler cause a message flow direction reversal.  This case is not yet implemented.
+cFaultMsgErr=We only support SOAP11 and SOAP12 for JAXWS handlers.
+inputConvertionErr=Cannot convert from {0} to List<String>.
+inputConvertionErr1=Cannot convert from  {0} to String.
+pdElementErr=SWAREF and MTOM attachment parameters are not supported in this style/use.
+msgFromMsgErr=Error occurred while creating the representation of the incoming message.
+pTypeErr=Provider cannot have more than one Generic Types defined per JAX-WS Specification.
+bFactoryErr=Unexpected Error. Unable to find BlockFactory for type: {0}
+initErr=The implementor object cannot be null.
+injectOnClsErr=WebServiceContext Injection on a Class is not supported.
+oprDescrErr=No operation found.  WSDL Operation name: {0}
+oprDescrErr1=More than one operation found. Overloaded WSDL operations are not supported.  WSDL Operation name: {0}
+invokeErr=No dispatcher found.
+nullMsgCtxErr=The MessageContext is null.  This is an unexpected condition that occurred during application property migration.
+portErr=Unable to getPort for port QName {0}
+portErr1=Unable to load proxy classes.
+pDescrErr=Null Descriptor. PropertyDescriptor not found.
+pDescrErr2=No read Method found to read property Value from jaxbObject: {0} 
+noDataHandler=A data handler was not found for content id {0}
+DescriptionBuilderErr1=Unable to create composite annotation {0} due to exception {1}
+DescriptionBuilderErr2=Unable to create sparse annotation {0} from base annotation {1}
+serviceDescErr4=Unable to access wsdlLocation {0}
+serviceDescErr5=The dynamic port {0} can not specify a sparse composite.
+serviceDescErr6=Can not specify a sparse composite when calling Service.createDispatch.
+endpointDescErr1=AxisService does not contain a Service Description
+convertUtils=Cannot convert from  {0} to {1}.  Check your application for mismatched classes.
+serviceDelegateNoPort=Could not find the port for EndpointReference {0}
+serviceDelegateProxyError=Unable to load proxy classes due to the following exception: {0}
+soapMessageContextErr1=Illegal argument encountered. The qname argument for SOAPMessageContext.getHeaders is null.
+soapMessageContextErr2=Illegal argument encountered. The jaxbcontext argument for SOAPMessageContext.getHeaders is null.
+singleThreadedExecutorErr1=The Runnable command provided to the SingleThreadedExecutor was null.  A non-null instance is required.
+serviceDescriptionImplAddPortErr=An attempt was made to add a port with no ServiceDelegate.
+serviceDescriptionImplValidationErr=Validation error: SEI and implementation parameters do not match.  Parameter number {0} on the SEI is {1}.  On the implementation it is {2}.  The implementation class is {3}, the method name is {4}, and the endpoint interface name is {5}.
+respectBindingNotSpecified=The RespectBinding feature was not specified.
+createHandlerInstanceErr=The createHandlerInstance method was invoked without a Handler class.
+destroyHandlerInstanceErr=The destroyHandlerInstance method was invoked without a Handler class.
+endpointDescriptionValidation=There is a mismatch between the wsdl and annotation information.  Please make sure both use the same binding namespace.  The wsdl is {0}.  The annotation is {1}.
+loadHandlerChainErr=The following error occurred while loading the handler chain: {0}
+endpointDescriptionValidationErrors=The Endpoint validation failed to validate due to the following errors: {0}
+serviceNameMismatch=The service name of the endpoint reference {0} does not match the service name of the service client {1}.
+updateEndpointError=The following error occurred while updating the endpoint: {0}
+DBUClassNotFound=The class, {0}, could not be found with classloader {1}.
+DBUClassNotFound2=The class, {0}, could not be found with the current classloader.
+WSDLRelativeErr1=The relative location {0} could not be resolved.  The parent location is {1}.  The reported error is {2}
+WSDLRelativeErr2=The relative location {0} could not be resolved.  The parent location is {1}.
+MissingServiceName=The service name {0} was not found in this wsdl {1}.
+MissingPortName=The port name {0} was not found in this wsdl {1}.
+FeatureNamespaceNotSupported=The namespace of this feature {0} is not supported.
+AddressingEngagementError=The following error occurred while engaging the addressing module: {0}
+NoWSAddressingFeatures=No WS-Addressing features were specified.
+endpointQNameSetError= The endpoint qname {0} cannot be set before the service qname.
+referenceParameterNullErr=The reference parameter must be set.
+referencePropertyNullErr=The reference property must be set.
+jaxbContextFailure=The JAXBContext could not be constructed due to the following error: {0}
+endpointRefConstructionFailure2=Unable to create the submission endpoint reference due to the following error {0}
+endpointRefConstructionFailure3=Unable to create the endpoint reference due to the following error {0}
+endpointReferenceWriteError1=The transform Result object is null.  The writeTo() method cannot continue.
+mtomFeatureErr=The MTOMFeature was not specified.
+mtomAnnotationErr=The @MTOM annotation was not specified.
+bindingProviderErr1=BindingProvider has been cofigured for namespace {0}, but a request has been made for namespace {1}.
+bindingMethodNotSupported=The method {0} is not supported for the current binding: {1}
+webServiceContextErr1=The MessageContext object is not available.
+invalidEndpointReference=An endpoint reference is invalid.  The reported error is: {0}
+dispatchNoEndpointReference=An attempt was made to perform a createDispatch without an endpoint reference.
+dispatchNoEndpointReference2=An attempt was made to perform a getPort without an endpoint reference.
+endpointDescriptionConstructionFailure=The createDispatch method was unable to create an endpoint description for endpoint reference {0}
+invalidWSAnnotation=Invalid or unsupported WebServiceFeature annotation {0}
+invalidWSFeature=Invalid or unsupported WebServiceFeature feature {0}
+referenceParameterConstructionErr=A problem occured during the building of the reference parameter list. See the nested exception for details.
+endpointUpdateError=An error occurred during the endpoint update
+endpointRefCreationError=An error occurred during the creation of an endpoint reference.
+mtomEnableErr=Unable to enable mtom.
+missingInvocationController=An invocation controller object was not found.
+unknownClassType=Unknown class type {0}
+axisEndpointReferenceFactoryErr=Cannot create an endpoint reference because the service name is null, and the port name is set to {0}
+axisEndpointReferenceFactoryErr2=Cannot create an endpoint reference because the address, service name, and/or port name are null.
+dispatchInvalidTypeWithMode=Unsupported Dispatch Type: Dispatch type javax.xml.soap.SOAPMessage cannot be used with messages in Payload mode.
+serviceDelegateConstruct2=An attempt was made to construct the ServiceDelegate object with the {0} service and with WebServicesFeatures, but there are no standard features defined for service creation in the current specification.
+MethodRetrieverWarning1=Public method {0} will be exposed as a Web Service operation per JAX-WS 2.2 tooling rules. If you intend to expose only operations that have @WebMethod annotation, set the manifest property ''LegacyWebmethod: true'' or set a JVM property ''jaxws.runtime.legacyWebMethod=true''. 
+generateWSDLNonSoap11=This implementation does not contain a WSDL definition and is not a SOAP 1.1 based binding. Per the JAXWS specification, a WSDL definition cannot be generated for this implementation.  The implementation class name is {0}
+faultProcessingExcludedExceptionProperties=Excluded exception properties processing failed. The reported error is: {0}.
\ No newline at end of file

Propchange: geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: geronimo/bundles/trunk/axis2/src/main/resources/org/apache/axis2/jaxws/i18n/resource.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain