Delete files moved to new directory structure by revision r1034302
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1034303 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
64c5e1e822
commit
7dc5d5c148
18 changed files with 0 additions and 1716 deletions
|
@ -1,187 +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.core.classpath;
|
||||
|
||||
import static org.apache.tuscany.sca.core.log.LogUtil.error;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExtension;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jdt.core.IClasspathContainer;
|
||||
import org.eclipse.jdt.core.IClasspathEntry;
|
||||
|
||||
/**
|
||||
* Utility functions to help determine the runtime classpath.
|
||||
*
|
||||
* @version $Rev: $ $Date: $
|
||||
*/
|
||||
public class ClasspathUtil {
|
||||
|
||||
private static final String TUSCANY_RUNTIME_LIBRARIES = "org.apache.tuscany.sca.core.runtimeLibraries";
|
||||
|
||||
private static final String VERSION_RESOURCE = "/org/apache/tuscany/sca/core/feature.version";
|
||||
private static final String TUSCANY_FEATURE = "org.apache.tuscany.sca.feature.core";
|
||||
|
||||
/**
|
||||
* Return the installed runtime classpath entries.
|
||||
*
|
||||
* @return
|
||||
* @throws CoreException
|
||||
*/
|
||||
public static String installedRuntimeClasspath() throws CoreException {
|
||||
|
||||
List<IClasspathEntry> classpathEntries = new ArrayList<IClasspathEntry>();
|
||||
for (IExtension extension: Platform.getExtensionRegistry().getExtensionPoint(TUSCANY_RUNTIME_LIBRARIES).getExtensions()) {
|
||||
for (IConfigurationElement configuration: extension.getConfigurationElements()) {
|
||||
IClasspathContainer container = (IClasspathContainer)configuration.createExecutableExtension("class");
|
||||
classpathEntries.addAll(Arrays.asList(container.getClasspathEntries()));
|
||||
}
|
||||
}
|
||||
|
||||
String separator = System.getProperty("path.separator");
|
||||
StringBuffer classpath = new StringBuffer();
|
||||
for (int i = 0, n = classpathEntries.size(); i < n; i++) {
|
||||
IClasspathEntry entry = classpathEntries.get(i);
|
||||
if (i >0) {
|
||||
classpath.append(separator);
|
||||
}
|
||||
classpath.append(entry.getPath().toFile().toURI().getPath());
|
||||
}
|
||||
|
||||
return classpath.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Tuscany feature location.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
static IPath feature() {
|
||||
Path featurePath = null;
|
||||
Exception ex = null;
|
||||
try {
|
||||
InputStream resourceStream = ClasspathUtil.class.getResourceAsStream(VERSION_RESOURCE);
|
||||
if (resourceStream != null) {
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream, "UTF-8"));
|
||||
String featureVersion = reader.readLine().trim();
|
||||
reader.close();
|
||||
URL location = Platform.getInstallLocation().getURL();
|
||||
File feature = new File(location.getPath() + "/features/" + TUSCANY_FEATURE + "_" + featureVersion);
|
||||
featurePath = new Path(feature.getPath());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
ex = e;
|
||||
}
|
||||
|
||||
if (featurePath != null) {
|
||||
return featurePath;
|
||||
} else {
|
||||
error("Tuscany runtime feature not found", ex);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the location of the runtime distribution under the Tuscany feature.
|
||||
*
|
||||
* @param feature
|
||||
* @return
|
||||
*/
|
||||
static IPath runtime(IPath feature) {
|
||||
IPath runtimePath = null;
|
||||
try {
|
||||
|
||||
// Find the Tuscany distribution under the feature's runtime directory
|
||||
// Typically runtime/distro-archive-name/un-archived-distro-dir
|
||||
File file = new File(feature.toFile(), "runtime");
|
||||
if (file.exists()) {
|
||||
File distro = null;
|
||||
for (File f: file.listFiles()) {
|
||||
if (f.getName().contains("tuscany-sca")) {
|
||||
distro = f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (distro != null) {
|
||||
for (File f: distro.listFiles()) {
|
||||
if (f.getName().contains("tuscany-sca")) {
|
||||
runtimePath = new Path(f.getPath());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (runtimePath == null) {
|
||||
error("Tuscany runtime distribution directory not found", new FileNotFoundException(distro.getAbsolutePath()));
|
||||
}
|
||||
} else {
|
||||
error("Tuscany runtime distribution archive not found", new FileNotFoundException(file.getAbsolutePath()));
|
||||
}
|
||||
} else {
|
||||
error("Tuscany runtime feature not found", new FileNotFoundException(file.getAbsolutePath()));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
error("Tuscany runtime feature not found", e);
|
||||
}
|
||||
return runtimePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the location of the src distribution under the Tuscany feature.
|
||||
*
|
||||
* @param feature
|
||||
* @return
|
||||
*/
|
||||
static IPath src(IPath feature) {
|
||||
IPath sourcePath = null;
|
||||
try {
|
||||
|
||||
// Find the Tuscany source distribution under the feature's src directory
|
||||
// Typically src/distro-archive-src.zip
|
||||
File file = new File(feature.toFile(), "src");
|
||||
if (file.exists()) {
|
||||
File distro = null;
|
||||
for (File f: file.listFiles()) {
|
||||
if (f.getName().contains("tuscany-sca") && f.getName().endsWith("-src.zip")) {
|
||||
distro = f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (distro != null) {
|
||||
sourcePath = new Path(distro.getPath());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
return sourcePath;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,154 +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.core.classpath;
|
||||
|
||||
import static org.apache.tuscany.sca.core.classpath.ClasspathUtil.feature;
|
||||
import static org.apache.tuscany.sca.core.classpath.ClasspathUtil.runtime;
|
||||
import static org.apache.tuscany.sca.core.classpath.ClasspathUtil.src;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.jdt.core.IClasspathContainer;
|
||||
import org.eclipse.jdt.core.IClasspathEntry;
|
||||
import org.eclipse.jdt.core.JavaCore;
|
||||
|
||||
/**
|
||||
* A classpath container for the Tuscany runtime.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class TuscanyClasspathContainer implements IClasspathContainer {
|
||||
|
||||
public static final IPath TUSCANY_LIBRARY_CONTAINER = new Path("org.apache.tuscany.sca.runtime.library");
|
||||
|
||||
private static final String TUSCANY_HOME = "TUSCANY_HOME";
|
||||
private static final String TUSCANY_SRC = "TUSCANY_SRC";
|
||||
|
||||
public TuscanyClasspathContainer() {
|
||||
}
|
||||
|
||||
public IClasspathEntry[] getClasspathEntries() {
|
||||
List<IClasspathEntry> list = new ArrayList<IClasspathEntry>();
|
||||
|
||||
// Find the Tuscany feature
|
||||
IPath feature = feature();
|
||||
|
||||
// Get the runtime location from the installed Tuscany feature
|
||||
IPath runtimePath = runtime(feature);
|
||||
|
||||
if (runtimePath == null) {
|
||||
|
||||
// Try to get the location of the Tuscany binary distribution from
|
||||
// the TUSCANY_HOME property or environment variable
|
||||
String home = System.getProperty(TUSCANY_HOME);
|
||||
if (home == null || home.length() == 0) {
|
||||
home = System.getenv(TUSCANY_HOME);
|
||||
}
|
||||
if (home != null && home.length() != 0) {
|
||||
if (new File(home).exists()) {
|
||||
runtimePath = new Path(home);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Get the source location from the installed Tuscany feature
|
||||
IPath sourcePath = src(feature);
|
||||
|
||||
if (sourcePath == null) {
|
||||
|
||||
// Try to get the location of the Tuscany source distribution from
|
||||
// the TUSCANY_SRC property or environment variable
|
||||
String source = System.getProperty(TUSCANY_SRC);
|
||||
if (source == null || source.length() == 0) {
|
||||
source = System.getenv(TUSCANY_SRC);
|
||||
}
|
||||
if (source != null && source.length() != 0) {
|
||||
if (new File(source).exists()) {
|
||||
sourcePath = new Path(source);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add the JARs from runtime/lib and runtime/modules as classpath entries
|
||||
if (runtimePath != null) {
|
||||
|
||||
// Add a selection of the jars from runtime/modules
|
||||
File modulesDirectory = runtimePath.append("modules").toFile();
|
||||
if (modulesDirectory != null && modulesDirectory.exists()) {
|
||||
for (File file : modulesDirectory.listFiles()) {
|
||||
IPath path = new Path(file.getPath());
|
||||
String name = path.lastSegment();
|
||||
String extension = path.getFileExtension();
|
||||
|
||||
// Only include API and launcher JARs
|
||||
if (!"jar".equals(extension)) {
|
||||
continue;
|
||||
}
|
||||
if (name.indexOf("-api-") == -1 && name.indexOf("-launcher-") == -1) {
|
||||
continue;
|
||||
}
|
||||
if (name.startsWith("tuscany-node-api-") || name.startsWith("tuscany-domain-api-")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
list.add(JavaCore.newLibraryEntry(path, sourcePath, null));
|
||||
}
|
||||
}
|
||||
|
||||
File libDirectory = runtimePath.append("lib").toFile();
|
||||
if (libDirectory != null && libDirectory.exists()) {
|
||||
for (File file : libDirectory.listFiles()) {
|
||||
IPath path = new Path(file.getPath());
|
||||
String name = path.lastSegment();
|
||||
String extension = path.getFileExtension();
|
||||
|
||||
// Only include jaxb, jaxws and jsr API JARs
|
||||
if (!"jar".equals(extension)) {
|
||||
continue;
|
||||
}
|
||||
if (name.indexOf("-api-") != -1) {
|
||||
if (name.startsWith("jaxb") || name.startsWith("jaxws") || name.startsWith("jsr")) {
|
||||
list.add(JavaCore.newLibraryEntry(path, sourcePath, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (IClasspathEntry[])list.toArray(new IClasspathEntry[list.size()]);
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return "Tuscany Library";
|
||||
}
|
||||
|
||||
public int getKind() {
|
||||
return IClasspathContainer.K_APPLICATION;
|
||||
}
|
||||
|
||||
public IPath getPath() {
|
||||
return TUSCANY_LIBRARY_CONTAINER;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,50 +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.core.classpath;
|
||||
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.jdt.core.ClasspathContainerInitializer;
|
||||
import org.eclipse.jdt.core.IClasspathContainer;
|
||||
import org.eclipse.jdt.core.IJavaProject;
|
||||
import org.eclipse.jdt.core.JavaCore;
|
||||
|
||||
/**
|
||||
* A classpath container initializer for the Tuscany runtime.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class TuscanyClasspathContainerInitializer extends ClasspathContainerInitializer {
|
||||
|
||||
@Override
|
||||
public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
|
||||
|
||||
TuscanyClasspathContainer classpathContainer = new TuscanyClasspathContainer();
|
||||
JavaCore.setClasspathContainer(containerPath,
|
||||
new IJavaProject[] {project},
|
||||
new IClasspathContainer[] {classpathContainer},
|
||||
null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -1,69 +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.core.classpath;
|
||||
|
||||
import org.eclipse.jdt.core.IClasspathEntry;
|
||||
import org.eclipse.jdt.core.JavaCore;
|
||||
import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
|
||||
import org.eclipse.jface.wizard.WizardPage;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Label;
|
||||
|
||||
/**
|
||||
* A classpath container page for the Tuscany runtime library.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class TuscanyLibraryEntryPage extends WizardPage implements IClasspathContainerPage {
|
||||
|
||||
private IClasspathEntry classpathEntry;
|
||||
|
||||
public TuscanyLibraryEntryPage() {
|
||||
super("Tuscany");
|
||||
}
|
||||
|
||||
public void createControl(Composite parent) {
|
||||
setTitle("Tuscany Library");
|
||||
|
||||
Label label = new Label(parent, SWT.NONE);
|
||||
label.setText("Press Finish to add the Tuscany Library");
|
||||
label.setFont(parent.getFont());
|
||||
|
||||
setControl(label);
|
||||
}
|
||||
|
||||
public boolean finish() {
|
||||
classpathEntry = JavaCore.newContainerEntry(TuscanyClasspathContainer.TUSCANY_LIBRARY_CONTAINER);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isPageComplete() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public IClasspathEntry getSelection() {
|
||||
return classpathEntry;
|
||||
}
|
||||
|
||||
public void setSelection(IClasspathEntry containerEntry) {
|
||||
this.classpathEntry = containerEntry;
|
||||
}
|
||||
}
|
|
@ -1,89 +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.core.classpath;
|
||||
|
||||
import static org.apache.tuscany.sca.core.classpath.ClasspathUtil.feature;
|
||||
import static org.apache.tuscany.sca.core.classpath.ClasspathUtil.runtime;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.eclipse.core.runtime.IPath;
|
||||
import org.eclipse.core.runtime.Path;
|
||||
import org.eclipse.jdt.core.IClasspathContainer;
|
||||
import org.eclipse.jdt.core.IClasspathEntry;
|
||||
import org.eclipse.jdt.core.JavaCore;
|
||||
|
||||
/**
|
||||
* A classpath container for the Tuscany runtime.
|
||||
*
|
||||
* @version $Rev$ $Date$
|
||||
*/
|
||||
public class TuscanyRuntimeClasspathContainer implements IClasspathContainer {
|
||||
|
||||
public static final IPath TUSCANY_LIBRARY_CONTAINER = new Path("org.apache.tuscany.sca.runtime.library");
|
||||
|
||||
private static final String TUSCANY_HOME = "TUSCANY_HOME";
|
||||
|
||||
public TuscanyRuntimeClasspathContainer() {
|
||||
}
|
||||
|
||||
public IClasspathEntry[] getClasspathEntries() {
|
||||
|
||||
// Find the Tuscany feature
|
||||
IPath feature = feature();
|
||||
|
||||
// Get the runtime location from the installed Tuscany feature
|
||||
IPath runtimePath = runtime(feature);
|
||||
|
||||
if (runtimePath == null) {
|
||||
|
||||
// Try to get the location of the Tuscany binary distribution from
|
||||
// the TUSCANY_HOME property or environment variable
|
||||
String home = System.getProperty(TUSCANY_HOME);
|
||||
if (home == null || home.length() == 0) {
|
||||
home = System.getenv(TUSCANY_HOME);
|
||||
}
|
||||
if (home != null && home.length() != 0) {
|
||||
if (new File(home).exists()) {
|
||||
runtimePath = new Path(home);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (runtimePath != null) {
|
||||
return new IClasspathEntry[] {JavaCore.newLibraryEntry(runtimePath, null, null)};
|
||||
} else {
|
||||
return new IClasspathEntry[0];
|
||||
}
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return "Tuscany Library";
|
||||
}
|
||||
|
||||
public int getKind() {
|
||||
return IClasspathContainer.K_APPLICATION;
|
||||
}
|
||||
|
||||
public IPath getPath() {
|
||||
return TUSCANY_LIBRARY_CONTAINER;
|
||||
}
|
||||
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
${tuscany.eclipse.version}
|
|
@ -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.core.launch;
|
||||
|
||||
import static org.apache.tuscany.sca.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.core.classpath.ClasspathUtil;
|
||||
import org.apache.tuscany.sca.core.classpath.TuscanyClasspathContainer;
|
||||
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(TuscanyClasspathContainer.TUSCANY_LIBRARY_CONTAINER);
|
||||
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=" + ClasspathUtil.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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,244 +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.core.launch;
|
||||
|
||||
import static org.apache.tuscany.sca.core.launch.DomainManagerLauncherUtil.domainProject;
|
||||
import static org.apache.tuscany.sca.core.launch.DomainManagerLauncherUtil.launchDomainManager;
|
||||
import static org.apache.tuscany.sca.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.core.classpath.ClasspathUtil;
|
||||
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=" + ClasspathUtil.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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,75 +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.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.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);
|
||||
}
|
||||
}
|
|
@ -1,48 +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.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);
|
||||
}
|
||||
}
|
|
@ -1,79 +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.core.launch;
|
||||
|
||||
import static org.apache.tuscany.sca.core.launch.DomainManagerLauncherUtil.launchDomainManager;
|
||||
import static org.apache.tuscany.sca.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;
|
||||
}
|
||||
}
|
|
@ -1,29 +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.core.launch;
|
||||
|
||||
/**
|
||||
* TuscanyLaunchNodeFilter
|
||||
*
|
||||
* @version $Rev: $ $Date: $
|
||||
*/
|
||||
public class TuscanyLaunchNodeFilter {
|
||||
|
||||
}
|
|
@ -1,88 +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.core.launch;
|
||||
|
||||
import static org.apache.tuscany.sca.core.launch.NodeLauncherUtil.launchNode;
|
||||
import static org.apache.tuscany.sca.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...
|
||||
}
|
||||
|
||||
}
|
|
@ -1,39 +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.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.core")).log(
|
||||
new Status(IStatus.ERROR, "org.apache.tuscany.sca.core", IStatus.OK, msg, e));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,53 +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.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();
|
||||
}
|
||||
}
|
|
@ -1,98 +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.core.newwizards;
|
||||
|
||||
import static org.apache.tuscany.sca.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.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());
|
||||
}
|
||||
}
|
|
@ -1,53 +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.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();
|
||||
}
|
||||
}
|
|
@ -1,105 +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.core.newwizards;
|
||||
|
||||
import static org.apache.tuscany.sca.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.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());
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue