Package com.sun.xml.bind.v2.runtime.unmarshaller

Source Code of com.sun.xml.bind.v2.runtime.unmarshaller.Base64Data

/*     */ package com.sun.xml.bind.v2.runtime.unmarshaller;
/*     */
/*     */ import com.sun.istack.Nullable;
/*     */ import com.sun.xml.bind.DatatypeConverterImpl;
/*     */ import com.sun.xml.bind.v2.runtime.output.Pcdata;
/*     */ import com.sun.xml.bind.v2.runtime.output.UTF8XmlOutput;
/*     */ import com.sun.xml.bind.v2.util.ByteArrayOutputStreamEx;
/*     */ import java.io.ByteArrayInputStream;
/*     */ import java.io.IOException;
/*     */ import java.io.InputStream;
/*     */ import java.io.OutputStream;
/*     */ import javax.activation.DataHandler;
/*     */ import javax.activation.DataSource;
/*     */
/*     */ public final class Base64Data extends Pcdata
/*     */ {
/*     */   private DataHandler dataHandler;
/*     */   private byte[] data;
/*     */   private int dataLen;
/*     */
/*     */   @Nullable
/*     */   private String mimeType;
/*     */
/*     */   public void set(byte[] data, int len, @Nullable String mimeType)
/*     */   {
/*  98 */     this.data = data;
/*  99 */     this.dataLen = len;
/* 100 */     this.dataHandler = null;
/* 101 */     this.mimeType = mimeType;
/*     */   }
/*     */
/*     */   public void set(byte[] data, @Nullable String mimeType)
/*     */   {
/* 111 */     set(data, data.length, mimeType);
/*     */   }
/*     */
/*     */   public void set(DataHandler data)
/*     */   {
/* 118 */     assert (data != null);
/* 119 */     this.dataHandler = data;
/* 120 */     this.data = null;
/*     */   }
/*     */
/*     */   public DataHandler getDataHandler()
/*     */   {
/* 127 */     if (this.dataHandler == null) {
/* 128 */       this.dataHandler = new DataHandler(new DataSource() {
/*     */         public String getContentType() {
/* 130 */           return Base64Data.this.getMimeType();
/*     */         }
/*     */
/*     */         public InputStream getInputStream() {
/* 134 */           return new ByteArrayInputStream(Base64Data.this.data, 0, Base64Data.this.dataLen);
/*     */         }
/*     */
/*     */         public String getName() {
/* 138 */           return null;
/*     */         }
/*     */
/*     */         public OutputStream getOutputStream() {
/* 142 */           throw new UnsupportedOperationException();
/*     */         }
/*     */       });
/*     */     }
/* 147 */     return this.dataHandler;
/*     */   }
/*     */
/*     */   public byte[] getExact()
/*     */   {
/* 154 */     get();
/* 155 */     if (this.dataLen != this.data.length) {
/* 156 */       byte[] buf = new byte[this.dataLen];
/* 157 */       System.arraycopy(this.data, 0, buf, 0, this.dataLen);
/* 158 */       this.data = buf;
/*     */     }
/* 160 */     return this.data;
/*     */   }
/*     */
/*     */   public InputStream getInputStream()
/*     */     throws IOException
/*     */   {
/* 167 */     if (this.dataHandler != null) {
/* 168 */       return this.dataHandler.getInputStream();
/*     */     }
/* 170 */     return new ByteArrayInputStream(this.data, 0, this.dataLen);
/*     */   }
/*     */
/*     */   public boolean hasData()
/*     */   {
/* 178 */     return this.data != null;
/*     */   }
/*     */
/*     */   public byte[] get()
/*     */   {
/* 185 */     if (this.data == null) {
/*     */       try {
/* 187 */         ByteArrayOutputStreamEx baos = new ByteArrayOutputStreamEx(1024);
/* 188 */         InputStream is = this.dataHandler.getDataSource().getInputStream();
/* 189 */         baos.readFrom(is);
/* 190 */         is.close();
/* 191 */         this.data = baos.getBuffer();
/* 192 */         this.dataLen = baos.size();
/*     */       }
/*     */       catch (IOException e) {
/* 195 */         this.dataLen = 0;
/*     */       }
/*     */     }
/* 198 */     return this.data;
/*     */   }
/*     */
/*     */   public int getDataLen() {
/* 202 */     return this.dataLen;
/*     */   }
/*     */
/*     */   public String getMimeType() {
/* 206 */     if (this.mimeType == null)
/* 207 */       return "application/octet-stream";
/* 208 */     return this.mimeType;
/*     */   }
/*     */
/*     */   public int length()
/*     */   {
/* 218 */     get();
/* 219 */     return (this.dataLen + 2) / 3 * 4;
/*     */   }
/*     */
/*     */   public char charAt(int index)
/*     */   {
/* 231 */     int offset = index % 4;
/* 232 */     int base = index / 4 * 3;
/*     */     byte b1;
/* 236 */     switch (offset) {
/*     */     case 0:
/* 238 */       return DatatypeConverterImpl.encode(this.data[base] >> 2);
/*     */     case 1:
/*     */       byte b1;
/* 240 */       if (base + 1 < this.dataLen)
/* 241 */         b1 = this.data[(base + 1)];
/*     */       else
/* 243 */         b1 = 0;
/* 244 */       return DatatypeConverterImpl.encode((this.data[base] & 0x3) << 4 | b1 >> 4 & 0xF);
/*     */     case 2:
/* 248 */       if (base + 1 < this.dataLen) {
/* 249 */         b1 = this.data[(base + 1)];
/*     */         byte b2;
/*     */         byte b2;
/* 250 */         if (base + 2 < this.dataLen)
/* 251 */           b2 = this.data[(base + 2)];
/*     */         else {
/* 253 */           b2 = 0;
/*     */         }
/* 255 */         return DatatypeConverterImpl.encode((b1 & 0xF) << 2 | b2 >> 6 & 0x3);
/*     */       }
/*     */
/* 259 */       return '=';
/*     */     case 3:
/* 261 */       if (base + 2 < this.dataLen) {
/* 262 */         return DatatypeConverterImpl.encode(this.data[(base + 2)] & 0x3F);
/*     */       }
/* 264 */       return '=';
/*     */     }
/*     */
/* 267 */     throw new IllegalStateException();
/*     */   }
/*     */
/*     */   public CharSequence subSequence(int start, int end)
/*     */   {
/* 276 */     StringBuilder buf = new StringBuilder();
/* 277 */     get();
/* 278 */     for (int i = start; i < end; i++)
/* 279 */       buf.append(charAt(i));
/* 280 */     return buf;
/*     */   }
/*     */
/*     */   public String toString()
/*     */   {
/* 287 */     get();
/* 288 */     return DatatypeConverterImpl._printBase64Binary(this.data, 0, this.dataLen);
/*     */   }
/*     */
/*     */   public void writeTo(char[] buf, int start) {
/* 292 */     get();
/* 293 */     DatatypeConverterImpl._printBase64Binary(this.data, 0, this.dataLen, buf, start);
/*     */   }
/*     */
/*     */   public void writeTo(UTF8XmlOutput output) throws IOException
/*     */   {
/* 298 */     get();
/* 299 */     output.text(this.data, this.dataLen);
/*     */   }
/*     */ }

/* Location:           /home/mnovotny/projects/EMBEDDED_JBOSS_BETA3_COMMUNITY/embedded/output/lib/embedded-jboss/lib/thirdparty-all.jar
* Qualified Name:     com.sun.xml.bind.v2.runtime.unmarshaller.Base64Data
* JD-Core Version:    0.6.0
*/
TOP

Related Classes of com.sun.xml.bind.v2.runtime.unmarshaller.Base64Data

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.