Author: meerajk
Date: Mon Jan  1 06:55:26 2007
New Revision: 491583

URL: http://svn.apache.org/viewvc?view=rev&rev=491583
Log:
Intermediary checin for registration in composite component 
extension. Need to move the JMX implementation out of core. 
Runtime and RuntimeInfo implementations need to be from the 
boot and system classloaders respectively.

Added:
    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java
   (with props)
Modified:
    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfo.java
    
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfoImpl.java

Added: 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java?view=auto&rev=491583
==============================================================================
--- 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java
 (added)
+++ 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java
 Mon Jan  1 06:55:26 2007
@@ -0,0 +1,155 @@
+/*
+ * 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.services.management.jmx.runtime;
+
+import javax.xml.stream.XMLInputFactory;
+
+import org.osoa.sca.SCA;
+
+import org.apache.tuscany.spi.bootstrap.ComponentNames;
+import org.apache.tuscany.spi.bootstrap.RuntimeComponent;
+import org.apache.tuscany.spi.builder.BuilderException;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.ComponentException;
+import org.apache.tuscany.spi.component.ComponentRegistrationException;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.SCAObject;
+import org.apache.tuscany.spi.deployer.Deployer;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.wire.WireService;
+
+import org.apache.tuscany.core.bootstrap.Bootstrapper;
+import org.apache.tuscany.core.bootstrap.DefaultBootstrapper;
+import org.apache.tuscany.core.launcher.CompositeContextImpl;
+import org.apache.tuscany.core.runtime.AbstractRuntime;
+import org.apache.tuscany.host.MonitorFactory;
+import org.apache.tuscany.host.RuntimeInfo;
+import org.apache.tuscany.host.runtime.InitializationException;
+
+/**
+ * JMX runtime implementation.
+ * 
+ * @version $Revison$ $Date$
+ */
+public class JmxRuntimeImpl extends AbstractRuntime {
+    
+    private CompositeContextImpl context;
+    private RuntimeComponent runtime;
+    private CompositeComponent systemComponent;
+    private CompositeComponent tuscanySystem;
+    private CompositeComponent application;
+
+    public void initialize() throws InitializationException {
+        ClassLoader bootClassLoader = getClass().getClassLoader();
+
+        // Read optional system monitor factory classname
+        MonitorFactory mf = getMonitorFactory();
+
+        XMLInputFactory xmlFactory = 
XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", 
bootClassLoader);
+
+        Bootstrapper bootstrapper = new DefaultBootstrapper(mf, xmlFactory);
+        runtime = bootstrapper.createRuntime();
+        runtime.start();
+        systemComponent = runtime.getSystemComponent();
+
+        // register the runtime info provided by the host
+        RuntimeInfo runtimeInfo = getRuntimeInfo();
+        try {
+            systemComponent.registerJavaObject(RuntimeInfo.COMPONENT_NAME, 
RuntimeInfo.class, runtimeInfo);
+            systemComponent.registerJavaObject(JmxRuntimeInfo.COMPONENT_NAME,
+                                               JmxRuntimeInfo.class,
+                                               (JmxRuntimeInfo)runtimeInfo);
+
+            // register the monitor factory provided by the host
+            systemComponent.registerJavaObject("MonitorFactory", 
MonitorFactory.class, mf);
+        } catch (ComponentRegistrationException e) {
+            throw new InitializationException(e);
+        }
+
+        systemComponent.start();
+
+        try {
+            // deploy the system scdl
+            Deployer deployer = bootstrapper.createDeployer();
+            tuscanySystem =
+                deploySystemScdl(deployer,
+                                 systemComponent,
+                                 ComponentNames.TUSCANY_SYSTEM,
+                                 getSystemScdl(),
+                                 bootClassLoader);
+            tuscanySystem.start();
+
+            // switch to the system deployer
+            SCAObject deployerComponent = 
tuscanySystem.getSystemChild(ComponentNames.TUSCANY_DEPLOYER);
+            if (!(deployerComponent instanceof AtomicComponent)) {
+                throw new InitializationException("Deployer must be an atomic 
component");
+            }
+            deployer = 
(Deployer)((AtomicComponent)deployerComponent).getTargetInstance();
+
+            SCAObject wireServiceComponent = 
tuscanySystem.getSystemChild(ComponentNames.TUSCANY_WIRE_SERVICE);
+            if (!(wireServiceComponent instanceof AtomicComponent)) {
+                throw new InitializationException("WireService must be an 
atomic component");
+            }
+            WireService wireService = 
(WireService)((AtomicComponent)wireServiceComponent).getTargetInstance();
+
+            if (getApplicationScdl() != null) {
+                application =
+                    deployApplicationScdl(deployer,
+                                          runtime.getRootComponent(),
+                                          getApplicationName(),
+                                          getApplicationScdl(),
+                                          getApplicationClassLoader());
+                application.start();
+            }
+
+            context = new CompositeContextImpl(application, wireService);
+        } catch (LoaderException ex) {
+            throw new InitializationException(ex);
+        } catch (BuilderException ex) {
+            throw new InitializationException(ex);
+        } catch (ComponentException ex) {
+            throw new InitializationException(ex);
+        }
+    }
+
+    public void destroy() {
+        context = null;
+        if (application != null) {
+            application.stop();
+            application = null;
+        }
+        if (tuscanySystem != null) {
+            tuscanySystem.stop();
+            tuscanySystem = null;
+        }
+        if (systemComponent != null) {
+            systemComponent.stop();
+            systemComponent = null;
+        }
+        if (runtime != null) {
+            runtime.stop();
+            runtime = null;
+        }
+    }
+
+    public SCA getContext() {
+        return context;
+    }
+
+}

Propchange: 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfo.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfo.java?view=diff&rev=491583&r1=491582&r2=491583
==============================================================================
--- 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfo.java
 (original)
+++ 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfo.java
 Mon Jan  1 06:55:26 2007
@@ -30,6 +30,9 @@
  */
 public interface JmxRuntimeInfo extends RuntimeInfo {
     
+    /** Component name. */
+    static String COMPONENT_NAME = "JmxRuntimeInfo";
+    
     /**
      * Returns a reference to the mbean server used by the host.
      * @return A reference to the host mbean server.

Modified: 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfoImpl.java?view=diff&rev=491583&r1=491582&r2=491583
==============================================================================
--- 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfoImpl.java
 (original)
+++ 
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/management/jmx/runtime/JmxRuntimeInfoImpl.java
 Mon Jan  1 06:55:26 2007
@@ -47,20 +47,18 @@
     /**
      * Initializes the runtime info instance.
      * 
-     * @param applicationRootDirectory Application root directory.
      * @param baseUrl Base Url.
      * @param installDirectory Install directory.
      * @param online Onlne indicator.
      * @param mBeanServer MBean server.
      * @param managementDomain Management doamin for the runtime.
      */
-    public JmxRuntimeInfoImpl(final File applicationRootDirectory,
-                              final URL baseUrl,
+    public JmxRuntimeInfoImpl(final URL baseUrl,
                               final File installDirectory,
                               final boolean online,
                               final MBeanServer mBeanServer,
                               final String managementDomain) {
-        super(applicationRootDirectory, baseUrl, installDirectory, online);
+        super(null, baseUrl, installDirectory, online);
         this.mBeanServer = mBeanServer;
         this.managementDomain = managementDomain;
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to