You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by bh...@apache.org on 2007/02/07 12:27:17 UTC
svn commit: r504507 - in /incubator/qpid/trunk/qpid/java:
broker/src/main/java/org/apache/qpid/server/queue/
common/src/main/java/org/apache/qpid/util/
management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/
management/eclipse-plugin/src...
Author: bhupendrab
Date: Wed Feb 7 03:27:15 2007
New Revision: 504507
URL: http://svn.apache.org/viewvc?view=rev&rev=504507
Log:
QPID-170
Management feature added - moving messages from one Queue to another
Modified:
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ConcurrentSelectorDeliveryManager.java
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/DeliveryManager.java
incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java
incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedQueueAtomicSize.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationDataModel.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/ParameterData.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
Modified: incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java (original)
+++ incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueue.java Wed Feb 7 03:27:15 2007
@@ -36,6 +36,7 @@
import javax.management.JMException;
import java.text.MessageFormat;
import java.util.List;
+import java.util.ArrayList;
import java.util.concurrent.Executor;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;
@@ -101,11 +102,8 @@
private final AtomicBoolean _deleted = new AtomicBoolean(false);
-
-
private List<Task> _deleteTaskList = new CopyOnWriteArrayList<Task>();
-
/**
* Manages message delivery.
*/
@@ -290,6 +288,60 @@
}
return msg;
+ }
+
+ /**
+ * @see ManagedQueue#moveMessages
+ * @param fromMessageId
+ * @param toMessageId
+ * @param queueName
+ * @param storeContext
+ * @throws AMQException
+ */
+ public synchronized void moveMessagesToAnotherQueue(long fromMessageId, long toMessageId, String queueName,
+ StoreContext storeContext) throws AMQException
+ {
+ AMQQueue anotherQueue = getVirtualHost().getQueueRegistry().getQueue(new AMQShortString(queueName));
+ List<AMQMessage> list = getMessagesOnTheQueue();
+ List<AMQMessage> foundMessagesList = new ArrayList<AMQMessage>();
+ int maxMessageCountToBeMoved = (int)(toMessageId - fromMessageId + 1);
+ for (AMQMessage message : list)
+ {
+ long msgId = message.getMessageId();
+ if (msgId >= fromMessageId && msgId <= toMessageId)
+ {
+ foundMessagesList.add(message);
+ }
+ // break the loop as soon as messages to be removed are found
+ if (foundMessagesList.size() == maxMessageCountToBeMoved)
+ {
+ break;
+ }
+ }
+
+ // move messages to another queue
+ for (AMQMessage message : foundMessagesList)
+ {
+ try
+ {
+ anotherQueue.process(storeContext, message);
+ }
+ catch(AMQException ex)
+ {
+ foundMessagesList.subList(foundMessagesList.indexOf(message), foundMessagesList.size()).clear();
+ // Exception occured, so rollback the changes
+ anotherQueue.removeMessages(foundMessagesList);
+ throw ex;
+ }
+ }
+
+ // moving is successful, now remove from original queue
+ removeMessages(foundMessagesList);
+ }
+
+ public synchronized void removeMessages(List<AMQMessage> messageList)
+ {
+ _deliveryMgr.removeMessages(messageList);
}
/**
Modified: incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java (original)
+++ incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/AMQQueueMBean.java Wed Feb 7 03:27:15 2007
@@ -381,6 +381,31 @@
return _messageList;
}
+
+ /**
+ * @see ManagedQueue#moveMessages
+ * @param fromMessageId
+ * @param toMessageId
+ * @param toQueueName
+ * @throws JMException
+ */
+ public void moveMessages(long fromMessageId, long toMessageId, String toQueueName) throws JMException
+ {
+ if (fromMessageId > toMessageId || (fromMessageId < 1))
+ {
+ throw new OperationsException("\"From MessageId\" should be greater then 0 and less then \"To MessageId\"");
+ }
+
+ try
+ {
+ _queue.moveMessagesToAnotherQueue(fromMessageId, toMessageId, toQueueName, _storeContext);
+ }
+ catch(AMQException amqex)
+ {
+ throw new JMException("Error moving messages to " + toQueueName + ": " + amqex);
+ }
+
+ }
//
// public ObjectName getObjectName() throws MalformedObjectNameException
// {
Modified: incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ConcurrentSelectorDeliveryManager.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ConcurrentSelectorDeliveryManager.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ConcurrentSelectorDeliveryManager.java (original)
+++ incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ConcurrentSelectorDeliveryManager.java Wed Feb 7 03:27:15 2007
@@ -242,6 +242,16 @@
}
}
+ public synchronized void removeMessages(List<AMQMessage> messageList)
+ {
+ for (AMQMessage msg : messageList)
+ {
+ if (_messages.remove(msg))
+ {
+ _totalMessageSize.getAndAdd(-msg.getSize());
+ }
+ }
+ }
public synchronized void removeAMessageFromTop(StoreContext storeContext) throws AMQException
{
Modified: incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/DeliveryManager.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/DeliveryManager.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/DeliveryManager.java (original)
+++ incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/DeliveryManager.java Wed Feb 7 03:27:15 2007
@@ -76,6 +76,8 @@
long clearAllMessages(StoreContext storeContext) throws AMQException;
+ void removeMessages(List<AMQMessage> messageListToRemove);
+
List<AMQMessage> getMessages();
void populatePreDeliveryQueue(Subscription subscription);
Modified: incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java (original)
+++ incubator/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/ManagedQueue.java Wed Feb 7 03:27:15 2007
@@ -225,4 +225,20 @@
impact= MBeanOperationInfo.ACTION)
void clearQueue() throws IOException, JMException;
+ /**
+ * Moves the messages in given range of message Ids to given Queue. QPID-170
+ * @param fromMessageId first in the range of message ids
+ * @param toMessageId last in the range of message ids
+ * @param toQueue where the messages are to be moved
+ * @throws IOException
+ * @throws JMException
+ * @throws AMQException
+ */
+ @MBeanOperation(name="moveMessages",
+ description="You can move messages to another queue from this queue ",
+ impact= MBeanOperationInfo.ACTION)
+ void moveMessages(@MBeanOperationParameter(name="from MessageId", description="from MessageId")long fromMessageId,
+ @MBeanOperationParameter(name="to MessageId", description="to MessageId")long toMessageId,
+ @MBeanOperationParameter(name= ManagedQueue.TYPE, description="to Queue Name")String toQueue)
+ throws IOException, JMException, AMQException;
}
Modified: incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedQueueAtomicSize.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedQueueAtomicSize.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedQueueAtomicSize.java (original)
+++ incubator/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedQueueAtomicSize.java Wed Feb 7 03:27:15 2007
@@ -55,4 +55,16 @@
return e;
}
+
+ @Override
+ public boolean remove(Object o)
+ {
+ if (super.remove(o))
+ {
+ _size.decrementAndGet();
+ return true;
+ }
+
+ return false;
+ }
}
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/Constants.java Wed Feb 7 03:27:15 2007
@@ -50,6 +50,7 @@
public final static String ATTRIBUTE_QUEUE_CONSUMERCOUNT = "ActiveConsumerCount";
public final static String OPERATION_CREATE_QUEUE = "createNewQueue";
public final static String OPERATION_CREATE_BINDING = "createNewBinding";
+ public final static String OPERATION_MOVE_MESSAGES = "moveMessages";
public final static String ALL = "All";
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/ServerRegistry.java Wed Feb 7 03:27:15 2007
@@ -128,7 +128,7 @@
public abstract OperationDataModel getOperationModel(ManagedBean mbean);
- public abstract String[] getQueueNames(String vistualHostName);
+ public abstract List<String> getQueueNames(String vistualHostName);
public abstract String[] getExchangeNames(String vistualHostName);
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/JMXServerRegistry.java Wed Feb 7 03:27:15 2007
@@ -387,19 +387,18 @@
return _operationModelMap.get(mbean.getUniqueName());
}
- public String[] getQueueNames(String virtualHostName)
+ public List<String> getQueueNames(String virtualHostName)
{
List<ManagedBean> list = getQueues(virtualHostName);
if (list == null)
return null;
- String[] queues = new String[list.size()];
- int i = 0;
+ List<String> queueNames = new ArrayList<String>();
for (ManagedBean mbean : list)
{
- queues[i++] = mbean.getName();
+ queueNames.add(mbean.getName());
}
- return queues;
+ return queueNames;
}
public String[] getExchangeNames(String virtualHostName)
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/jmx/MBeanUtility.java Wed Feb 7 03:27:15 2007
@@ -163,7 +163,7 @@
}
else if (ex instanceof MBeanException)
{
- String cause = ((MBeanException)ex).getTargetException().toString();
+ String cause = ((MBeanException)ex).getTargetException().getMessage();
if (cause == null)
cause = ex.toString();
ViewUtility.popupInfoMessage(mbean.getInstanceName(), cause);
@@ -178,7 +178,7 @@
}
else
{
- ViewUtility.popupErrorMessage(mbean.getInstanceName(), ex.toString());
+ ViewUtility.popupErrorMessage(mbean.getInstanceName(), ex.getMessage());
ex.printStackTrace();
}
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationDataModel.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationDataModel.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationDataModel.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/OperationDataModel.java Wed Feb 7 03:27:15 2007
@@ -45,9 +45,8 @@
for (int i = 0; i < parametersCount; i++)
{
MBeanParameterInfo paramInfo = opInfo.getSignature()[i];
- ParameterData param = new ParameterData(paramInfo.getName());
- param.setDescription(paramInfo.getDescription());
- param.setType(paramInfo.getType());
+ ParameterData param = new ParameterData(paramInfo.getName(), paramInfo.getDescription(),
+ paramInfo.getType());
paramList.add(param);
}
opData.setParameters(paramList);
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/ParameterData.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/ParameterData.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/ParameterData.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/model/ParameterData.java Wed Feb 7 03:27:15 2007
@@ -31,19 +31,18 @@
private String _type;
private Object _value;
- ParameterData(String name)
+ ParameterData(String name, String desc, String type)
{
this._name = name;
+ this._description = desc;
+ this._type = type;
+ setDefaultValue();
}
public String getDescription()
{
return _description;
}
- public void setDescription(String description)
- {
- this._description = description;
- }
public String getName()
{
@@ -53,10 +52,6 @@
public String getType()
{
return _type;
- }
- public void setType(String type)
- {
- this._type = type;
}
public Object getValue()
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java Wed Feb 7 03:27:15 2007
@@ -39,6 +39,7 @@
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.TabFolder;
@@ -184,6 +185,15 @@
}
TabFolder tabFolder = tabFolderMap.get(_mbean.getType());
+ /*
+ * This solution can be used if there are many versions of Qpid running. Otherwise
+ * there is no need to create a tabFolder everytime a bean is selected.
+ if (tabFolder != null && !tabFolder.isDisposed())
+ {
+ tabFolder.dispose();
+ }
+ tabFolder = createTabFolder();
+ */
if (tabFolder == null)
{
tabFolder = createTabFolder();
Modified: incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java?view=diff&rev=504507&r1=504506&r2=504507
==============================================================================
--- incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java (original)
+++ incubator/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java Wed Feb 7 03:27:15 2007
@@ -255,7 +255,14 @@
String[] items = null;
if (param.getName().equals(Constants.QUEUE))
{
- items = ApplicationRegistry.getServerRegistry(_mbean).getQueueNames(_virtualHostName);
+ List<String> qList = ApplicationRegistry.getServerRegistry(_mbean).getQueueNames(_virtualHostName);
+ // Customization for AMQQueueMBean method Constants.OPERATION_MOVE_MESSAGES
+ if (_opData.getName().equals(Constants.OPERATION_MOVE_MESSAGES))
+ {
+ qList.remove(_mbean.getName());
+ }
+ // End of Customization
+ items = qList.toArray(new String[0]);
}
else if (param.getName().equals(Constants.EXCHANGE))
{
@@ -269,8 +276,14 @@
if (items != null)
{
org.eclipse.swt.widgets.List _list = new org.eclipse.swt.widgets.List(_paramsComposite, SWT.BORDER | SWT.V_SCROLL);
- int listSize = _form.getClientArea().height / 3;
+ int listSize = _form.getClientArea().height * 2 / 3;
int itemsHeight = items.length * (_list.getItemHeight() + 2);
+ // Set a min height for the list widget (set it to min 4 items)
+ if (items.length < 4)
+ {
+ itemsHeight = 4 * (_list.getItemHeight() + 2);
+ }
+
listSize = (listSize > itemsHeight) ? itemsHeight : listSize;
parameterPositionOffset = parameterPositionOffset + listSize;
formData.bottom = new FormAttachment(0, parameterPositionOffset);
@@ -296,7 +309,9 @@
formData.left = new FormAttachment(label, 5);
formData.right = new FormAttachment(valueWidth);
text.setLayoutData(formData);
+ // Listener to assign value to the parameter
text.addKeyListener(keyListener);
+ // Listener to verify if the entered key is valid
text.addVerifyListener(verifyListener);
text.setData(param);
}
@@ -358,9 +373,9 @@
formData.left = new FormAttachment(label, 5);
formData.right = new FormAttachment(valueWidth);
- Combo combo = new Combo(composite, SWT.READ_ONLY | SWT.DROP_DOWN);
- String[] items = ApplicationRegistry.getServerRegistry(_mbean).getQueueNames(_virtualHostName);
- combo.setItems(items);
+ Combo combo = new Combo(composite, SWT.READ_ONLY | SWT.DROP_DOWN);
+ List<String> qList = ApplicationRegistry.getServerRegistry(_mbean).getQueueNames(_virtualHostName);
+ combo.setItems(qList.toArray(new String[0]));
combo.add("Select Queue", 0);
combo.select(0);
combo.setLayoutData(formData);
@@ -513,6 +528,8 @@
{
if (controls[i] instanceof Combo)
((Combo)controls[i]).select(0);
+ if (controls[i] instanceof org.eclipse.swt.widgets.List)
+ ((org.eclipse.swt.widgets.List)controls[i]).deselectAll();
else if (controls[i] instanceof Text)
((Text)controls[i]).setText("");
else if (controls[i] instanceof Composite)
@@ -685,7 +702,15 @@
// Get the parameters widget and assign the text to the parameter
String strValue = text.getText();
ParameterData parameter = (ParameterData)text.getData();
- parameter.setValueFromString(strValue);
+ try
+ {
+ parameter.setValueFromString(strValue);
+ }
+ catch(Exception ex)
+ {
+ // Exception occured in setting parameter value.
+ // ignore it. The value will not be assigned to the parameter
+ }
}
}
@@ -727,12 +752,10 @@
{
public void verifyText(VerifyEvent event)
{
- Text text = (Text)event.widget;
- String string = event.text;
- char [] chars = new char [string.length ()];
- string.getChars (0, chars.length, chars, 0);
-
- ParameterData parameter = (ParameterData)text.getData();
+ ParameterData parameter = (ParameterData)event.widget.getData();
+ String text = event.text;
+ char [] chars = new char [text.length ()];
+ text.getChars(0, chars.length, chars, 0);
String type = parameter.getType();
if (type.equals("int") || type.equals("java.lang.Integer") ||
type.equals("long") || type.equals("java.lang.Long"))