You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2008/08/23 22:15:17 UTC

svn commit: r688406 [2/3] - in /tuscany/java/sca/tools/eclipse34: ./ features/ features/core/ features/core/META-INF/ plugins/ plugins/core/ plugins/core/META-INF/ plugins/core/exsd/ plugins/core/icons/ plugins/core/org/ plugins/core/org/apache/ plugin...

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,255 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+import static org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchConfigurationDelegate.TUSCANY_LAUNCH_CONFIGURATIONTYPE;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.Socket;
+
+import org.apache.tuscany.sca.plugin.core.classpath.CoreClasspathContainer;
+import org.apache.tuscany.sca.plugin.core.classpath.RuntimeClasspathContainerInitializerExtensionPoint;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+import org.eclipse.jdt.launching.JavaRuntime;
+
+/**
+ * Provides utility methods to launch the SCA Domain Manager.
+ *
+ * @version $Rev: $ $Date: $
+ */
+public class DomainManagerLauncherUtil {
+    
+    private static final String TUSCANY_DOMAIN_LAUNCH_CONFIGURATION = "SCA Domain Manager";
+    private static final String TUSCANY_SCA_DOMAIN_PROJECT = "tuscany-sca-domain";
+
+    private static final String PING_HEADER =
+        "GET /ping HTTP/1.0\n" + "Host: localhost\n"
+            + "Content-Type: text/xml\n"
+            + "Connection: close\n"
+            + "Content-Length: ";
+    private static final String PING_CONTENT = "";
+    private static final String PING =
+        PING_HEADER + PING_CONTENT.getBytes().length + "\n\n" + PING_CONTENT;
+    
+    /**
+     * Returns the SCA domain project.
+     * 
+     * @return
+     * @throws CoreException
+     */
+    static IProject domainProject(IProgressMonitor progressMonitor) throws CoreException {
+        
+        IProject domainProject = ResourcesPlugin.getWorkspace().getRoot().getProject(TUSCANY_SCA_DOMAIN_PROJECT);
+        if (progressMonitor.isCanceled()) {
+            return domainProject;
+        }
+        if (!domainProject.exists()) {
+            progressMonitor.subTask("Creating SCA domain resources");
+            
+            // Create SCA domain project if necessary 
+            domainProject.create(new SubProgressMonitor(progressMonitor, 5));
+            domainProject.open(new SubProgressMonitor(progressMonitor, 5));
+            
+            String html = "<html>\n" +
+                "<head>\n" +
+                "<meta http-equiv=\"refresh\" content=\"0;url=http://localhost:9990/ui/home\">\n" +
+                "</head>\n" +
+                "<body>\n" +
+                "<a href=\"http://localhost:9990/ui/home\">SCA Domain</a>\n" +
+                "</body>\n" +
+                "</html>"; 
+            
+            IFile file = domainProject.getFile(new Path("domain.html"));
+            file.create(new ByteArrayInputStream(html.getBytes()), true, new SubProgressMonitor(progressMonitor, 5));
+            
+            IProjectDescription description = domainProject.getDescription();
+            String[] prevNatures= description.getNatureIds();
+            String[] newNatures= new String[prevNatures.length + 1];
+            System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
+            newNatures[prevNatures.length]= JavaCore.NATURE_ID;
+            description.setNatureIds(newNatures);
+            domainProject.setDescription(description, new SubProgressMonitor(progressMonitor, 5));
+            
+            IJavaProject javaProject = JavaCore.create(domainProject);
+            javaProject.setOutputLocation(domainProject.getFullPath(), new SubProgressMonitor(progressMonitor, 5));
+            
+            IClasspathEntry classPath = JavaCore.newContainerEntry(new CoreClasspathContainer().getPath());
+            IClasspathEntry jrePath = JavaRuntime.getDefaultJREContainerEntry();
+            javaProject.setRawClasspath(new IClasspathEntry[] {jrePath, classPath}, new SubProgressMonitor(progressMonitor, 5));
+        
+        } else {
+            domainProject.open(new SubProgressMonitor(progressMonitor, 5));
+        }
+        
+        return domainProject;
+    }
+
+    /**
+     * Returns true if the SCA domain controller is running.
+     * 
+     * @return
+     */
+    private static boolean isDomainManagerRunning() {
+        try {
+            Socket client = new Socket("localhost", 9990);
+            OutputStream os = client.getOutputStream();
+            os.write(DomainManagerLauncherUtil.PING.getBytes());
+            os.flush();
+            String response = DomainManagerLauncherUtil.read(client);
+            if (response.indexOf("<span id=\"ping\">") != -1) {
+                return true;
+            } else {
+                return false;
+            }
+        } catch (IOException e) {
+            return false;
+        }
+    }
+
+    /**
+     * Wait for domain to be running.
+     * 
+     * @return
+     */
+    private static boolean waitForDomainManager(IProgressMonitor progressMonitor) throws InterruptedException {
+        progressMonitor.subTask("Contacting SCA domain manager");
+        for (int i = 0; i < 40; i++) {
+            if (progressMonitor.isCanceled()) {
+                return false;
+            }
+            if (isDomainManagerRunning()) {
+                return true;
+            }
+            Thread.sleep(500);
+        }
+        return false;
+    }
+
+    static void launchDomainManager(IProgressMonitor progressMonitor) throws JavaModelException, CoreException, InterruptedException {
+        
+        progressMonitor.beginTask("Starting SCA Domain Manager", 100);
+        
+        // If the SCA domain controller is not running yet, launch it
+        if (!isDomainManagerRunning()) {
+
+            progressMonitor.subTask("Starting SCA domain manager");
+            if (progressMonitor.isCanceled()) {
+                return;
+            }
+            
+            // Get the SCA domain project
+            IProject domainProject = domainProject(progressMonitor);
+            
+            // Get the domain manager launch configuration
+            ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+            ILaunchConfigurationType launchConfigurationType =launchManager.getLaunchConfigurationType(TUSCANY_LAUNCH_CONFIGURATIONTYPE);
+            ILaunchConfiguration configuration = null;
+            for (ILaunchConfiguration c : launchManager.getLaunchConfigurations(launchConfigurationType)) {
+                if (TUSCANY_DOMAIN_LAUNCH_CONFIGURATION.equals(c.getName())) {
+                    configuration = c;
+                    break;
+                }
+            }
+            
+            if (configuration == null) {
+                progressMonitor.worked(10);
+                if (progressMonitor.isCanceled()) {
+                    return;
+                }
+    
+                // Create a new launch configuration
+                ILaunchConfigurationWorkingCopy newConfiguration = launchConfigurationType.newInstance(null, TUSCANY_DOMAIN_LAUNCH_CONFIGURATION);
+
+                // Set the project and type to launch
+                newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME, domainProject.getProject().getName());
+                newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME, "org.apache.tuscany.sca.node.launcher.DomainManagerLauncher");
+                newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, domainProject.getLocation().toString());
+                
+                // Pass the runtime classpath as a system property
+                newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, "\"-DTUSCANY_PATH=" + RuntimeClasspathContainerInitializerExtensionPoint.installedRuntimeClasspath() + "\"");
+
+                // Save the configuration
+                newConfiguration.doSave();
+
+                configuration = newConfiguration;
+            }
+
+            // Launch
+            configuration.launch(ILaunchManager.RUN_MODE, new SubProgressMonitor(progressMonitor, 20));
+            
+            if (progressMonitor.isCanceled()) {
+                return;
+            }
+            if (!waitForDomainManager(progressMonitor)) {
+                throw new RuntimeException("SCA Domain Manager could not be started.");
+            }
+        }
+        if (progressMonitor.isCanceled()) {
+            return;
+        }
+        progressMonitor.done();
+            
+    }
+
+    /**
+     * Read a String from a socket.
+     * 
+     * @param socket
+     * @return
+     * @throws IOException
+     */
+    static String read(Socket socket) throws IOException {
+        BufferedReader reader = null;
+        try {
+            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
+            StringBuffer sb = new StringBuffer();
+            String str;
+            while ((str = reader.readLine()) != null) {
+                sb.append(str);
+            }
+            return sb.toString();
+        } finally {
+            if (reader != null) {
+                reader.close();
+            }
+        }
+    }
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/NodeLauncherUtil.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/NodeLauncherUtil.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/NodeLauncherUtil.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/NodeLauncherUtil.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,244 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+import static org.apache.tuscany.sca.plugin.core.launch.DomainManagerLauncherUtil.domainProject;
+import static org.apache.tuscany.sca.plugin.core.launch.DomainManagerLauncherUtil.launchDomainManager;
+import static org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchConfigurationDelegate.TUSCANY_LAUNCH_CONFIGURATIONTYPE;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.Socket;
+
+import org.apache.tuscany.sca.plugin.core.classpath.RuntimeClasspathContainerInitializerExtensionPoint;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.SubProgressMonitor;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants;
+
+/**
+ * Provides utility methods to launch SCA nodes.
+ *
+ * @version $Rev: $ $Date: $
+ */
+public class NodeLauncherUtil {
+
+    private static final String START_HEADER1 =
+        "GET /quickstart?";
+    private static final String START_HEADER2 =
+        " HTTP/1.0\n" + "Host: localhost\n"
+            + "Content-Type: text/xml\n"
+            + "Connection: close\n"
+            + "Content-Length: ";
+    private static final String START_CONTENT = "";
+
+    /**
+     * Launch an SCA node.
+     * 
+     * @param mode
+     * @param file
+     * @param launchManager
+     * @param launchConfigurationType
+     * @throws CoreException
+     * @throws JavaModelException
+     */
+    static void launchNode(String mode,
+                            IFile file,
+                            IProgressMonitor progressMonitor) throws CoreException, JavaModelException, IOException, InterruptedException {
+        progressMonitor.subTask("Starting SCA node");
+        if (progressMonitor.isCanceled()) {
+            return;
+        }
+        
+        // First start the SCA domain manager
+        launchDomainManager(new SubProgressMonitor(progressMonitor, 20));
+        
+        // Get the Java project
+        IJavaProject javaProject = JavaCore.create(file.getProject());
+        
+        // Get the contribution location and URI
+        String contributionLocation = contributionLocation(javaProject);
+        String contributionURI = contributionURI(javaProject);
+    
+        // Determine the composite file URI
+        String compositeURI = compositeURI(javaProject, file);
+        
+        // Configure the node
+        String nodeName = configureNode(contributionURI, contributionLocation, compositeURI, progressMonitor);
+    
+        // Get the node launch configuration
+        ILaunchManager launchManager = DebugPlugin.getDefault().getLaunchManager();
+        ILaunchConfigurationType launchConfigurationType =launchManager.getLaunchConfigurationType(TUSCANY_LAUNCH_CONFIGURATIONTYPE);
+        ILaunchConfiguration configuration = null;
+        for (ILaunchConfiguration c : launchManager.getLaunchConfigurations(launchConfigurationType)) {
+            if (file.getFullPath().toString().equals(c.getAttribute("COMPOSITE_PATH", ""))) {
+                configuration = c;
+                break;
+            }
+        }
+        
+        if (configuration == null) {
+            progressMonitor.worked(10);
+            if (progressMonitor.isCanceled()) {
+                return;
+            }
+
+            // Create a new launch configuration
+            ILaunchConfigurationWorkingCopy newConfiguration = launchConfigurationType.newInstance(null,
+                                        launchManager.generateUniqueLaunchConfigurationNameFrom(file.getName()));
+
+            // Set the project and type to launch
+            newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROJECT_NAME, file.getProject().getName());
+            newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME, "org.apache.tuscany.sca.node.launcher.NodeLauncher");
+
+            // Pass the URL of the node install image to the launcher
+            newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+                                       "http://localhost:9990/node-config/" + nodeName);
+            
+            // Save the composite path in the launch configuration
+            newConfiguration.setAttribute("COMPOSITE_PATH", file.getFullPath().toString());
+
+            // Pass the runtime classpath as a system property
+            newConfiguration.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS, "\"-DTUSCANY_PATH=" + RuntimeClasspathContainerInitializerExtensionPoint.installedRuntimeClasspath() + "\"");
+
+            // Save the configuration
+            newConfiguration.doSave();
+
+            configuration = newConfiguration;
+        }
+
+        // Launch
+        configuration.launch(mode, null);
+    }
+
+    /**
+     * Returns the location of the SCA contribution representing a Java project. 
+     * @param javaProject
+     * @return
+     * @throws MalformedURLException
+     * @throws JavaModelException
+     */
+    private static String contributionLocation(IJavaProject javaProject) throws MalformedURLException, JavaModelException {
+        IPath location = javaProject.getOutputLocation();
+        IResource resource;
+        if (location.segmentCount() == 1) {
+            resource = javaProject.getProject();
+        } else {
+            resource = javaProject.getProject().getWorkspace().getRoot().getFolder(location);
+        }
+        location = resource.getLocation();
+        String url = location.toFile().toURI().toURL().toString();
+        if (url.endsWith("/")) {
+            url = url.substring(0, url.length() - 1);
+        }
+        return url;
+    }
+
+    /**
+     * Returns the URI of the SCA contribution representing a Java project. 
+     * @param javaProject
+     * @return
+     */
+    private static String contributionURI(IJavaProject javaProject) {
+        return javaProject.getProject().getName();
+    }
+
+    /**
+     * Returns the SCA artifact URI of a composite file inside a Java project.
+     * 
+     * @param javaProject
+     * @param file
+     * @return
+     * @throws JavaModelException
+     */
+    private static String compositeURI(IJavaProject javaProject, IFile file) throws JavaModelException {
+    
+        // Find the Java source container containing the specified file
+        IClasspathEntry[] classpathEntries = javaProject.getRawClasspath();
+        int sourceFolderSegments = 0;
+        for (IClasspathEntry entry : classpathEntries) {
+            if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
+                sourceFolderSegments = entry.getPath().matchingFirstSegments(file.getFullPath());
+                if (sourceFolderSegments > 0)
+                    break;
+            }
+        }
+    
+        // Determine the composite URI
+        String compositeURI = file.getFullPath().removeFirstSegments(sourceFolderSegments).toString();
+        return compositeURI;
+    }
+
+    /**
+     * Send a request to the SCA domain manager to configure an SCA node for
+     * the specified composite.
+     *  
+     * @param contributionURI
+     * @param contributionLocation
+     * @param compositeURI
+     * @return
+     * @throws IOException
+     */
+    private static String configureNode(String contributionURI, String contributionLocation, String compositeURI,
+                                        IProgressMonitor progressMonitor) throws IOException, CoreException {
+        progressMonitor.subTask("Configuring node");
+        
+        // Send the request to configure the node
+        Socket client = new Socket("localhost", 9990);
+        OutputStream os = client.getOutputStream();
+        String request = START_HEADER1 +
+            "contribution=" + contributionURI + "&location=" + contributionLocation + "&composite=" + compositeURI +
+            START_HEADER2 + START_CONTENT.getBytes().length + "\n\n" + START_CONTENT;
+        os.write(request.getBytes());
+        os.flush();
+        String response = DomainManagerLauncherUtil.read(client);
+        
+        // Refresh the domain project
+        domainProject(progressMonitor).refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
+        
+        int i = response.indexOf("<span id=\"node\">");
+        if (i != -1) {
+            
+            // Extract the node name
+            response = response.substring(i + 16);
+            i = response.indexOf("</span>");
+            String nodeName = response.substring(0, i);
+            return nodeName;
+            
+        } else {
+            throw new RuntimeException("Node could not be configured: " + response);
+        }
+    }
+
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationDelegate.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationDelegate.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationDelegate.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationDelegate.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,75 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+import java.io.File;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.model.ILaunchConfigurationDelegate;
+import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;
+import org.eclipse.jdt.launching.ExecutionArguments;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.IVMRunner;
+import org.eclipse.jdt.launching.VMRunnerConfiguration;
+
+/**
+ * Launch configuration delegate for the Tuscany launch configuration.
+ *
+ * @version $Rev$ $Date$
+ */
+public class TuscanyLaunchConfigurationDelegate extends AbstractJavaLaunchConfigurationDelegate implements
+    ILaunchConfigurationDelegate {
+
+    public static final String TUSCANY_LAUNCH_CONFIGURATIONTYPE = "org.apache.tuscany.sca.plugin.core.launch.configurationtype";
+
+    public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor)
+        throws CoreException {
+
+        // Verify the configuration
+        String mainTypeName = verifyMainTypeName(configuration);
+        IVMInstall vm = verifyVMInstall(configuration);
+        IVMRunner runner = vm.getVMRunner(mode);
+
+        ExecutionArguments execArgs =
+            new ExecutionArguments(getVMArguments(configuration), getProgramArguments(configuration));
+        Map vmAttributesMap = getVMSpecificAttributesMap(configuration);
+        String[] classpath = getClasspath(configuration);
+
+        File workingDir = verifyWorkingDirectory(configuration);
+        String workingDirName = null;
+        if (workingDir != null)
+            workingDirName = workingDir.getAbsolutePath();
+
+        // Create a VM runner configuration
+        VMRunnerConfiguration runConfig = new VMRunnerConfiguration(mainTypeName, classpath);
+        runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
+        runConfig.setVMArguments(execArgs.getVMArgumentsArray());
+        runConfig.setVMSpecificAttributesMap(vmAttributesMap);
+        runConfig.setWorkingDirectory(workingDirName);
+        runConfig.setBootClassPath(getBootpath(configuration));
+
+        // Run!!
+        runner.run(runConfig, launch, monitor);
+    }
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationTabGroup.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationTabGroup.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationTabGroup.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchConfigurationTabGroup.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,48 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.CommonTab;
+import org.eclipse.debug.ui.EnvironmentTab;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.debug.ui.ILaunchConfigurationTab;
+import org.eclipse.debug.ui.ILaunchConfigurationTabGroup;
+import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
+import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab;
+import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab;
+import org.eclipse.jdt.debug.ui.launchConfigurations.JavaJRETab;
+
+/**
+ * Tab groups from the Tuscany launch configuration.
+ *
+ * @version $Rev$ $Date$
+ */
+public class TuscanyLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup implements
+    ILaunchConfigurationTabGroup {
+
+    public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
+        ILaunchConfigurationTab[] tabs =
+            new ILaunchConfigurationTab[] {new JavaArgumentsTab(), new JavaJRETab(), new JavaClasspathTab(),
+                                           new SourceLookupTab(), new EnvironmentTab(), new CommonTab()};
+
+        setTabs(tabs);
+    }
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchDomainManagerAction.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchDomainManagerAction.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchDomainManagerAction.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchDomainManagerAction.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,79 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+import static org.apache.tuscany.sca.plugin.core.launch.DomainManagerLauncherUtil.launchDomainManager;
+import static org.apache.tuscany.sca.plugin.core.log.LogUtil.error;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+
+/**
+ * Launch the SCA DomainManager.
+ * 
+ * @version $Rev: $ $Date: $
+ */
+public class TuscanyLaunchDomainManagerAction implements IWorkbenchWindowActionDelegate {
+    
+    private IWorkbenchWindow window;
+
+    public TuscanyLaunchDomainManagerAction() {
+    }
+
+    public void run(IAction action) {
+
+        try {
+            
+            // Run with a progress monitor
+            window.run(true, true, new IRunnableWithProgress() {
+
+                public void run(IProgressMonitor progressMonitor) throws InvocationTargetException, InterruptedException {
+                    try {
+                        
+                        launchDomainManager(progressMonitor);
+                            
+                    } catch (Exception e) {
+                        throw new InvocationTargetException(e);
+                    } finally {
+                        progressMonitor.done();
+                    }
+                }
+            });
+
+        } catch (Exception e) {
+            error("Could not launch SCA Domain Manager", e);
+        }
+    }
+
+    public void selectionChanged(IAction action, ISelection selection) {
+    }
+
+    public void dispose() {
+    }
+
+    public void init(IWorkbenchWindow window) {
+        this.window = window;
+    }
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeFilter.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeFilter.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeFilter.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeFilter.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,29 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+/**
+ * TuscanyLaunchNodeFilter
+ *
+ * @version $Rev: $ $Date: $
+ */
+public class TuscanyLaunchNodeFilter {
+
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeShortcut.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeShortcut.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeShortcut.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/launch/TuscanyLaunchNodeShortcut.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,88 @@
+/*
+ * 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.sca.plugin.core.launch;
+
+import static org.apache.tuscany.sca.plugin.core.launch.NodeLauncherUtil.launchNode;
+import static org.apache.tuscany.sca.plugin.core.log.LogUtil.error;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.debug.ui.ILaunchShortcut;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * A launch shortcut for SCA .composite files.
+ *
+ * @version $Rev$ $Date$
+ */
+public class TuscanyLaunchNodeShortcut implements ILaunchShortcut {
+    
+    public void launch(final ISelection selection, final String mode) {
+
+        try {
+            
+            // Make sure we have a .composite file selected
+            if (!(selection instanceof IStructuredSelection)) {
+                return;
+            }
+            Object[] selections = ((IStructuredSelection)selection).toArray();
+            if (selections.length == 0) {
+                return;
+            }
+            final IFile file = (IFile)selections[0];
+            if (!file.getFileExtension().equals("composite")) {
+                return;
+            }
+            
+            // Run with a progress monitor
+            PlatformUI.getWorkbench().getActiveWorkbenchWindow().run(true, true, new IRunnableWithProgress() {
+
+                public void run(IProgressMonitor progressMonitor) throws InvocationTargetException, InterruptedException {
+                    try {
+                        progressMonitor.beginTask("Starting SCA Composite", 100);
+                        
+                        launchNode(mode, file, progressMonitor);
+                        
+                        progressMonitor.done();
+                            
+                    } catch (Exception e) {
+                        throw new InvocationTargetException(e);
+                    } finally {
+                        progressMonitor.done();
+                    }
+                }
+            });
+
+        } catch (Exception e) {
+            error("Could not launch SCA composite", e);
+        }
+    }
+
+    public void launch(IEditorPart editor, String mode) {
+        //TODO later...
+    }
+    
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/log/LogUtil.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/log/LogUtil.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/log/LogUtil.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/log/LogUtil.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,39 @@
+/*
+ * 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.sca.plugin.core.log;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+
+/**
+ * A log utility
+ *
+ * @version $Rev: $ $Date: $
+ */
+public class LogUtil {
+    
+    public static void error(String msg, Exception e) {
+        Platform.getLog(
+                        Platform.getBundle("org.apache.tuscany.sca.plugin.core")).log(
+                        new Status(IStatus.ERROR, "org.apache.tuscany.sca.plugin.core", IStatus.OK, msg, e));
+    }
+
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizard.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizard.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizard.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizard.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,53 @@
+/*
+ * 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.sca.plugin.core.newwizards;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWizard;
+
+/**
+ * A wizard to create new .componentType files.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NewComponentTypeWizard extends Wizard implements IWorkbenchWizard {
+
+	private IWorkbench workbench;
+	private IStructuredSelection selection;
+	private NewComponentTypeWizardPage mainPage;
+
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+	      this.workbench = workbench;
+	      this.selection = selection;
+	      setWindowTitle("New SCA ComponentType");
+	}
+	
+	public void addPages() {
+		mainPage = new NewComponentTypeWizardPage(workbench, selection);
+		addPage(mainPage);
+	}	
+	
+	@Override
+	public boolean performFinish() {
+		return mainPage.finish();
+	}
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizardPage.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizardPage.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizardPage.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewComponentTypeWizardPage.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,98 @@
+/*
+ * 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.sca.plugin.core.newwizards;
+
+import static org.apache.tuscany.sca.plugin.core.log.LogUtil.error;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.PrintWriter;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.graphics.ImageLoader;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.ide.IDE;
+
+/**
+ * Wizard page for the new .componentType file wizard.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NewComponentTypeWizardPage extends WizardNewFileCreationPage {
+        
+        private IWorkbench workbench;
+
+        public NewComponentTypeWizardPage(IWorkbench workbench, IStructuredSelection selection)  {
+                super("New SCA ComponentType Page", selection);
+                
+                this.workbench = workbench;
+                
+                setTitle("SCA ComponentType");
+                setDescription("Create a new SCA ComponentType.");
+                
+                try {
+                        String location = FileLocator.toFileURL(Platform.getBundle("org.apache.tuscany.sca.plugin.core").getEntry("/")).getFile().toString();
+                        setImageDescriptor(ImageDescriptor.createFromImageData((new ImageLoader()).load(location + "/icons/tuscany.gif")[0]));
+                } catch (Exception e) {
+                    error("Could not create wizard", e);
+                }
+                
+                setFileName("sample.componentType");
+                
+        }
+        
+        public boolean finish() {
+                try {
+                        IFile file = createNewFile();
+                        
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+                IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
+                IDE.openEditor(workbenchPage, file, true);
+                } catch (Exception e) {
+                    error("Could not open editor", e);
+                    return false;
+                }
+                return true;
+        }
+
+        @Override
+        protected InputStream getInitialContents() {
+                
+                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+                PrintWriter printWriter = new PrintWriter(outputStream);
+                printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+                printWriter.println("<componentType xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"");
+                printWriter.println("    xmlns:t=\"http://tuscany.apache.org/xmlns/sca/1.0\">");        
+                printWriter.println();
+                printWriter.println();
+                printWriter.println("</componentType>");
+                printWriter.close();
+                
+                return new ByteArrayInputStream(outputStream.toByteArray());
+        }
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizard.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizard.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizard.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizard.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,53 @@
+/*
+ * 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.sca.plugin.core.newwizards;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchWizard;
+
+/**
+ * A wizard to create new .composite files.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NewCompositeWizard extends Wizard implements IWorkbenchWizard {
+	
+	private IWorkbench workbench;
+	private IStructuredSelection selection;
+	private NewCompositeWizardPage mainPage;
+
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+	      this.workbench = workbench;
+	      this.selection = selection;
+	      setWindowTitle("New SCA Composite");
+	}
+	
+	public void addPages() {
+		mainPage = new NewCompositeWizardPage(workbench, selection);
+		addPage(mainPage);
+	}	
+	
+	@Override
+	public boolean performFinish() {
+		return mainPage.finish();
+	}
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizardPage.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizardPage.java?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizardPage.java (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/org/apache/tuscany/sca/plugin/core/newwizards/NewCompositeWizardPage.java Sat Aug 23 13:15:15 2008
@@ -0,0 +1,105 @@
+/*
+ * 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.sca.plugin.core.newwizards;
+
+import static org.apache.tuscany.sca.plugin.core.log.LogUtil.error;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.PrintWriter;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.graphics.ImageLoader;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.ide.IDE;
+
+/**
+ * Wizard page for the new .composite file wizard.
+ *
+ * @version $Rev$ $Date$
+ */
+public class NewCompositeWizardPage extends WizardNewFileCreationPage {
+        
+        private IWorkbench workbench;
+
+        public NewCompositeWizardPage(IWorkbench workbench, IStructuredSelection selection)  {
+                super("New SCA Composite Page", selection);
+                
+                this.workbench = workbench;
+                
+                setTitle("SCA Composite");
+                setDescription("Create a new SCA Composite.");
+                
+                try {
+                        String location = FileLocator.toFileURL(Platform.getBundle("org.apache.tuscany.sca.plugin.core").getEntry("/")).getFile().toString();
+                        setImageDescriptor(ImageDescriptor.createFromImageData((new ImageLoader()).load(location + "/icons/tuscany.gif")[0]));
+                } catch (Exception e) {
+                    error("Could not create wizard", e);
+                }
+                
+                setFileName("sample.composite");
+                
+        }
+        
+        public boolean finish() {
+                try {
+                        IFile file = createNewFile();
+                        
+            IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+                IWorkbenchPage workbenchPage = workbenchWindow.getActivePage();
+                IDE.openEditor(workbenchPage, file, true);
+                } catch (Exception e) {
+                    error("Could not open editor", e);
+                        return false;
+                }
+                return true;
+        }
+
+        @Override
+        protected InputStream getInitialContents() {
+
+                IPath path = new Path(getFileName());
+                String name = path.removeFileExtension().toString();
+                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+                PrintWriter printWriter = new PrintWriter(outputStream);
+                printWriter.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");              
+                printWriter.println("<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"");
+                printWriter.println("    xmlns:t=\"http://tuscany.apache.org/xmlns/sca/1.0\"");
+                printWriter.println("    xmlns:c=\"http://" + name + "\"");     
+                printWriter.println("    targetNamespace=\"http://" + name + "\"");      
+                printWriter.println("    name=\"" + name + "\">");
+                printWriter.println();
+                printWriter.println();
+                printWriter.println("</composite>");
+                printWriter.close();
+                
+                return new ByteArrayInputStream(outputStream.toByteArray());
+        }
+}

Added: tuscany/java/sca/tools/eclipse34/plugins/core/plugin.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/plugin.xml?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/plugin.xml (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/plugin.xml Sat Aug 23 13:15:15 2008
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<!--
+ * 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.    
+-->
+<plugin>
+
+	<extension-point id="runtimeClasspathContainerInitializer"
+		name="Tuscany Runtime Classpath Container Initializers"
+		schema="exsd/runtimeClasspathContainerInitializer.exsd"/>
+
+	<extension point = "org.eclipse.wst.xml.core.catalogContributions">
+		<catalogContribution id="default">
+			<uri name="http://www.osoa.org/xmlns/sca/1.0" uri="xsd/sca-all.xsd"/>
+		</catalogContribution>
+	</extension>
+	
+	<extension point = "org.eclipse.wst.xml.core.catalogContributions">
+		<catalogContribution id="default">
+			<uri name="http://tuscany.apache.org/xmlns/sca/1.0" uri="xsd/tuscany-sca.xsd"/>
+		</catalogContribution>
+	</extension>	
+	
+	<extension point="org.eclipse.core.runtime.contentTypes"> 
+      <file-association content-type="org.eclipse.core.runtime.xml" file-extensions="composite"/>
+      <file-association content-type="org.eclipse.core.runtime.xml" file-extensions="componentType"/>       
+	</extension>
+	
+	<extension
+       point="org.apache.tuscany.sca.plugin.core.runtimeClasspathContainerInitializer">
+    	<runtimeClasspathContainerInitializer
+    			id="org.apache.tuscany.sca.plugin.core.runtime.library"
+				class="org.apache.tuscany.sca.plugin.core.classpath.CoreClasspathContainerInitializer"/>                       
+	</extension>	
+
+	<extension point="org.eclipse.jdt.core.classpathContainerInitializer">
+    	<classpathContainerInitializer 
+    			id="org.apache.tuscany.sca.plugin.core.runtime.library"
+				class="org.apache.tuscany.sca.plugin.core.classpath.CoreClasspathContainerInitializer"/>                       
+	</extension>
+	
+	<extension point="org.eclipse.jdt.ui.classpathContainerPage">
+		<classpathContainerPage 
+				id="org.apache.tuscany.sca.plugin.core.runtime.library"
+				name="Tuscany SCA Core Library"
+				class="org.apache.tuscany.sca.plugin.core.classpath.CoreLibraryEntryPage">
+		</classpathContainerPage>
+	</extension>
+
+   <extension
+         point="org.eclipse.ui.actionSets">
+      <actionSet
+            label="Tuscany"
+            visible="true"
+            id="org.apache.tuscany.sca.plugin.core.launch.actionSet">
+         <action
+               label="&amp;Start SCA Domain Manager"
+               icon="icons/t.gif"
+               class="org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchDomainManagerAction"
+               tooltip="Start SCA Domain Manager"
+               toolbarPath="tuscanyGroup"
+               id="org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchDomainManagerAction">
+         </action>
+      </actionSet>
+   </extension>
+
+	<extension point="org.eclipse.debug.core.launchConfigurationTypes">
+		<launchConfigurationType
+       		name="Tuscany"
+        	delegate="org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchConfigurationDelegate"
+        	modes="run, debug"
+			sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"
+    		sourcePathComputerId="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer"
+        	id="org.apache.tuscany.sca.plugin.core.launch.configurationtype">        
+    	</launchConfigurationType>
+	</extension>
+	
+	<extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
+    	<launchConfigurationTypeImage
+        	icon="icons/t.gif"
+        	configTypeID="org.apache.tuscany.sca.plugin.core.launch.configurationtype"
+        	id="org.apache.tuscany.sca.plugin.core.launch.configurationtypeimage">
+    	</launchConfigurationTypeImage>
+	</extension>
+	
+	<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
+    	<launchConfigurationTabGroup
+        	type="org.apache.tuscany.sca.plugin.core.launch.configurationtype"
+        	class="org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchConfigurationTabGroup"
+        	id="org.apache.tuscany.sca.plugin.core.launch.configurationtypetabgroup">
+    	</launchConfigurationTabGroup>
+	</extension>	
+	
+	<extension point="org.eclipse.debug.ui.launchShortcuts">
+		<shortcut
+			id="org.apache.tuscany.sca.plugin.core.launchshortcut"
+			class="org.apache.tuscany.sca.plugin.core.launch.TuscanyLaunchNodeShortcut"
+			label="Tuscany"
+			icon="icons/t.gif"
+			modes="run, debug">
+			<contextualLaunch>
+				<enablement>
+					<with variable="selection">
+						<count value="1"/>
+						<iterate>
+							<or>
+								<test property="org.eclipse.debug.ui.matchesPattern" value="*.composite"/>
+							</or>
+						</iterate>
+					</with>
+			 	</enablement>
+			</contextualLaunch>
+		</shortcut>
+	</extension>
+
+	<extension point="org.eclipse.ui.newWizards">
+		<category name="Tuscany" id="org.apache.tuscany.sca.plugin.core.newwizards" /> 
+		<wizard name="Composite" icon="icons/t.gif" 
+				category="org.apache.tuscany.sca.plugin.core.newwizards" 
+				class="org.apache.tuscany.sca.plugin.core.newwizards.NewCompositeWizard" 
+				preferredPerspectives="org.eclipse.jdt.ui.JavaPerspective" 
+				id="org.apache.tuscany.sca.plugin.core.newwizards.newcompositewizard">
+			<description>Create a new SCA Composite</description> 
+		</wizard>
+		<wizard name="ComponentType" icon="icons/t.gif" 
+				category="org.apache.tuscany.sca.plugin.core.newwizards" 
+				class="org.apache.tuscany.sca.plugin.core.newwizards.NewComponentTypeWizard" 
+				preferredPerspectives="org.eclipse.jdt.ui.JavaPerspective" 
+				id="org.apache.tuscany.sca.plugin.core.newwizards.newcompositewizard">
+			<description>Create a new SCA ComponentType</description> 
+		</wizard>		
+	</extension>
+	
+</plugin>

Added: tuscany/java/sca/tools/eclipse34/plugins/core/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/pom.xml?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/pom.xml (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/pom.xml Sat Aug 23 13:15:15 2008
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.tuscany.sca</groupId>
+        <artifactId>tuscany-sca-eclipse-tools</artifactId>
+        <version>1.4-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+    <artifactId>org.apache.tuscany.sca.plugin.core</artifactId>
+    <name>Apache Tuscany SCA Core Eclipse Plugin</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.jdt.debug</groupId>
+            <artifactId>ui</artifactId>
+            <version>3.2.100-v20070531-1800</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.eclipse.swt.win32.win32</groupId>
+            <artifactId>x86</artifactId>
+            <version>3.3.0-v3346</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-distribution-core</artifactId>
+            <version>1.4-SNAPSHOT</version>
+            <type>zip</type>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-distribution-core</artifactId>
+            <version>1.4-SNAPSHOT</version>
+            <classifier>src</classifier>
+            <type>zip</type>
+        </dependency>
+    </dependencies>
+
+    <build>
+       <sourceDirectory>${basedir}</sourceDirectory>
+       <resources>
+          <resource>
+              <directory>${basedir}</directory>
+              <excludes>
+                  <exclude>**/*.java</exclude>
+                  <exclude>**/.*/**</exclude>
+                  <exclude>pom.xml</exclude>
+                  <exclude>build.*</exclude>
+                  <exclude>target/**</exclude>
+              </excludes>
+          </resource>
+       </resources>
+       
+       <plugins>
+           <plugin>
+               <groupId>org.apache.maven.plugins</groupId>
+               <artifactId>maven-jar-plugin</artifactId>
+               <configuration>
+                   <classifier>tmp</classifier>
+                   <archive>
+                       <manifestFile>META-INF/MANIFEST.MF</manifestFile>
+                   </archive>
+               </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>distribution-package</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                        <configuration>
+                            <descriptors>
+                                <descriptor>src/main/assembly/jar.xml</descriptor>
+                            </descriptors>
+                            <tarLongFileMode>gnu</tarLongFileMode>
+                            <appendAssemblyId>false</appendAssemblyId>
+                            <archive>
+                                <manifestFile>META-INF/MANIFEST.MF</manifestFile>
+                            </archive>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <repositories>
+        <repository>
+            <id>repo1.eclipse</id>
+            <url>http://repo1.maven.org/eclipse/</url>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+</project>

Added: tuscany/java/sca/tools/eclipse34/plugins/core/src/main/assembly/jar.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/src/main/assembly/jar.xml?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/src/main/assembly/jar.xml (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/src/main/assembly/jar.xml Sat Aug 23 13:15:15 2008
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<assembly>
+    <!-- id typically identifies the "type" (src vs bin etc) of the assembly -->
+    <id>plugin</id>
+    <includeBaseDirectory>false</includeBaseDirectory>
+    <formats>
+        <!--
+        <format>dir</format>
+        <format>tar.gz</format>
+        -->
+        <format>jar</format>
+    </formats>
+
+    <fileSets>
+
+        <!-- Add the classes -->
+        <fileSet>
+            <directory>target/classes</directory>
+            <outputDirectory></outputDirectory>
+            <excludes>
+                <!-- General file/folders to exclude -->
+                <exclude>**/.*</exclude>
+                <exclude>**/.*/**</exclude>
+                <exclude>**/*.log</exclude>
+
+                <!-- Sample specific files/folders to exclude -->
+                <exclude>pom.xml</exclude>
+                <exclude>src/</exclude>
+                <exclude>src/**/*</exclude>
+            </excludes>
+        </fileSet>
+    </fileSets>
+
+    <dependencySets>
+
+        <!-- Add the distributions -->
+        <dependencySet>
+            <unpack>true</unpack>
+            <includes>
+                <include>org.apache.tuscany.sca:tuscany-distribution-core:zip</include>
+            </includes>
+        </dependencySet>
+
+        <dependencySet>
+            <unpack>false</unpack>
+            <includes>
+                <include>org.apache.tuscany.sca:tuscany-distribution-core:zip:src</include>
+            </includes>
+        </dependencySet>
+    </dependencySets>
+
+</assembly>

Added: tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-all.xsd
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-all.xsd?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-all.xsd (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-all.xsd Sat Aug 23 13:15:15 2008
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+    targetNamespace="http://www.osoa.org/xmlns/sca/1.0" 
+    xmlns:sca="http://www.osoa.org/xmlns/sca/1.0">
+
+    <include schemaLocation="sca.xsd"/>
+
+    <include schemaLocation="sca-contribution.xsd"/>
+    
+    <include schemaLocation="sca-binding-ejb.xsd"/>
+
+    <include schemaLocation="sca-implementation-bpel.xsd"/>
+    <include schemaLocation="sca-implementation-spring.xsd"/>
+    <include schemaLocation="sca-implementation-ejb.xsd"/>
+
+</schema>
\ No newline at end of file

Added: tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-ejb.xsd
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-ejb.xsd?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-ejb.xsd (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-ejb.xsd Sat Aug 23 13:15:15 2008
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright SCA Collaboration 2006, 2007 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+        xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+        targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+        elementFormDefault="qualified">
+   <include schemaLocation="sca-core.xsd"/>
+
+   <element name="binding.ejb" type="sca:EJBSessionBeanBinding" 
+            substitutionGroup="sca:binding" />
+
+    <simpleType name="BeanType">
+        <restriction base="string">
+            <enumeration value="stateless"/>
+            <enumeration value="stateful"/>
+        </restriction>
+    </simpleType>
+
+    <simpleType name="VersionValue">
+        <restriction base="string">
+            <enumeration value="EJB2"/>
+            <enumeration value="EJB3"/>
+        </restriction>
+    </simpleType>
+
+
+     <complexType name="EJBSessionBeanBinding">
+	 <complexContent>
+	  <extension base="sca:Binding">
+         <sequence>
+            <any namespace="##other" processContents="lax"
+                 minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="homeInterface" type="NCName" use="optional"/>
+         <attribute name="ejb-link-name" type="NCName" use="optional"/>
+         <attribute name="session-type" type="sca:BeanType" use="optional" default="stateless"/>
+         <attribute name="ejb-version" type="sca:VersionValue" use="optional" default="EJB2"/>
+         <anyAttribute namespace="##any" processContents="lax"/>
+	  </extension>
+	 </complexContent>
+     </complexType>
+
+</schema>

Added: tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-jms.xsd
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-jms.xsd?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-jms.xsd (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-jms.xsd Sat Aug 23 13:15:15 2008
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright SCA Collaboration 2006, 2007 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+        targetNamespace="http://www.osoa.org/xmlns/sca/1.0" 
+        xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+        elementFormDefault="qualified">
+
+   <include schemaLocation="sca-core.xsd"/>
+
+   <complexType name="JMSBinding">
+      <complexContent>
+         <extension base="sca:Binding">
+            <sequence>
+               <element name="destination" type="sca:Destination" minOccurs="0"/>
+   	         <element name="connectionFactory" type="sca:ConnectionFactory"  
+                        minOccurs="0"/>
+ 	         <element name="activationSpec" type="sca:ActivationSpec" 
+                        minOccurs="0"/>
+  	         <element name="response" type="sca:Response" minOccurs="0"/>
+               <element name="headers" type="sca:Headers" minOccurs="0"/>
+    	         <element name="resourceAdapter" type="sca:ResourceAdapter" 
+                        minOccurs="0"/>
+               <element name="operationProperties" type="sca:OperationProperties" 
+                        minOccurs="0" maxOccurs="unbounded"/>
+               <any namespace="##other" processContents="lax" 
+                    minOccurs="0" maxOccurs="unbounded"/>
+            </sequence>
+    	      <attribute name="correlationScheme"
+                       default="RequestMsgIDToCorrelID">
+    	         <simpleType>
+                  <restriction base="string">
+                     <enumeration value="RequestMsgIDToCorrelID"/>
+                     <enumeration value="RequestCorrelIDToCorrelID"/>
+                     <enumeration value="None"/>
+                  </restriction>
+               </simpleType>
+            </attribute>
+
+            <attribute name="initialContextFactory" type="anyURI"/>
+            <attribute name="jndiURL" type="anyURI"/>
+            <attribute name="requestConnection" type="QName"/>
+            <attribute name="responseConnection" type="QName"/>
+            <attribute name="operationProperties" type="QName"/>
+            <anyAttribute/>
+         </extension>
+      </complexContent>
+   </complexType>
+
+   <simpleType name="CreateResource">
+      <restriction base="string">
+         <enumeration value="always"/>
+         <enumeration value="never"/>
+         <enumeration value="ifnotexist"/>
+      </restriction>
+   </simpleType>
+
+   <complexType name="Destination">
+      <sequence>
+         <element name="property" type="string" 
+                  minOccurs="0" maxOccurs="unbounded"/>
+      </sequence>
+      <attribute name="name" type="anyURI" use="required"/>
+      <attribute name="type" use="optional" default="queue">
+         <simpleType>
+            <restriction base="string">
+               <enumeration value="queue"/>
+               <enumeration value="topic"/>
+            </restriction>
+         </simpleType>
+      </attribute>
+      <attribute name="create" type="sca:CreateResource" 
+                 use="optional" default="ifnotexist"/>
+   </complexType>
+
+   <complexType name="ConnectionFactory">
+    	<sequence>          <element name="property" type="string" 
+                  minOccurs="0" maxOccurs="unbounded"/>
+    	</sequence>
+    	<attribute name="name" type="anyURI" use="required"/>
+    	<attribute name="create" type="sca:CreateResource" 
+                 use="optional" default="ifnotexist"/>
+   </complexType>
+
+   <complexType name="ActivationSpec">
+      <sequence>
+         <element name="property" type="string" 
+                  minOccurs="0" maxOccurs="unbounded"/>
+      </sequence>
+      <attribute name="name" type="anyURI" use="required"/>
+      <attribute name="create" type="sca:CreateResource"
+                 use="optional" default="ifnotexist"/>
+   </complexType>
+
+   <complexType name="Response">
+      <sequence>
+         <element name="destination" type="sca:Destination" minOccurs="0"/>
+         <element name="connectionFactory" type="sca:ConnectionFactory" 
+                  minOccurs="0"/>
+         <element name="activationSpec" type="sca:ActivationSpec" minOccurs="0"/>
+      </sequence>
+   </complexType>
+
+   <complexType name="Headers">
+      <sequence>
+         <element name="property" type="string" 
+                  minOccurs="0" maxOccurs="unbounded"/>
+      </sequence>
+      <attribute name="JMSType" type="string"/>
+      <attribute name="JMSCorrelationID" type="string"/>
+      <attribute name="JMSDeliveryMode" type="string"/>
+      <attribute name="JMSTimeToLive" type="int"/>
+      <attribute name="JMSPriority" type="string"/>
+   </complexType>
+
+   <complexType name="ResourceAdapter">
+      <sequence>
+         <element name="property" type="string" 
+                  minOccurs="0" maxOccurs="unbounded"/>
+      </sequence>
+      <attribute name="name" type="string" use="required"/>
+   </complexType>
+
+   <complexType name="OperationProperties">
+      <sequence>
+         <element name="property" type="string" 
+                  minOccurs="0" maxOccurs="unbounded"/>
+         <element name="headers" type="sca:Headers"/>
+      </sequence>
+      <attribute name="name" type="string" use="required"/>
+      <attribute name="nativeOperation" type="string"/>
+   </complexType>
+
+   <element name="binding.jms" type="sca:JMSBinding" 
+            substitutionGroup="sca:binding"/>
+</schema>

Added: tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-sca.xsd
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-sca.xsd?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-sca.xsd (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-sca.xsd Sat Aug 23 13:15:15 2008
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright SCA Collaboration 2006, 2007 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+    targetNamespace="http://www.osoa.org/xmlns/sca/1.0" 
+    xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+        elementFormDefault="qualified">
+
+    <include schemaLocation="sca-core.xsd"/>
+
+    <element name="binding.sca" type="sca:SCABinding" 
+    	substitutionGroup="sca:binding"/>
+    <complexType name="SCABinding">
+        <complexContent>
+            <extension base="sca:Binding">
+		    	<sequence>
+                    <any namespace="##other" processContents="lax" minOccurs="0"
+                         maxOccurs="unbounded"/>
+		    	</sequence>
+                <anyAttribute namespace="##any" processContents="lax"/>
+            </extension>
+        </complexContent>
+    </complexType>
+</schema>
\ No newline at end of file

Added: tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-webservice.xsd
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-webservice.xsd?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-webservice.xsd (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-binding-webservice.xsd Sat Aug 23 13:15:15 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- (c) Copyright SCA Collaboration 2006, 2007 -->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+    targetNamespace="http://www.osoa.org/xmlns/sca/1.0" 
+    xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+    xmlns:wsdli="http://www.w3.org/2004/08/wsdl-instance"
+    xmlns:wsa="http://www.w3.org/2004/12/addressing"
+    elementFormDefault="qualified">
+
+    <include schemaLocation="sca-core.xsd"/>
+
+    <element name="binding.ws" type="sca:WebServiceBinding"
+             substitutionGroup="sca:binding"/>
+    <complexType name="WebServiceBinding">
+        <complexContent>
+            <extension base="sca:Binding">
+                <sequence>
+                    <any namespace="##other" processContents="lax" minOccurs="0"
+                         maxOccurs="unbounded"/>
+                </sequence>
+			 <attribute name="wsdlElement" type="anyURI" use="optional"/>
+                <anyAttribute namespace="##any" processContents="lax"/>
+            </extension>
+        </complexContent>
+    </complexType>
+</schema>

Added: tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-contribution.xsd
URL: http://svn.apache.org/viewvc/tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-contribution.xsd?rev=688406&view=auto
==============================================================================
--- tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-contribution.xsd (added)
+++ tuscany/java/sca/tools/eclipse34/plugins/core/xsd/sca-contribution.xsd Sat Aug 23 13:15:15 2008
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" 
+    targetNamespace="http://www.osoa.org/xmlns/sca/1.0" 
+    xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+        elementFormDefault="qualified">
+
+    <include schemaLocation="sca-core.xsd"/>
+
+    <element name="contribution" type="sca:Contribution"/>
+    
+    <complexType name="Contribution">
+        <sequence>
+            <choice minOccurs="0" maxOccurs="unbounded">
+                <any namespace="##any" processContents="lax"/>
+            </choice>
+        </sequence>
+        <anyAttribute namespace="##any" processContents="lax"/>
+    </complexType>
+    
+</schema>
\ No newline at end of file