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 [2/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...

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java Sat Dec 16 12:32:16 2006
@@ -18,6 +18,8 @@
  */
 package org.apache.tuscany.core.monitor;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.lang.ref.WeakReference;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
@@ -200,7 +202,7 @@
         private final Map<String, Level> methodLevels;
         private final ResourceBundle bundle;
         private List<ExceptionFormatter> formatters = new ArrayList<ExceptionFormatter>();
-        private ExceptionFormatter defaultFormatter = new DefaultExceptionFormatter();
+        private ExceptionFormatter defaultFormatter;
 
         public LoggingHandler(Logger logger,
                               Map<String, Level> methodLevels,
@@ -238,11 +240,16 @@
                                     break;
                                 }
                             }
+                            StringWriter writer = new StringWriter();
+                            PrintWriter pw = new PrintWriter(writer);
                             if (formatter != null) {
-                                formatter.write(logRecord, e);
+                                formatter.write(pw, e);
                             } else {
-                                defaultFormatter.write(logRecord, e);
+                                defaultFormatter.write(pw, e);
                             }
+                            format(pw, e);
+                            pw.close();
+                            logRecord.setMessage(writer.toString());
                             break;
                         }
                     }
@@ -252,5 +259,63 @@
             }
             return null;
         }
+
+        private void format(PrintWriter writer, Throwable throwable) {
+            writer.println(throwable.getClass().getName());
+            StackTraceElement[] trace = throwable.getStackTrace();
+            for (StackTraceElement aTrace : trace) {
+                writer.println("\tat " + aTrace);
+            }
+            Throwable ourCause = throwable.getCause();
+
+            if (ourCause != null) {
+                printStackTraceAsCause(writer, ourCause, trace);
+            }
+        }
+
+        private void printStackTraceAsCause(PrintWriter pw,
+                                            Throwable throwable,
+                                            StackTraceElement[] causedTrace) {
+
+            // Compute number of frames in common between this and caused
+            StackTraceElement[] trace = throwable.getStackTrace();
+            int m = trace.length - 1;
+            int n = causedTrace.length - 1;
+            while (m >= 0 && n >= 0 && trace[m].equals(causedTrace[n])) {
+                m--;
+                n--;
+            }
+            int framesInCommon = trace.length - 1 - m;
+
+            pw.println("Caused by: " + throwable.getClass().getName());
+
+            ExceptionFormatter formatter = null;
+            for (ExceptionFormatter candidate : formatters) {
+                if (candidate.canFormat(throwable.getClass())) {
+                    formatter = candidate;
+                    break;
+                }
+            }
+            if (formatter != null) {
+                formatter.write(pw, throwable);
+            } else {
+                defaultFormatter.write(pw, throwable);
+            }
+
+
+            for (int i = 0; i <= m; i++) {
+                pw.println("\tat " + trace[i]);
+            }
+            if (framesInCommon != 0) {
+                pw.println("\t... " + framesInCommon + " more");
+            }
+
+            // Recurse if we have a cause
+            Throwable ourCause = throwable.getCause();
+            if (ourCause != null) {
+                printStackTraceAsCause(pw, ourCause, trace);
+            }
+        }
+
     }
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java Sat Dec 16 12:32:16 2006
@@ -21,10 +21,12 @@
 import java.net.URL;
 
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.ComponentException;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.CompositeImplementation;
+import org.apache.tuscany.spi.builder.BuilderException;
 
 import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
 import org.apache.tuscany.core.monitor.NullMonitorFactory;
@@ -109,7 +111,7 @@
                                                   String name,
                                                   URL systemScdl,
                                                   ClassLoader systemClassLoader)
