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:
nash 2010-11-12 09:07:26 +00:00
parent 64c5e1e822
commit 7dc5d5c148
18 changed files with 0 additions and 1716 deletions

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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();
}
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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;
}
}

View file

@ -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 {
}

View file

@ -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...
}
}

View file

@ -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));
}
}

View file

@ -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();
}
}

View file

@ -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());
}
}

View file

@ -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();
}
}

View file

@ -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());
}
}