From 17e573358db8a4a83247037b957db32127bdd00a Mon Sep 17 00:00:00 2001 From: slaws Date: Wed, 29 Feb 2012 15:06:57 +0000 Subject: TUSCANY-4020 - move hardcoded message strings into properties files git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1295144 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/assembly/xml/BaseAssemblyProcessor.java | 11 +++- .../assembly/xml/CompositeDocumentProcessor.java | 22 +++++-- .../sca/assembly/xml/CompositeProcessor.java | 16 ++++-- .../tuscany/sca/policy/xml/PolicyConstants.java | 2 - .../assembly-xml-validation-messages.properties | 7 +++ .../binding/ws/xml/WebServiceBindingProcessor.java | 7 ++- .../runtime/impl/EndpointReferenceBinderImpl.java | 15 +++-- .../endpoint-validation-messages.properties | 3 +- .../sca/databinding/impl/XSDDataTypeConverter.java | 67 ++++++++++++++-------- .../databinding-validation-messages.properties | 35 +++++++++++ .../java/context/ReflectiveInstanceFactory.java | 24 ++++++-- ...ion-java-runtime-validation-messages.properties | 26 +++++++++ .../java/xml/JavaInterfaceProcessor.java | 21 +++++-- ...nterface-javaxml-validation-messages.properties | 1 + .../org/apache/tuscany/sca/monitor/Monitor.java | 11 ++++ .../tuscany/sca/monitor/impl/MonitorImpl.java | 6 ++ 16 files changed, 217 insertions(+), 57 deletions(-) create mode 100644 sca-java-2.x/trunk/modules/databinding/src/main/resources/org/apache/tuscany/sca/databinding/databinding-validation-messages.properties create mode 100644 sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/resources/org/apache/tuscany/sca/implementation/java/runtime/implementation-java-runtime-validation-messages.properties diff --git a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java index 966c0ac275..d9fe434795 100644 --- a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java +++ b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java @@ -304,8 +304,13 @@ abstract class BaseAssemblyProcessor extends BaseStAXArtifactProcessor { property.setXSDType(getQName(reader, TYPE)); // MJE added 14/05/2009 - check for both @element and @type being present - disallowed by OASIS Assembly spec if( property.getXSDElement() != null && property.getXSDType() != null ) { - ContributionReadException ce = new ContributionReadException("[ASM40010,ASM60040] Error: property has both @type and @element attribute values - " + - property.getName()); + // TUSCANY-4020 - should get rid of the exception but that would mean getting OASIS to change the + // expected strings again + ContributionReadException ce = new ContributionReadException(context.getMonitor().getMessageString(BaseAssemblyProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "BothTypeAndElementAttributeFound") + + " - " + + property.getName()); error(context.getMonitor(), "ContributionReadException", property, ce); } // end if @@ -512,7 +517,7 @@ abstract class BaseAssemblyProcessor extends BaseStAXArtifactProcessor { // A property subelement MUST NOT be used when the @value attribute is used // to specify the value for that property. if (valueAttr != null) { - error(context.getMonitor(), "ASM50033: value attribute exists for the property element", name, name); + error(context.getMonitor(), "ValueAttributeForPropertyElement", element, nameAttr); } // Read if (VALUE_QNAME.equals(name)) { diff --git a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java index 5ba42a0dec..47f61ffe23 100644 --- a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java +++ b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java @@ -73,14 +73,20 @@ public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements */ public Composite read(URL contributionURL, URI uri, URL url, ProcessorContext context) throws ContributionReadException { if( uri == null || url == null ) { - throw new ContributionReadException("Request to read composite with uri or url NULL"); + throw new ContributionReadException(context.getMonitor().getMessageString(CompositeDocumentProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "NullURL")); } // end if InputStream scdlStream = null; try { scdlStream = IOHelper.openStream(url); } catch (IOException e) { - ContributionReadException ce = new ContributionReadException("Exception reading " + uri, e); + ContributionReadException ce = new ContributionReadException(context.getMonitor().getMessageString(CompositeDocumentProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "ReadException") + + " " + + uri, e); error(context.getMonitor(), "ContributionReadException", url, ce); throw ce; } @@ -119,7 +125,11 @@ public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements return composite; } catch (XMLStreamException e) { - ContributionReadException ce = new ContributionReadException("Exception reading " + uri, e); + ContributionReadException ce = new ContributionReadException(context.getMonitor().getMessageString(CompositeDocumentProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "ReadException") + + " " + + uri, e); error(context.getMonitor(), "ContributionReadException", inputFactory, ce); throw ce; } finally { @@ -169,7 +179,11 @@ public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements extensionProcessor.resolve(composite, resolver, context); } catch (Throwable e ) { // Add information about which composite was being processed when the exception occurred - String newMessage = "Processing composite " + composite.getName() + ": " + e.getMessage(); + String newMessage = context.getMonitor().getMessageString(CompositeDocumentProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "ProcessingComposite") + + " " + + composite.getName() + ": " + e.getMessage(); throw new ContributionResolveException( newMessage, e ); } // end try } diff --git a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java index 55e4cc53ae..e32171a0ee 100644 --- a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java +++ b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java @@ -1040,15 +1040,19 @@ public class CompositeProcessor extends BaseAssemblyProcessor implements StAXArt if ((composite.isLocal() && resolved.isLocal()) || (!composite.isLocal() && !resolved.isLocal())) { composite.getIncludes().set(i, resolved); } else { - ContributionResolveException ce = - new ContributionResolveException("[ASM60041] Error: Composite " + composite.getName() - + " can only include another composite with the identical @local attribute value"); + String message = context.getMonitor().getMessageString(CompositeProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "LocalAttibuteMissmatch"); + message = message.replace("{0}", composite.getName().toString()); + ContributionResolveException ce = new ContributionResolveException(message); error(monitor, "ContributionResolveException", include, ce); } } else { - ContributionResolveException ce = - new ContributionResolveException("[ASM60042] Error: Composite " + include.getName() - + " is not a valid composite within the domain"); + String message = context.getMonitor().getMessageString(CompositeProcessor.class.getName(), + Messages.RESOURCE_BUNDLE, + "CompositeNotFound"); + message = message.replace("{0}", include.getName().toString()); + ContributionResolveException ce = new ContributionResolveException(message); error(monitor, "ContributionResolveException", include, ce); } } diff --git a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java index 2498f3df67..fa56bf0503 100644 --- a/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java +++ b/sca-java-2.x/trunk/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java @@ -73,6 +73,4 @@ public interface PolicyConstants { QName POLICY_SET_REFERENCE_QNAME = new QName(SCA11_NS, POLICY_SET_REFERENCE); QName INTENT_QUALIFIER_QNAME = new QName(SCA11_NS, INTENT_QUALIFIER); QName EXTERNAL_ATTACHMENT_QNAME = new QName(SCA11_NS, EXTERNAL_ATTACHMENT); - String QUALIFIED_INTENT_CONSTRAINS_ERROR = " - Qualified Intents must not specify 'constrains' attribute"; - } diff --git a/sca-java-2.x/trunk/modules/assembly-xml/src/main/resources/org/apache/tuscany/sca/assembly/xml/assembly-xml-validation-messages.properties b/sca-java-2.x/trunk/modules/assembly-xml/src/main/resources/org/apache/tuscany/sca/assembly/xml/assembly-xml-validation-messages.properties index ba0137c85c..a50e7d347f 100644 --- a/sca-java-2.x/trunk/modules/assembly-xml/src/main/resources/org/apache/tuscany/sca/assembly/xml/assembly-xml-validation-messages.properties +++ b/sca-java-2.x/trunk/modules/assembly-xml/src/main/resources/org/apache/tuscany/sca/assembly/xml/assembly-xml-validation-messages.properties @@ -30,3 +30,10 @@ ContributionWriteException = ContributionWriteException occured due to : {0} XMLStreamException = XMLStreamException occured due to : {0} DuplicateCompositeName = [ASM_6001] More than one composite with the same name {0} found in contribution {1} PropertyTypeNotFound = The type {0} specified on property {1} of {2} can''t be found in any loaded contribution (makes sure the .xsd file is in a contribution, that the contribution is being loaded and that contribution imports and exports are correct) +BothTypeAndElementAttributeFound = [ASM40010,ASM60040] Error: property has both @type and @element attribute values +ValueAttributeForPropertyElement = ASM50033: value attribute exists for the property element {0} +NullURL = Request to read composite with uri or url NULL +ReadException = Exception reading +ProcessingComposite = Processing composite +LocalAttibuteMissmatch = [ASM60041] Error: Composite {0} can only include another composite with the identical @local attribute value +CompositeNotFound = [ASM60042] Error: Composite {0} is not a valid composite within the domain diff --git a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java index 302088082e..e296e8cee5 100644 --- a/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java +++ b/sca-java-2.x/trunk/modules/binding-ws/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java @@ -46,6 +46,7 @@ import org.apache.tuscany.sca.assembly.Callback; import org.apache.tuscany.sca.assembly.Extensible; import org.apache.tuscany.sca.assembly.Extension; import org.apache.tuscany.sca.assembly.Reference; +import org.apache.tuscany.sca.assembly.xml.Messages; import org.apache.tuscany.sca.assembly.xml.PolicySubjectProcessor; import org.apache.tuscany.sca.binding.ws.WebServiceBinding; import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory; @@ -312,7 +313,11 @@ public class WebServiceBindingProcessor extends BaseStAXArtifactProcessor implem if (END_POINT_REFERENCE.equals(reader.getName().getLocalPart())) { if (wsdlElement != null && (wsdlElementIsBinding == null || !wsdlElementIsBinding)) { error(monitor, "MustUseWsdlBinding", reader, wsdlElement); - throw new ContributionReadException(wsdlElement + " must use wsdl.binding when using wsa:EndpointReference"); + String message = context.getMonitor().getMessageString(WebServiceBindingProcessor.class.getName(), + "binding-wsxml-validation-messages", + "MustUseWsdlBinding"); + message = message.replace("{0}", wsdlElement); + throw new ContributionReadException(message); } wsBinding.setEndPointReference(EndPointReferenceHelper.readEndPointReference(reader)); diff --git a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java index cd8115d201..536534b743 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java +++ b/sca-java-2.x/trunk/modules/core/src/main/java/org/apache/tuscany/sca/core/runtime/impl/EndpointReferenceBinderImpl.java @@ -42,6 +42,7 @@ import org.apache.tuscany.sca.assembly.builder.BuilderContext; import org.apache.tuscany.sca.assembly.builder.BuilderExtensionPoint; import org.apache.tuscany.sca.assembly.builder.CompositeBuilder; import org.apache.tuscany.sca.assembly.builder.PolicyBuilder; +import org.apache.tuscany.sca.assembly.xml.Messages; import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.FactoryExtensionPoint; import org.apache.tuscany.sca.core.UtilityExtensionPoint; @@ -211,8 +212,8 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { "endpoint-validation-messages", "NoComponentReferenceTarget", endpointReference.getReference().getName()); - throw new ServiceRuntimeException("Unable to bind " + - monitor.getLastProblem().toString()); + //throw new ServiceRuntimeException("Unable to bind " + + // monitor.getLastProblem().toString()); } } @@ -295,7 +296,10 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { "endpoint-validation-messages", "NoEndpointsFound", endpointReference.toString()); - throw new ServiceRuntimeException("Unable to bind " + + throw new ServiceRuntimeException(monitor.getMessageString(EndpointReferenceBinderImpl.class.getName(), + "endpoint-validation-messages", + "UnableToBind") + + " " + monitor.getLastProblem().toString()); } } @@ -318,7 +322,10 @@ public class EndpointReferenceBinderImpl implements EndpointReferenceBinder { "EndpointReferenceCantBeMatched", endpointReference.toString(), matchAudit); - throw new ServiceRuntimeException("Unable to bind " + + throw new ServiceRuntimeException(monitor.getMessageString(EndpointReferenceBinderImpl.class.getName(), + "endpoint-validation-messages", + "UnableToBind") + + " " + monitor.getLastProblem().toString()); } else { Monitor.warning(monitor, diff --git a/sca-java-2.x/trunk/modules/core/src/main/resources/endpoint-validation-messages.properties b/sca-java-2.x/trunk/modules/core/src/main/resources/endpoint-validation-messages.properties index f300010bd4..121baddf5c 100644 --- a/sca-java-2.x/trunk/modules/core/src/main/resources/endpoint-validation-messages.properties +++ b/sca-java-2.x/trunk/modules/core/src/main/resources/endpoint-validation-messages.properties @@ -22,4 +22,5 @@ NoEndpointsFound = No endpoints found in the domain that match the reference {0} EndpointReferenceCantBeMatched = Unable to match the endpoint reference {0} with the policy of the service to which it refers, matching process was {1} # Single quote (we'll) needs to be escaped as we''ll ComponentReferenceTargetNotFound = Component reference target not found at deployment time, it might be a remote service elsewhere in the SCA Domain so we''ll try and resolve it again at runtime: {0} -TooManyTargetServices = [ASM60048] A component reference {0} with only the target component service name specified {1} matches more than one service \ No newline at end of file +TooManyTargetServices = [ASM60048] A component reference {0} with only the target component service name specified {1} matches more than one service +UnableToBind = Unable to bind \ No newline at end of file diff --git a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/XSDDataTypeConverter.java b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/XSDDataTypeConverter.java index 0664902feb..aeb63ce02f 100644 --- a/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/XSDDataTypeConverter.java +++ b/sca-java-2.x/trunk/modules/databinding/src/main/java/org/apache/tuscany/sca/databinding/impl/XSDDataTypeConverter.java @@ -29,6 +29,7 @@ import java.text.Format; import java.text.ParsePosition; import java.util.Calendar; import java.util.TimeZone; +import java.util.logging.Logger; import javax.xml.XMLConstants; import javax.xml.datatype.DatatypeConfigurationException; @@ -44,6 +45,8 @@ import javax.xml.namespace.QName; * @tuscany.spi.extension.asclient */ public class XSDDataTypeConverter { + private static final Logger logger = Logger.getLogger(XSDDataTypeConverter.class.getName(), + "org.apache.tuscany.sca.databinding.databinding-validation-messages"); /** * * @tuscany.spi.extension.asclient @@ -192,7 +195,7 @@ public class XSDDataTypeConverter { obuf[wp] = (byte) (b2 << 6 & 0xc0 | b3 & 0x3f); return 3; default: - throw new IllegalArgumentException("The character sequence is not base64 encoded."); + throw new IllegalArgumentException(logger.getResourceBundle().getString("NotBase64Encoded")); } } @@ -338,7 +341,7 @@ public class XSDDataTypeConverter { */ public static byte[] decode(String pValue) { if ((pValue.length() % 2) != 0) { - throw new IllegalArgumentException("A HexBinary string must have even length."); + throw new IllegalArgumentException(logger.getResourceBundle().getString("HexBinaryUnevenLength")); } byte[] result = new byte[pValue.length() / 2]; int j = 0; @@ -354,7 +357,7 @@ public class XSDDataTypeConverter { } else if (c >= 'a' && c <= 'f') { b = (byte) ((c - 'a' + 10) << 4); } else { - throw new IllegalArgumentException("Invalid hex digit: " + c); + throw new IllegalArgumentException(logger.getResourceBundle().getString("InvalidHexDigit") + " " + c); } if (d >= '0' && d <= '9') { b += (byte) (d - '0'); @@ -363,7 +366,7 @@ public class XSDDataTypeConverter { } else if (d >= 'a' && d <= 'f') { b += (byte) (d - 'a' + 10); } else { - throw new IllegalArgumentException("Invalid hex digit: " + d); + throw new IllegalArgumentException(logger.getResourceBundle().getString("InvalidHexDigit") + " " + d); } result[j++] = b; } @@ -718,8 +721,10 @@ public class XSDDataTypeConverter { ParsePosition pos = new ParsePosition(0); Calendar cal = (Calendar) format.parseObject(value, pos); if (cal == null) { - throw new IllegalArgumentException("Failed to parse date " + value + " at:" - + value.substring(pos.getErrorIndex())); + String message = logger.getResourceBundle().getString("BadDate"); + message = message.replace("{0}", value); + message = message.replace("{1}", value.substring(pos.getErrorIndex())); + throw new IllegalArgumentException(message); } return cal; } @@ -729,8 +734,10 @@ public class XSDDataTypeConverter { ParsePosition pos = new ParsePosition(0); Calendar cal = (Calendar) format.parseObject(value, pos); if (cal == null) { - throw new IllegalArgumentException("Failed to parse dateTime " + value + " at:" - + value.substring(pos.getErrorIndex())); + String message = logger.getResourceBundle().getString("BadDateTime"); + message = message.replace("{0}", value); + message = message.replace("{1}", value.substring(pos.getErrorIndex())); + throw new IllegalArgumentException(message); } return cal; } @@ -799,18 +806,21 @@ public class XSDDataTypeConverter { // Should not happen, indicates an error in the // NamespaceContext // implementation - throw new IllegalArgumentException("The default prefix is not bound."); + throw new IllegalArgumentException(logger.getResourceBundle().getString("DefaultPrefixNotBound")); } break; case 0: - throw new IllegalArgumentException("Default prefix must be indicated by not using a colon: " - + value); + throw new IllegalArgumentException(logger.getResourceBundle().getString("NoColonForPrefix") + + " " + + value); default: String prefix = value.substring(0, offset); localName = value.substring(offset + 1); uri = context.getNamespaceURI(prefix); if (uri == null) { - throw new IllegalArgumentException("The prefix " + prefix + " is not bound."); + String message = logger.getResourceBundle().getString("PrefixNotBound"); + message = message.replace("{0}", prefix); + throw new IllegalArgumentException(message); } } return new QName(uri, localName); @@ -829,8 +839,10 @@ public class XSDDataTypeConverter { ParsePosition pos = new ParsePosition(0); Calendar cal = (Calendar) format.parseObject(value, pos); if (cal == null) { - throw new IllegalArgumentException("Failed to parse time " + value + " at:" - + value.substring(pos.getErrorIndex())); + String message = logger.getResourceBundle().getString("BadTime"); + message = message.replace("{0}", value); + message = message.replace("{1}", value.substring(pos.getErrorIndex())); + throw new IllegalArgumentException(message); } return cal; } @@ -838,12 +850,15 @@ public class XSDDataTypeConverter { public long parseUnsignedInt(String value) { long l = Long.parseLong(value); if (l < 0) { - throw new IllegalArgumentException("Failed to parse UnsignedInt " + value - + ": result is negative"); + String message = logger.getResourceBundle().getString("BadUnsignedIntNegative"); + message = message.replace("{0}", value); + throw new IllegalArgumentException(message); } if (l > MAX_UNSIGNED_INT) { - throw new IllegalArgumentException("Failed to parse UnsignedInt " + value - + ": result exceeds maximum value " + MAX_UNSIGNED_INT); + String message = logger.getResourceBundle().getString("BadUnsignedIntMax"); + message = message.replace("{0}", value); + message = message.replace("{1}", String.valueOf(MAX_UNSIGNED_INT)); + throw new IllegalArgumentException(message); } return l; } @@ -851,12 +866,15 @@ public class XSDDataTypeConverter { public int parseUnsignedShort(String value) { int i = Integer.parseInt(value); if (i < 0) { - throw new IllegalArgumentException("Failed to parse UnsignedShort " + value - + ": result is negative"); + String message = logger.getResourceBundle().getString("BadUnsignedShortNegative"); + message = message.replace("{0}", value); + throw new IllegalArgumentException(message); } if (i > MAX_UNSIGNED_SHORT) { - throw new IllegalArgumentException("Failed to parse UnsignedShort " + value - + ": result exceeds maximum value " + MAX_UNSIGNED_SHORT); + String message = logger.getResourceBundle().getString("BadUnsignedShortMax"); + message = message.replace("{0}", value); + message = message.replace("{1}", String.valueOf(MAX_UNSIGNED_SHORT)); + throw new IllegalArgumentException(message); } return i; } @@ -920,8 +938,9 @@ public class XSDDataTypeConverter { public String printQName(QName value, NamespaceContext context) { String prefix = context.getPrefix(value.getNamespaceURI()); if (prefix == null) { - throw new IllegalArgumentException("The namespace URI " + value.getNamespaceURI() - + " is not bound."); + String message = logger.getResourceBundle().getString("NamespaceNotBound"); + message = message.replace("{0}", value.getNamespaceURI()); + throw new IllegalArgumentException(message); } else if (XMLConstants.DEFAULT_NS_PREFIX.equals(prefix)) { return value.getLocalPart(); } else { diff --git a/sca-java-2.x/trunk/modules/databinding/src/main/resources/org/apache/tuscany/sca/databinding/databinding-validation-messages.properties b/sca-java-2.x/trunk/modules/databinding/src/main/resources/org/apache/tuscany/sca/databinding/databinding-validation-messages.properties new file mode 100644 index 0000000000..0697b8b346 --- /dev/null +++ b/sca-java-2.x/trunk/modules/databinding/src/main/resources/org/apache/tuscany/sca/databinding/databinding-validation-messages.properties @@ -0,0 +1,35 @@ +# +# +# 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. +# +# +NotBase64Encoded = The character sequence is not base64 encoded +HexBinaryUnevenLength = A HexBinary string must have even length +InvalidHexDigit = Invalid hex digit: +BadDate = Failed to parse date {0} at {1} +BadDateTime = Failed to parse dateTime {0} at {1} +DefaultPrefixNotBound = The default prefix is not bound +NoColonForPrefix = Default prefix must be indicated by not using a colon: +PrefixNotBound = The prefix {0} is not bound. +BadTime = Failed to parse time {0} at {1} +BadUnsignedIntNegative = Failed to parse UnsignedInt {0} result is negative" +BadUnsignedIntMax = "Failed to parse UnsignedInt {0} result exceeds maximum value {1} +BadUnsignedShortNegative = Failed to parse UnsignedShort {0} result is negative" +BadUnsignedShortMax = "Failed to parse UnsignedShort {0} result exceeds maximum value {1} +NamespaceNotBound = The namespace URI {0} is not bound + diff --git a/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceFactory.java b/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceFactory.java index f5d9860130..967820abe7 100644 --- a/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceFactory.java +++ b/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/context/ReflectiveInstanceFactory.java @@ -20,10 +20,12 @@ package org.apache.tuscany.sca.implementation.java.context; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.util.logging.Logger; import org.apache.tuscany.sca.core.factory.InstanceWrapper; import org.apache.tuscany.sca.core.factory.ObjectCreationException; import org.apache.tuscany.sca.core.factory.ObjectFactory; +import org.apache.tuscany.sca.databinding.impl.XSDDataTypeConverter; import org.apache.tuscany.sca.implementation.java.injection.Injector; import org.apache.tuscany.sca.implementation.java.invocation.EventInvoker; @@ -31,6 +33,9 @@ import org.apache.tuscany.sca.implementation.java.invocation.EventInvoker; * @version $Rev$ $Date$ */ public class ReflectiveInstanceFactory implements InstanceFactory { + private static final Logger logger = Logger.getLogger(ReflectiveInstanceFactory.class.getName(), + "org.apache.tuscany.sca.implementation.java.runtime.implementation-java-runtime-validation-messages"); + private final Constructor ctr; private final ObjectFactory[] ctrArgs; private final Injector[] injectors; @@ -66,14 +71,19 @@ public class ReflectiveInstanceFactory implements InstanceFactory { } } catch (InstantiationException e) { String name = ctr.getDeclaringClass().getName(); - throw new AssertionError("Class is not instantiable [" + name + "]"); + String message = logger.getResourceBundle().getString("ClassNoInstantiable"); + message = message.replace("{0}", name); + throw new AssertionError(message); } catch (IllegalAccessException e) { String name = ctr.getName(); - throw new AssertionError("Constructor is not accessible [" + name + "]"); - } catch ( - InvocationTargetException e) { + String message = logger.getResourceBundle().getString("ConstructorNotAccessible"); + message = message.replace("{0}", name); + throw new AssertionError(message); + } catch (InvocationTargetException e) { String name = ctr.getName(); - throw new ObjectCreationException("Exception thrown by constructor: " + name, e); + String message = logger.getResourceBundle().getString("ConstructorException"); + message = message.replace("{0}", name); + throw new ObjectCreationException(message, e); } if (injectors != null) { @@ -86,7 +96,9 @@ public class ReflectiveInstanceFactory implements InstanceFactory { if (destroyInvoker != null) { destroyInvoker.invokeEvent(instance); } - throw new ObjectCreationException("Exception invoking injector - " + e.getMessage(), e); + String message = logger.getResourceBundle().getString("InjectorException"); + message = message.replace("{0}", e.getMessage()); + throw new ObjectCreationException(message, e); } } } diff --git a/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/resources/org/apache/tuscany/sca/implementation/java/runtime/implementation-java-runtime-validation-messages.properties b/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/resources/org/apache/tuscany/sca/implementation/java/runtime/implementation-java-runtime-validation-messages.properties new file mode 100644 index 0000000000..e7604d0858 --- /dev/null +++ b/sca-java-2.x/trunk/modules/implementation-java-runtime/src/main/resources/org/apache/tuscany/sca/implementation/java/runtime/implementation-java-runtime-validation-messages.properties @@ -0,0 +1,26 @@ +# +# +# 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. +# +# +ClassNoInstantiable = Class is not instantiable [{0}] +ConstructorNotAccessible = Constructor is not accessible [{0}] +ConstructorException = Exception thrown by constructor: {0} +InjectorException = Exception invoking injector: {0} + + diff --git a/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java b/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java index b321b0d5de..ed5fe421e2 100644 --- a/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java +++ b/sca-java-2.x/trunk/modules/interface-java/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java @@ -33,6 +33,7 @@ import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import javax.xml.ws.WebServiceClient; +import org.apache.tuscany.sca.assembly.xml.Messages; import org.apache.tuscany.sca.assembly.xml.PolicySubjectProcessor; import org.apache.tuscany.sca.contribution.processor.ContributionReadException; import org.apache.tuscany.sca.contribution.processor.ContributionResolveException; @@ -233,13 +234,18 @@ public class JavaInterfaceProcessor implements StAXArtifactProcessor