You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/03/29 22:09:40 UTC
svn commit: r523823 -
/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
Author: rfeng
Date: Thu Mar 29 13:09:37 2007
New Revision: 523823
URL: http://svn.apache.org/viewvc?view=rev&rev=523823
Log:
Fix the leak in destroy()
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/runtime/AbstractRuntime.java
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=523823&r1=523822&r2=523823
==============================================================================
--- 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 Thu Mar 29 13:09:37 2007
@@ -18,30 +18,48 @@
*/
package org.apache.tuscany.core.runtime;
+import static org.apache.tuscany.spi.bootstrap.ComponentNames.TUSCANY_DEPLOYER;
+import static org.apache.tuscany.spi.bootstrap.ComponentNames.TUSCANY_SYSTEM;
+import static org.apache.tuscany.spi.bootstrap.ComponentNames.TUSCANY_SYSTEM_ROOT;
+
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import javax.xml.stream.XMLInputFactory;
-import org.osoa.sca.ComponentContext;
+import javax.xml.stream.XMLInputFactory;
-import static org.apache.tuscany.spi.bootstrap.ComponentNames.TUSCANY_SYSTEM_ROOT;
-import static org.apache.tuscany.spi.bootstrap.ComponentNames.TUSCANY_SYSTEM;
-import static org.apache.tuscany.spi.bootstrap.ComponentNames.TUSCANY_DEPLOYER;
+import org.apache.tuscany.core.bootstrap.Bootstrapper;
+import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
+import org.apache.tuscany.core.builder.ConnectorImpl;
+import org.apache.tuscany.core.component.ComponentManagerImpl;
+import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
+import org.apache.tuscany.core.component.scope.ScopeRegistryImpl;
+import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
+import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
+import org.apache.tuscany.core.monitor.NullMonitorFactory;
+import org.apache.tuscany.core.resolver.AutowireResolver;
+import org.apache.tuscany.core.resolver.DefaultAutowireResolver;
+import org.apache.tuscany.core.services.classloading.ClassLoaderRegistryImpl;
+import org.apache.tuscany.host.MonitorFactory;
+import org.apache.tuscany.host.RuntimeInfo;
+import org.apache.tuscany.host.management.ManagementService;
+import org.apache.tuscany.host.monitor.FormatterRegistry;
+import org.apache.tuscany.host.runtime.InitializationException;
+import org.apache.tuscany.host.runtime.TuscanyRuntime;
import org.apache.tuscany.spi.builder.BuilderException;
import org.apache.tuscany.spi.builder.Connector;
import org.apache.tuscany.spi.component.AtomicComponent;
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.ComponentException;
import org.apache.tuscany.spi.component.ComponentManager;
+import org.apache.tuscany.spi.component.GroupInitializationException;
import org.apache.tuscany.spi.component.RegistrationException;
-import org.apache.tuscany.spi.component.TargetResolutionException;
-import org.apache.tuscany.spi.component.ScopeRegistry;
-import org.apache.tuscany.spi.component.ScopeContainerMonitor;
import org.apache.tuscany.spi.component.ScopeContainer;
-import org.apache.tuscany.spi.component.GroupInitializationException;
+import org.apache.tuscany.spi.component.ScopeContainerMonitor;
+import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.component.TargetResolutionException;
import org.apache.tuscany.spi.component.WorkContext;
import org.apache.tuscany.spi.deployer.Deployer;
import org.apache.tuscany.spi.idl.InvalidServiceContractException;
@@ -51,27 +69,9 @@
import org.apache.tuscany.spi.model.ComponentDefinition;
import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.resolver.ResolutionException;
-import org.apache.tuscany.spi.services.management.TuscanyManagementService;
import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
-
-import org.apache.tuscany.core.bootstrap.Bootstrapper;
-import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
-import org.apache.tuscany.core.builder.ConnectorImpl;
-import org.apache.tuscany.core.component.ComponentManagerImpl;
-import org.apache.tuscany.core.component.scope.ScopeRegistryImpl;
-import org.apache.tuscany.core.component.scope.CompositeScopeContainer;
-import org.apache.tuscany.core.idl.java.JavaInterfaceProcessorRegistryImpl;
-import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
-import org.apache.tuscany.core.monitor.NullMonitorFactory;
-import org.apache.tuscany.core.resolver.AutowireResolver;
-import org.apache.tuscany.core.resolver.DefaultAutowireResolver;
-import org.apache.tuscany.core.services.classloading.ClassLoaderRegistryImpl;
-import org.apache.tuscany.host.MonitorFactory;
-import org.apache.tuscany.host.RuntimeInfo;
-import org.apache.tuscany.host.management.ManagementService;
-import org.apache.tuscany.host.monitor.FormatterRegistry;
-import org.apache.tuscany.host.runtime.InitializationException;
-import org.apache.tuscany.host.runtime.TuscanyRuntime;
+import org.apache.tuscany.spi.services.management.TuscanyManagementService;
+import org.osoa.sca.ComponentContext;
/**
* @version $Rev$ $Date$
@@ -109,7 +109,8 @@
private I runtimeInfo;
/**
- * MonitorFactory provided by the host for directing events to its management framework.
+ * MonitorFactory provided by the host for directing events to its
+ * management framework.
*/
private MonitorFactory monitorFactory;
@@ -126,7 +127,7 @@
private AutowireResolver resolver;
private Component systemComponent;
- private Component tuscanySystem;
+ private Collection<Component> components;
private JavaInterfaceProcessorRegistry interfaceProcessorRegistry;
private ScopeRegistry scopeRegistry;
@@ -207,13 +208,12 @@
registerBaselineSystemComponents();
// deploy the system scdl
- Collection<Component> components;
try {
components = deploySystemScdl(bootstrapper.createDeployer(),
- systemComponent,
- name,
- getSystemScdl(),
- getClass().getClassLoader());
+ systemComponent,
+ name,
+ getSystemScdl(),
+ getClass().getClassLoader());
} catch (LoaderException e) {
throw new InitializationException(e);
} catch (BuilderException e) {
@@ -223,11 +223,12 @@
} catch (ResolutionException e) {
throw new InitializationException(e);
}
+
for (Component component : components) {
component.start();
}
- Component composite = componentManager.getComponent(name);
- URI uri = composite.getUri();
+ systemComponent = componentManager.getComponent(name);
+ URI uri = systemComponent.getUri();
ScopeContainer scopeContainer = scopeRegistry.getScopeContainer(Scope.COMPOSITE);
try {
scopeContainer.startContext(uri, uri);
@@ -237,17 +238,19 @@
}
public void destroy() {
- if (tuscanySystem != null) {
- tuscanySystem.stop();
- tuscanySystem = null;
- }
+ ScopeContainer scopeContainer = scopeRegistry.getScopeContainer(Scope.COMPOSITE);
+ scopeContainer.stopContext(systemComponent.getUri());
if (systemComponent != null) {
systemComponent.stop();
systemComponent = null;
}
+ if (components != null) {
+ for (Component component : components) {
+ component.stop();
+ }
+ }
}
-
public ComponentContext getComponentContext(URI componentId) {
Component component = componentManager.getComponent(componentId);
if (component == null) {
@@ -257,21 +260,17 @@
}
protected Bootstrapper createBootstrapper() {
- TuscanyManagementService tms = (TuscanyManagementService) getManagementService();
+ TuscanyManagementService tms = (TuscanyManagementService)getManagementService();
resolver = new DefaultAutowireResolver();
componentManager = new ComponentManagerImpl(tms, resolver);
Connector connector = new ConnectorImpl(componentManager);
scopeRegistry = new ScopeRegistryImpl();
- CompositeScopeContainer scopeContainer =
- new CompositeScopeContainer(monitorFactory.getMonitor(ScopeContainerMonitor.class));
+ CompositeScopeContainer scopeContainer = new CompositeScopeContainer(monitorFactory
+ .getMonitor(ScopeContainerMonitor.class));
scopeContainer.start();
scopeRegistry.register(scopeContainer);
- return new DefaultBootstrapper(getMonitorFactory(),
- xmlFactory,
- componentManager,
- resolver,
- connector,
+ return new DefaultBootstrapper(getMonitorFactory(), xmlFactory, componentManager, resolver, connector,
scopeRegistry);
}
@@ -330,19 +329,19 @@
Component parent,
URI name,
URL systemScdl,
- ClassLoader systemClassLoader)
- throws LoaderException, BuilderException, ComponentException, ResolutionException {
+ ClassLoader systemClassLoader) throws LoaderException,
+ BuilderException, ComponentException, ResolutionException {
SystemCompositeImplementation impl = new SystemCompositeImplementation();
impl.setScdlLocation(systemScdl);
impl.setClassLoader(systemClassLoader);
- ComponentDefinition<SystemCompositeImplementation> definition =
- new ComponentDefinition<SystemCompositeImplementation>(name, impl);
+ ComponentDefinition<SystemCompositeImplementation> definition = new ComponentDefinition<SystemCompositeImplementation>(
+ name,
+ impl);
return deployer.deploy(parent, definition);
}
-
protected ComponentManager getComponentManager() {
return componentManager;
}
@@ -353,20 +352,17 @@
protected WorkContext getWorkContext() {
try {
- AtomicComponent component =
- (AtomicComponent) getComponentManager().getComponent(WORK_CONTEXT_URI);
- return (WorkContext) component.getTargetInstance();
+ AtomicComponent component = (AtomicComponent)getComponentManager().getComponent(WORK_CONTEXT_URI);
+ return (WorkContext)component.getTargetInstance();
} catch (TargetResolutionException e) {
throw new AssertionError(e);
}
}
-
protected Deployer getDeployer() {
try {
- AtomicComponent component =
- (AtomicComponent) getComponentManager().getComponent(TUSCANY_DEPLOYER);
- return (Deployer) component.getTargetInstance();
+ AtomicComponent component = (AtomicComponent)getComponentManager().getComponent(TUSCANY_DEPLOYER);
+ return (Deployer)component.getTargetInstance();
} catch (TargetResolutionException e) {
throw new AssertionError(e);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org