1.1 --- a/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/Base64Data.java Thu Sep 26 10:43:28 2013 -0700 1.2 +++ b/src/share/jaxws_classes/com/sun/xml/internal/org/jvnet/staxex/Base64Data.java Fri Oct 04 16:21:34 2013 +0100 1.3 @@ -287,10 +287,11 @@ 1.4 * @throws IOException if i/o error occurs 1.5 */ 1.6 public InputStream getInputStream() throws IOException { 1.7 - if(dataHandler!=null) 1.8 + if(dataHandler!=null) { 1.9 return dataHandler.getInputStream(); 1.10 - else 1.11 + } else { 1.12 return new ByteArrayInputStream(data,0,dataLen); 1.13 + } 1.14 } 1.15 1.16 /** 1.17 @@ -342,8 +343,9 @@ 1.18 } 1.19 1.20 public String getMimeType() { 1.21 - if(mimeType==null) 1.22 + if (mimeType==null) { 1.23 return "application/octet-stream"; 1.24 + } 1.25 return mimeType; 1.26 } 1.27 1.28 @@ -376,31 +378,35 @@ 1.29 case 0: 1.30 return Base64Encoder.encode(data[base]>>2); 1.31 case 1: 1.32 - if(base+1<dataLen) 1.33 + if (base+1<dataLen) { 1.34 b1 = data[base+1]; 1.35 - else 1.36 + } else { 1.37 b1 = 0; 1.38 + } 1.39 return Base64Encoder.encode( 1.40 ((data[base]&0x3)<<4) | 1.41 ((b1>>4)&0xF)); 1.42 case 2: 1.43 - if(base+1<dataLen) { 1.44 + if (base+1<dataLen) { 1.45 b1 = data[base+1]; 1.46 - if(base+2<dataLen) 1.47 + if (base+2<dataLen) { 1.48 b2 = data[base+2]; 1.49 - else 1.50 + } else { 1.51 b2 = 0; 1.52 + } 1.53 1.54 return Base64Encoder.encode( 1.55 ((b1&0xF)<<2)| 1.56 ((b2>>6)&0x3)); 1.57 - } else 1.58 + } else { 1.59 return '='; 1.60 + } 1.61 case 3: 1.62 - if(base+2<dataLen) 1.63 + if(base+2<dataLen) { 1.64 return Base64Encoder.encode(data[base+2]&0x3F); 1.65 - else 1.66 + } else { 1.67 return '='; 1.68 + } 1.69 } 1.70 1.71 throw new IllegalStateException(); 1.72 @@ -414,8 +420,9 @@ 1.73 public CharSequence subSequence(int start, int end) { 1.74 StringBuilder buf = new StringBuilder(); 1.75 get(); // fill in the buffer if we haven't done so 1.76 - for( int i=start; i<end; i++ ) 1.77 + for (int i=start; i<end; i++ ) { 1.78 buf.append(charAt(i)); 1.79 + } 1.80 return buf; 1.81 } 1.82 1.83 @@ -473,7 +480,25 @@ 1.84 1.85 @Override 1.86 public Base64Data clone() { 1.87 - return new Base64Data(this); 1.88 + try { 1.89 + Base64Data clone = (Base64Data) super.clone(); 1.90 + clone.get(); 1.91 + if (clone.dataCloneByRef) { 1.92 + this.data = clone.data; 1.93 + } else { 1.94 + this.data = new byte[clone.dataLen]; 1.95 + System.arraycopy(clone.data, 0, this.data, 0, clone.dataLen); 1.96 + } 1.97 + 1.98 + this.dataCloneByRef = true; 1.99 + this.dataLen = clone.dataLen; 1.100 + this.dataHandler = null; 1.101 + this.mimeType = clone.mimeType; 1.102 + return clone; 1.103 + } catch (CloneNotSupportedException ex) { 1.104 + Logger.getLogger(Base64Data.class.getName()).log(Level.SEVERE, null, ex); 1.105 + return null; 1.106 + } 1.107 } 1.108 1.109 static String getProperty(final String propName) {