-        throws LoaderException {
+        throws LoaderException, BuilderException, ComponentException {
 
         SystemCompositeImplementation impl = new SystemCompositeImplementation();
         impl.setScdlLocation(systemScdl);
@@ -125,7 +127,7 @@
                                                        String name,
                                                        URL applicationScdl,
                                                        ClassLoader applicationClassLoader)
-        throws LoaderException {
+        throws LoaderException, BuilderException, ComponentException {
 
         CompositeImplementation impl = new CompositeImplementation();
         impl.setScdlLocation(applicationScdl);

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/extension/AbstractExtensionDeployer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/extension/AbstractExtensionDeployer.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/extension/AbstractExtensionDeployer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/extension/AbstractExtensionDeployer.java Sat Dec 16 12:32:16 2006
@@ -27,10 +27,12 @@
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.ComponentException;
 import org.apache.tuscany.spi.deployer.CompositeClassLoader;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.builder.BuilderException;
 
 /**
  * @version $Rev$ $Date$
@@ -101,13 +103,20 @@
         // ClassLoader contextCL = Thread.currentThread().getContextClassLoader();
         try {
             // Thread.currentThread().setContextClassLoader(extensionCL);
-            Component component = deployer.deploy(parent, definition);
-            component.start();
+            Component component = null;
+            try {
+                component = deployer.deploy(parent, definition);
+                component.start();
+            } catch (BuilderException e) {
+                // FIXME JFM handle the exception
+                e.printStackTrace();
+            } catch (ComponentException e) {
+                // FIXME handle the exception
+                e.printStackTrace();
+            }
         } catch (LoaderException e) {
             // FIXME handle the exception
             e.printStackTrace();
-        } finally {
-            // Thread.currentThread().setContextClassLoader(contextCL);
         }
     }
 }

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatter.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatter.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatter.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,102 @@
+/*
+ * 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.wire;
+
+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.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.wire.IncompatibleServiceContractException;
+
+import org.apache.tuscany.host.monitor.ExceptionFormatter;
+import org.apache.tuscany.host.monitor.FormatterRegistry;
+
+/**
+ * Formats {@link org.apache.tuscany.spi.wire.IncompatibleServiceContractException} for JDK logging
+ *
+ * @version $Rev$ $Date$
+ */
+public class IncompatibleServiceContractExceptionFormatter implements ExceptionFormatter {
+    private FormatterRegistry factory;
+
+    public IncompatibleServiceContractExceptionFormatter() {
+    }
+
+    public boolean canFormat(Class<?> type) {
+        return IncompatibleServiceContractException.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 IncompatibleServiceContractException;
+        IncompatibleServiceContractException e = (IncompatibleServiceContractException) exception;
+        e.appendBaseMessage(writer);
+        ServiceContract<?> source = e.getSource();
+        String sourceContractName = null;
+        if (source != null) {
+            sourceContractName = source.getInterfaceName();
+        }
+        Operation<?> sourceOperation = e.getSourceOperation();
+        String sourceOpName = null;
+        if (sourceOperation != null) {
+            sourceOpName = sourceOperation.getName();
+        }
+        if (sourceOpName == null) {
+            writer.write("\nSource Contract: " + sourceContractName);
+        } else {
+            writer.write("\nSource Contract: " + sourceContractName + "/" + sourceOpName);
+        }
+        ServiceContract<?> target = e.getTarget();
+        String targetContractName = null;
+        if (target != null) {
+            targetContractName = target.getInterfaceName();
+        }
+        Operation<?> targetOperation = e.getTargetOperation();
+        String targetOpName = null;
+        if (targetOperation != null) {
+            targetOpName = targetOperation.getName();
+        }
+        if (targetOpName == null) {
+            writer.write("\nTarget Contract: " + targetContractName + "\n");
+        } else {
+            writer.write("\nTarget Contract: " + targetContractName + "/" + targetOpName + "\n");
+
+        }
+        e.appendContextStack(writer);
+        return writer;
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/spi/deployer/DeploymentMonitor.java Sat Dec 16 12:32:16 2006
@@ -1,7 +1,6 @@
 package org.apache.tuscany.spi.deployer;
 
-import org.apache.tuscany.spi.loader.LoaderException;
-
+import org.apache.tuscany.api.TuscanyException;
 import org.apache.tuscany.api.annotation.LogLevel;
 
 /**
@@ -16,6 +15,6 @@
     void endDeployment();
 
     @LogLevel("SEVERE")
-    void deploymentError(LoaderException e);
+    void deploymentError(TuscanyException e);
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/formatters.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/formatters.scdl?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/formatters.scdl (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/resources/org/apache/tuscany/core/formatters.scdl Sat Dec 16 12:32:16 2006
@@ -30,4 +30,14 @@
         <system:implementation.system class="org.apache.tuscany.core.loader.LoaderExceptionFormatter"/>
     </component>
 
+    <component name="IncompatibleServiceContractExceptionFormatter">
+        <system:implementation.system
+            class="org.apache.tuscany.core.wire.IncompatibleServiceContractExceptionFormatter"/>
+    </component>
+
+    <component name="WireExceptionExceptionFormatter">
+        <system:implementation.system
+            class="org.apache.tuscany.core.builder.WiringExceptionFormatter"/>
+    </component>
+
 </composite>

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/BuilderRegistryTestCase.java Sat Dec 16 12:32:16 2006
@@ -39,7 +39,7 @@
     private DeploymentContext deploymentContext;
     private BuilderRegistryImpl registry;
 
-    public void testRegistrationWithoutGenerics() {
+    public void testRegistrationWithoutGenerics() throws Exception {
         RawBuilder builder = new RawBuilder();
         registry.register(CompositeImplementation.class, builder);
         CompositeImplementation implementation = new CompositeImplementation();

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/ConnectorImplTestCase.java Sat Dec 16 12:32:16 2006
@@ -29,6 +29,7 @@
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.idl.java.JavaServiceContract;
 import org.apache.tuscany.spi.model.Operation;
@@ -56,7 +57,7 @@
     private Interceptor headInterceptor;
     private Interceptor tailInterceptor;
 
-    public void testConnectReferenceWires() {
+    public void testConnectReferenceWires() throws Exception {
 
         // create the inbound wire and chain
         InboundInvocationChain inboundChain = EasyMock.createMock(InboundInvocationChain.class);
@@ -100,7 +101,7 @@
         EasyMock.verify(outboundChain);
     }
 
-    public void testConnectServiceWires() {
+    public void testConnectServiceWires() throws Exception {
         // create the inbound wire and chain for the target
         InboundInvocationChain targetChain = EasyMock.createMock(InboundInvocationChain.class);
         EasyMock.expect(targetChain.getOperation()).andReturn(operation).atLeastOnce();
@@ -266,7 +267,7 @@
         EasyMock.verify(target);
     }
 
-    public void testConnectInboundAtomicComponentWires() {
+    public void testConnectInboundAtomicComponentWires() throws Exception {
         // create the inbound wire and chain
         InboundInvocationChain chain = EasyMock.createMock(InboundInvocationChain.class);
         EasyMock.expect(chain.getOperation()).andReturn(operation).atLeastOnce();
@@ -301,7 +302,7 @@
         EasyMock.verify(chain);
     }
 
-    public void testConnectTargetNotFound() {
+    public void testConnectTargetNotFound() throws Exception {
         CompositeComponent parent = EasyMock.createMock(CompositeComponent.class);
         EasyMock.expect(parent.getName()).andReturn("parent");
         parent.getChild(EasyMock.isA(String.class));
@@ -312,6 +313,7 @@
         EasyMock.expect(outboundWire.getTargetName()).andReturn(new QualifiedName("target/FooService")).anyTimes();
         EasyMock.expect(outboundWire.getInvocationChains()).andReturn(null).anyTimes();
         EasyMock.expect(outboundWire.getReferenceName()).andReturn("nothtere");
+        EasyMock.expect(outboundWire.getContainer()).andReturn(EasyMock.createNiceMock(SCAObject.class));
         outboundWire.getTargetCallbackInvocationChains();
         EasyMock.expectLastCall().andReturn(Collections.emptyMap());
         EasyMock.replay(outboundWire);
@@ -330,14 +332,14 @@
         try {
             connector.connect(source);
             fail();
-        } catch (ReferenceTargetNotFoundException e) {
+        } catch (TargetServiceNotFoundException e) {
             // expected
         }
 
         EasyMock.verify(source);
     }
 
-    public void testOutboundToInboundOptimization() {
+    public void testOutboundToInboundOptimization() throws Exception {
         InboundWire inboundWire = EasyMock.createMock(InboundWire.class);
         EasyMock.expect(inboundWire.getContainer()).andReturn(null);
         inboundWire.getInvocationChains();
@@ -389,7 +391,7 @@
         EasyMock.verify(inboundChain);
     }
 
-    public void testOutboundWireToInboundReferenceTarget() {
+    public void testOutboundWireToInboundReferenceTarget() throws Exception {
         AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
         EasyMock.expect(component.getName()).andReturn("foo");
         EasyMock.replay(component);

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IllegalCallbackExceptionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IllegalCallbackExceptionTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IllegalCallbackExceptionTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IllegalCallbackExceptionTestCase.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,43 @@
+/*
+ * 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 junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class IllegalCallbackExceptionTestCase extends TestCase {
+
+    public void testInstantiation() throws Exception {
+        IllegalCallbackException e = new IllegalCallbackException("message",
+            "identifier",
+            "source name",
+            "ref name",
+            "target name",
+            "service name");
+        assertEquals("message", e.getMessage());
+        assertEquals("identifier", e.getIdentifier());
+        assertEquals("source name", e.getSourceName());
+        assertEquals("ref name", e.getReferenceName());
+        assertEquals("target name", e.getTargetName());
+        assertEquals("service name", e.getTargetServiceName());
+
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IncompatibleInterfacesExceptionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IncompatibleInterfacesExceptionTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IncompatibleInterfacesExceptionTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/IncompatibleInterfacesExceptionTestCase.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 junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class IncompatibleInterfacesExceptionTestCase extends TestCase {
+
+    public void testInstantiation() throws Exception {
+        IncompatibleInterfacesException e = new IncompatibleInterfacesException("message",
+            "source name",
+            "ref name",
+            "target name",
+            "service name");
+        assertEquals("message", e.getMessage());
+        assertEquals("source name", e.getSourceName());
+        assertEquals("ref name", e.getReferenceName());
+        assertEquals("target name", e.getTargetName());
+        assertEquals("service name", e.getTargetServiceName());
+
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InvalidTargetTypeExceptionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InvalidTargetTypeExceptionTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InvalidTargetTypeExceptionTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/InvalidTargetTypeExceptionTestCase.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 junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class InvalidTargetTypeExceptionTestCase extends TestCase {
+
+    public void testInstantiation() throws Exception {
+        InvalidTargetTypeException e = new InvalidTargetTypeException("message",
+            "source name",
+            "ref name",
+            "target name",
+            "service name");
+        assertEquals("message", e.getMessage());
+        assertEquals("source name", e.getSourceName());
+        assertEquals("ref name", e.getReferenceName());
+        assertEquals("target name", e.getTargetName());
+        assertEquals("service name", e.getTargetServiceName());
+
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/TargetServiceNotFoundExceptionTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/TargetServiceNotFoundExceptionTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/TargetServiceNotFoundExceptionTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/TargetServiceNotFoundExceptionTestCase.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 junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TargetServiceNotFoundExceptionTestCase extends TestCase {
+
+    public void testInstantiation() throws Exception {
+        TargetServiceNotFoundException e = new TargetServiceNotFoundException("message",
+            "source name",
+            "ref name",
+            "target name",
+            "service name");
+        assertEquals("message", e.getMessage());
+        assertEquals("source name", e.getSourceName());
+        assertEquals("ref name", e.getReferenceName());
+        assertEquals("target name", e.getTargetName());
+        assertEquals("service name", e.getTargetServiceName());
+
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WiringExceptionFormatterTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WiringExceptionFormatterTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WiringExceptionFormatterTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/WiringExceptionFormatterTestCase.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,86 @@
+/*
+ * 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 java.io.StringWriter;
+
+import org.apache.tuscany.spi.builder.WiringException;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class WiringExceptionFormatterTestCase extends TestCase {
+    WiringExceptionFormatter formatter = new WiringExceptionFormatter();
+
+    public void testFormat() throws Exception {
+        WiringException e = new MockWiringException("message",
+            "identifier",
+            "source name",
+            "ref name",
+            "target name",
+            "service name");
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        formatter.write(pw, e);
+        String buffer = writer.toString();
+        assertTrue(buffer.indexOf("message") >= 0);
+        assertTrue(buffer.indexOf("identifier") >= 0);
+        assertTrue(buffer.indexOf("source name") >= 0);
+        assertTrue(buffer.indexOf("ref name") >= 0);
+        assertTrue(buffer.indexOf("target name") >= 0);
+        assertTrue(buffer.indexOf("service name") >= 0);
+    }
+
+
+    public void testFormatNulls() throws Exception {
+        WiringException e = new MockWiringException("message",
+            "identifier",
+            "source name",
+            null,
+            "target name",
+            null);
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        formatter.write(pw, e);
+        String buffer = writer.toString();
+        assertTrue(buffer.indexOf("message") >= 0);
+        assertTrue(buffer.indexOf("identifier") >= 0);
+        assertTrue(buffer.indexOf("source name") >= 0);
+        assertTrue(buffer.indexOf("target name") >= 0);
+    }
+
+    private class MockWiringException extends WiringException {
+
+        public MockWiringException(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/test/java/org/apache/tuscany/core/builder/WiringExceptionFormatterTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

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

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/deployer/BootstrapDeployerTestCase.java Sat Dec 16 12:32:16 2006
@@ -108,7 +108,7 @@
         assertEquals(1, included.getComponents().size());
     }
 
-    public void testBoot1Deployment() throws LoaderException {
+    public void testBoot1Deployment() throws Exception {
         URL scdl = BootstrapDeployerTestCase.class.getResource("boot1.scdl");
         implementation.setScdlLocation(scdl);
         CompositeComponent parent = createNiceMock(CompositeComponent.class);
@@ -121,7 +121,7 @@
         verify(parent);
     }
 
-    public void testBoot2Deployment() throws LoaderException {
+    public void testBoot2Deployment() throws Exception {
         URL scdl = BootstrapDeployerTestCase.class.getResource("boot2.scdl");
         implementation.setScdlLocation(scdl);
         CompositeComponent parent = createNiceMock(CompositeComponent.class);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplBasicTestCase.java Sat Dec 16 12:32:16 2006
@@ -186,7 +186,7 @@
         composite.onEvent(event);
     }
 
-    public void testPrepare() {
+    public void testPrepare() throws Exception {
         CompositeComponent composite = new CompositeComponentImpl("parent", null, null, null);
         composite.prepare();
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplSystemWireTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplSystemWireTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplSystemWireTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/composite/CompositeComponentImplSystemWireTestCase.java Sat Dec 16 12:32:16 2006
@@ -25,10 +25,11 @@
 import java.util.Map;
 
 import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.PrepareException;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.idl.java.JavaServiceContract;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.wire.InboundWire;
@@ -46,7 +47,7 @@
     /**
      * Verifies system services in a CompositeComponentImpl are wired during the parent composite's prepare callback
      */
-    public void testSystemServiceWire() {
+    public void testSystemServiceWire() throws Exception {
         InboundWire inbound = EasyMock.createMock(InboundWire.class);
         EasyMock.expect(inbound.getServiceContract()).andReturn(new JavaServiceContract(Foo.class));
         inbound.getInvocationChains();
@@ -114,7 +115,7 @@
     /**
      * Verifies an application component cannot be wired to a system service in the same composite
      */
-    public void testSystemServiceIsolationWire() {
+    public void testSystemServiceIsolationWire() throws Exception {
         InboundWire inbound = EasyMock.createMock(InboundWire.class);
         EasyMock.replay(inbound);
 
@@ -122,6 +123,7 @@
         services.add(Foo.class);
         QualifiedName qName = new QualifiedName("target/bar");
         OutboundWire outbound = EasyMock.createMock(OutboundWire.class);
+        EasyMock.expect(outbound.getContainer()).andReturn(EasyMock.createNiceMock(SCAObject.class));
         EasyMock.expect(outbound.getReferenceName()).andReturn("foo");
         EasyMock.expect(outbound.getTargetName()).andReturn(qName).atLeastOnce();
         EasyMock.replay(outbound);
@@ -151,7 +153,7 @@
         try {
             parent.prepare();
             fail();
-        } catch (BuilderConfigException e) {
+        } catch (PrepareException e) {
             //expected
         }
         EasyMock.verify(source);

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/java/integration/OutboundWireToJavaTestCase.java Sat Dec 16 12:32:16 2006
@@ -25,6 +25,7 @@
 import java.util.concurrent.FutureTask;
 
 import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.builder.WiringException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.WorkContext;
@@ -175,7 +176,7 @@
     }
 
     private OutboundWire getWire(ScopeContainer scope) throws NoSuchMethodException,
-                                                              InvalidServiceContractException {
+                                                              InvalidServiceContractException, WiringException {
         ConnectorImpl connector = new ConnectorImpl();
         CompositeComponent parent = EasyMock.createMock(CompositeComponent.class);
         PojoConfiguration configuration = new PojoConfiguration();

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/LoaderExceptionFormatterTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/LoaderExceptionFormatterTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/LoaderExceptionFormatterTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/LoaderExceptionFormatterTestCase.java Sat Dec 16 12:32:16 2006
@@ -18,8 +18,8 @@
  */
 package org.apache.tuscany.core.loader;
 
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 
 import org.apache.tuscany.spi.loader.LoaderException;
 
@@ -32,11 +32,12 @@
 
     public void testLog() {
         LoaderExceptionFormatter formatter = new LoaderExceptionFormatter();
-        LogRecord record = new LogRecord(Level.SEVERE, "message");
         LoaderException e = new LoaderException("test");
-        formatter.write(record, e);
-        assertEquals(e, record.getThrown());
-        assertTrue(!"message".equals(record.getMessage()));
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        formatter.write(pw, e);
+        pw.close();
+        assertTrue(!"message".equals(writer.toString()));
     }
 
 

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,63 @@
+/*
+ * 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.monitor;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.api.TuscanyException;
+import org.apache.tuscany.api.TuscanyRuntimeException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class DefaultExceptionFormatterTestCase extends TestCase {
+    private DefaultExceptionFormatter formatter = new DefaultExceptionFormatter();
+
+    public void testTuscanyExceptionFormat() throws Exception {
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        TuscanyException e = new TuscanyException("somemessage") {
+        };
+        e.addContextName("somecontext");
+        formatter.write(pw, e);
+        assertTrue(writer.toString().indexOf("somemessage") >= 0);
+        assertTrue(writer.toString().indexOf("somecontext") >= 0);
+    }
+
+    public void testTuscanyRuntimeExceptionFormat() throws Exception {
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        TuscanyRuntimeException e = new TuscanyRuntimeException("somemessage") {
+        };
+        e.addContextName("somecontext");
+        formatter.write(pw, e);
+        assertTrue(writer.toString().indexOf("somemessage") >= 0);
+        assertTrue(writer.toString().indexOf("somecontext") >= 0);
+    }
+
+    public void testNormalExceptionFormat() throws Exception {
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        Exception e = new Exception();
+        formatter.write(pw, e); // just verify there are no errors since no formatting needs to be doen
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/DefaultExceptionFormatterTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/JavaLoggingTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/JavaLoggingTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/JavaLoggingTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/monitor/JavaLoggingTestCase.java Sat Dec 16 12:32:16 2006
@@ -86,21 +86,6 @@
     }
 
     /**
-     * Test a Throwable is logged when passed to an event.
-     */
-    public void testEventWithThrowable() {
-        Exception e = new Exception();
-        Monitor mon = factory.getMonitor(Monitor.class);
-        mon.eventWithThrowable(e);
-        assertEquals(1, HANDLER.logs.size());
-        LogRecord record = HANDLER.logs.get(0);
-        assertEquals(Level.WARNING, record.getLevel());
-        assertEquals(LOGGER.getName(), record.getLoggerName());
-        assertEquals(Monitor.class.getName() + "#eventWithThrowable", record.getMessage());
-        assertSame(e, record.getThrown());
-    }
-
-    /**
      * Test the argument is logged.
      */
     public void testEventWithOneArg() {

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,78 @@
+/*
+ * 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.wire;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+import org.apache.tuscany.spi.wire.IncompatibleServiceContractException;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class IncompatibleServiceContractExceptionFormatterTestCase extends TestCase {
+    IncompatibleServiceContractExceptionFormatter formatter = new IncompatibleServiceContractExceptionFormatter();
+
+    public void testFormat() throws Exception {
+        ServiceContract<Object> source = new ServiceContract<Object>() {
+        };
+        source.setInterfaceName("sourceInterface");
+        ServiceContract<Object> target = new ServiceContract<Object>() {
+        };
+        target.setInterfaceName("targetInterface");
+        Operation<Object> sourceOp = new Operation<Object>("sourceOp", null, null, null);
+        Operation<Object> targetOp = new Operation<Object>("targetOp", null, null, null);
+
+        IncompatibleServiceContractException e =
+            new IncompatibleServiceContractException("message", source, target, sourceOp, targetOp);
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        formatter.write(pw, e);
+        String buffer = writer.toString();
+        assertTrue(buffer.indexOf("message") >= 0);
+        assertTrue(buffer.indexOf("sourceInterface") >= 0);
+        assertTrue(buffer.indexOf("targetInterface") >= 0);
+        assertTrue(buffer.indexOf("sourceOp") >= 0);
+        assertTrue(buffer.indexOf("targetOp") >= 0);
+    }
+
+
+    public void testFormatNulls() throws Exception {
+        ServiceContract<Object> source = new ServiceContract<Object>() {
+        };
+        source.setInterfaceName("sourceInterface");
+        ServiceContract<Object> target = new ServiceContract<Object>() {
+        };
+        target.setInterfaceName("targetInterface");
+
+        IncompatibleServiceContractException e =
+            new IncompatibleServiceContractException("message", source, target);
+        StringWriter writer = new StringWriter();
+        PrintWriter pw = new PrintWriter(writer);
+        formatter.write(pw, e);
+        String buffer = writer.toString();
+        assertTrue(buffer.indexOf("message") >= 0);
+        assertTrue(buffer.indexOf("sourceInterface") >= 0);
+        assertTrue(buffer.indexOf("targetInterface") >= 0);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/wire/IncompatibleServiceContractExceptionFormatterTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/ExceptionFormatter.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/ExceptionFormatter.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/ExceptionFormatter.java (original)
+++ incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/ExceptionFormatter.java Sat Dec 16 12:32:16 2006
@@ -18,10 +18,10 @@
  */
 package org.apache.tuscany.host.monitor;
 
-import java.util.logging.LogRecord;
+import java.io.PrintWriter;
 
 /**
- * Formats exception data during a monitor event for JDK logging
+ * Formats exception data during a monitor event
  *
  * @version $Rev$ $Date$
  */
@@ -29,6 +29,6 @@
 
     boolean canFormat(Class<?> type);
 
-    LogRecord write(LogRecord record, Throwable exception);
+    PrintWriter write(PrintWriter writer, Throwable exception);
 
 }

Modified: incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/FormatterRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/FormatterRegistry.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/FormatterRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/host-api/src/main/java/org/apache/tuscany/host/monitor/FormatterRegistry.java Sat Dec 16 12:32:16 2006
@@ -19,7 +19,7 @@
 package org.apache.tuscany.host.monitor;
 
 /**
- * A registry for JDK logging exception formatters
+ * A registry for exception formatters
  *
  * @version $Rev$ $Date$
  */

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderException.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderException.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/BuilderException.java Sat Dec 16 12:32:16 2006
@@ -18,14 +18,14 @@
  */
 package org.apache.tuscany.spi.builder;
 
-import org.apache.tuscany.spi.CoreRuntimeException;
+import org.apache.tuscany.api.TuscanyException;
 
 /**
  * The root exception for the builder package. Builder exceptions denote a non-recoverable failure.
  *
  * @version $Rev$ $Date$
  */
-public abstract class BuilderException extends CoreRuntimeException {
+public abstract class BuilderException extends TuscanyException {
 
     public BuilderException() {
         super();

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/ComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/ComponentBuilder.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/ComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/ComponentBuilder.java Sat Dec 16 12:32:16 2006
@@ -32,5 +32,5 @@
 public interface ComponentBuilder<I extends Implementation<?>> {
     Component build(CompositeComponent parent,
                        ComponentDefinition<I> componentDefinition,
-                       DeploymentContext deploymentContext) throws BuilderConfigException;
+                       DeploymentContext deploymentContext) throws BuilderException;
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Connector.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Connector.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Connector.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/Connector.java Sat Dec 16 12:32:16 2006
@@ -34,9 +34,9 @@
      * chains.
      *
      * @param source the source, i.e. a <code>Service</code>, <code>Component</code>, or <code>Reference</code>
-     * @throws BuilderConfigException
+     * @throws WiringException
      */
-    void connect(SCAObject source) throws BuilderConfigException;
+    void connect(SCAObject source) throws WiringException;
 
     /**
      * Bridges the invocation chains associated with an inbound and outbound wire.
@@ -44,9 +44,9 @@
      * @param inbound     the wire to bridge from
      * @param outbound    the target wire
      * @param optimizable if the bridge may be optimized
-     * @throws BuilderConfigException
+     * @throws WiringException
      */
     void connect(InboundWire inbound, OutboundWire outbound, boolean optimizable)
-        throws BuilderConfigException;
+        throws WiringException;
 
 }

Copied: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingWireTargetException.java (from r487433, incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingTargetException.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingWireTargetException.java?view=diff&rev=487877&p1=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingTargetException.java&r1=487433&p2=incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingWireTargetException.java&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingTargetException.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/MissingWireTargetException.java Sat Dec 16 12:32:16 2006
@@ -23,13 +23,13 @@
  *
  * @version $Rev$ $Date$
  */
-public class MissingTargetException extends BuilderConfigException {
+public class MissingWireTargetException extends WiringException {
 
-    public MissingTargetException(String message) {
+    public MissingWireTargetException(String message) {
         super(message);
     }
 
-    public MissingTargetException(String message, String identifier) {
+    public MissingWireTargetException(String message, String identifier) {
         super(message, identifier);
     }
 

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

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

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WiringException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WiringException.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WiringException.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/WiringException.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,120 @@
+/*
+ * 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.spi.builder;
+
+/**
+ * Denotes a general error raised during wiring
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class WiringException extends BuilderException {
+    private String sourceName;
+    private String referenceName;
+    private String targetName;
+    private String targetServiceName;
+
+    protected WiringException(String message) {
+        super(message);
+    }
+
+    protected WiringException(String message, String identifier) {
+        super(message, identifier);
+    }
+
+    protected WiringException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    protected WiringException(Throwable cause) {
+        super(cause);
+    }
+
+    /**
+     * Returns the source name for the wire
+     *
+     * @return the source name the source name for the wire
+     */
+    public String getSourceName() {
+        return sourceName;
+    }
+
+    /**
+     * Sets the source name for the wire
+     *
+     * @param sourceName the source name for the wire
+     */
+    public void setSourceName(String sourceName) {
+        this.sourceName = sourceName;
+    }
+
+    /**
+     * Returns the target name for the wire
+     *
+     * @return the target name the source name for the wire
+     */
+    public String getTargetName() {
+        return targetName;
+    }
+
+    /**
+     * Sets the target name for the wire
+     *
+     * @param targetName the source name for the wire
+     */
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+
+    /**
+     * Returns the source reference name for the wire
+     *
+     * @return the source reference name for the wire
+     */
+    public String getReferenceName() {
+        return referenceName;
+    }
+
+    /**
+     * Sets the source reference name for the wire
+     *
+     * @param referenceName the source reference name for the wire
+     */
+    public void setReferenceName(String referenceName) {
+        this.referenceName = referenceName;
+    }
+
+    /**
+     * Returns the target service name for the wire
+     *
+     * @return the target service name for the wire
+     */
+    public String getTargetServiceName() {
+        return targetServiceName;
+    }
+
+    /**
+     * Sets the target service name for the wire
+     *
+     * @param targetServiceName the target service name for the wire
+     */
+    public void setTargetServiceName(String targetServiceName) {
+        this.targetServiceName = targetServiceName;
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/AbstractSCAObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/AbstractSCAObject.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/AbstractSCAObject.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/AbstractSCAObject.java Sat Dec 16 12:32:16 2006
@@ -116,7 +116,7 @@
         return listeners;
     }
 
-    public void prepare() {
+    public void prepare() throws PrepareException {
 
     }
 

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java Sat Dec 16 12:32:16 2006
@@ -0,0 +1,50 @@
+/*
+ * 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.spi.component;
+
+import org.apache.tuscany.api.TuscanyException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public abstract class ComponentException extends TuscanyException {
+
+    protected ComponentException() {
+    }
+
+    protected ComponentException(String message) {
+        super(message);
+    }
+
+    protected ComponentException(String message, String identifier) {
+        super(message, identifier);
+    }
+
+    protected ComponentException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+    protected ComponentException(String message, String identifier, Throwable cause) {
+        super(message, identifier, cause);
+    }
+
+    protected ComponentException(Throwable cause) {
+        super(cause);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentRuntimeException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentRuntimeException.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentRuntimeException.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/ComponentRuntimeException.java Sat Dec 16 12:32:16 2006
@@ -25,7 +25,7 @@
  *
  * @version $Rev$ $Date$
  */
-public class ComponentRuntimeException extends CoreRuntimeException {
+public abstract class ComponentRuntimeException extends CoreRuntimeException {
 
     public ComponentRuntimeException() {
         super();

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/CompositeComponent.java Sat Dec 16 12:32:16 2006
@@ -38,7 +38,7 @@
      *
      * @param context the context to add as a child
      * @throws InvalidComponentTypeException
-     */                                                        
+     */
     void register(SCAObject context) throws InvalidComponentTypeException;
 
     /**
@@ -54,6 +54,18 @@
         throws ObjectRegistrationException;
 
     /**
+     * Register a simple Java Object as a system component. This is primarily intended for use by bootstrap code to
+     * create the initial configuration components.
+     *
+     * @param name     the name of the resulting component
+     * @param services the service interfaces the component should expose
+     * @param instance the Object that will become the component's implementation
+     * @throws ObjectRegistrationException
+     */
+    <S, I extends S> void registerJavaObject(String name, List<Class<?>> services, I instance)
+        throws ObjectRegistrationException;
+
+    /**
      * Returns the child associated with a given name
      */
     SCAObject getChild(String name);
@@ -125,7 +137,7 @@
     <T> T locateSystemService(Class<T> serviceInterface, String serviceName);
 
     /**
-     * @param scopeContainer
+     * @param scopeContainer the scope container associated with the composite
      */
     void setScopeContainer(ScopeContainer scopeContainer);
 

Added: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java?view=auto&rev=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java (added)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java Sat Dec 16 12:32:16 2006
@@ -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.
+ */
+package org.apache.tuscany.spi.component;
+
+/**
+ * Denotes an exception preparing a component
+ *
+ * @version $Rev$ $Date$
+ */
+public class PrepareException extends ComponentException {
+
+    public PrepareException(String message, String identifier) {
+        super(message, identifier);
+    }
+
+    public PrepareException(String message, String identifier, Throwable cause) {
+        super(message, identifier, cause);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/PrepareException.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/SCAObject.java Sat Dec 16 12:32:16 2006
@@ -62,7 +62,7 @@
      * Called to signal that the composite should perform and required steps prior to registration with its parent such
      * as wiring of its children
      */
-    void prepare();
+    void prepare() throws PrepareException;
 
     /**
      * The extensions map contains other runtime context such as type systems for various databindings

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/Deployer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/Deployer.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/Deployer.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/deployer/Deployer.java Sat Dec 16 12:32:16 2006
@@ -18,7 +18,9 @@
  */
 package org.apache.tuscany.spi.deployer;
 
+import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.ComponentException;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.model.ComponentDefinition;
@@ -41,6 +43,6 @@
      * @return the newly deployed component
      */
     <I extends Implementation<?>> Component deploy(CompositeComponent parent,
-                                                      ComponentDefinition<I> componentDefinition)
-        throws LoaderException;
+                                                   ComponentDefinition<I> componentDefinition)
+        throws LoaderException, BuilderException, ComponentException;
 }

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/BindingBuilderExtension.java Sat Dec 16 12:32:16 2006
@@ -23,6 +23,7 @@
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.builder.BindingBuilder;
+import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
@@ -61,14 +62,14 @@
     }
 
     public Service build(CompositeComponent parent,
-                           BoundServiceDefinition<B> boundServiceDefinition,
-                           DeploymentContext deploymentContext) {
+                         BoundServiceDefinition<B> boundServiceDefinition,
+                         DeploymentContext deploymentContext) throws BuilderException {
         return null;
     }
 
     public Reference build(CompositeComponent parent,
                            BoundReferenceDefinition<B> boundReferenceDefinition,
-                           DeploymentContext deploymentContext) {
+                           DeploymentContext deploymentContext) throws BuilderException {
         return null;
     }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java Sat Dec 16 12:32:16 2006
@@ -29,6 +29,7 @@
 
 import org.apache.tuscany.spi.CoreRuntimeException;
 import org.apache.tuscany.spi.builder.Connector;
+import org.apache.tuscany.spi.builder.WiringException;
 import org.apache.tuscany.spi.component.AbstractSCAObject;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.AutowireResolutionException;
@@ -37,6 +38,7 @@
 import org.apache.tuscany.spi.component.DuplicateNameException;
 import org.apache.tuscany.spi.component.IllegalTargetException;
 import org.apache.tuscany.spi.component.ObjectRegistrationException;
+import org.apache.tuscany.spi.component.PrepareException;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.Service;
@@ -93,6 +95,11 @@
         throw new UnsupportedOperationException();
     }
 
+    public <S, I extends S> void registerJavaObject(String name, List<Class<?>> services, I instance)
+        throws ObjectRegistrationException {
+        throw new UnsupportedOperationException();
+    }
+
     public Document getPropertyValue(String name) {
         return propertyValues.get(name);
     }
@@ -393,7 +400,7 @@
         }
     }
 
-    public void prepare() {
+    public void prepare() throws PrepareException {
         // Connect services and references first so that their wires are linked first
         List<SCAObject> childList = new ArrayList<SCAObject>();
         for (SCAObject child : systemChildren.values()) {
@@ -407,8 +414,14 @@
         for (SCAObject child : childList) {
             // connect all children
             // TODO for composite wires, should delegate down
-            connector.connect(child);
-            child.prepare();
+            try {
+                connector.connect(child);
+                child.prepare();
+            } catch (PrepareException e) {
+                e.addContextName(getName());
+            } catch (WiringException e) {
+                throw new PrepareException("Error preparing composite", getName(), e);
+            }
         }
 
         // connect application artifacts
@@ -423,8 +436,14 @@
         for (SCAObject child : childList) {
             // connect all children
             // TODO for composite wires, should delegate down
-            connector.connect(child);
-            child.prepare();
+            try {
+                connector.connect(child);
+                child.prepare();
+            } catch (PrepareException e) {
+                e.addContextName(getName());
+            } catch (WiringException e) {
+                throw new PrepareException("Error preparing composite", getName(), e);
+            }
         }
     }
 

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/IncompatibleServiceContractException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/IncompatibleServiceContractException.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/IncompatibleServiceContractException.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/IncompatibleServiceContractException.java Sat Dec 16 12:32:16 2006
@@ -19,15 +19,17 @@
 
 package org.apache.tuscany.spi.wire;
 
-import org.apache.tuscany.spi.model.ServiceContract;
 import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+
+import org.apache.tuscany.api.TuscanyException;
 
 /**
  * Denotes imcompatible service contracts for a wire
  *
  * @version $Rev$ $Date$
  */
-public class IncompatibleServiceContractException extends WireException {
+public class IncompatibleServiceContractException extends TuscanyException {
     private static final long serialVersionUID = 5127478601823295587L;
     private final ServiceContract<?> source;
     private final ServiceContract<?> target;
@@ -35,7 +37,7 @@
     private final Operation<?> targetOperation;
 
     public IncompatibleServiceContractException(String message, ServiceContract<?> source, ServiceContract<?> target) {
-        super(message, null);
+        super(message, (String) null);
         this.source = source;
         this.target = target;
         this.sourceOperation = null;
@@ -47,7 +49,7 @@
                                                 ServiceContract<?> source,
                                                 ServiceContract<?> target,
                                                 Operation<?> sourceOperation, Operation<?> targetOperation) {
-        super(message, null);
+        super(message, (String) null);
         this.source = source;
         this.target = target;
         this.sourceOperation = sourceOperation;
@@ -61,7 +63,6 @@
     public ServiceContract<?> getSource() {
         return source;
     }
-
 
     public Operation<?> getSourceOperation() {
         return sourceOperation;

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/component/AbstractSCAObjectTestCase.java Sat Dec 16 12:32:16 2006
@@ -84,7 +84,7 @@
     }
 
 
-    public void testToPrepare() {
+    public void testToPrepare() throws Exception {
         SCAObject object = new TestSCAObject("foo", null);
         object.prepare();
     }

Modified: incubator/tuscany/java/sca/runtime/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java?view=diff&rev=487877&r1=487876&r2=487877
==============================================================================
--- incubator/tuscany/java/sca/runtime/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java (original)
+++ incubator/tuscany/java/sca/runtime/standalone-host/src/main/java/org/apache/tuscany/runtime/standalone/host/StandaloneRuntimeImpl.java Sat Dec 16 12:32:16 2006
@@ -25,8 +25,10 @@
 import org.apache.tuscany.spi.bootstrap.ComponentNames;
 import org.apache.tuscany.spi.bootstrap.RuntimeComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.ComponentException;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.builder.BuilderException;
 
 import org.apache.tuscany.core.bootstrap.Bootstrapper;
 import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
@@ -93,6 +95,12 @@
 
             context = new CompositeContextImpl(application);
         } catch (LoaderException e) {
+            // FIXME do something with this
+            e.printStackTrace();
+        } catch (BuilderException e) {
+            // FIXME do something with this
+            e.printStackTrace();
+        } catch (ComponentException e) {
             // FIXME do something with this
             e.printStackTrace();
         }



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