You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2006/08/01 22:53:13 UTC
svn commit: r427726 [2/2] - in /incubator/tuscany/java: samples/sca/
samples/sca/bigbank/ samples/sca/bigbank/src/ samples/sca/bigbank/src/main/
samples/sca/bigbank/src/main/java/
samples/sca/bigbank/src/main/java/bigbank/ samples/sca/bigbank/src/main/...
Added: incubator/tuscany/java/samples/sca/bigbank/src/main/resources/META-INF/sca/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/bigbank/src/main/resources/META-INF/sca/default.scdl?rev=427726&view=auto
==============================================================================
--- incubator/tuscany/java/samples/sca/bigbank/src/main/resources/META-INF/sca/default.scdl (added)
+++ incubator/tuscany/java/samples/sca/bigbank/src/main/resources/META-INF/sca/default.scdl Tue Aug 1 13:53:11 2006
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (c) 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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.
+ -->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ name="BigBankComposite">
+
+ <service name="AccountService">
+ <interface.java interface="bigbank.account.AccountService"/>
+ <reference>AccountServiceComponent</reference>
+ </service>
+
+ <!--
+ <reference name="StockQuoteService">
+ <interface.java interface="bigbank.stock.StockQuoteService"/>
+ </reference>
+ -->
+
+
+ <component name="AccountServiceComponent">
+ <implementation.java class="bigbank.account.AccountServiceImpl"/>
+ <references>
+ <reference name="accountDataService" target="AccountDataServiceComponent" />
+ <!-- <reference name="stockQuoteService" target="StockQuoteService" /> -->
+ </references>
+ </component>
+
+ <component name="AccountDataServiceComponent">
+ <implementation.java class="bigbank.accountdata.AccountDataServiceImpl"/>
+ </component>
+
+</composite>
Added: incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java?rev=427726&view=auto
==============================================================================
--- incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java (added)
+++ incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java Tue Aug 1 13:53:11 2006
@@ -0,0 +1,39 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+ *
+ * Licensed 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 bigbank;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+import org.apache.tuscany.test.SCATestCase;
+import bigbank.account.AccountService;
+
+public class BigBankTestCase extends SCATestCase {
+
+ AccountService accountService;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ CompositeContext context = CurrentCompositeContext.getContext();
+ accountService = context.locateService(AccountService.class, "AccountServiceComponent");
+ }
+
+ public void test() throws Exception {
+ System.out.println("Account summary: " + accountService.getAccountReport("Foo") );
+ }
+}
Propchange: incubator/tuscany/java/samples/sca/bigbank/src/test/java/bigbank/BigBankTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/tuscany/java/samples/sca/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/pom.xml?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/samples/sca/pom.xml (original)
+++ incubator/tuscany/java/samples/sca/pom.xml Tue Aug 1 13:53:11 2006
@@ -33,5 +33,6 @@
<module>local.wire.cdi</module>
<module>calculator</module>
<module>supplychain</module>
+ <module>bigbank</module>
</modules>
</project>
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Tue Aug 1 13:53:11 2006
@@ -30,7 +30,6 @@
import org.apache.tuscany.spi.extension.LoaderExtension;
import org.apache.tuscany.spi.loader.LoaderRegistry;
import org.apache.tuscany.spi.loader.StAXPropertyFactory;
-import org.apache.tuscany.spi.model.Scope;
import org.apache.tuscany.spi.monitor.MonitorFactory;
import org.apache.tuscany.core.builder.BuilderRegistryImpl;
@@ -144,7 +143,7 @@
*/
public ScopeRegistry createScopeRegistry(WorkContext workContext) {
ScopeRegistry scopeRegistry = new ScopeRegistryImpl(workContext);
- scopeRegistry.registerFactory(Scope.MODULE, new ModuleScopeObjectFactory());
+ new ModuleScopeObjectFactory(scopeRegistry); // self-registers
return scopeRegistry;
}
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactory.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactory.java Tue Aug 1 13:53:11 2006
@@ -2,6 +2,10 @@
import org.apache.tuscany.spi.ObjectCreationException;
import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.osoa.sca.annotations.Init;
/**
* Creates a new module scope context
@@ -9,6 +13,14 @@
* @version $$Rev: 412208 $$ $$Date: 2006-06-06 13:47:19 -0700 (Tue, 06 Jun 2006) $$
*/
public class ModuleScopeObjectFactory implements ObjectFactory<ModuleScopeContainer> {
+
+ public ModuleScopeObjectFactory(@Autowire ScopeRegistry registry) {
+ registry.registerFactory(Scope.MODULE, this);
+ }
+
+ @Init(eager = true)
+ public void init() {
+ }
public ModuleScopeContainer getInstance() throws ObjectCreationException {
return new ModuleScopeContainer();
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactory.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactory.java Tue Aug 1 13:53:11 2006
@@ -2,6 +2,10 @@
import org.apache.tuscany.spi.ObjectCreationException;
import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.osoa.sca.annotations.Init;
/**
* Creates a new stateless scope context
@@ -9,6 +13,14 @@
* @version $$Rev: 412208 $$ $$Date: 2006-06-06 13:47:19 -0700 (Tue, 06 Jun 2006) $$
*/
public class StatelessScopeObjectFactory implements ObjectFactory<StatelessScopeContainer> {
+
+ public StatelessScopeObjectFactory(@Autowire ScopeRegistry registry) {
+ registry.registerFactory(Scope.STATELESS, this);
+ }
+
+ @Init(eager = true)
+ public void init() {
+ }
public StatelessScopeContainer getInstance() throws ObjectCreationException {
return new StatelessScopeContainer();
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/Launcher.java Tue Aug 1 13:53:11 2006
@@ -18,7 +18,6 @@
import java.io.File;
import java.net.URL;
-import java.net.URI;
import javax.xml.stream.XMLInputFactory;
@@ -29,9 +28,9 @@
import org.apache.tuscany.spi.bootstrap.ComponentNames;
import org.apache.tuscany.spi.bootstrap.RuntimeComponent;
import org.apache.tuscany.spi.services.info.RuntimeInfo;
+import org.apache.tuscany.spi.monitor.MonitorFactory;
import org.apache.tuscany.core.bootstrap.Bootstrapper;
import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
-import org.apache.tuscany.core.monitor.NullMonitorFactory;
import org.apache.tuscany.core.implementation.system.model.SystemCompositeImplementation;
import org.apache.tuscany.core.implementation.system.component.SystemCompositeComponent;
@@ -41,14 +40,10 @@
* @version $Rev: 417136 $ $Date: 2006-06-26 03:54:48 -0400 (Mon, 26 Jun 2006) $
*/
public class Launcher {
- private ClassLoader applicationLoader;
- private RuntimeComponent runtime;
- private Deployer deployer;
-
/**
* A conventional META-INF based location for the system SCDL.
*
- * @see #bootRuntime(URL)
+ * @see #bootRuntime(URL, MonitorFactory)
*/
public static final String METAINF_SYSTEM_SCDL_PATH = "META-INF/tuscany/system.scdl";
@@ -59,6 +54,10 @@
*/
public static final String METAINF_APPLICATION_SCDL_PATH = "META-INF/sca/default.scdl";
+ private ClassLoader applicationLoader;
+ private RuntimeComponent runtime;
+ private Deployer deployer;
+
/**
* Returns the classloader for application classes.
*
@@ -85,14 +84,14 @@
* @return a CompositeComponent for the newly booted runtime system
* @throws LoaderException
*/
- public CompositeComponent<?> bootRuntime(URL systemScdl) throws LoaderException {
+ public CompositeComponent<?> bootRuntime(URL systemScdl, MonitorFactory monitor) throws LoaderException {
if (systemScdl == null) {
throw new LoaderException("Null system SCDL URL");
}
ClassLoader systemClassLoader = getClass().getClassLoader();
XMLInputFactory xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", systemClassLoader);
- Bootstrapper bootstrapper = new DefaultBootstrapper(new NullMonitorFactory(), xmlFactory);
+ Bootstrapper bootstrapper = new DefaultBootstrapper(monitor, xmlFactory);
Deployer bootDeployer = bootstrapper.createDeployer();
// create and start the core runtime
@@ -126,8 +125,9 @@
* Shuts down the active runtime being managed by this instance.
*/
public void shutdownRuntime() {
- if (runtime != null)
+ if (runtime != null) {
runtime.stop();
+ }
runtime = null;
}
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/MainLauncher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/MainLauncher.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/MainLauncher.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/MainLauncher.java Tue Aug 1 13:53:11 2006
@@ -27,6 +27,7 @@
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.core.util.ClassLoaderHelper;
+import org.apache.tuscany.core.monitor.NullMonitorFactory;
/**
@@ -133,7 +134,7 @@
parseArguments(args);
// need to use the classloader as the path does not start with a '/'
URL scdl = getClass().getClassLoader().getResource(METAINF_SYSTEM_SCDL_PATH);
- bootRuntime(scdl);
+ bootRuntime(scdl, new NullMonitorFactory());
URL appScdl = getApplicationLoader().getResource(METAINF_APPLICATION_SCDL_PATH);
CompositeComponent application = bootApplication(appScdl);
application.start();
@@ -152,8 +153,7 @@
} catch (InvocationTargetException e) {
e.getCause().printStackTrace(System.err);
System.exit(2);
- }
- finally {
+ } finally {
shutdownRuntime();
}
}
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/ServletLauncherListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/ServletLauncherListener.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/ServletLauncherListener.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/launcher/ServletLauncherListener.java Tue Aug 1 13:53:11 2006
@@ -2,12 +2,17 @@
import org.apache.tuscany.spi.loader.LoaderException;
import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.monitor.MonitorFactory;
+import org.apache.tuscany.core.monitor.MonitorFactoryUtil;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContext;
import java.net.URL;
import java.net.MalformedURLException;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.logging.Level;
/**
* Launcher for runtime environment that loads info from servlet context params.
@@ -32,6 +37,12 @@
* Servlet context-param name for user-specified application SCDL path.
*/
public static final String APPLICATION_SCDL_PATH_PARAM = "applicationScdlPath";
+ /**
+ * Servlet context-param name for system monitoring level.
+ * Supported values are the names of statics defined in java.util.logging.Level.
+ * If absent, no monitoring will take place.
+ */
+ public static final String SYSTEM_MONITORING_PARAM = "tuscanyMonitoringLevel";
/**
* Default application SCDL path used if no "applicationScdlPath" param is specified
@@ -65,6 +76,10 @@
applicationScdlPath = DEFAULT_APPLICATION_SCDL_PATH;
}
+ // Read optional system monitor factory classname
+ String systemLogging = servletContext.getInitParameter(SYSTEM_MONITORING_PARAM);
+ MonitorFactory mf = getMonitorFactory(systemLogging);
+
Launcher launcher = new Launcher();
// Current thread context classloader should be the webapp classloader
@@ -75,7 +90,7 @@
try {
URL systemScdl = getClass().getResource(systemScdlPath);
- launcher.bootRuntime(systemScdl);
+ launcher.bootRuntime(systemScdl, mf);
servletContext.setAttribute(LAUNCHER_ATTRIBUTE, launcher);
URL appScdl;
@@ -83,24 +98,22 @@
// Paths begining w/ "/" are treated as webapp resources
try {
appScdl = servletContext.getResource(applicationScdlPath);
- }
- catch (MalformedURLException mue) {
+ } catch (MalformedURLException mue) {
throw new LoaderException("Unable to find application SCDL: " + applicationScdlPath);
}
- }
- else {
+ } else {
// Other paths are searched using the application classloader
appScdl = launcher.getApplicationLoader().getResource(applicationScdlPath);
- if (appScdl == null)
+ if (appScdl == null) {
throw new LoaderException("Unable to find application SCDL: " + applicationScdlPath);
+ }
}
component = launcher.bootApplication(appScdl);
component.start();
context = new CompositeContextImpl(component);
context.start();
- }
- catch (Throwable t) {
+ } catch (Throwable t) {
servletContext.setAttribute(LAUNCHER_THROWABLE_ATTRIBUTE, t);
t.printStackTrace();
}
@@ -111,7 +124,27 @@
Launcher launcher = (Launcher) servletContext.getAttribute(LAUNCHER_ATTRIBUTE);
- if (launcher != null)
+ if (launcher != null) {
launcher.shutdownRuntime();
+ }
+ }
+
+ private MonitorFactory getMonitorFactory(String loggingLevel) {
+ String factoryName = "org.apache.tuscany.core.monitor.NullMonitorFactory";
+ Map<String, Object> props = null;
+ if (loggingLevel != null) {
+ factoryName = "org.apache.tuscany.core.monitor.JavaLoggingMonitorFactory";
+ props = new HashMap<String, Object>();
+ Level level = Level.SEVERE;
+ try {
+ level = Level.parse(loggingLevel);
+ } catch (IllegalArgumentException e) {
+ // ignore bad loggingLevel
+ }
+ props.put("bundleName", "SystemMessages");
+ props.put("defaultLevel", level);
+ }
+
+ return MonitorFactoryUtil.createMonitorFactory(factoryName, props);
}
}
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java Tue Aug 1 13:53:11 2006
@@ -159,6 +159,13 @@
throws XMLStreamException, LoaderException {
String name = reader.getAttributeValue(null, "name");
String target = reader.getAttributeValue(null, "target");
+
+ if (name == null || target == null) {
+ InvalidReferenceException le = new InvalidReferenceException();
+ le.setIdentifier(target);
+ throw le;
+ }
+
ReferenceTarget referenceTarget = new ReferenceTarget();
referenceTarget.setReferenceName(name);
try {
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/JavaLoggingMonitorFactory.java Tue Aug 1 13:53:11 2006
@@ -55,13 +55,13 @@
* the method name in form returned by <code>Class.getName() + '#' + Method.getName()</code> and the value the log
* level to use as defined by {@link java.util.logging.Level}.
*
- * @param levels definition of custom levels for specific monitored methods
+ * @param levels definition of custom levels for specific monitored methods, may be null or empty.
* @param defaultLevel the default log level to use
* @param bundleName the name of a resource bundle that will be passed to the logger
* @see java.util.logging.Logger
*/
public JavaLoggingMonitorFactory(Properties levels, Level defaultLevel, String bundleName) {
- Map<String,Object> configProperties = new HashMap<String,Object>();
+ Map<String, Object> configProperties = new HashMap<String, Object>();
configProperties.put("levels", levels);
configProperties.put("defaultLevel", defaultLevel);
configProperties.put("bundleName", bundleName);
@@ -74,24 +74,29 @@
public JavaLoggingMonitorFactory() {
}
- public void initialize(Map<String,Object> configProperties) {
+ public void initialize(Map<String, Object> configProperties) {
+ if (configProperties == null) {
+ return;
+ }
+
try {
this.defaultLevel = (Level) configProperties.get("defaultLevel");
this.bundleName = (String) configProperties.get("bundleName");
Properties levels = (Properties) configProperties.get("levels");
- this.levels = new HashMap<String, Level>(levels.size());
- for (Map.Entry<Object, Object> entry : levels.entrySet()) {
- String method = (String) entry.getKey();
- String level = (String) entry.getValue();
- try {
- this.levels.put(method, Level.parse(level));
- } catch (IllegalArgumentException e) {
- throw new InvalidLevelException(method, level);
+ this.levels = new HashMap<String, Level>();
+ if (levels != null) {
+ for (Map.Entry<Object, Object> entry : levels.entrySet()) {
+ String method = (String) entry.getKey();
+ String level = (String) entry.getValue();
+ try {
+ this.levels.put(method, Level.parse(level));
+ } catch (IllegalArgumentException e) {
+ throw new InvalidLevelException(method, level);
+ }
}
}
- }
- catch (ClassCastException cce) {
+ } catch (ClassCastException cce) {
throw new IllegalArgumentException(cce.getLocalizedMessage());
}
}
Added: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/MonitorFactoryUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/MonitorFactoryUtil.java?rev=427726&view=auto
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/MonitorFactoryUtil.java (added)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/MonitorFactoryUtil.java Tue Aug 1 13:53:11 2006
@@ -0,0 +1,59 @@
+package org.apache.tuscany.core.monitor;
+
+import org.apache.tuscany.spi.monitor.MonitorFactory;
+
+import java.util.Map;
+
+/**
+ * Helper for creating MonitorFactory instances.
+ *
+ * @version $$Rev: $$ $$Date: $$
+ */
+
+public final class MonitorFactoryUtil {
+ /**
+ * Hide the constructor
+ */
+ private MonitorFactoryUtil() {
+ }
+
+ /**
+ * Creates a MonitorFactory instance of the specified type.
+ * @param name fully qualified classname of the desired MonitorFactory type
+ * @param props collection of initialization properties
+ * @return a configured MonitorFactory instance, or null if the factory could not be instantiated.
+ */
+ public static MonitorFactory createMonitorFactory(String name, Map<String, Object> props) {
+ Class<? extends MonitorFactory> clazz;
+ try {
+ clazz = (Class<? extends MonitorFactory>) Class.forName(name);
+ } catch (ClassNotFoundException cnfe) {
+ return null;
+ } catch (ClassCastException cce) {
+ return null;
+ }
+
+ return createMonitorFactory(clazz, props);
+ }
+
+ /**
+ * Creates a MonitorFactory instance of the specified type.
+ * @param mfc class of the desired MonitorFactory type
+ * @param props collection of initialization properties
+ * @return a configured MonitorFactory instance, or null if the factory could not be instantiated.
+ */
+ public static MonitorFactory createMonitorFactory(Class<? extends MonitorFactory> mfc, Map<String, Object> props) {
+ MonitorFactory mf;
+ try {
+ mf = mfc.newInstance();
+ mf.initialize(props);
+ } catch (InstantiationException e) {
+ throw new AssertionError(e);
+ } catch (IllegalAccessException e) {
+ throw new AssertionError(e);
+ }
+ // allow IllegalArgumentException to propogate out
+
+ return mf;
+ }
+}
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/MonitorFactoryUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/NullMonitorFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/NullMonitorFactory.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/NullMonitorFactory.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/monitor/NullMonitorFactory.java Tue Aug 1 13:53:11 2006
@@ -44,7 +44,7 @@
public void init() {
}
- public void initialize(Map<String,Object> configProperties) {
+ public void initialize(Map<String, Object> configProperties) {
}
public <T> T getMonitor(Class<T> monitorInterface) {
Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/util/ClassLoaderHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/util/ClassLoaderHelper.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/util/ClassLoaderHelper.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/util/ClassLoaderHelper.java Tue Aug 1 13:53:11 2006
@@ -11,7 +11,13 @@
* @version $$Rev: $$ $$Date: $$
*/
-public class ClassLoaderHelper {
+public final class ClassLoaderHelper {
+ /**
+ * Hide constructor
+ */
+ private ClassLoaderHelper() {
+ }
+
/**
* Create a classloader for the supplied classpath.
*
Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactoryTestCase.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactoryTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/ModuleScopeObjectFactoryTestCase.java Tue Aug 1 13:53:11 2006
@@ -1,13 +1,18 @@
package org.apache.tuscany.core.component.scope;
-import junit.framework.TestCase;
+import org.jmock.MockObjectTestCase;
+import org.jmock.Mock;
+import org.apache.tuscany.spi.component.ScopeRegistry;
/**
* @version $Rev$ $Date$
*/
-public class ModuleScopeObjectFactoryTestCase extends TestCase {
+public class ModuleScopeObjectFactoryTestCase extends MockObjectTestCase {
public void testCreation() {
- assertNotNull(new ModuleScopeObjectFactory().getInstance());
+ Mock registry = mock(ScopeRegistry.class);
+ registry.expects(once()).method("registerFactory").withAnyArguments();
+
+ assertNotNull(new ModuleScopeObjectFactory((ScopeRegistry)registry.proxy()).getInstance());
}
}
Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactoryTestCase.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactoryTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/component/scope/StatelessScopeObjectFactoryTestCase.java Tue Aug 1 13:53:11 2006
@@ -1,13 +1,18 @@
package org.apache.tuscany.core.component.scope;
-import junit.framework.TestCase;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+import org.apache.tuscany.spi.component.ScopeRegistry;
/**
* @version $Rev$ $Date$
*/
-public class StatelessScopeObjectFactoryTestCase extends TestCase {
+public class StatelessScopeObjectFactoryTestCase extends MockObjectTestCase {
public void testCreation() {
- assertNotNull(new StatelessScopeObjectFactory().getInstance());
+ Mock registry = mock(ScopeRegistry.class);
+ registry.expects(once()).method("registerFactory").withAnyArguments();
+
+ assertNotNull(new StatelessScopeObjectFactory((ScopeRegistry)registry.proxy()).getInstance());
}
}
Modified: incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/java/builder/JavaBuilderPropertyTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/java/builder/JavaBuilderPropertyTestCase.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/java/builder/JavaBuilderPropertyTestCase.java (original)
+++ incubator/tuscany/java/sca/core/src/test/java/org/apache/tuscany/core/integration/implementation/java/builder/JavaBuilderPropertyTestCase.java Tue Aug 1 13:53:11 2006
@@ -61,7 +61,7 @@
Mock mock = mock(AutowireComponent.class);
parent = (CompositeComponent<?>) mock.proxy();
registry = new ScopeRegistryImpl(new WorkContextImpl());
- registry.registerFactory(Scope.STATELESS, new StatelessScopeObjectFactory());
+ new StatelessScopeObjectFactory(registry);
}
private static class Foo {
Modified: incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/monitor/MonitorFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/monitor/MonitorFactory.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/monitor/MonitorFactory.java (original)
+++ incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/monitor/MonitorFactory.java Tue Aug 1 13:53:11 2006
@@ -33,10 +33,10 @@
/**
* Initializes MonitorFactory instances with implementation-specific configuration properties.
*
- * @param configProperties a map of named configuration properties
+ * @param configProperties a map of named configuration properties. May be null.
* @throws IllegalArgumentException if the instance can't be configured using the supplied properties
*/
- void initialize(Map<String,Object> configProperties);
+ void initialize(Map<String, Object> configProperties);
/**
* Return a monitor for a component's monitor interface.
*
Modified: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java?rev=427726&r1=427725&r2=427726&view=diff
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java (original)
+++ incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/SCATestCase.java Tue Aug 1 13:53:11 2006
@@ -27,6 +27,7 @@
import org.apache.tuscany.core.launcher.CompositeContextImpl;
import org.apache.tuscany.core.launcher.Launcher;
import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.core.monitor.NullMonitorFactory;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.deployer.Deployer;
import org.apache.tuscany.spi.loader.LoaderException;
@@ -38,7 +39,6 @@
* @version $Rev$ $Date$
*/
public class SCATestCase extends TestCase {
- private Launcher launcher;
private CompositeComponent<?> component;
private CompositeContextImpl context;
private Map<String, URL> extensions = new HashMap<String, URL>();
@@ -47,9 +47,10 @@
protected void setUp() throws Exception {
super.setUp();
ClassLoader cl = getClass().getClassLoader();
- launcher = new Launcher();
+ Launcher launcher = new Launcher();
launcher.setApplicationLoader(cl);
- CompositeComponent<?> composite = launcher.bootRuntime(cl.getResource(Launcher.METAINF_SYSTEM_SCDL_PATH));
+ CompositeComponent<?> composite = launcher.bootRuntime(cl.getResource(Launcher.METAINF_SYSTEM_SCDL_PATH),
+ new NullMonitorFactory());
for (String extensionName : extensions.keySet()) {
deployExtension(composite, extensionName, extensions.get(extensionName));
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org