You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2006/12/16 21:32:20 UTC

svn commit: r487877 [1/3] - in /incubator/tuscany/java/sca: kernel/api/src/main/java/org/apache/tuscany/api/ kernel/api/src/test/java/org/apache/tuscany/api/ kernel/core/src/main/java/org/apache/tuscany/core/builder/ kernel/core/src/main/java/org/apach...

Author: jmarino
Date: Sat Dec 16 12:32:16 2006
New Revision: 487877

URL: http://svn.apache.org/viewvc?view=rev&rev=487877
Log:
refactor builder exceptions, making them checked and introducing stronger typing; introduce recursive exception formatting so nested builder exception data is displayed

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java   (contents, props changed)
      - copied, changed from r487433, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/NoRegisteredBuilderException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java   (contents, props changed)
      - copied, changed from r487433, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ReferenceTargetNotFoundException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java   (contents, props changed)
      - copied, changed from r487433, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentInitException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatter.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IllegalCallbackExceptionTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IncompatibleInterfacesExceptionTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InvalidTargetTypeExceptionTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/TargetServiceNotFoundExceptionTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WiringExceptionFormatterTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingWireTargetException.java   (contents, props changed)
      - copied, changed from r487433, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingTargetException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WiringException.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java   (with props)
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java   (with props)
Removed:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderNotFoundException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ReferenceTargetNotFoundException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentInitException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/InvalidTargetTypeException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingTargetException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/NoRegisteredBuilderException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/PostProcessingException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireException.java
Modified:
    incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyException.java
    incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyRuntimeException.java
    incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyExceptionTestCase.java
    incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyRuntimeExceptionTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/LauncherImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/LoaderExceptionFormatter.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatter.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/extension/AbstractExtensionDeployer.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java
    incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/formatters.scdl
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplSystemWireTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/LoaderExceptionFormatterTestCase.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/JavaLoggingTestCase.java
    incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/ExceptionFormatter.java
    incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/FormatterRegistry.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/ComponentBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Connector.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/AbstractSCAObject.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentRuntimeException.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/Deployer.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/IncompatibleServiceContractException.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java
    incubator/tuscany/java/sca/runtime/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2BindingBuilder.java
    incubator/tuscany/java/sca/services/bindings/binding.axis2/src/main/java/org/apache/tuscany/binding/axis2/Axis2Service.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixReference.java
    incubator/tuscany/java/sca/services/bindings/binding.celtix/src/main/java/org/apache/tuscany/binding/celtix/CeltixService.java
    incubator/tuscany/java/sca/services/containers/container.script/src/test/java/org/apache/tuscany/container/script/ScriptComponentBuilderTestCase.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
    incubator/tuscany/java/sca/services/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java
    incubator/tuscany/java/sca/services/persistence/datasource/src/test/java/org/apache/tuscany/persistence/datasource/DataSourceBuilderTestCase.java
    incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java

