From 7855f9e1109cfff8461e0e393770ccb62241e09f Mon Sep 17 00:00:00 2001 From: Martin Oberhuber < martin.oberhuber@windriver.com> Date: Fri, 22 Feb 2008 15:35:51 +0000 Subject: [PATCH] [216252] Fix Systemmessage.clone() --- .../messages/SimpleSystemMessage.java | 8 -------- .../clientserver/messages/SystemMessage.java | 20 +++++++------------ 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SimpleSystemMessage.java b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SimpleSystemMessage.java index b8d3a0fed59..422dde6248d 100644 --- a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SimpleSystemMessage.java +++ b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SimpleSystemMessage.java @@ -107,12 +107,4 @@ public class SimpleSystemMessage extends SystemMessage { return _pluginId + ":" + getIndicator(); //$NON-NLS-1$ } - /** - * Creates a new message with the same component, subcomponent, number, level 1 and level 2 text as this message. - * @see java.lang.Object#clone() - */ - protected Object clone() throws CloneNotSupportedException { - return new SimpleSystemMessage(_pluginId, _severity, getLevelOneText(), getLevelTwoText()); - } - } diff --git a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SystemMessage.java b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SystemMessage.java index 6df994ee3d0..59ba0f982bd 100644 --- a/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SystemMessage.java +++ b/rse/plugins/org.eclipse.rse.services/clientserver/org/eclipse/rse/services/clientserver/messages/SystemMessage.java @@ -24,7 +24,7 @@ import java.io.StringWriter; * SystemMessage is used to supply detailed status when an error or other significant event occurs that should * be presented to the user or logged. It is structured to capture information from a variety of remote systems. */ -public class SystemMessage +public class SystemMessage implements Cloneable { /** @@ -453,23 +453,17 @@ public class SystemMessage } /** - * Creates a new message with the same component, subcomponent, number, level 1 and level 2 text as this message. - *
- * Note that only the original message is cloned, but no substitutions. The - * cloned message will look like the original object as if substitutions - * have never been made. + * Creates a new message with the same component, subcomponent, number, text message + * and substitutions. * @see java.lang.Object#clone() */ - protected Object clone() throws CloneNotSupportedException { + public Object clone() throws CloneNotSupportedException { ////Old invalid code - did not work properly for subclasses //return new SystemMessage(component, subComponent, messageNumber, indicator, level1NS, level2NS); SystemMessage result = (SystemMessage)super.clone(); - //re-initialize substitutions to empty - result.level1WS = level1NS; - result.level2WS = level2NS; - result.subPrefix = '%'; - result.numSubs = -1; - result.subs = null; + //clone the array: this might throw runtime exceptions if the + //objects in the array are not cloneable! + result.subs = (Object[])subs.clone(); return result; } }