JBoss Tools SVN: r24357 - in trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui: src/org/jboss/tools/internal/deltacloud/ui/wizards and 1 other directory.
by jbosstools-commits@lists.jboss.org
Author: jjohnstn
Date: 2010-08-20 18:11:13 -0400 (Fri, 20 Aug 2010)
New Revision: 24357
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java
Log:
2010-08-20 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java (performFinish): Store the
type of cloud connection when it is created for real.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java (getType): New method.
* src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java (performFinish): Return true on
failure so dialog closes.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-08-20 22:05:26 UTC (rev 24356)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/ChangeLog 2010-08-20 22:11:13 UTC (rev 24357)
@@ -1,3 +1,11 @@
+2010-08-20 Jeff Johnston <jjohnstn(a)redhat.com>
+
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java (performFinish): Store the
+ type of cloud connection when it is created for real.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java (getType): New method.
+ * src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java (performFinish): Return true on
+ failure so dialog closes.
+
2010-08-19 Jeff Johnston <jjohnstn(a)redhat.com>
* META-INF/MANIFEST.MF: Add dependency on rse.
@@ -7,7 +15,7 @@
RSE action.
(fillContextMenu): Add connect to RSE action skeleton and enable/disable depending on instance
state.
-
+
2010-08-18 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/ui/views/CVInstancesCategoryElement.java (listChanged): Get
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java 2010-08-20 22:05:26 UTC (rev 24356)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnection.java 2010-08-20 22:11:13 UTC (rev 24357)
@@ -56,8 +56,9 @@
String url = mainPage.getURL();
String username = mainPage.getUsername();
String password = mainPage.getPassword();
+ String type = mainPage.getType();
try {
- DeltaCloud newCloud = new DeltaCloud(name, url, username, password, true);
+ DeltaCloud newCloud = new DeltaCloud(name, url, username, password, type, true);
DeltaCloudManager.getDefault().addCloud(newCloud);
} catch (MalformedURLException e) {
Activator.log(e);
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java 2010-08-20 22:05:26 UTC (rev 24356)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewCloudConnectionPage.java 2010-08-20 22:11:13 UTC (rev 24357)
@@ -154,6 +154,10 @@
return password;
}
+ public String getType() {
+ return typeText.getText();
+ }
+
private void validate() {
boolean complete = true;
boolean errorFree = true;
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java 2010-08-20 22:05:26 UTC (rev 24356)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.ui/src/org/jboss/tools/internal/deltacloud/ui/wizards/NewInstance.java 2010-08-20 22:11:13 UTC (rev 24357)
@@ -16,7 +16,6 @@
import org.jboss.tools.deltacloud.core.DeltaCloudException;
import org.jboss.tools.deltacloud.core.DeltaCloudImage;
import org.jboss.tools.deltacloud.core.DeltaCloudInstance;
-import org.jboss.tools.deltacloud.core.DeltaCloudManager;
import org.jboss.tools.deltacloud.ui.Activator;
import org.jboss.tools.deltacloud.ui.IDeltaCloudPreferenceConstants;
import org.osgi.service.prefs.Preferences;
@@ -160,7 +159,7 @@
WizardMessages.getFormattedString(CREATE_INSTANCE_FAILURE_MSG, new String[] {name, imageId, realmId, profileId}),
new Status(IStatus.ERROR, Activator.PLUGIN_ID, errorMessage));
}
- return result;
+ return true;
}
}
15 years, 4 months
JBoss Tools SVN: r24356 - in trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core: src/org/jboss/tools/deltacloud/core and 1 other directories.
by jbosstools-commits@lists.jboss.org
Author: jjohnstn
Date: 2010-08-20 18:05:26 -0400 (Fri, 20 Aug 2010)
New Revision: 24356
Modified:
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudInstance.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java
trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java
Log:
2010-08-20 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java (DCNS): Add KEYS.
(deleteKey): New method to delete a keypair.
(createKey): New method to create a keypair.
(checkForErrors): Add extra check for status 404.
(createInstance): New method with additional keyname parameter to create instance using a
specified keypair.
* src/org/jboss/tools/deltacloud/core/DeltaCloud.java (getType): New method.
(DeltaCloud): Add type parameter and add keys collection.
(performInstanceAction): Add check for EC2 STOP action in which case look for a key in the key
collection and if found, delete it.
(createInstance): If EC2 cloud, create a key and pass the name to the new client createInstance
API that takes a keypair name.
* src/org/jboss/tools/deltacloud/core/DeltaCloudInstance.java (setGivenName): New method to store
the name chosen by the user in the dialog.
(getGivenName): New method to get the name chosen by the user in the dialog.
* src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java (loadClouds): Add type support.
(saveClouds): Ditto.
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog 2010-08-20 21:27:49 UTC (rev 24355)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/ChangeLog 2010-08-20 22:05:26 UTC (rev 24356)
@@ -1,3 +1,23 @@
+2010-08-20 Jeff Johnston <jjohnstn(a)redhat.com>
+
+ * src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java (DCNS): Add KEYS.
+ (deleteKey): New method to delete a keypair.
+ (createKey): New method to create a keypair.
+ (checkForErrors): Add extra check for status 404.
+ (createInstance): New method with additional keyname parameter to create instance using a
+ specified keypair.
+ * src/org/jboss/tools/deltacloud/core/DeltaCloud.java (getType): New method.
+ (DeltaCloud): Add type parameter and add keys collection.
+ (performInstanceAction): Add check for EC2 STOP action in which case look for a key in the key
+ collection and if found, delete it.
+ (createInstance): If EC2 cloud, create a key and pass the name to the new client createInstance
+ API that takes a keypair name.
+ * src/org/jboss/tools/deltacloud/core/DeltaCloudInstance.java (setGivenName): New method to store
+ the name chosen by the user in the dialog.
+ (getGivenName): New method to get the name chosen by the user in the dialog.
+ * src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java (loadClouds): Add type support.
+ (saveClouds): Ditto.
+
2010-08-18 Jeff Johnston <jjohnstn(a)redhat.com>
* src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java (checkForErrors): Make
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java 2010-08-20 21:27:49 UTC (rev 24355)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloud.java 2010-08-20 22:05:26 UTC (rev 24356)
@@ -3,8 +3,10 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.eclipse.core.runtime.ListenerList;
import org.eclipse.equinox.security.storage.EncodingUtils;
@@ -24,21 +26,24 @@
private String name;
private String username;
private String url;
+ private String type;
private DeltaCloudClient client;
private ArrayList<DeltaCloudInstance> instances;
+ private Map<String, String> keys = new HashMap<String, String>();
ListenerList instanceListeners = new ListenerList();
ListenerList imageListeners = new ListenerList();
public DeltaCloud(String name, String url, String username, String passwd) throws MalformedURLException {
- this(name, url, username, passwd, false);
+ this(name, url, username, passwd, null, false);
}
- public DeltaCloud(String name, String url, String username, String passwd, boolean persistent) throws MalformedURLException {
+ public DeltaCloud(String name, String url, String username, String passwd, String type, boolean persistent) throws MalformedURLException {
this.client = new DeltaCloudClient(new URL(url + "/api"), username, passwd); //$NON-NLS-1$
this.url = url;
this.name = name;
this.username = username;
+ this.type = type;
if (persistent) {
ISecurePreferences root = SecurePreferencesFactory.getDefault();
String key = DeltaCloud.getPreferencesKey(url, username);
@@ -69,6 +74,10 @@
return username;
}
+ public String getType() {
+ return type;
+ }
+
public void addInstanceListListener(IInstanceListListener listener) {
instanceListeners.add(listener);
}
@@ -165,6 +174,8 @@
public boolean performInstanceAction(String instanceId, String action) throws DeltaCloudException {
try {
+ if (action.equals(DeltaCloudInstance.STOP) && keys.get(instanceId) != null)
+ client.deleteKey(keys.get(instanceId), Activator.getDefault().getStateLocation());
return client.performInstanceAction(instanceId, action);
} catch (DeltaCloudClientException e) {
throw new DeltaCloudException(e);
@@ -230,9 +241,18 @@
public DeltaCloudInstance createInstance(String name, String imageId, String realmId, String profileId,
String memory, String storage) throws DeltaCloudException {
try {
- Instance instance = client.createInstance(imageId, profileId, realmId, name, memory, storage);
+ String keyname = "key-" + name + "-" + System.nanoTime(); //$NON-NLS-1 //$NON-NLS-2$
+ Instance instance = null;
+ if (DeltaCloudInstance.EC2_TYPE.equals(type)) {
+ client.createKey(keyname, Activator.getDefault().getStateLocation());
+ instance = client.createInstance(imageId, profileId, realmId, name, keyname, memory, storage);
+ keys.put(instance.getId(), keyname);
+ } else {
+ instance = client.createInstance(imageId, profileId, realmId, name, memory, storage);
+ }
if (instance != null) {
DeltaCloudInstance newInstance = new DeltaCloudInstance(instance);
+ newInstance.setGivenName(name);
instances.add(newInstance);
DeltaCloudInstance[] instanceArray = new DeltaCloudInstance[instances.size()];
instanceArray = instances.toArray(instanceArray);
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudInstance.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudInstance.java 2010-08-20 21:27:49 UTC (rev 24355)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudInstance.java 2010-08-20 22:05:26 UTC (rev 24356)
@@ -18,7 +18,10 @@
public final static String REBOOT = Instance.Action.REBOOT.toString();
public final static String DESTROY = Instance.Action.DESTROY.toString();
+ public final static String EC2_TYPE = "EC2"; //$NON-NLS-1$
+
private Instance instance;
+ private String givenName;
public DeltaCloudInstance(Instance instance) {
this.instance = instance;
@@ -28,6 +31,14 @@
return instance.getName();
}
+ public String getGivenName() {
+ return givenName;
+ }
+
+ public void setGivenName(String name) {
+ givenName = name;
+ }
+
public String getId() {
return instance.getId();
}
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java 2010-08-20 21:27:49 UTC (rev 24355)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/DeltaCloudManager.java 2010-08-20 22:05:26 UTC (rev 24356)
@@ -51,16 +51,18 @@
Node nameNode = attrs.getNamedItem("name"); // $NON-NLS-1$
Node urlNode = attrs.getNamedItem("url"); // $NON-NLS-1$
Node usernameNode = attrs.getNamedItem("username"); // $NON-NLS-1$
+ Node typeNode = attrs.getNamedItem("type"); // $NON-NLS-1$
String name = nameNode.getNodeValue();
String url = urlNode.getNodeValue();
String username = usernameNode.getNodeValue();
+ String type = typeNode.getNodeValue();
String key = DeltaCloud.getPreferencesKey(url, username);
ISecurePreferences root = SecurePreferencesFactory.getDefault();
ISecurePreferences node = root.node(key);
String password;
try {
password = node.get("password", null); //$NON-NLS-1$
- DeltaCloud cloud = new DeltaCloud(name, url, username, password);
+ DeltaCloud cloud = new DeltaCloud(name, url, username, password, type, false);
clouds.add(cloud);
} catch (Exception e1) {
Activator.log(e1);
@@ -90,7 +92,8 @@
for (DeltaCloud d : clouds) {
p.println("<cloud name=\"" + d.getName() + "\" url=\"" //$NON-NLS-1$ //$NON-NLS-2$
+ d.getURL() +
- "\" username=\"" + d.getUsername() + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$
+ "\" username=\"" + d.getUsername() +
+ "\" type=\"" + d.getType() + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$
}
p.println("</clouds>"); //$NON-NLS-1$
p.close();
Modified: trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java
===================================================================
--- trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java 2010-08-20 21:27:49 UTC (rev 24355)
+++ trunk/deltacloud/plugins/org.jboss.tools.deltacloud.core/src/org/jboss/tools/deltacloud/core/client/DeltaCloudClient.java 2010-08-20 22:05:26 UTC (rev 24356)
@@ -1,6 +1,8 @@
package org.jboss.tools.deltacloud.core.client;
import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -31,6 +33,7 @@
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.IPath;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@@ -43,7 +46,7 @@
private static enum DCNS
{
- INSTANCES, REALMS, IMAGES, HARDWARE_PROFILES, START, STOP, REBOOT, DESTROY;
+ INSTANCES, REALMS, IMAGES, HARDWARE_PROFILES, KEYS, START, STOP, REBOOT, DESTROY;
@Override
public String toString()
@@ -163,16 +166,23 @@
@Override
public Instance createInstance(String imageId, String profileId, String realmId, String name) throws DeltaCloudClientException
{
- return createInstance(imageId, profileId, realmId, name, null, null);
+ return createInstance(imageId, profileId, realmId, name, null, null, null);
}
-
+
public Instance createInstance(String imageId, String profileId, String realmId, String name, String memory, String storage) throws DeltaCloudClientException
{
+ return createInstance(imageId, profileId, realmId, name, null, memory, storage);
+ }
+
+ public Instance createInstance(String imageId, String profileId, String realmId, String name, String keyname, String memory, String storage) throws DeltaCloudClientException
+ {
String query = "?image_id=" + imageId + "&hwp_id=" + profileId + "&realm_id=" + realmId + "&name=" + name;
if (memory != null)
query += "&hwp_memory=" + memory;
if (storage != null)
query += "&hwp_storage=" + storage;
+ if (keyname != null)
+ query += "&keyname=" + keyname;
query += "&commit=create";
return buildInstance(sendRequest(DCNS.INSTANCES + query, RequestType.POST));
}
@@ -227,6 +237,44 @@
return JAXB.unmarshal(sendRequest(DCNS.REALMS + "/" + realmId, RequestType.GET), Realm.class);
}
+ public void createKey(String keyname, IPath keyStoreLocation) throws DeltaCloudClientException {
+ String xml = sendRequest(DCNS.KEYS + "?name=" + keyname, RequestType.POST);
+ try {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ Document document = db.parse(new InputSource(new StringReader(xml)));
+ List<String> keyText = getElementText(document, "pem"); //$NON-NLS-1$
+ File keyFile = keyStoreLocation.append(keyname + ".pem").toFile(); //$NON-NLS-1$
+ if (!keyFile.exists())
+ keyFile.createNewFile();
+ keyFile.setReadable(false, false);
+ keyFile.setWritable(true, true);
+ keyFile.setReadable(true, true);
+ StringBuffer sb = new StringBuffer();
+ String line;
+ BufferedReader reader = new BufferedReader(new StringReader(keyText.get(0)));
+ while ((line = reader.readLine()) != null)
+ {
+ sb.append(line.trim()).append("\n");
+ }
+ FileWriter w = new FileWriter(keyFile);
+ w.write(sb.toString());
+ w.close();
+ } catch (Exception e) {
+ throw new DeltaCloudClientException(e);
+ }
+ }
+
+ public void deleteKey(String keyname, IPath keyStoreLocation) throws DeltaCloudClientException {
+ try {
+ File keyFile = keyStoreLocation.append(keyname + ".pem").toFile(); //$NON-NLS-1$
+ if (keyFile.exists())
+ keyFile.delete();
+ } finally {
+ sendRequest(DCNS.KEYS + "/" + keyname, RequestType.DELETE);
+ }
+ }
+
@Override
public void rebootInstance(String instanceId) throws DeltaCloudClientException
{
@@ -262,6 +310,8 @@
String status = node.getAttributes().getNamedItem("status").getNodeValue();
if (status.equals("403"))
throw new DeltaCloudAuthException("Authorization error");
+ else if (status.equals("404"))
+ throw new DeltaCloudClientException("Not found");
else
throw new DeltaCloudClientException("Connection error");
}
15 years, 4 months
JBoss Tools SVN: r24355 - in branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks: configuration/editors/input and 4 other directories.
by jbosstools-commits@lists.jboss.org
Author: tfennelly
Date: 2010-08-20 17:27:49 -0400 (Fri, 20 Aug 2010)
New Revision: 24355
Added:
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/AbstractContributor.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/JavaConfigurationContributorFactory.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/Messages.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/messages.properties
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/util/
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/util/TextFieldChangeListener.java
Modified:
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/InputSourceType.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/Messages.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/SampleDataConfigurationContributorFactory.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/XSDConfigurationContributorFactory.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/messages.properties
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/model/JavaInputModelFactory.java
branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
Log:
https://jira.jboss.org/browse/JBIDE-6868
Re-add Java Input support.
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/InputSourceType.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/InputSourceType.java 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/InputSourceType.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -10,6 +10,7 @@
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors.input;
+import org.jboss.tools.smooks.configuration.editors.input.contributors.JavaConfigurationContributorFactory;
import org.jboss.tools.smooks.configuration.editors.input.contributors.SampleDataConfigurationContributorFactory;
import org.jboss.tools.smooks.configuration.editors.input.contributors.SimpleMessageContributorFactory;
import org.jboss.tools.smooks.configuration.editors.input.contributors.XSDConfigurationContributorFactory;
@@ -28,7 +29,7 @@
NONE(0, new SimpleMessageContributorFactory(Messages.InputSourceType_Warning_Specify_Input_Type), null),
XML(1, new SampleDataConfigurationContributorFactory(), new XMLInputModelFactory()),
XSD(2, new XSDConfigurationContributorFactory(), new XSDInputModelFactory()),
- JAVA(3, new SimpleMessageContributorFactory(Messages.InputSourceType_Warning_Specify_Sample_Data), new JavaInputModelFactory());
+ JAVA(3, new JavaConfigurationContributorFactory(), new JavaInputModelFactory());
private int typeIndex;
private InputTaskPanelContributorFactory taskPanelContributorFactory;
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/Messages.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/Messages.java 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/Messages.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -8,8 +8,6 @@
public static String InputSourceType_Warning_Specify_Sample_Data;
public static String InputSourceType_Unknown_Input_Type_Name;
public static String InputSourceType_Unknown_Input_Type_Index;
- public static String XSDConfigurationContributor_XML_Schema_File;
- public static String XSDConfigurationContributor_Root_Element_Name;
static {
// initialize resource bundle
Added: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/AbstractContributor.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/AbstractContributor.java (rev 0)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/AbstractContributor.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors.input.contributors;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.edit.command.DeleteCommand;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.ui.part.EditorPart;
+import org.jboss.tools.smooks.configuration.editors.input.InputTaskPanelContributor;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.model.SmooksModel;
+import org.jboss.tools.smooks.model.core.ICorePackage;
+import org.jboss.tools.smooks.model.core.IParam;
+import org.milyn.javabean.dynamic.Model;
+
+/**
+ * Abstract Contributor.
+ * @author <a href="mailto:tom.fennelly@gmail.com">tom.fennelly(a)gmail.com</a>
+ */
+public abstract class AbstractContributor implements InputTaskPanelContributor {
+
+ private EditorPart editorPart;
+ private Model<SmooksModel> configModel;
+ private SmooksModel modelRoot;
+ private EditingDomain editingDomain;
+
+ public AbstractContributor(EditorPart editorPart, Model<SmooksModel> configModel) {
+ this.editorPart = editorPart;
+ this.configModel = configModel;
+ this.modelRoot = configModel.getModelRoot();
+ this.editingDomain = modelRoot.getModelProvider().getEditingDomain();
+ }
+
+ public EditorPart getEditorPart() {
+ return editorPart;
+ }
+
+ public Model<SmooksModel> getConfigModel() {
+ return configModel;
+ }
+
+ public SmooksModel getModelRoot() {
+ return modelRoot;
+ }
+
+ public EditingDomain getEditingDomain() {
+ return editingDomain;
+ }
+
+ protected IParam setInputParam(String inputType, String value, CompoundCommand compoundCommand) {
+ IParam inputParam = getInputParam(inputType);
+
+ if(inputParam == null) {
+ inputParam = SmooksUIUtils.recordInputDataInfomation(editingDomain, modelRoot.getParams(), inputType, value, null, compoundCommand);
+ } else {
+ setParamValue(inputParam, value, compoundCommand);
+ }
+
+ return inputParam;
+ }
+
+ protected void removeInputParam(String inputType, CompoundCommand compoundCommand) {
+ IParam inputParam = getInputParam(inputType);
+ removeParam(inputParam, compoundCommand);
+ }
+
+ protected void removeParam(IParam param, CompoundCommand compoundCommand) {
+ if(param != null) {
+ modelRoot.getParams().getParams().remove(param);
+ Command command = DeleteCommand.create(editingDomain, param);
+ addOrExecute(compoundCommand, command);
+ }
+ }
+
+ protected IParam getInputParam(String inputType) {
+ return modelRoot.getParams().getParam(inputType);
+ }
+
+ protected void setParamValue(IParam param, String value, CompoundCommand compoundCommand) {
+ Command command = SetCommand.create(editingDomain, param, ICorePackage.Literals.PARAM__VALUE, value);
+ addOrExecute(compoundCommand, command);
+ }
+
+ protected void setParamType(IParam param, String typeValue, CompoundCommand compoundCommand) {
+ Command command = SetCommand.create(editingDomain, param, ICorePackage.Literals.PARAM__TYPE, typeValue);
+ addOrExecute(compoundCommand, command);
+ }
+
+ private void addOrExecute(CompoundCommand compoundCommand, Command command) {
+ if (command.canExecute()) {
+ if(compoundCommand == null) {
+ editingDomain.getCommandStack().execute(command);
+ } else {
+ compoundCommand.append(command);
+ }
+ }
+ }
+}
Property changes on: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/AbstractContributor.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/JavaConfigurationContributorFactory.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/JavaConfigurationContributorFactory.java (rev 0)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/JavaConfigurationContributorFactory.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.editors.input.contributors;
+
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.part.EditorPart;
+import org.jboss.tools.smooks.configuration.SmooksModelUtils;
+import org.jboss.tools.smooks.configuration.editors.input.InputSourceType;
+import org.jboss.tools.smooks.configuration.editors.input.InputTaskPanelContributor;
+import org.jboss.tools.smooks.configuration.editors.input.InputTaskPanelContributorFactory;
+import org.jboss.tools.smooks.configuration.editors.uitls.JavaTypeFieldDialog;
+import org.jboss.tools.smooks.model.SmooksModel;
+import org.jboss.tools.smooks.model.core.IParam;
+import org.jboss.tools.smooks.util.TextFieldChangeListener;
+import org.milyn.javabean.dynamic.Model;
+
+/**
+ * Java Source configuration contributor factory.
+ * @author <a href="mailto:tom.fennelly@gmail.com">tom.fennelly(a)gmail.com</a>
+ */
+public class JavaConfigurationContributorFactory implements InputTaskPanelContributorFactory {
+
+ public InputTaskPanelContributor newInstance(FormToolkit toolkit, EditorPart editorPart, Model<SmooksModel> configModel) {
+ return new PanelContributor(toolkit, editorPart, configModel);
+ }
+
+ public void setInputSourceType(InputSourceType inputSourceType) {
+ }
+
+ private class PanelContributor extends AbstractContributor {
+
+ private Composite inputSourceConfigComposite;
+ private Text classTextField;
+
+ public PanelContributor(FormToolkit toolkit, EditorPart editorPart, Model<SmooksModel> configModel) {
+ super(editorPart, configModel);
+ }
+
+ public void setInputSourceConfigComposite(Composite inputSourceConfigComposite) {
+ this.inputSourceConfigComposite = inputSourceConfigComposite;
+ }
+
+ public void addInputSourceTypeConfigControls() {
+ Composite javaClassSelectionSection = new Composite(inputSourceConfigComposite, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+
+ layout.numColumns = 3;
+ javaClassSelectionSection.setLayout(layout);
+ javaClassSelectionSection.setLayoutData(gd);
+
+ new Label(javaClassSelectionSection, SWT.NONE).setText(Messages.JavaConfigurationContributorFactory_Class_Name);
+
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ classTextField = new Text(javaClassSelectionSection, SWT.BORDER);
+ IParam inputParam = getInputParam(SmooksModelUtils.INPUT_TYPE_JAVA);
+ if(inputParam != null) {
+ classTextField.setText(inputParam.getValue());
+ }
+ new TextFieldChangeListener(classTextField) {
+ public void fieldChanged(String newValue) {
+ setInputClass();
+ }
+ };
+ classTextField.setLayoutData(gd);
+
+ Button browseButton = new Button(javaClassSelectionSection, SWT.NONE);
+ browseButton.setText(Messages.ConfigurationContributorFactory_Browse_Button);
+ browseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ browseForClass();
+ }
+ });
+
+ inputSourceConfigComposite.setBackgroundMode(SWT.TRANSPARENT);
+ inputSourceConfigComposite.layout();
+ }
+
+ protected void browseForClass() {
+ IJavaProject javaProject = JavaCore.create(((IFileEditorInput)getEditorPart().getEditorInput()).getFile().getProject());
+ String classString = JavaTypeFieldDialog.openJavaTypeDialog(getEditorPart().getEditorSite().getShell(), javaProject);
+
+ if(classString != null) {
+ classTextField.setText(classString);
+ setInputClass();
+ }
+ }
+
+ protected void setInputClass() {
+ CompoundCommand compoundCommand = new CompoundCommand();
+
+ setInputParam(SmooksModelUtils.INPUT_TYPE_JAVA, classTextField.getText(), compoundCommand);
+ if(!compoundCommand.isEmpty()) {
+ getEditingDomain().getCommandStack().execute(compoundCommand);
+ }
+ }
+ }
+}
Property changes on: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/JavaConfigurationContributorFactory.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Added: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/Messages.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/Messages.java (rev 0)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/Messages.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -0,0 +1,19 @@
+package org.jboss.tools.smooks.configuration.editors.input.contributors;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+
+ public static String ConfigurationContributorFactory_Browse_Button;
+ public static String XSDConfigurationContributorFactory_XML_Schema_File;
+ public static String XSDConfigurationContributorFactory_Root_Element_Name;
+ public static String JavaConfigurationContributorFactory_Class_Name;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(Messages.class.getPackage().getName() + ".messages", Messages.class); //$NON-NLS-1$
+ }
+
+ private Messages() {
+ }
+}
Property changes on: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/Messages.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/SampleDataConfigurationContributorFactory.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/SampleDataConfigurationContributorFactory.java 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/SampleDataConfigurationContributorFactory.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -91,7 +91,7 @@
return new PanelContributor(toolkit, editorPart, configModel);
}
- private class PanelContributor implements InputTaskPanelContributor {
+ private class PanelContributor extends AbstractContributor {
private EditorPart editorPart;
private Model<SmooksModel> configModel;
@@ -105,6 +105,7 @@
private Button removeInputDataButton;
public PanelContributor(FormToolkit toolkit, EditorPart editorPart, Model<SmooksModel> configModel) {
+ super(editorPart, configModel);
this.editorPart = editorPart;
this.configModel = configModel;
this.modelProvider = configModel.getModelRoot().getModelProvider();
@@ -291,7 +292,7 @@
}
if(!compoundCommand.isEmpty()) {
- compoundCommand.execute();
+ editingDomain.getCommandStack().execute(compoundCommand);
}
if (!inputs.isEmpty()) {
@@ -311,24 +312,6 @@
inputSourceConfigComposite.setBackgroundMode(SWT.TRANSPARENT);
inputSourceConfigComposite.layout();
}
-
- private void setParamType(IParam param, String typeValue, CompoundCommand compoundCommand) {
- Command c = SetCommand.create(editingDomain, param, ICorePackage.Literals.PARAM__TYPE, typeValue);
- if (c.canExecute()) {
- compoundCommand.append(c);
- }
- }
-
- private void removeParam(IParam param, CompoundCommand compoundCommand) {
- List<IParam> removingList = new ArrayList<IParam>();
-
- removingList.add(param);
-
- Command removeCommand = RemoveCommand.create(editingDomain, removingList);
- if (removeCommand.canExecute()) {
- compoundCommand.append(removeCommand);
- }
- }
protected void showInputDataWizard() {
String inputType = modelProvider.getInputType();
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/XSDConfigurationContributorFactory.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/XSDConfigurationContributorFactory.java 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/XSDConfigurationContributorFactory.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -34,7 +34,7 @@
import org.jboss.tools.smooks.configuration.editors.input.InputSourceType;
import org.jboss.tools.smooks.configuration.editors.input.InputTaskPanelContributor;
import org.jboss.tools.smooks.configuration.editors.input.InputTaskPanelContributorFactory;
-import org.jboss.tools.smooks.configuration.editors.input.Messages;
+import org.jboss.tools.smooks.configuration.editors.input.contributors.Messages;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
import org.jboss.tools.smooks.model.SmooksModel;
import org.jboss.tools.smooks.model.core.ICorePackage;
@@ -80,7 +80,7 @@
Composite xsdFileSelectionSection = new Composite(inputSourceConfigComposite, SWT.NONE);
pageSelectionComponent = new FileSelectionPageComponent(editorPart.getEditorSite().getShell(), new String[] {"xsd"});
- pageSelectionComponent.setLabel(Messages.XSDConfigurationContributor_XML_Schema_File);
+ pageSelectionComponent.setLabel(Messages.XSDConfigurationContributorFactory_XML_Schema_File);
pageSelectionComponent.createControl(xsdFileSelectionSection);
pageSelectionComponent.addFileSelectionListener(new FileSelectionListener() {
public void fileSelected(String fileName) {
@@ -151,7 +151,7 @@
gd = new GridData(GridData.BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING);
Label rootElementsLabel = new Label(xsdRootElementSelectionSection, SWT.NONE);
rootElementsLabel.setLayoutData(gd);
- rootElementsLabel.setText(Messages.XSDConfigurationContributor_Root_Element_Name);
+ rootElementsLabel.setText(Messages.XSDConfigurationContributorFactory_Root_Element_Name);
gd = new GridData(GridData.FILL_HORIZONTAL);
rootElementsDropDown = new Combo(xsdRootElementSelectionSection, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.RESIZE);
Added: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/messages.properties
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/messages.properties (rev 0)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/contributors/messages.properties 2010-08-20 21:27:49 UTC (rev 24355)
@@ -0,0 +1,5 @@
+ConfigurationContributorFactory_Browse_Button=Browse...
+XSDConfigurationContributorFactory_Root_Element_Name=Root Element Name:
+XSDConfigurationContributorFactory_XML_Schema_File=XML Schema File:
+XSDConfigurationContributorFactory_Root_Element_Name=Root Element Name:
+JavaConfigurationContributorFactory_Class_Name=Class:
\ No newline at end of file
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/messages.properties
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/messages.properties 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/messages.properties 2010-08-20 21:27:49 UTC (rev 24355)
@@ -2,5 +2,3 @@
InputSourceType_Warning_Specify_Sample_Data=Specify sample data in the Input Data section.
InputSourceType_Unknown_Input_Type_Name=Unknown Input Type Name:
InputSourceType_Unknown_Input_Type_Index=Unknown Input Type Index:
-XSDConfigurationContributor_XML_Schema_File=XML Schema File:
-XSDConfigurationContributor_Root_Element_Name=Root Element Name:
\ No newline at end of file
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/model/JavaInputModelFactory.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/model/JavaInputModelFactory.java 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/input/model/JavaInputModelFactory.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -10,12 +10,31 @@
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors.input.model;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.transform.dom.DOMResult;
+
import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaModelException;
import org.jboss.tools.smooks.configuration.SmooksModelUtils;
+import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
import org.jboss.tools.smooks.model.SmooksModel;
import org.jboss.tools.smooks.model.core.IParam;
+import org.jboss.tools.smooks.templating.model.ModelBuilderException;
+import org.milyn.Smooks;
+import org.milyn.payload.JavaSource;
import org.w3c.dom.Document;
-import org.w3c.dom.Element;
/**
* Java Source Input Model Factory.
@@ -24,12 +43,128 @@
*/
public class JavaInputModelFactory extends AbstractInputModelFactory {
- public Document getModel(SmooksModel smooksConfigModel, IJavaProject project) {
+ private Smooks smooksRuntime = new Smooks();
+ private JavaGraphBuilder graphBuilder = new JavaGraphBuilder();
+
+ public Document getModel(SmooksModel smooksConfigModel, IJavaProject project) throws ModelBuilderException {
IParam inputSourceParam = getInputSourceParam(SmooksModelUtils.INPUT_TYPE_JAVA, smooksConfigModel);
-
-
-
- return null;
+
+ try {
+ ProjectClassLoader classLoader = new ProjectClassLoader(project);
+ Class theModelClass = classLoader.loadClass(inputSourceParam.getValue().trim());
+ Object objectGraph = graphBuilder.buildGraph(theModelClass);
+ DOMResult domResult = new DOMResult();
+
+ // Filter a populated object model through an actual smooks runtime instance.
+ // this ensures that the generated model will be exactly the same as that seen
+ // by the smooks instance at runtime...
+ smooksRuntime.filterSource(new JavaSource(objectGraph), domResult);
+
+ return (Document) domResult.getNode();
+ } catch (JavaModelException e) {
+ throw new ModelBuilderException("Error build project classpath.", e); //$NON-NLS-1$
+ } catch (ClassNotFoundException e) {
+ throw new ModelBuilderException("Java Class '" + inputSourceParam.getValue().trim() + "' not found on project classpath.", e); //$NON-NLS-1$ //$NON-NLS-2$
+ }
}
+ public static class JavaGraphBuilder {
+
+ public <T> T buildGraph(Class<T> messageType) {
+ try {
+ return buildObject(messageType);
+ } catch (Exception e) {
+ e.printStackTrace();
+ throw new IllegalArgumentException("Unable to construct an instance of '" + messageType.getName() + "'", e);
+ }
+ }
+
+ private <T> T buildObject(Class<T> objectType) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
+
+ if(String.class.isAssignableFrom(objectType)) {
+ return objectType.cast("x");
+ } else if(Number.class.isAssignableFrom(objectType)) {
+ return objectType.getConstructor(String.class).newInstance("1");
+ } else if(objectType.isPrimitive()) {
+ return (T) primitiveToObjectMap.get(objectType);
+ } else if(objectType == Object.class) {
+ // don't construct raw Object types... leave them and just return null...
+ return null;
+ }
+
+ T messageInstance = objectType.newInstance();
+
+ // populate all the fields...
+ Method[] methods = objectType.getMethods();
+ for(Method method : methods) {
+ if(method.getName().startsWith("set") && method.getParameterTypes().length == 1) {
+ Class<?> propertyType = method.getParameterTypes()[0];
+ Object propertyInstance = null;
+
+ if(Collection.class.isAssignableFrom(propertyType)) {
+ propertyInstance = buildCollection(method, propertyType);
+ } else if(propertyType.isArray()) {
+ propertyInstance = buildArray(method, propertyType);
+ } else {
+ propertyInstance = buildObject(propertyType);
+ }
+
+ if(propertyInstance != null) {
+ method.invoke(messageInstance, propertyInstance);
+ }
+ }
+ }
+
+ return messageInstance;
+ }
+
+ private Object buildArray(Method method, Class<?> propertyType) throws ArrayIndexOutOfBoundsException, IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
+ Class<?> arrayType = propertyType.getComponentType();
+ Object[] arrayObj = (Object[]) Array.newInstance(arrayType, 1);
+
+ Array.set(arrayObj, 0, buildObject(arrayType));
+
+ return arrayObj;
+ }
+
+ private Object buildCollection(Method method, Class<?> propertyType) throws IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException {
+ Type genericType = method.getGenericParameterTypes()[0];
+
+ if(genericType instanceof ParameterizedType) {
+ ParameterizedType genericTypeClass = (ParameterizedType) genericType;
+ Collection collection = null;
+
+ if(!propertyType.isInterface()) {
+ // It's a concrete Collection type... just create an instance...
+ collection = (Collection) propertyType.newInstance();
+ }else if(List.class.isAssignableFrom(propertyType)) {
+ collection = new ArrayList();
+ } else if(Set.class.isAssignableFrom(propertyType)) {
+ collection = new LinkedHashSet();
+ }
+
+ if(collection != null) {
+ collection.add(buildObject((Class<Object>) genericTypeClass.getActualTypeArguments()[0]));
+ return collection;
+ }
+ }
+
+ return null;
+ }
+
+ private static final Map<Class, Object> primitiveToObjectMap;
+
+ static {
+ primitiveToObjectMap = new HashMap<Class, Object>();
+ primitiveToObjectMap.put(int.class, 1);
+ primitiveToObjectMap.put(long.class, 1L);
+ primitiveToObjectMap.put(boolean.class, true);
+ primitiveToObjectMap.put(float.class, 1f);
+ primitiveToObjectMap.put(double.class, 1d);
+ primitiveToObjectMap.put(char.class, '1');
+ primitiveToObjectMap.put(byte.class, Byte.parseByte("1"));
+ primitiveToObjectMap.put(short.class, 1);
+ }
+
+ }
}
Modified: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2010-08-20 20:17:37 UTC (rev 24354)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -157,7 +157,7 @@
}
public static IParam recordInputDataInfomation(
- EditingDomain domain, GlobalParams paramsType, String type,
+ EditingDomain domain, GlobalParams globalParams, String type,
String path, Properties properties, CompoundCommand compoundCommand) {
if (type != null && path != null && domain != null) {
@@ -176,7 +176,7 @@
Command command = null;
try {
- command = AddCommand.create(domain, paramsType, ICorePackage.Literals.PARAMS__PARAMS, params);
+ command = AddCommand.create(domain, globalParams, ICorePackage.Literals.PARAMS__PARAMS, params);
} catch (Throwable t) {
t.printStackTrace();
}
Added: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/util/TextFieldChangeListener.java
===================================================================
--- branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/util/TextFieldChangeListener.java (rev 0)
+++ branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/util/TextFieldChangeListener.java 2010-08-20 21:27:49 UTC (rev 24355)
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.util;
+
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Text Field change listener.
+ * <p/>
+ * Forwards a field value change event if the {@link #fieldChanged} method
+ * implementation if the carriage return is pressed, or the field looses
+ * focus.
+ *
+ * @author <a href="mailto:tom.fennelly@gmail.com">tom.fennelly(a)gmail.com</a>
+ */
+public abstract class TextFieldChangeListener implements KeyListener, FocusListener {
+
+ private Text textField;
+ private String lastValue;
+
+ public TextFieldChangeListener(Text textField) {
+ this.textField = textField;
+ textField.addKeyListener(this);
+ textField.addFocusListener(this);
+ lastValue = textField.getText();
+ }
+
+ public void focusGained(FocusEvent event) {
+ lastValue = textField.getText();
+ }
+
+ public void focusLost(FocusEvent event) {
+ String currentValue = textField.getText();
+ if(!lastValue.equals(currentValue)) {
+ lastValue = currentValue;
+ fieldChanged(currentValue);
+ }
+ }
+
+ public void keyPressed(KeyEvent event) {
+ String currentValue = textField.getText();
+ if(event.character == '\r' && !lastValue.equals(currentValue)) {
+ lastValue = currentValue;
+ fieldChanged(currentValue);
+ }
+ }
+
+ public void keyReleased(KeyEvent event) {
+ }
+
+ public abstract void fieldChanged(String newValue);
+}
Property changes on: branches/smooks-dmb/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/util/TextFieldChangeListener.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Name: svn:eol-style
+ LF
15 years, 4 months
JBoss Tools SVN: r24353 - branches.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2010-08-20 15:58:41 -0400 (Fri, 20 Aug 2010)
New Revision: 24353
Added:
branches/jbosstools-3.2.0.M2/
Log:
re-branch for M2 from earlier point (r24338)
Copied: branches/jbosstools-3.2.0.M2 (from rev 24338, trunk)
15 years, 4 months
JBoss Tools SVN: r24352 - branches.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2010-08-20 15:56:45 -0400 (Fri, 20 Aug 2010)
New Revision: 24352
Removed:
branches/jbosstools-3.2.0.M2/
Log:
remove branch and try again. svnfail
15 years, 4 months
JBoss Tools SVN: r24351 - branches/jbosstools-3.2.0.M2.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2010-08-20 15:54:47 -0400 (Fri, 20 Aug 2010)
New Revision: 24351
Added:
branches/jbosstools-3.2.0.M2/jbosstools-3.2.0.M2/
Log:
re-branch for M2 from earlier point (r24338)
Copied: branches/jbosstools-3.2.0.M2/jbosstools-3.2.0.M2 (from rev 24338, trunk)
15 years, 4 months
JBoss Tools SVN: r24350 - branches.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2010-08-20 15:52:09 -0400 (Fri, 20 Aug 2010)
New Revision: 24350
Added:
branches/jbosstools-3.2.0.M2/
Log:
branch for M2 release
Copied: branches/jbosstools-3.2.0.M2 (from rev 24349, trunk)
15 years, 4 months
JBoss Tools SVN: r24349 - trunk/build/aggregate/site.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2010-08-20 15:27:51 -0400 (Fri, 20 Aug 2010)
New Revision: 24349
Modified:
trunk/build/aggregate/site/pom.xml
Log:
add inputRepo5 (drools nightly) to pom.xml
Modified: trunk/build/aggregate/site/pom.xml
===================================================================
--- trunk/build/aggregate/site/pom.xml 2010-08-20 19:05:36 UTC (rev 24348)
+++ trunk/build/aggregate/site/pom.xml 2010-08-20 19:27:51 UTC (rev 24349)
@@ -115,6 +115,14 @@
<enabled>true</enabled>
</snapshots>
</repository>
+ <repository>
+ <id>inputRepo5</id>
+ <url>${inputRepo5}/all/repo/</url>
+ <layout>p2</layout>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
</repositories>
<profiles>
15 years, 4 months
JBoss Tools SVN: r24348 - trunk/runtime/plugins/org.jboss.tools.runtime/META-INF.
by jbosstools-commits@lists.jboss.org
Author: nickboldt
Date: 2010-08-20 15:05:36 -0400 (Fri, 20 Aug 2010)
New Revision: 24348
Modified:
trunk/runtime/plugins/org.jboss.tools.runtime/META-INF/MANIFEST.MF
Log:
org.drools.eclipse is required, not optional in MANIFEST.MF
Modified: trunk/runtime/plugins/org.jboss.tools.runtime/META-INF/MANIFEST.MF
===================================================================
--- trunk/runtime/plugins/org.jboss.tools.runtime/META-INF/MANIFEST.MF 2010-08-20 17:34:02 UTC (rev 24347)
+++ trunk/runtime/plugins/org.jboss.tools.runtime/META-INF/MANIFEST.MF 2010-08-20 19:05:36 UTC (rev 24348)
@@ -8,7 +8,7 @@
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.jboss.tools.seam.core,
- org.drools.eclipse;resolution:=optional,
+ org.drools.eclipse,
org.eclipse.ui,
org.eclipse.wst.server.core,
org.eclipse.ui.navigator,
15 years, 4 months