diff options
author | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-12 00:43:48 +0000 |
---|---|---|
committer | lresende <lresende@13f79535-47bb-0310-9956-ffa450edef68> | 2009-11-12 00:43:48 +0000 |
commit | 9425990f532b1152c2d73db96c0f07ef5216a3d1 (patch) | |
tree | a8986fc31f96eb02484a0ae9d1c14cfa788e30ac /java/sca-contrib/tools/eclipse/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java | |
parent | 40523f9c6cb1f7a785c2dbd2466dc410ae6ddf66 (diff) |
Moving 2.x contribs
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@835178 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca-contrib/tools/eclipse/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java')
-rw-r--r-- | java/sca-contrib/tools/eclipse/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java | 255 |
1 files changed, 0 insertions, 255 deletions
diff --git a/java/sca-contrib/tools/eclipse/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java b/java/sca-contrib/tools/eclipse/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java deleted file mode 100644 index 060f6ff6cb..0000000000 --- a/java/sca-contrib/tools/eclipse/plugins/core/org/apache/tuscany/sca/plugin/core/launch/DomainManagerLauncherUtil.java +++ /dev/null @@ -1,255 +0,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. - */ - -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(); - } - } - } -} |