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/19 06:11:04 UTC

svn commit: r488523 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/component/scope/ core/src/test/java/org/apache/tuscany/core/component/scope/ spi/src/main/java/org/apache/tuscany/spi/model/

Author: jmarino
Date: Mon Dec 18 21:11:03 2006
New Revision: 488523

URL: http://svn.apache.org/viewvc?view=rev&rev=488523
Log:
enable error monitoring in scope containers

Added:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInitDestroyErrorTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInitDestroyErrorTestCase.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/RequestScopeContainer.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java?view=diff&rev=488523&r1=488522&r2=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/HttpSessionScopeContainer.java Mon Dec 18 21:11:03 2006
@@ -65,12 +65,9 @@
                     try {
                         getInstance(entry.getKey(), key, true);
                     } catch (ObjectCreationException e) {
-                        // FIXME JFM
-                        e.printStackTrace();
+                        monitor.eagerInitializationError(e);
                     } catch (TargetResolutionException e) {
-                        // FIXME JFM
-                        e.printStackTrace();
-
+                        monitor.eagerInitializationError(e);
                     }
                 }
             }
@@ -145,8 +142,7 @@
                     try {
                         iter.previous().stop();
                     } catch (TargetDestructionException e) {
-                        // JFM FIXME
-                        e.printStackTrace();
+                        monitor.destructionError(e);
                     }
                 }
             }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java?view=diff&rev=488523&r1=488522&r2=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeContainer.java Mon Dec 18 21:11:03 2006
@@ -67,10 +67,8 @@
             try {
                 eagerInitComponents();
             } catch (ObjectCreationException e) {
-                // JFM
                 monitor.eagerInitializationError(e);
             } catch (TargetResolutionException e) {
-                // JFM FIXME
                 monitor.eagerInitializationError(e);
             }
             lifecycleState = RUNNING;
@@ -109,9 +107,7 @@
                 try {
                     iter.previous().stop();
                 } catch (TargetDestructionException e) {
-                    // JFM FIXME
                     monitor.destructionError(e);
-                    e.printStackTrace();
                 }
             }
             destroyQueue.clear();
@@ -127,7 +123,7 @@
         throws TargetResolutionException {
         checkInit();
         InstanceWrapper ctx = instanceWrappers.get(component);
-        assert ctx != null : "Component not registered with scope: " + component;
+        assert ctx != null;
         if (ctx == EMPTY && !create) {
             return null;
         }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/RequestScopeContainer.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/RequestScopeContainer.java?view=diff&rev=488523&r1=488522&r2=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/RequestScopeContainer.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/scope/RequestScopeContainer.java Mon Dec 18 21:11:03 2006
@@ -31,6 +31,7 @@
 import org.apache.tuscany.spi.component.ScopeContainerMonitor;
 import org.apache.tuscany.spi.event.Event;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.ObjectCreationException;
 
 import org.apache.tuscany.core.component.event.RequestEnd;
 import org.apache.tuscany.core.component.event.RequestStart;
@@ -62,8 +63,9 @@
                     try {
                         getInstance(entry.getKey());
                     } catch (TargetResolutionException e) {
-                        // FIXME JFM monitor 
-                        e.printStackTrace();
+                        monitor.eagerInitializationError(e);
+                    } catch (ObjectCreationException e) {
+                        monitor.eagerInitializationError(e);
                     }
                 }
             }
