Author: bfitzpat
Date: 2012-02-14 13:29:32 -0500 (Tue, 14 Feb 2012)
New Revision: 38723
Modified:
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/JAXRSWSTestView2.java
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistory.java
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistoryEntry.java
Log:
[JBIDE-10883] Fully implemented the test history url drop-down so it persists the state of
things like headers, parameters, body text, result headers, and result text. Now if you
select a previously used URL, it will re-populate the controls with the settings/feedback
last used/returned.
Modified:
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/JAXRSWSTestView2.java
===================================================================
---
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/JAXRSWSTestView2.java 2012-02-14
18:03:41 UTC (rev 38722)
+++
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/JAXRSWSTestView2.java 2012-02-14
18:29:32 UTC (rev 38723)
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
+ * Copyright (c) 2011-2012 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,
@@ -187,6 +187,7 @@
private TestHistory history = new TestHistory();
private TestHistoryEntry currentHistoryEntry = null;
private Button useBasicAuthCB;
+ private boolean restoringFromHistoryEntry = false;
/**
* The constructor.
@@ -560,9 +561,20 @@
urlCombo.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
- setControlsForSelectedURL();
- getCurrentHistoryEntry().setUrl(urlCombo.getText());
- getCurrentHistoryEntry().setAction(null);
+ if (e.getSource().equals(urlCombo)) {
+ String newURL = urlCombo.getText();
+ String oldURL = null;
+ if (getCurrentHistoryEntry() != null && getCurrentHistoryEntry().getUrl() !=
null && getCurrentHistoryEntry().getUrl().trim().length() > 0) {
+ oldURL = getCurrentHistoryEntry().getUrl();
+ }
+ if (newURL != null && oldURL != null &&
newURL.contentEquals(oldURL)) {
+ // ignore it - they're the same
+ } else if (newURL != null && oldURL == null) {
+ setControlsForSelectedURL();
+ getCurrentHistoryEntry().setUrl(newURL);
+ getCurrentHistoryEntry().setAction(null);
+ }
+ }
}
});
urlCombo.addKeyListener(new KeyListener() {
@@ -583,9 +595,24 @@
widgetSelected(e);
}
public void widgetSelected(SelectionEvent e) {
- getCurrentHistoryEntry().setUrl(urlCombo.getText());
- getCurrentHistoryEntry().setAction(null);
- setControlsForSelectedURL();
+ String testURL = urlCombo.getText();
+ TestHistoryEntry entry = history.findEntryByURL(testURL);
+// System.out.println(new Timestamp(System.currentTimeMillis()));
+// System.out.println(history.toString());
+ if (entry != null) {
+ try {
+ currentHistoryEntry = (TestHistoryEntry) entry.clone();
+// currentHistoryEntry = entry;
+ getCurrentHistoryEntry().setAction(null);
+ setControlsForSelectedEntry(entry);
+ } catch (CloneNotSupportedException e1) {
+ e1.printStackTrace();
+ }
+ } else {
+ getCurrentHistoryEntry().setUrl(urlCombo.getText());
+ getCurrentHistoryEntry().setAction(null);
+ setControlsForSelectedURL();
+ }
}
});
@@ -713,7 +740,8 @@
bodyText = toolkit.createText(ec5, EMPTY_STRING, SWT.BORDER | SWT.WRAP |
SWT.V_SCROLL);
bodyText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
- getCurrentHistoryEntry().setBody(bodyText.getText());
+ if (!restoringFromHistoryEntry)
+ getCurrentHistoryEntry().setBody(bodyText.getText());
// getCurrentHistoryEntry().setAction(null);
}
});
@@ -1080,6 +1108,56 @@
}
}
+ private void setControlsForSelectedEntry ( TestHistoryEntry entry ) {
+ if (entry != null) {
+ restoringFromHistoryEntry = true;
+ if (entry.getWsTech() != null) {
+ setControlsForWSType(entry.getWsTech());
+ if (entry.getWsTech().equalsIgnoreCase(JAX_WS))
+ methodCombo.setText(JAX_WS);
+ }
+ if (entry.getMethod() != null && entry.getWsTech().equalsIgnoreCase(JAX_RS))
{
+ methodCombo.setText(entry.getMethod());
+ setControlsForMethodType(entry.getMethod());
+ }
+ if (bodyText.isEnabled()) {
+ bodyText.setText(entry.getBody());
+ }
+ if (dlsList.isEnabled()) {
+ dlsList.setSelection(entry.getHeaders());
+ }
+ if (parmsList.isEnabled()) {
+ parmsList.setSelection(entry.getParms());
+ }
+ if (resultHeadersList.isEnabled()) {
+ resultHeadersList.removeAll();
+ String[] headers = entry.getResultHeadersList();
+ if (headers != null && headers.length > 0) {
+ for (int i = 0; i < headers.length; i++) {
+ resultHeadersList.add(headers[i]);
+ }
+ }
+ }
+ if (resultsText.isEnabled() && resultsBrowser.isEnabled()) {
+ resultsText.setText(entry.getResultText());
+ resultsBrowser.setText(entry.getResultText());
+ }
+ if (entry.getUrl().trim().length() > 0) {
+ String urlText = entry.getUrl();
+ try {
+ new URL(urlText);
+ startToolItem.setEnabled(true);
+ } catch (MalformedURLException mue) {
+ startToolItem.setEnabled(false);
+ return;
+ }
+ } else {
+ startToolItem.setEnabled(false);
+ }
+ restoringFromHistoryEntry = false;
+ }
+ }
+
private void setControlsForSelectedURL() {
if (urlCombo.getText().trim().length() > 0) {
String urlText = urlCombo.getText();
@@ -1280,12 +1358,24 @@
getCurrentHistoryEntry().setResultHeadersList(headers);
if (JAXRSWSTestView2.this.resultsText.getText().trim().length() == 0) {
if (headers != null && headers.length > 0) {
+ getCurrentHistoryEntry().setResultText(
+ JBossWSUIMessages.JAXRSWSTestView2_Msg_No_Results_Check_Headers);
JAXRSWSTestView2.this.resultsText.setText(
JBossWSUIMessages.JAXRSWSTestView2_Msg_No_Results_Check_Headers);
JAXRSWSTestView2.this.form.reflow(true);
}
}
- history.getEntries().add(getCurrentHistoryEntry());
+ TestHistoryEntry oldEntry =
history.findEntryByURL(getCurrentHistoryEntry().getUrl());
+ if (oldEntry != null) {
+ history.replaceEntry(oldEntry, getCurrentHistoryEntry());
+ } else {
+ try {
+ history.addEntry((TestHistoryEntry) getCurrentHistoryEntry().clone());
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ }
+// System.out.println("Replaced or added entry\n" + history.toString());
}
});
}
Modified:
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistory.java
===================================================================
---
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistory.java 2012-02-14
18:03:41 UTC (rev 38722)
+++
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistory.java 2012-02-14
18:29:32 UTC (rev 38723)
@@ -1,5 +1,6 @@
package org.jboss.tools.ws.ui.views;
+import java.util.Iterator;
import java.util.Stack;
public class TestHistory {
@@ -13,4 +14,42 @@
public Stack<TestHistoryEntry> getEntries() {
return entries;
}
+
+ public TestHistoryEntry findEntryByURL ( String urlStr ) {
+ Iterator<TestHistoryEntry> entryIter = entries.iterator();
+ while (entryIter.hasNext()) {
+ TestHistoryEntry entry = entryIter.next();
+ if (entry.getUrl().contentEquals(urlStr)) {
+ return entry;
+ }
+ }
+ return null;
+ }
+
+ public void addEntry (TestHistoryEntry newEntry ) {
+ this.entries.push(newEntry);
+ }
+
+ public void replaceEntry ( TestHistoryEntry oldEntry, TestHistoryEntry newEntry) {
+ boolean found = entries.remove(oldEntry);
+ if (found) {
+ addEntry(newEntry);
+ }
+ }
+
+ @Override
+ public String toString() {
+ String result = "TestHistory [entries= \n"; //$NON-NLS-1$
+ Iterator<TestHistoryEntry> entryIter = entries.iterator();
+ while (entryIter.hasNext()) {
+ TestHistoryEntry entry = entryIter.next();
+ result = result + entry.toString();
+ if (entryIter.hasNext()) {
+ result = result + '\n';
+ }
+ }
+ result = result + "]"; //$NON-NLS-1$
+ return result;
+ }
+
}
Modified:
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistoryEntry.java
===================================================================
---
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistoryEntry.java 2012-02-14
18:03:41 UTC (rev 38722)
+++
trunk/ws/plugins/org.jboss.tools.ws.ui/src/org/jboss/tools/ws/ui/views/TestHistoryEntry.java 2012-02-14
18:29:32 UTC (rev 38723)
@@ -2,6 +2,7 @@
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.Arrays;
import javax.wsdl.Definition;
import javax.wsdl.WSDLException;
@@ -9,7 +10,7 @@
import org.jboss.tools.ws.ui.JBossWSUIPlugin;
import org.jboss.tools.ws.ui.utils.TesterWSDLUtils;
-public class TestHistoryEntry {
+public class TestHistoryEntry implements Cloneable{
private String url;
private String action;
@@ -162,4 +163,49 @@
return isSOAP12;
}
+ @Override
+ public String toString() {
+ return "TestHistoryEntry [url=" + url //$NON-NLS-1$
+ + ", action=" + action //$NON-NLS-1$
+ + ", body=" + body //$NON-NLS-1$
+ + ", method=" + method //$NON-NLS-1$
+ + ", headers=" + headers //$NON-NLS-1$
+ + ", parms=" + parms //$NON-NLS-1$
+ + ", resultHeadersList=" + Arrays.toString(resultHeadersList)
//$NON-NLS-1$
+ + ", resultText=" + resultText //$NON-NLS-1$
+ + ", wsTech=" + wsTech //$NON-NLS-1$
+ + ", serviceName=" + serviceName //$NON-NLS-1$
+ + ", portName=" + portName //$NON-NLS-1$
+ + ", bindingName=" + bindingName //$NON-NLS-1$
+ + ", operationName=" + operationName //$NON-NLS-1$
+ + ", wsdlDef=" + wsdlDef //$NON-NLS-1$
+ + ", serviceNSMessage=" + Arrays.toString(serviceNSMessage) //$NON-NLS-1$
+ + ", isSOAP12=" + isSOAP12 //$NON-NLS-1$
+ + "]"; //$NON-NLS-1$
+ }
+
+ @Override
+ protected Object clone() throws CloneNotSupportedException {
+ TestHistoryEntry newEntry = new TestHistoryEntry();
+ newEntry.setAction(this.getAction());
+ newEntry.setBindingName(this.getBindingName());
+ newEntry.setBody(this.getBody());
+ newEntry.setHeaders(this.getHeaders());
+ newEntry.setMethod(this.getMethod());
+ newEntry.setOperationName(this.getOperationName());
+ newEntry.setParms(this.getParms());
+ newEntry.setPortName(this.getPortName());
+ newEntry.setResultHeadersList(this.getResultHeadersList());
+ newEntry.setResultText(this.getResultText());
+ newEntry.setServiceName(this.getServiceName());
+ newEntry.setServiceNSMessage(this.getServiceNSMessage());
+ newEntry.setSOAP12(this.isSOAP12());
+ newEntry.setUrl(this.getUrl());
+// if (this.getWsdlDef() != null)
+// newEntry.setWsdlDef(this.getWsdlDef().);
+ newEntry.setWsTech(this.getWsTech());
+ return newEntry;
+ }
+
+
}