Modified: incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyException.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyException.java (original)
+++ incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyException.java Sat Dec 16 12:32:16 2006
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.io.PrintWriter;
 
 /**
  * The root checked exception for the Tuscany runtime.
@@ -134,29 +135,29 @@
         return identifier;
     }
 
-    public StringBuilder appendBaseMessage(StringBuilder b) {
+    public PrintWriter appendBaseMessage(PrintWriter writer) {
         if (identifier == null && contextStack == null) {
             if (super.getMessage() == null) {
-                return b;
+                return writer;
             }
-            return b.append(super.getMessage());
+            return writer.append(super.getMessage());
         }
         if (super.getMessage() != null) {
-            b.append(super.getMessage());
+            writer.append(super.getMessage());
         }
         if (identifier != null) {
-            b.append(" [").append(identifier).append(']');
+            writer.append(" [").append(identifier).append(']');
         }
-        return b;
+        return writer;
     }
 
-    public StringBuilder appendContextStack(StringBuilder b) {
+    public PrintWriter appendContextStack(PrintWriter writer) {
         if (contextStack != null) {
-            b.append("Context stack trace: ");
+            writer.append("\nContext stack trace: ");
             for (int i = contextStack.size() - 1; i >= 0; i--) {
-                b.append('[').append(contextStack.get(i)).append(']');
+                writer.append('[').append(contextStack.get(i)).append(']');
             }
         }
-        return b;
+        return writer;
     }
 }

Modified: incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyRuntimeException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyRuntimeException.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyRuntimeException.java (original)
+++ incubator/tuscany/java/sca/kernel/api/src/main/java/org/apache/tuscany/api/TuscanyRuntimeException.java Sat Dec 16 12:32:16 2006
@@ -20,6 +20,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.io.PrintWriter;
 
 /**
  * The root unchecked exception for the Tuscany runtime.
@@ -137,30 +138,30 @@
         return identifier;
     }
 
-    public StringBuilder appendBaseMessage(StringBuilder b) {
+    public PrintWriter appendBaseMessage(PrintWriter writer) {
         if (identifier == null && contextStack == null) {
             if (super.getMessage() == null) {
-                return b;
+                return writer;
             }
-            return b.append(super.getMessage());
+            return writer.append(super.getMessage());
         }
         if (super.getMessage() != null) {
-            b.append(super.getMessage());
+            writer.append(super.getMessage());
         }
         if (identifier != null) {
-            b.append(" [").append(identifier).append(']');
+            writer.append(" [").append(identifier).append(']');
         }
-        return b;
+        return writer;
     }
 
-    public StringBuilder appendContextStack(StringBuilder b) {
+    public PrintWriter appendContextStack(PrintWriter writer) {
         if (contextStack != null) {
-            b.append("Context stack trace: ");
+            writer.append("Context stack trace: ");
             for (int i = contextStack.size() - 1; i >= 0; i--) {
-                b.append('[').append(contextStack.get(i)).append(']');
+                writer.append('[').append(contextStack.get(i)).append(']');
             }
         }
-        return b;
+        return writer;
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyExceptionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyExceptionTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyExceptionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyExceptionTestCase.java Sat Dec 16 12:32:16 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.api;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -51,14 +53,18 @@
 
     public void testAppendBaseMessage() {
         TuscanyException ex = new DummyException(MESSAGE, IDENTIFIER);
-        StringBuilder b = new StringBuilder();
-        assertEquals("Message [IDENTIFIER]", ex.appendBaseMessage(b).toString());
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        ex.appendBaseMessage(pw);
+        assertEquals("Message [IDENTIFIER]", writer.toString());
     }
 
     public void testAppendBaseMessageNoIdentifier() {
         TuscanyException ex = new DummyException(MESSAGE);
-        StringBuilder b = new StringBuilder();
-        assertEquals("Message", ex.appendBaseMessage(b).toString());
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        ex.appendBaseMessage(pw);
+        assertEquals("Message", writer.toString());
     }
 
     public void testThrowableConstructor() {
@@ -92,8 +98,10 @@
         TuscanyException ex = new DummyException(MESSAGE);
         ex.addContextName(CONTEXT1);
         ex.addContextName(CONTEXT2);
-        StringBuilder b = new StringBuilder();
-        assertEquals("Context stack trace: [CONTEXT2][CONTEXT1]", ex.appendContextStack(b).toString());
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        ex.appendContextStack(pw);
+        assertEquals("\nContext stack trace: [CONTEXT2][CONTEXT1]", writer.toString());
     }
 
     public void testAddContext() throws Exception {

Modified: incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyRuntimeExceptionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyRuntimeExceptionTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyRuntimeExceptionTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/api/src/test/java/org/apache/tuscany/api/TuscanyRuntimeExceptionTestCase.java Sat Dec 16 12:32:16 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.api;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -85,20 +87,26 @@
         TuscanyRuntimeException ex = new DummyException(MESSAGE);
         ex.addContextName(CONTEXT1);
         ex.addContextName(CONTEXT2);
-        StringBuilder b = new StringBuilder();
-        assertEquals("Context stack trace: [CONTEXT2][CONTEXT1]", ex.appendContextStack(b).toString());
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        ex.appendContextStack(pw);
+        assertEquals("Context stack trace: [CONTEXT2][CONTEXT1]", writer.toString());
     }
 
     public void testAppendBaseMessage() {
         TuscanyRuntimeException ex = new DummyException(MESSAGE, IDENTIFIER);
-        StringBuilder b = new StringBuilder();
-        assertEquals("Message [IDENTIFIER]", ex.appendBaseMessage(b).toString());
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        ex.appendBaseMessage(pw);
+        assertEquals("Message [IDENTIFIER]", writer.toString());
     }
 
     public void testAppendBaseMessageNoIdentifier() {
         TuscanyRuntimeException ex = new DummyException(MESSAGE);
-        StringBuilder b = new StringBuilder();
-        assertEquals("Message", ex.appendBaseMessage(b).toString());
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        ex.appendBaseMessage(pw);
+        assertEquals("Message", writer.toString());
     }
 
     public static class DummyException extends TuscanyRuntimeException {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Sat Dec 16 12:32:16 2006
@@ -29,9 +29,9 @@
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
 import org.apache.tuscany.spi.builder.BindlessBuilder;
+import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.builder.ComponentBuilder;
-import org.apache.tuscany.spi.builder.NoRegisteredBuilderException;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
@@ -60,7 +60,6 @@
  */
 @Scope("MODULE")
 public class BuilderRegistryImpl implements BuilderRegistry {
-
     protected WireService wireService;
     protected ScopeRegistry scopeRegistry;
 
@@ -130,49 +129,69 @@
     @SuppressWarnings("unchecked")
     public <I extends Implementation<?>> Component build(CompositeComponent parent,
                                                          ComponentDefinition<I> componentDefinition,
-                                                         DeploymentContext deploymentContext) {
+                                                         DeploymentContext deploymentContext) throws BuilderException {
         Class<?> implClass = componentDefinition.getImplementation().getClass();
         ComponentBuilder<I> componentBuilder = (ComponentBuilder<I>) componentBuilders.get(implClass);
-        if (componentBuilder == null) {
-            String name = implClass.getName();
-            throw new BuilderNotFoundException("No builder registered for implementation", name);
-        }
+        try {
+            if (componentBuilder == null) {
+                String name = implClass.getName();
+                throw new NoRegisteredBuilderException("No builder registered for implementation", name);
+            }
 
-        Component component = componentBuilder.build(parent, componentDefinition, deploymentContext);
-        ComponentType<?, ?, ?> componentType = componentDefinition.getImplementation().getComponentType();
-        assert componentType != null : "Component type must be set";
-        // create wires for the component
-        if (wireService != null && !(component instanceof SystemAtomicComponent)) {
-            wireService.createWires(component, componentDefinition);
+            Component component = componentBuilder.build(parent, componentDefinition, deploymentContext);
+            ComponentType<?, ?, ?> componentType = componentDefinition.getImplementation().getComponentType();
+            assert componentType != null : "Component type must be set";
+            // create wires for the component
+            if (wireService != null && !(component instanceof SystemAtomicComponent)) {
+                wireService.createWires(component, componentDefinition);
+            }
+            return component;
+        } catch (BuilderException e) {
+            e.addContextName(componentDefinition.getName());
+            e.addContextName(parent.getName());
+            throw e;
         }
-        return component;
     }
 
     @SuppressWarnings("unchecked")
     public <B extends Binding> SCAObject build(CompositeComponent parent,
                                                BoundServiceDefinition<B> boundServiceDefinition,
-                                               DeploymentContext deploymentContext) {
+                                               DeploymentContext deploymentContext) throws BuilderException {
         Class<?> bindingClass = boundServiceDefinition.getBinding().getClass();
         BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
-        if (bindingBuilder == null) {
-            throw new NoRegisteredBuilderException(bindingClass.getName());
-        }
-        SCAObject object = bindingBuilder.build(parent, boundServiceDefinition, deploymentContext);
-        if (wireService != null && !(object instanceof SystemService)) {
-            String path = boundServiceDefinition.getTarget().getPath();
-            ServiceContract<?> contract = boundServiceDefinition.getServiceContract();
-            wireService.createWires((Service) object, path, contract);
+        try {
+            if (bindingBuilder == null) {
+                throw new NoRegisteredBuilderException("No builder registered for type", bindingClass.getName());
+            }
+            SCAObject object = bindingBuilder.build(parent, boundServiceDefinition, deploymentContext);
+            if (wireService != null && !(object instanceof SystemService)) {
+                String path = boundServiceDefinition.getTarget().getPath();
+                ServiceContract<?> contract = boundServiceDefinition.getServiceContract();
+                wireService.createWires((Service) object, path, contract);
+            }
+            return object;
+        } catch (BuilderException e) {
+            e.addContextName(boundServiceDefinition.getName());
+            e.addContextName(parent.getName());
+            throw e;
         }
-        return object;
+
     }
 
     @SuppressWarnings("unchecked")
     public <B extends Binding> SCAObject build(CompositeComponent parent,
                                                BoundReferenceDefinition<B> boundReferenceDefinition,
-                                               DeploymentContext deploymentContext) {
+                                               DeploymentContext deploymentContext) throws BuilderException {
         Class<B> bindingClass = (Class<B>) boundReferenceDefinition.getBinding().getClass();
         BindingBuilder<B> bindingBuilder = (BindingBuilder<B>) bindingBuilders.get(bindingClass);
-        SCAObject object = bindingBuilder.build(parent, boundReferenceDefinition, deploymentContext);
+        SCAObject object = null;
+        try {
+            object = bindingBuilder.build(parent, boundReferenceDefinition, deploymentContext);
+        } catch (BuilderException e) {
+            e.addContextName(boundReferenceDefinition.getName());
+            e.addContextName(parent.getName());
+            throw e;
+        }
         // create wires for the component
         if (wireService != null) {
             wireService.createWires((Reference) object, boundReferenceDefinition.getServiceContract());

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Sat Dec 16 12:32:16 2006
@@ -25,8 +25,8 @@
 
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.annotation.Autowire;
-import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.Connector;
+import org.apache.tuscany.spi.builder.WiringException;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
@@ -80,7 +80,7 @@
         this.workContext = workContext;
     }
 
-    public void connect(SCAObject source) {
+    public void connect(SCAObject source) throws WiringException {
         CompositeComponent parent = source.getParent();
         if (source instanceof AtomicComponent) {
             AtomicComponent sourceComponent = (AtomicComponent) source;
@@ -98,7 +98,7 @@
                             target = parent.getChild(outboundWire.getTargetName().getPartName());
                         }
                         connect(sourceComponent, outboundWire, target);
-                    } catch (BuilderConfigException e) {
+                    } catch (WiringException e) {
                         e.addContextName(source.getName());
                         e.addContextName(parent.getName());
                         throw e;
@@ -148,10 +148,10 @@
             OutboundWire outboundWire = service.getOutboundWire();
             // For a composite reference only, since its outbound wire comes from its parent composite,
             // the corresponding target would not lie in its parent but rather in its parent's parent
-            if (source instanceof CompositeReference) {
-                parent = parent.getParent();
-                assert parent != null : "Parent of parent was null";
-            }
+//            if (source instanceof CompositeReference) {
+//                parent = parent.getParent();
+//                assert parent != null : "Parent of parent was null";
+//            }
             SCAObject target;
             if (service.isSystem()) {
                 target = parent.getSystemChild(outboundWire.getTargetName().getPartName());
@@ -169,7 +169,7 @@
     }
 
     public void connect(InboundWire sourceWire, OutboundWire targetWire, boolean optimizable)
-        throws BuilderConfigException {
+        throws WiringException {
         Map<Operation<?>, OutboundInvocationChain> targetChains = targetWire.getInvocationChains();
         // perform optimization, if possible
         if (optimizable && sourceWire.getInvocationChains().isEmpty() && targetChains.isEmpty()) {
@@ -184,9 +184,16 @@
             // match wire chains
             OutboundInvocationChain outboundChain = targetChains.get(inboundChain.getOperation());
             if (outboundChain == null) {
-                // FIXME JFM
+                // FIXME JFM    -------
                 String serviceName = sourceWire.getServiceName();
-                throw new BuilderConfigException("Incompatible source and target interfaces", serviceName);
+                String sourceName = sourceWire.getContainer().getName();
+                String refName = targetWire.getReferenceName();
+                String targetName = targetWire.getContainer().getName();
+                throw new IncompatibleInterfacesException("Incompatible source and target interfaces",
+                    sourceName,
+                    refName,
+                    targetName,
+                    serviceName);
             }
             connect(inboundChain, outboundChain);
         }
@@ -203,7 +210,8 @@
      * @param targetWire  the target wire to connect to
      * @param optimizable true if the wire connection can be optimized
      */
-    public void connect(OutboundWire sourceWire, InboundWire targetWire, boolean optimizable) {
+    public void connect(OutboundWire sourceWire, InboundWire targetWire, boolean optimizable)
+        throws IncompatibleInterfacesException, IllegalCallbackException {
         SCAObject source = sourceWire.getContainer();
         SCAObject target = targetWire.getContainer();
         ServiceContract contract = sourceWire.getServiceContract();
@@ -224,15 +232,30 @@
             Operation<?> operation = outboundChain.getOperation();
             InboundInvocationChain inboundChain = targetChains.get(operation);
             if (inboundChain == null) {
-                String name = sourceWire.getReferenceName();
-                // FIXME JFM
-                throw new BuilderConfigException("Incompatible source and target interfaces for reference", name);
+                String sourceName = sourceWire.getContainer().getName();
+                String refName = sourceWire.getReferenceName();
+                String targetName = targetWire.getContainer().getName();
+                String serviceName = targetWire.getServiceName();
+                throw new IncompatibleInterfacesException("Incompatible interfaces",
+                    sourceName,
+                    refName,
+                    targetName,
+                    serviceName);
             }
             Operation<?> inboundOperation = inboundChain.getOperation();
             boolean isOneWayOperation = operation.isNonBlocking();
             boolean operationHasCallback = contract.getCallbackName() != null;
             if (isOneWayOperation && operationHasCallback) {
-                throw new BuilderConfigException("Operation cannot be marked one-way and have a callback");
+                String sourceName = sourceWire.getContainer().getName();
+                String refName = sourceWire.getReferenceName();
+                String targetName = targetWire.getContainer().getName();
+                String serviceName = targetWire.getServiceName();
+                throw new IllegalCallbackException("Operation cannot be marked one-way and have a callback",
+                    inboundOperation.getName(),
+                    sourceName,
+                    refName,
+                    targetName,
+                    serviceName);
             }
             TargetInvoker invoker = null;
             if (target instanceof Component) {
@@ -274,11 +297,17 @@
         for (InboundInvocationChain inboundChain : sourceWire.getTargetCallbackInvocationChains().values()) {
             Operation<?> operation = inboundChain.getOperation();
             if (sourceCallbackChains != null && sourceCallbackChains.get(operation) != null) {
-                String name = operation.getName();
-                // FIXME JFM
+                String opName = operation.getName();
+                String sourceName = sourceWire.getContainer().getName();
                 String refName = sourceWire.getReferenceName();
-                throw new BuilderConfigException("Source callback chain should not exist for operation [" + name + "]",
-                    refName);
+                String targetName = targetWire.getContainer().getName();
+                String serviceName = targetWire.getServiceName();
+                throw new IllegalCallbackException("Source callback chain should not exist for operation",
+                    opName,
+                    sourceName,
+                    refName,
+                    targetName,
+                    serviceName);
             }
 
             Operation targetOp =
@@ -320,10 +349,7 @@
                  TargetInvoker invoker,
                  boolean nonBlocking) {
         Interceptor head = targetChain.getHeadInterceptor();
-        if (head == null) {
-            String name = targetChain.getOperation().getName();
-            throw new BuilderConfigException("No interceptor for operation", name);
-        }
+        assert head != null;
         if (nonBlocking) {
             sourceChain.setTargetInterceptor(new NonBlockingBridgingInterceptor(scheduler, workContext, head));
         } else {
@@ -350,19 +376,22 @@
      * <code>AtomicComponent</code>s contained in the composite, or <code>References</code> of the composite.
      *
      * @param sourceWire
-     * @throws BuilderConfigException
+     * @throws WiringException
      */
-    private void connect(SCAObject source, OutboundWire sourceWire, SCAObject target) throws BuilderConfigException {
-        assert sourceWire.getTargetName() != null : "Wire target name was null";
+    private void connect(SCAObject source, OutboundWire sourceWire, SCAObject target) throws WiringException {
+        assert sourceWire.getTargetName() != null;
         QualifiedName targetName = sourceWire.getTargetName();
 
         if (target instanceof AtomicComponent) {
             AtomicComponent targetComponent = (AtomicComponent) target;
             InboundWire targetWire = targetComponent.getInboundWire(targetName.getPortName());
             if (targetWire == null) {
-                String refName = sourceWire.getReferenceName();
-                // FIXME JFM
-                throw new BuilderConfigException("No target service for reference " + refName,
+                String sourceName = sourceWire.getContainer().getName();
+                String sourceReference = sourceWire.getReferenceName();
+                throw new TargetServiceNotFoundException("Target service not found",
+                    sourceName,
+                    sourceReference,
+                    targetName.getPartName(),
                     targetName.getPortName());
             }
             checkIfWireable(sourceWire, targetWire);
@@ -411,34 +440,66 @@
                 }
             }
             if (targetWire == null) {
-                throw new BuilderConfigException("No target composite service in composite");
+                String sourceName = sourceWire.getContainer().getName();
+                String sourceReference = sourceWire.getReferenceName();
+                throw new TargetServiceNotFoundException("Target service not found",
+                    sourceName,
+                    sourceReference,
+                    targetName.getPartName(),
+                    targetName.getPortName());
             }
             boolean optimizable = isOptimizable(source.getScope(), target.getScope());
             connect(sourceWire, targetWire, optimizable);
         } else if (target == null) {
-            String name = sourceWire.getReferenceName();
-            throw new ReferenceTargetNotFoundException(name, targetName.getQualifiedName());
+            String sourceName = sourceWire.getContainer().getName();
+            String sourceReference = sourceWire.getReferenceName();
+            throw new TargetServiceNotFoundException("Target service not found",
+                sourceName,
+                sourceReference,
+                targetName.getPartName(),
+                targetName.getPortName());
         } else {
-            String name = sourceWire.getReferenceName();
-            // FIXME JFM
-            throw new BuilderConfigException("Invalid target type for reference " + name,
-                targetName.getQualifiedName());
+            String sourceName = sourceWire.getContainer().getName();
+            String sourceReference = sourceWire.getReferenceName();
+            throw new InvalidTargetTypeException("Invalid target type",
+                sourceName,
+                sourceReference,
+                targetName.getPartName(),
+                targetName.getPortName());
         }
     }
 
-    private void checkIfWireable(OutboundWire sourceWire, InboundWire targetWire) {
+    private void checkIfWireable(OutboundWire sourceWire, InboundWire targetWire)
+        throws IncompatibleInterfacesException {
         if (wireService == null) {
             Class<?> sourceInterface = sourceWire.getServiceContract().getInterfaceClass();
             Class<?> targetInterface = targetWire.getServiceContract().getInterfaceClass();
             if (!sourceInterface.isAssignableFrom(targetInterface)) {
-                throw new BuilderConfigException("Incompatible source and target interfaces");
+                String sourceName = sourceWire.getContainer().getName();
+                String refName = sourceWire.getReferenceName();
+                String targetName = targetWire.getContainer().getName();
+                String serviceName = targetWire.getServiceName();
+                throw new IncompatibleInterfacesException("Incompatible interfaces",
+                    sourceName,
+                    refName,
+                    targetName,
+                    serviceName);
             }
         } else {
             try {
-                wireService.checkCompatibility(sourceWire.getServiceContract(), targetWire
-                    .getServiceContract(), false);
+                ServiceContract sourceContract = sourceWire.getServiceContract();
+                ServiceContract targetContract = targetWire.getServiceContract();
+                wireService.checkCompatibility(sourceContract, targetContract, false);
             } catch (IncompatibleServiceContractException e) {
-                throw new BuilderConfigException("Incompatible source and target interfaces", e);
+                String sourceName = sourceWire.getContainer().getName();
+                String refName = sourceWire.getReferenceName();
+                String targetName = targetWire.getContainer().getName();
+                String serviceName = targetWire.getServiceName();
+                throw new IncompatibleInterfacesException("Incompatible interfaces",
+                    sourceName,
+                    refName,
+                    targetName,
+                    serviceName, e);
             }
         }
     }

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,42 @@
+/*
+ * 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.tuscany.core.builder;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+/**
+ * Denotes an illegal callback
+ *
+ * @version $Rev$ $Date$
+ */
+public class IllegalCallbackException extends WiringException {
+
+    public IllegalCallbackException(String message,
+                                    String identifier,
+                                    String sourceName,
+                                    String referenceName,
+                                    String targetName,
+                                    String serviceName) {
+        super(message, identifier);
+        setSourceName(sourceName);
+        setReferenceName(referenceName);
+        setTargetName(targetName);
+        setTargetServiceName(serviceName);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IllegalCallbackException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,54 @@
+/*
+ * 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.tuscany.core.builder;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+/**
+ * Denotes an attempt to wire incompatible interfaces
+ *
+ * @version $Rev$ $Date$
+ */
+public class IncompatibleInterfacesException extends WiringException {
+
+
+    public IncompatibleInterfacesException(String message,
+                                          String sourceName,
+                                          String referenceName,
+                                          String targetName,
+                                          String targetServiceName) {
+        super(message);
+        setSourceName(sourceName);
+        setReferenceName(referenceName);
+        setTargetName(targetName);
+        setTargetServiceName(targetServiceName);
+    }
+
+    public IncompatibleInterfacesException(String message, String sourceName,
+                                          String referenceName,
+                                          String targetName,
+                                          String serviceName,
+                                          Throwable cause) {
+        super(message, cause);
+        setSourceName(sourceName);
+        setReferenceName(referenceName);
+        setTargetName(targetName);
+        setTargetServiceName(serviceName);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/IncompatibleInterfacesException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,41 @@
+/*
+ * 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.tuscany.core.builder;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+/**
+ * Denotes an invalid target service for a wire
+ *
+ * @version $Rev$ $Date$
+ */
+public class InvalidTargetTypeException extends WiringException {
+
+    public InvalidTargetTypeException(String message,
+                                      String sourceName,
+                                      String referenceName,
+                                      String targetName,
+                                      String serviceName) {
+        super(message);
+        setSourceName(sourceName);
+        setReferenceName(referenceName);
+        setTargetName(targetName);
+        setTargetServiceName(serviceName);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/InvalidTargetTypeException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java (from r487433, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/NoRegisteredBuilderException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java?view=diff&rev=487877&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/NoRegisteredBuilderException.java&r1=487433&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/NoRegisteredBuilderException.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java Sat Dec 16 12:32:16 2006
@@ -16,7 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tuscany.spi.builder;
+package org.apache.tuscany.core.builder;
+
+import org.apache.tuscany.spi.builder.BuilderException;
 
 /**
  * Raised when a builder cannot be found for a SCDL entry type
@@ -24,18 +26,13 @@
  * @version $Rev$ $Date$
  */
 public class NoRegisteredBuilderException extends BuilderException {
-    public NoRegisteredBuilderException() {
+
+    public NoRegisteredBuilderException(String message, String identifier) {
+        super(message, identifier);
     }
 
     public NoRegisteredBuilderException(String message) {
         super(message);
     }
 
-    public NoRegisteredBuilderException(String message, Throwable cause) {
-        super(message, cause);
-    }
-
-    public NoRegisteredBuilderException(Throwable cause) {
-        super(cause);
-    }
 }

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/NoRegisteredBuilderException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java (from r487433, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ReferenceTargetNotFoundException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java?view=diff&rev=487877&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ReferenceTargetNotFoundException.java&r1=487433&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ReferenceTargetNotFoundException.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java Sat Dec 16 12:32:16 2006
@@ -18,22 +18,25 @@
  */
 package org.apache.tuscany.core.builder;
 
-import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.builder.WiringException;
 
 /**
  * Indicates the target service of a reference was not found
  *
  * @version $Rev$ $Date$
  */
-public class ReferenceTargetNotFoundException extends BuilderConfigException {
+public class TargetServiceNotFoundException extends WiringException {
 
-    public ReferenceTargetNotFoundException(String message) {
+    public TargetServiceNotFoundException(String message,
+                                      String sourceName,
+                                      String referenceName,
+                                      String targetName,
+                                      String serviceName) {
         super(message);
+        setSourceName(sourceName);
+        setReferenceName(referenceName);
+        setTargetName(targetName);
+        setTargetServiceName(serviceName);
     }
-
-    public ReferenceTargetNotFoundException(String message, String identifier) {
-        super(message, identifier);
-    }
-
 
 }

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/TargetServiceNotFoundException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,79 @@
+/*
+ * 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.tuscany.core.builder;
+
+import java.io.PrintWriter;
+
+import org.osoa.sca.annotations.Destroy;
+import org.osoa.sca.annotations.Init;
+
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.builder.WiringException;
+
+import org.apache.tuscany.host.monitor.ExceptionFormatter;
+import org.apache.tuscany.host.monitor.FormatterRegistry;
+
+/**
+ * Formats {@link WiringException}s
+ *
+ * @version $Rev$ $Date$
+ */
+public class WiringExceptionFormatter implements ExceptionFormatter {
+    private FormatterRegistry factory;
+
+    public WiringExceptionFormatter() {
+    }
+
+    public boolean canFormat(Class<?> type) {
+        return WiringException.class.isAssignableFrom(type);
+    }
+
+    @Autowire(required = false)
+    public void setRegistry(FormatterRegistry factory) {
+        this.factory = factory;
+    }
+
+    @Init(eager = true)
+    public void init() {
+        factory.register(this);
+    }
+
+    @Destroy
+    public void destroy() {
+        factory.unregister(this);
+    }
+
+    public PrintWriter write(PrintWriter writer, Throwable exception) {
+        assert exception instanceof WiringException;
+        WiringException e = (WiringException) exception;
+        e.appendBaseMessage(writer);
+        if (e.getReferenceName() != null) {
+            writer.write("\nSource : " + e.getSourceName() + "/" + e.getReferenceName());
+        } else {
+            writer.write("\nSource : " + e.getSourceName());
+        }
+        if (e.getTargetServiceName() != null) {
+            writer.write("\nTarget : " + e.getTargetName() + "/" + e.getTargetServiceName());
+        } else {
+            writer.write("\nTarget : " + e.getTargetName());
+        }
+        e.appendContextStack(writer).append("\n");
+        return writer;
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/WiringExceptionFormatter.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Sat Dec 16 12:32:16 2006
@@ -22,9 +22,11 @@
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.Builder;
+import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.PrepareException;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.deployer.Deployer;
@@ -68,17 +70,11 @@
     }
 
     public <I extends Implementation<?>> Component deploy(CompositeComponent parent,
-                                                             ComponentDefinition<I> componentDefinition)
-        throws LoaderException {
+                                                          ComponentDefinition<I> componentDefinition)
+        throws LoaderException, BuilderException, PrepareException {
         ScopeContainer moduleScope = new ModuleScopeContainer();
         DeploymentContext deploymentContext = new RootDeploymentContext(null, xmlFactory, moduleScope, null);
-        try {
-            load(parent, componentDefinition, deploymentContext);
-        } catch (LoaderException e) {
-            e.addContextName(componentDefinition.getName());
-            e.addContextName(parent.getName());
-            throw e;
-        }
+        load(parent, componentDefinition, deploymentContext);
         Component component = (Component) build(parent, componentDefinition, deploymentContext);
         if (component instanceof CompositeComponent) {
             CompositeComponent composite = (CompositeComponent) component;
@@ -111,8 +107,9 @@
      * @return the new runtime context
      */
     protected <I extends Implementation<?>> SCAObject build(CompositeComponent parent,
-                                                               ComponentDefinition<I> componentDefinition,
-                                                               DeploymentContext deploymentContext) {
+                                                            ComponentDefinition<I> componentDefinition,
+                                                            DeploymentContext deploymentContext)
+        throws BuilderException {
         return builder.build(parent, componentDefinition, deploymentContext);
     }
 

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/AbstractCompositeComponent.java Sat Dec 16 12:32:16 2006
@@ -18,6 +18,7 @@
  */
 package org.apache.tuscany.core.implementation.composite;
 
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -35,7 +36,6 @@
 import org.apache.tuscany.spi.wire.InboundWire;
 import org.apache.tuscany.spi.wire.TargetInvoker;
 
-import org.apache.tuscany.core.component.ComponentInitException;
 import org.apache.tuscany.core.component.event.CompositeStart;
 import org.apache.tuscany.core.component.event.CompositeStop;
 import org.apache.tuscany.core.implementation.system.component.SystemSingletonAtomicComponent;
@@ -63,7 +63,7 @@
     /**
      * @param name           the name of the SCA composite
      * @param parent         the SCA composite parent
-     * @param connector
+     * @param connector      the connector for fusing wires
      * @param propertyValues the values of this composite's Properties
      */
     public AbstractCompositeComponent(String name,
@@ -82,6 +82,11 @@
     public <S, I extends S> void registerJavaObject(String name, Class<S> service, I instance)
         throws ObjectRegistrationException {
         register(new SystemSingletonAtomicComponent<S, I>(name, this, service, instance));
+    }
+
+    public <S, I extends S> void registerJavaObject(String name, List<Class<?>> services, I instance)
+        throws ObjectRegistrationException {
+        register(new SystemSingletonAtomicComponent<S, I>(name, this, services, instance));
     }
 
     public void start() {

Copied: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java (from r487433, incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentInitException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java?view=diff&rev=487877&p1=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentInitException.java&r1=487433&p2=incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ComponentInitException.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java Sat Dec 16 12:32:16 2006
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.    
  */
-package org.apache.tuscany.core.component;
+package org.apache.tuscany.core.implementation.composite;
 
 import org.apache.tuscany.spi.component.ComponentRuntimeException;
 

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/ComponentInitException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/composite/CompositeBuilder.java Sat Dec 16 12:32:16 2006
@@ -21,7 +21,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.tuscany.spi.builder.BuilderConfigException;
+import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
@@ -46,7 +46,7 @@
 
     public Component build(CompositeComponent parent,
                            ComponentDefinition<CompositeImplementation> componentDefinition,
-                           DeploymentContext deploymentContext) throws BuilderConfigException {
+                           DeploymentContext deploymentContext) throws BuilderException {
         CompositeImplementation implementation = componentDefinition.getImplementation();
         CompositeComponentType<?, ?, ?> componentType = implementation.getComponentType();
 

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemBindingBuilder.java Sat Dec 16 12:32:16 2006
@@ -22,8 +22,8 @@
 
 import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BindingBuilder;
-import org.apache.tuscany.spi.builder.InvalidTargetTypeException;
-import org.apache.tuscany.spi.builder.MissingTargetException;
+import org.apache.tuscany.spi.builder.MissingWireTargetException;
+import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
@@ -44,6 +44,7 @@
 import org.apache.tuscany.core.implementation.system.wire.SystemOutboundAutowire;
 import org.apache.tuscany.core.implementation.system.wire.SystemOutboundWire;
 import org.apache.tuscany.core.implementation.system.wire.SystemOutboundWireImpl;
+import org.apache.tuscany.core.builder.InvalidTargetTypeException;
 
 /**
  * Creates {@link SystemService}s and {@link org.apache.tuscany.core.implementation.system.component.SystemReference}s
@@ -56,18 +57,23 @@
 
     public SystemService build(CompositeComponent parent,
                                BoundServiceDefinition<SystemBinding> definition,
-                               DeploymentContext deploymentContext) {
+                               DeploymentContext deploymentContext) throws BuilderException {
 
         URI uri = definition.getTarget();
         if (uri == null) {
-            throw new MissingTargetException("Target URI not specified", definition.getName());
+            throw new MissingWireTargetException("Target URI not specified", definition.getName());
         }
         QualifiedName targetName = new QualifiedName(uri.getPath());
-        SCAObject target = parent.getSystemChild(targetName.getPartName());
+        String targetComponentName = targetName.getPartName();
+        SCAObject target = parent.getSystemChild(targetComponentName);
         if (target == null) {
-            throw new MissingTargetException(targetName.toString());
+            throw new MissingWireTargetException(targetName.toString());
         } else if (!(target instanceof SystemAtomicComponent)) {
-            throw new InvalidTargetTypeException(targetName.toString());
+            throw new InvalidTargetTypeException("Target must be a system component",
+                definition.getName(),
+                null,
+                targetName.getPartName(),
+                null);
         }
         SystemAtomicComponent atomicComponent = (SystemAtomicComponent) target;
         Class<?> interfaze = definition.getServiceContract().getInterfaceClass();

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemCompositeBuilder.java Sat Dec 16 12:32:16 2006
@@ -21,7 +21,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.builder.Connector;
@@ -57,7 +56,7 @@
     @SuppressWarnings("unchecked")
     public Component build(CompositeComponent parent,
                            ComponentDefinition<SystemCompositeImplementation> componentDefinition,
-                           DeploymentContext deploymentContext) throws BuilderConfigException {
+                           DeploymentContext deploymentContext) throws BuilderException {
         SystemCompositeImplementation impl = componentDefinition.getImplementation();
         CompositeComponentType<?, ?, ?> componentType = impl.getComponentType();
         // create lists of all components and services in this composite

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/component/SystemSingletonAtomicComponent.java Sat Dec 16 12:32:16 2006
@@ -26,8 +26,8 @@
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.component.AbstractSCAObject;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
+import org.apache.tuscany.spi.component.TargetException;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.InboundWire;
@@ -50,6 +50,16 @@
         this.instance = instance;
         serviceInterfaces = new ArrayList<Class<?>>(1);
         serviceInterfaces.add(interfaze);
+    }
+
+
+    public SystemSingletonAtomicComponent(String name,
+                                          CompositeComponent parent,
+                                          List<Class<?>> serviceInterfaces,
+                                          T instance) {
+        super(name, parent);
+        this.instance = instance;
+        this.serviceInterfaces = serviceInterfaces;
     }
 
     public List<Class<?>> getServiceInterfaces() {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/LauncherImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/LauncherImpl.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/LauncherImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/launcher/LauncherImpl.java Sat Dec 16 12:32:16 2006
@@ -20,7 +20,8 @@
 
 import java.io.File;
 import java.net.URL;
-
+import java.util.ArrayList;
+import java.util.List;
 import javax.xml.stream.XMLInputFactory;
 
 import org.osoa.sca.CompositeContext;
@@ -40,6 +41,7 @@
 import org.apache.tuscany.host.Launcher;
 import org.apache.tuscany.host.MonitorFactory;
 import org.apache.tuscany.host.RuntimeInfo;
+import org.apache.tuscany.host.monitor.FormatterRegistry;
 
 /**
  * Basic launcher implementation.
@@ -50,7 +52,7 @@
     /**
      * A conventional META-INF based location for the system SCDL.
      *
-     * @see #bootRuntime(URL, MonitorFactory)
+     * @see #bootRuntime(URL,MonitorFactory)
      */
     public static final String METAINF_SYSTEM_SCDL_PATH = "META-INF/tuscany/system.scdl";
 
@@ -87,7 +89,14 @@
         parent.registerJavaObject("RuntimeInfo", RuntimeInfo.class, runtimeInfo);
 
         // register the monitor factory
-        parent.registerJavaObject("MonitorFactory", MonitorFactory.class, monitor);
+        if (monitor instanceof FormatterRegistry) {
+            List<Class<?>> interfazes = new ArrayList<Class<?>>(2);
+            interfazes.add(MonitorFactory.class);
+            interfazes.add(FormatterRegistry.class);
+            parent.registerJavaObject("MonitorFactory", interfazes, monitor);
+        } else {
+            parent.registerJavaObject("MonitorFactory", MonitorFactory.class, monitor);
+        }
         parent.start();
         // create a ComponentDefinition to represent the component we are going to deploy
         SystemCompositeImplementation moduleImplementation = new SystemCompositeImplementation();
@@ -96,10 +105,13 @@
         ComponentDefinition<SystemCompositeImplementation> definition =
             new ComponentDefinition<SystemCompositeImplementation>(
                 ComponentNames.TUSCANY_SYSTEM, moduleImplementation);
-
-        // deploy the component into the runtime under the system parent
-        composite = (CompositeComponent) bootDeployer.deploy(parent, definition);
-
+        try {
+            // deploy the component into the runtime under the system parent
+            composite = (CompositeComponent) bootDeployer.deploy(parent, definition);
+        } catch (TuscanyException e) {
+            e.addContextName(definition.getName());
+            throw e;
+        }
         // start the system
         composite.start();
 
@@ -167,7 +179,6 @@
      * @param appScdl URL to the SCDL defining the application
      * @return a CompositeComponent for the newly booted application
      * @throws LoaderException
-     * @see METAINF_APPLICATION_SCDL_PATH
      */
     @Deprecated
     public CompositeComponent bootApplication(String name, URL appScdl) throws TuscanyException {
@@ -192,8 +203,12 @@
         try {
 
             Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
-
-            return (CompositeComponent) deployer.deploy(parent, moduleDefinition);
+            try {
+                return (CompositeComponent) deployer.deploy(parent, moduleDefinition);
+            } catch (TuscanyException e) {
+                e.addContextName(moduleDefinition.getName());
+                throw e;
+            }
         } finally {
             Thread.currentThread().setContextClassLoader(ccl);
         }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Sat Dec 16 12:32:16 2006
@@ -215,7 +215,7 @@
         Implementation<?> impl = componentDefinition.getImplementation();
         ComponentType<?, ?, ?> componentType = impl.getComponentType();
         if (!componentType.getReferences().containsKey(name)) {
-            throw new UndefinedReferenceException("name");
+            throw new UndefinedReferenceException(name);
         }
         ReferenceTarget referenceTarget = new ReferenceTarget();
         referenceTarget.setReferenceName(name);

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/LoaderExceptionFormatter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/LoaderExceptionFormatter.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/LoaderExceptionFormatter.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/LoaderExceptionFormatter.java Sat Dec 16 12:32:16 2006
@@ -1,6 +1,6 @@
 package org.apache.tuscany.core.loader;
 
-import java.util.logging.LogRecord;
+import java.io.PrintWriter;
 
 import org.osoa.sca.annotations.Destroy;
 import org.osoa.sca.annotations.Init;
@@ -8,7 +8,6 @@
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.loader.LoaderException;
 
-import org.apache.tuscany.host.MonitorFactory;
 import org.apache.tuscany.host.monitor.ExceptionFormatter;
 import org.apache.tuscany.host.monitor.FormatterRegistry;
 
@@ -18,7 +17,7 @@
  * @version $Rev$ $Date$
  */
 public class LoaderExceptionFormatter implements ExceptionFormatter {
-    private MonitorFactory factory;
+    private FormatterRegistry factory;
 
     public LoaderExceptionFormatter() {
     }
@@ -27,41 +26,32 @@
         return LoaderException.class.isAssignableFrom(type);
     }
 
-    @Autowire(required = false)
-    public void setRegistry(MonitorFactory factory) {
+    @Autowire
+    public void setRegistry(FormatterRegistry factory) {
         this.factory = factory;
     }
 
     @Init(eager = true)
     public void init() {
-        if (factory instanceof FormatterRegistry) {
-            ((FormatterRegistry) factory).register(this);
-        }
+        factory.register(this);
     }
 
     @Destroy
     public void destroy() {
-        if (factory instanceof FormatterRegistry) {
-            ((FormatterRegistry) factory).unregister(this);
-        }
+        factory.unregister(this);
     }
 
-    public LogRecord write(LogRecord record, Throwable exception) {
+    public PrintWriter write(PrintWriter writer, Throwable exception) {
         assert exception instanceof LoaderException;
         LoaderException e = (LoaderException) exception;
-        StringBuilder b = new StringBuilder(256);
-        e.appendBaseMessage(b);
+        e.appendBaseMessage(writer);
         if (e.getLine() != LoaderException.UNDEFINED) {
-            b.append("\n").append("Line: ").append(e.getLine()).append("\n");
-            b.append("Column: ").append(e.getColumn()).append("\n");
+            writer.write("\nLine: " + e.getLine() + "\n");
+            writer.write("Column: " + e.getColumn());
         } else {
-            b.append("\n");
-        }
-        e.appendContextStack(b);
-        if (b.length() >= 1) {
-            record.setMessage(b.toString());
+            writer.write("\n");
         }
-        record.setThrown(exception);
-        return record;
+        e.appendContextStack(writer).append("\n");
+        return writer;
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatter.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatter.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatter.java Sat Dec 16 12:32:16 2006
@@ -18,7 +18,7 @@
  */
 package org.apache.tuscany.core.monitor;
 
-import java.util.logging.LogRecord;
+import java.io.PrintWriter;
 
 import org.apache.tuscany.api.TuscanyException;
 import org.apache.tuscany.api.TuscanyRuntimeException;
@@ -31,29 +31,24 @@
  */
 public class DefaultExceptionFormatter implements ExceptionFormatter {
 
+    public DefaultExceptionFormatter() {
+    }
+
     public boolean canFormat(Class<?> type) {
         return Throwable.class.isAssignableFrom(type);
     }
 
-    public LogRecord write(LogRecord record, Throwable exception) {
+    public PrintWriter write(PrintWriter writer, Throwable exception) {
         if (exception instanceof TuscanyException) {
             TuscanyException e = (TuscanyException) exception;
-            StringBuilder b = new StringBuilder(256);
-            e.appendContextStack(e.appendBaseMessage(b));
-            if (b.length() >= 1) {
-                record.setMessage(b.toString());
-            }
+            e.appendContextStack(e.appendBaseMessage(writer));
         } else if (exception instanceof TuscanyRuntimeException) {
             TuscanyRuntimeException e = (TuscanyRuntimeException) exception;
-            StringBuilder b = new StringBuilder(256);
-            e.appendContextStack(e.appendBaseMessage(b));
-            if (b.length() >= 1) {
-                record.setMessage(b.toString());
-            }
-        } else {
-            record.setThrown(exception);
+            e.appendContextStack(e.appendBaseMessage(writer));
         }
-        record.setThrown(exception);
-        return record;
+        writer.append("\n");
+        return writer;
     }
+
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org