@@ -128,8 +130,7 @@
                     try {
                         iter.previous().stop();
                     } catch (TargetDestructionException e) {
-                        // JFM FIXME
-                        e.printStackTrace();
+                        monitor.destructionError(e);
                     }
                 }
             }

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java?view=auto&rev=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/HttpSessionScopeInitDestroyErrorTestCase.java Mon Dec 18 21:11:03 2006
@@ -0,0 +1,92 @@
+/*
+ * 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.component.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ScopeContainerMonitor;
+import org.apache.tuscany.spi.component.TargetDestructionException;
+import org.apache.tuscany.spi.event.RuntimeEventListener;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.component.event.HttpSessionEnd;
+import org.apache.tuscany.core.component.event.HttpSessionStart;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class HttpSessionScopeInitDestroyErrorTestCase extends TestCase {
+
+    public void testInitializeErrorMonitor() throws Exception {
+        ScopeContainerMonitor monitor;
+        monitor = EasyMock.createMock(ScopeContainerMonitor.class);
+        monitor.eagerInitializationError(EasyMock.isA(ObjectCreationException.class));
+        EasyMock.replay(monitor);
+        HttpSessionScopeContainer scope = new HttpSessionScopeContainer(new WorkContextImpl(), monitor);
+        scope.start();
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.expect(component.createInstance()).andThrow(new ObjectCreationException(""));
+        EasyMock.expect(component.isEagerInit()).andReturn(true);
+        List<Class<?>> services = new ArrayList<Class<?>>();
+        services.add(Object.class);
+        EasyMock.expect(component.getServiceInterfaces()).andReturn(services);
+        EasyMock.replay(component);
+        scope.register(component);
+        scope.onEvent(new HttpSessionStart(this, new Object()));
+        EasyMock.verify(monitor);
+    }
+
+    public void testDestroyErrorMonitor() throws Exception {
+        ScopeContainerMonitor monitor;
+        monitor = EasyMock.createMock(ScopeContainerMonitor.class);
+        monitor.destructionError(EasyMock.isA(TargetDestructionException.class));
+        EasyMock.replay(monitor);
+        HttpSessionScopeContainer scope = new HttpSessionScopeContainer(new WorkContextImpl(), monitor);
+        scope.start();
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.expect(component.createInstance()).andReturn(new Object());
+        EasyMock.expect(component.isEagerInit()).andReturn(true);
+        List<Class<?>> services = new ArrayList<Class<?>>();
+        services.add(Object.class);
+        EasyMock.expect(component.getServiceInterfaces()).andReturn(services);
+        component.init(EasyMock.isA(Object.class));
+        component.destroy(EasyMock.isA(Object.class));
+        EasyMock.expectLastCall().andThrow(new TargetDestructionException("", ""));
+        EasyMock.replay(component);
+        scope.register(component);
+        Object id = new Object();
+        scope.onEvent(new HttpSessionStart(this, id));
+        scope.onEvent(new HttpSessionEnd(this, id));
+        EasyMock.verify(monitor);
+    }
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInitDestroyErrorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInitDestroyErrorTestCase.java?view=auto&rev=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInitDestroyErrorTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeInitDestroyErrorTestCase.java Mon Dec 18 21:11:03 2006
@@ -0,0 +1,87 @@
+/*
+ * 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.component.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ScopeContainerMonitor;
+import org.apache.tuscany.spi.component.TargetDestructionException;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.component.event.CompositeStart;
+import org.apache.tuscany.core.component.event.CompositeStop;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class ModuleScopeInitDestroyErrorTestCase extends TestCase {
+
+    public void testInitializeErrorMonitor() throws Exception {
+        ScopeContainerMonitor monitor;
+        monitor = EasyMock.createMock(ScopeContainerMonitor.class);
+        monitor.eagerInitializationError(EasyMock.isA(ObjectCreationException.class));
+        EasyMock.replay(monitor);
+        ModuleScopeContainer scope = new ModuleScopeContainer(monitor);
+        scope.start();
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.expect(component.createInstance()).andThrow(new ObjectCreationException(""));
+        EasyMock.expect(component.getInitLevel()).andReturn(1);
+        List<Class<?>> services = new ArrayList<Class<?>>();
+        services.add(Object.class);
+        EasyMock.expect(component.getServiceInterfaces()).andReturn(services);
+        EasyMock.replay(component);
+        scope.register(component);
+        scope.onEvent(new CompositeStart(this, null));
+        EasyMock.verify(monitor);
+    }
+
+    public void testDestroyErrorMonitor() throws Exception {
+        ScopeContainerMonitor monitor;
+        monitor = EasyMock.createMock(ScopeContainerMonitor.class);
+        monitor.destructionError(EasyMock.isA(TargetDestructionException.class));
+        EasyMock.replay(monitor);
+        ModuleScopeContainer scope = new ModuleScopeContainer(monitor);
+        scope.start();
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.expect(component.createInstance()).andReturn(new Object());
+        EasyMock.expect(component.getInitLevel()).andReturn(1);
+        List<Class<?>> services = new ArrayList<Class<?>>();
+        services.add(Object.class);
+        EasyMock.expect(component.getServiceInterfaces()).andReturn(services);
+        component.init(EasyMock.isA(Object.class));
+        component.destroy(EasyMock.isA(Object.class));
+        EasyMock.expectLastCall().andThrow(new TargetDestructionException("", ""));
+        EasyMock.replay(component);
+        scope.register(component);
+        scope.onEvent(new CompositeStart(this, null));
+        scope.onEvent(new CompositeStop(this, null));
+        EasyMock.verify(monitor);
+    }
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+}

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

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

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInitDestroyErrorTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInitDestroyErrorTestCase.java?view=auto&rev=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInitDestroyErrorTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/scope/RequestScopeInitDestroyErrorTestCase.java Mon Dec 18 21:11:03 2006
@@ -0,0 +1,91 @@
+/*
+ * 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.component.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ScopeContainerMonitor;
+import org.apache.tuscany.spi.component.TargetDestructionException;
+import org.apache.tuscany.spi.event.RuntimeEventListener;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.component.WorkContextImpl;
+import org.apache.tuscany.core.component.event.RequestEnd;
+import org.apache.tuscany.core.component.event.RequestStart;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class RequestScopeInitDestroyErrorTestCase extends TestCase {
+
+    public void testInitializeErrorMonitor() throws Exception {
+        ScopeContainerMonitor monitor;
+        monitor = EasyMock.createMock(ScopeContainerMonitor.class);
+        monitor.eagerInitializationError(EasyMock.isA(ObjectCreationException.class));
+        EasyMock.replay(monitor);
+        RequestScopeContainer scope = new RequestScopeContainer(new WorkContextImpl(), monitor);
+        scope.start();
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.expect(component.createInstance()).andThrow(new ObjectCreationException(""));
+        EasyMock.expect(component.isEagerInit()).andReturn(true);
+        List<Class<?>> services = new ArrayList<Class<?>>();
+        services.add(Object.class);
+        EasyMock.expect(component.getServiceInterfaces()).andReturn(services);
+        EasyMock.replay(component);
+        scope.register(component);
+        scope.onEvent(new RequestStart(this));
+        EasyMock.verify(monitor);
+    }
+
+    public void testDestroyErrorMonitor() throws Exception {
+        ScopeContainerMonitor monitor;
+        monitor = EasyMock.createMock(ScopeContainerMonitor.class);
+        monitor.destructionError(EasyMock.isA(TargetDestructionException.class));
+        EasyMock.replay(monitor);
+        RequestScopeContainer scope = new RequestScopeContainer(new WorkContextImpl(), monitor);
+        scope.start();
+        AtomicComponent component = EasyMock.createMock(AtomicComponent.class);
+        component.addListener(EasyMock.isA(RuntimeEventListener.class));
+        EasyMock.expect(component.getName()).andReturn("foo").atLeastOnce();
+        EasyMock.expect(component.createInstance()).andReturn(new Object());
+        EasyMock.expect(component.isEagerInit()).andReturn(true);
+        List<Class<?>> services = new ArrayList<Class<?>>();
+        services.add(Object.class);
+        EasyMock.expect(component.getServiceInterfaces()).andReturn(services);
+        component.init(EasyMock.isA(Object.class));
+        component.destroy(EasyMock.isA(Object.class));
+        EasyMock.expectLastCall().andThrow(new TargetDestructionException("", ""));
+        EasyMock.replay(component);
+        scope.register(component);
+        scope.onEvent(new RequestStart(this));
+        scope.onEvent(new RequestEnd(this));
+        EasyMock.verify(monitor);
+    }
+
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+}

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

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

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java?view=diff&rev=488523&r1=488522&r2=488523
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/model/Scope.java Mon Dec 18 21:11:03 2006
@@ -20,6 +20,8 @@
 
 /**
  * The default implementation scopes supported by assemblies.
+ *
+ * @version $Rev$ $Date$
  */
 public class Scope {
     public static final Scope STATELESS = new Scope("STATELESS");



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