cvs commit: xml-axis-wsif/java/src/org/apache/wsif/base WSIFDefaultMessage.java

[email protected]
Newsgroups gmane.comp.apache.webservices.wsif.devel
Message-ID <[email protected]>
hughesj     2003/07/15 02:39:11

  Modified:    java/src/org/apache/wsif/base WSIFDefaultMessage.java
  Log:
  No need to copy objectified primitive type instances as they are immutable
  PR:
  Obtained from:
  Submitted by:	
  Reviewed by:	
  CVS: ----------------------------------------------------------------------
  CVS: PR:
  CVS:   If this change addresses a PR in the problem report tracking
  CVS:   database, then enter the PR number(s) here.
  CVS: Obtained from:
  CVS:   If this change has been taken from another system, such as NCSA,
  CVS:   then name the system in this line, otherwise delete it.
  CVS: Submitted by:
  CVS:   If this code has been contributed to Apache by someone else; i.e.,
  CVS:   they sent us a patch or a new module, then include their name/email
  CVS:   address here. If this is your work then delete this line.
  CVS: Reviewed by:
  CVS:   If we are doing pre-commit code reviews and someone else has
  CVS:   reviewed your changes, include their name(s) here.
  CVS:   If you have not had it reviewed then delete this line.
  
  Revision  Changes    Path
  1.14      +19 -17    xml-axis-wsif/java/src/org/apache/wsif/base/WSIFDefaultMessage.java
  
  Index: WSIFDefaultMessage.java
  ===================================================================
  RCS file: /home/cvs/xml-axis-wsif/java/src/org/apache/wsif/base/WSIFDefaultMessage.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- WSIFDefaultMessage.java	1 Jul 2003 10:16:42 -0000	1.13
  +++ WSIFDefaultMessage.java	15 Jul 2003 09:39:11 -0000	1.14
  @@ -516,12 +516,14 @@
               while (it.hasNext()) {
               	// For each part:
               	// 1. if it's null, null out the clone
  -            	// 2. if it's an objectified primitive type, copy the object
  +            	// 2. if it's an objectified primitive type, use the same object
               	// 3. if it's cloneable, create a clone for it
               	// 4. if it's serializable, write it to an objectstream, read
               	//    it back into a new object for the clone 
                   String pn = (String) it.next();
                   Object po = parts.get(pn);
  +                
  +                // 1. if the part is null use null in the clone
                   if (po == null) {
                       try {
                           dm.setObjectPart(pn, null);
  @@ -536,23 +538,18 @@
                       continue;
                   }
   
  +                // 2. if the part is an objectified primitive type, use the
  +                //    same object ... as these are all immutable.
                   Object simpleTypeObj = null;
  -                if (po instanceof String) {
  -                    simpleTypeObj = new String((String) po);
  -                } else if (po instanceof Integer) {
  -                    simpleTypeObj = new Integer(((Integer) po).intValue());
  -                } else if (po instanceof Float) {
  -                    simpleTypeObj = new Float(((Float) po).floatValue());
  -                } else if (po instanceof Byte) {
  -                    simpleTypeObj = new Byte(((Byte) po).byteValue());
  -                } else if (po instanceof Long) {
  -                    simpleTypeObj = new Long(((Long) po).longValue());
  -                } else if (po instanceof Short) {
  -                    simpleTypeObj = new Short(((Short) po).shortValue());
  -                } else if (po instanceof Double) {
  -                    simpleTypeObj = new Double(((Double) po).doubleValue());
  -                } else if (po instanceof Boolean) {
  -                    simpleTypeObj = new Boolean(((Boolean) po).booleanValue());
  +                if ((po instanceof String)
  +                    || (po instanceof Integer)
  +                    || (po instanceof Float)
  +                    || (po instanceof Byte)
  +                    || (po instanceof Long)
  +                    || (po instanceof Short)
  +                    || (po instanceof Double)
  +                    || (po instanceof Boolean)) {
  +                    simpleTypeObj = po;
                   }
   
                   try {
  @@ -569,6 +566,7 @@
                               + e.getMessage());
                   }
   
  +                // 3. if the part is Cloneable call its clone method
                   if (po instanceof Cloneable) {
                       Class cls = po.getClass();
                       try {
  @@ -592,6 +590,10 @@
                       }
                       continue;
                   }
  +                
  +                // 4. all else has failed so the only way to deep copy the object
  +                //    is to serialize it to an object stream and read it back into
  +                //    another instance
                   if (po instanceof Serializable) {
                       try {
                           ByteArrayOutputStream b = new ByteArrayOutputStream();
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.