Author: tfennelly
Date: 2010-01-07 13:03:45 -0500 (Thu, 07 Jan 2010)
New Revision: 19674
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/Messages.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLauncher.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/messages.properties
Log:
https://jira.jboss.org/jira/browse/JBIDE-5619
SmooksLauncher execution does not have access to localized messages
https://jira.jboss.org/jira/browse/JBIDE-5545
Change Smooks Run Configuration Output Labels to Match Task Descriptions in the Smooks
Config Editor
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/Messages.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/Messages.java 2010-01-07
08:10:08 UTC (rev 19673)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/Messages.java 2010-01-07
18:03:45 UTC (rev 19674)
@@ -11,6 +11,9 @@
public static String SmooksLaunchConfigurationDelegate_Error_missing_artifact2;
public static String SmooksLaunchConfigurationDelegate_Error_Title;
public static String SmooksLauncher_Error_Do_Not_Support_Java_Inputs;
+ public static String SmooksLauncher_Templating_To_StreamResult;
+ public static String SmooksLauncher_Java_Mapping_Results;
+ public static String SmooksLauncher_Nothing_To_Display;
public static String SmooksLauncher_Error_Expected_Four_Args;
public static String SmooksLaunchShortcut_Exception_Occurred;
public static String SmooksLaunchShortcut_Message_Select_Config;
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java 2010-01-07
08:10:08 UTC (rev 19673)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLaunchConfigurationDelegate.java 2010-01-07
18:03:45 UTC (rev 19674)
@@ -20,13 +20,18 @@
package org.jboss.tools.smooks.launch;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Properties;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -43,6 +48,7 @@
import org.eclipse.jdt.launching.IVMRunner;
import org.eclipse.jdt.launching.VMRunnerConfiguration;
import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
@@ -120,17 +126,9 @@
private VMRunnerConfiguration buildRunnerConfig(ILaunchConfiguration launchConfig)
throws CoreException {
List<String> classpath = new
ArrayList<String>(Arrays.asList(getClasspath(launchConfig)));
- File wsRootDir = ResourcesPlugin.getWorkspace().getRoot().getRawLocation().toFile();
- File wsTempClasses = new File(wsRootDir, "temp/classes"); //$NON-NLS-1$
-
// We need to add the SmooksLauncher to the launch classpath because it will not be
part of the projects
// classpath. Bit of a hack... there's probably a nicer way of doing this!!!
- addToCP(wsTempClasses, SmooksLauncher.class);
- addToCP(wsTempClasses, SmooksInputType.class);
- addToCP(wsTempClasses, ProcessNodeType.class);
- addToCP(wsTempClasses, ObjectSerializer.class);
- addToCP(wsTempClasses, MarshallingStrategy.class);
- addToCP(wsTempClasses, XPathMarshaller.class);
+ File wsTempClasses = copyLauncherResourcesToFilesys();
classpath.add(wsTempClasses.getAbsolutePath());
VMRunnerConfiguration runConfig= new
VMRunnerConfiguration(SmooksLauncher.class.getName(), classpath.toArray(new
String[classpath.size()]));
@@ -152,43 +150,82 @@
return runConfig;
}
- private void addToCP(File wsTempClasses, Class<?> theClass) throws CoreException
{
- String className = theClass.getName().replace(".", "/") +
".class"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- URL classURI = getClass().getResource("/" + className); //$NON-NLS-1$
+ private File copyLauncherResourcesToFilesys() throws CoreException {
+ File wsRootDir = ResourcesPlugin.getWorkspace().getRoot().getRawLocation().toFile();
+ File wsTempClasses = new File(wsRootDir, "temp/launcher/classes");
//$NON-NLS-1$
- if(classURI != null) {
+ writeClassToFilesys(SmooksLauncher.class, wsTempClasses);
+ writeClassToFilesys(SmooksInputType.class, wsTempClasses);
+ writeClassToFilesys(ProcessNodeType.class, wsTempClasses);
+ writeClassToFilesys(ObjectSerializer.class, wsTempClasses);
+ writeClassToFilesys(MarshallingStrategy.class, wsTempClasses);
+ writeClassToFilesys(XPathMarshaller.class, wsTempClasses);
+
+ // Need to send the localized message strings to the launcher...
+ Properties localizedMessages = new Properties();
+ localizedMessages.setProperty("SmooksLauncher_Error_Do_Not_Support_Java_Inputs",
Messages.SmooksLauncher_Error_Do_Not_Support_Java_Inputs);
+ localizedMessages.setProperty("SmooksLauncher_Error_Expected_Four_Args",
Messages.SmooksLauncher_Error_Expected_Four_Args);
+ localizedMessages.setProperty("SmooksLauncher_Java_Mapping_Results",
Messages.SmooksLauncher_Java_Mapping_Results);
+ localizedMessages.setProperty("SmooksLauncher_Templating_To_StreamResult",
Messages.SmooksLauncher_Templating_To_StreamResult);
+ localizedMessages.setProperty("SmooksLauncher_Nothing_To_Display",
Messages.SmooksLauncher_Nothing_To_Display);
+
+ try {
+ FileOutputStream messagesOutStream =
getFilesysOutStream(SmooksLauncher.LOCALIZED_FILE_NAME, SmooksLauncher.class,
wsTempClasses);
try {
- InputStream classStream = classURI.openStream();
+ localizedMessages.store(messagesOutStream, "Localized messages...");
+ } finally {
+ messagesOutStream.close();
+ }
+ } catch (IOException e) {
+ new CoreException(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR,
Messages.SmooksLaunchConfigurationDelegate_Error_Copying_Smooks_Launcher, e));
+ }
+
+ return wsTempClasses;
+ }
+
+ private void writeClassToFilesys(Class<?> theClass, File toDir) throws
CoreException {
+ String className = theClass.getSimpleName() + ".class"; //$NON-NLS-1$
+ writeResourceToFilesys(className, theClass, toDir);
+ }
+
+ private void writeResourceToFilesys(String resource, Class<?> refClass, File
toDir) {
+ String packagePath = refClass.getPackage().getName().replace(".",
"/");
+ String resourcePath = "/" + packagePath + "/" + resource;
+ URL resourceURI = refClass.getResource(resourcePath);
+
+ if(resourceURI != null) {
+ try {
+ InputStream resourceStream = resourceURI.openStream();
- if(classStream != null) {
+ if(resourceStream != null) {
try {
- File classOutFile = new File(wsTempClasses, className);
- File classPackage = classOutFile.getParentFile();
+ File resourceOutFile = new File(toDir, resourcePath);
+ File resourcePackage = resourceOutFile.getParentFile();
- classPackage.mkdirs();
- if(classPackage.exists()) {
- FileOutputStream classOutStream = new FileOutputStream(classOutFile);
+ resourcePackage.mkdirs();
+ if(resourcePackage.exists()) {
+ FileOutputStream resourceOutStream = new FileOutputStream(resourceOutFile);
try {
byte[] readBuf = new byte[100];
int readCount = 0;
while(readCount != -1) {
- readCount = classStream.read(readBuf);
+ readCount = resourceStream.read(readBuf);
if(readCount != -1) {
- classOutStream.write(readBuf, 0, readCount);
+ resourceOutStream.write(readBuf, 0, readCount);
}
}
} finally {
try {
- classOutStream.flush();
+ resourceOutStream.flush();
} finally {
- classOutStream.close();
+ resourceOutStream.close();
}
}
}
} finally {
- classStream.close();
+ resourceStream.close();
}
}
} catch (IOException e) {
@@ -196,4 +233,15 @@
}
}
}
+
+ private FileOutputStream getFilesysOutStream(String resource, Class<?> refClass,
File toDir) throws FileNotFoundException {
+ String packagePath = refClass.getPackage().getName().replace(".",
"/");
+ String resourcePath = "/" + packagePath + "/" + resource;
+ File resourceOutFile = new File(toDir, resourcePath);
+ File resourcePackage = resourceOutFile.getParentFile();
+
+ resourcePackage.mkdirs();
+
+ return new FileOutputStream(resourceOutFile);
+ }
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLauncher.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLauncher.java 2010-01-07
08:10:08 UTC (rev 19673)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/SmooksLauncher.java 2010-01-07
18:03:45 UTC (rev 19674)
@@ -23,9 +23,11 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.StringReader;
import java.util.Collection;
import java.util.HashSet;
+import java.util.Properties;
import java.util.Set;
import javax.xml.transform.stream.StreamSource;
@@ -44,18 +46,22 @@
* @author <a
href="mailto:tom.fennelly@jboss.com">tom.fennelly@jboss.com</a>
*/
public class SmooksLauncher {
+
+ public static final String LOCALIZED_FILE_NAME =
"localizedMessage.properties";
/**
* Launcher Main.
* @param args Args.
*/
public static void main(String[] args) throws IOException, SAXException {
+ Properties localizedMessages = loadLocalizedMessages();
+
if(args.length != 4) {
- throw new RuntimeException(Messages.SmooksLauncher_Error_Expected_Four_Args);
+ throw new
RuntimeException(localizedMessages.getProperty("SmooksLauncher_Error_Expected_Four_Args"));
}
if(args[1].equals(SmooksInputType.INPUT_TYPE_JAVA)) {
- System.out.println(Messages.SmooksLauncher_Error_Do_Not_Support_Java_Inputs);
+ System.out.println(localizedMessages.getProperty("SmooksLauncher_Error_Do_Not_Support_Java_Inputs"));
} else {
File smooksConfig = new File(args[0]);
File input = new File(args[2]);
@@ -73,7 +79,7 @@
StringResult stringResult = new StringResult();
smooks.filterSource(new StreamSource(new FileInputStream(input)), stringResult,
javaResult);
- System.out.println("[StreamResult ...]\n"); //$NON-NLS-1$
+ System.out.println("[" +
localizedMessages.getProperty("SmooksLauncher_Templating_To_StreamResult") +
" ...]\n"); //$NON-NLS-1$
System.out.println(" |--"); //$NON-NLS-1$
System.out.println(indent(stringResult.toString()));
System.out.println(" |--\n"); //$NON-NLS-1$
@@ -84,7 +90,7 @@
Collection<ObjectSerializer> serializedJavaResults =
ObjectSerializer.serialize(javaResult);
if(!serializedJavaResults.isEmpty()) {
- System.out.println("[JavaResult Objects...]"); //$NON-NLS-1$
+ System.out.println("[" +
localizedMessages.getProperty("SmooksLauncher_Java_Mapping_Results") +
"...]"); //$NON-NLS-1$
for(ObjectSerializer serializedJavaResult : serializedJavaResults) {
System.out.println(" |--"); //$NON-NLS-1$
@@ -95,9 +101,7 @@
}
if(nothingDisplayed) {
- System.out.println("Nothing to Display:"); //$NON-NLS-1$
- System.out.println(" - No Java Mappings."); //$NON-NLS-1$
- System.out.println(" - No Templates Applied."); //$NON-NLS-1$
+ System.out.println(localizedMessages.getProperty("SmooksLauncher_Nothing_To_Display"));
}
} finally {
smooks.close();
@@ -105,6 +109,28 @@
}
}
+ private static Properties loadLocalizedMessages() {
+ Properties messages = new Properties();
+ InputStream messageStream =
SmooksLauncher.class.getResourceAsStream(LOCALIZED_FILE_NAME);
+
+ try {
+ try {
+ messages.load(messageStream);
+ } catch (IOException e) {
+ System.out.println("Unexpected IOException reading classpath resource stream for
'" + LOCALIZED_FILE_NAME + "'. " + e.getMessage());
+ e.printStackTrace();
+ }
+ } finally {
+ try {
+ messageStream.close();
+ } catch (IOException e) {
+ System.out.println("Unexpected IOException closing classpath resource stream for
'" + LOCALIZED_FILE_NAME + "'.");
+ }
+ }
+
+ return messages;
+ }
+
private static void assertFile(File file, String name) {
if(!file.exists()) {
throw new RuntimeException("Specified '" + name + "' File
'" + file.getAbsolutePath() + "' not found."); //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/messages.properties
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/messages.properties 2010-01-07
08:10:08 UTC (rev 19673)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/launch/messages.properties 2010-01-07
18:03:45 UTC (rev 19674)
@@ -5,6 +5,9 @@
SmooksLaunchConfigurationDelegate_Error_missing_artifact2=' Smooks artifact.
Download Smooks and add the Smooks jars to the Project classpath, or update your Maven POM
to include the missing artifact.
SmooksLaunchConfigurationDelegate_Error_Title=Error
SmooksLauncher_Error_Do_Not_Support_Java_Inputs=Sorry... we don't support Java Inputs
yet.
+SmooksLauncher_Templating_To_StreamResult=Stream Templating Result
+SmooksLauncher_Java_Mapping_Results=Java Mapping Results
+SmooksLauncher_Nothing_To_Display=Nothing to Display:\n - No Java Mappings.\n - No
Templates Applied.
SmooksLauncher_Error_Expected_Four_Args=Expected 4 Launch arguments: <Smooks
Config> <Input Type> <Input Path> <Node Types>
SmooksLaunchShortcut_Exception_Occurred=An exception occurred while testing the Smooks
Configuration.
SmooksLaunchShortcut_Message_Select_Config=Select from the available Smooks Runtime
Configurations.