⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mediabodypart.java

📁 google的gdata api包
💻 JAVA
字号:
/* Copyright (c) 2006 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.google.gdata.data.media;import com.google.gdata.data.BaseEntry;import javax.activation.DataHandler;import javax.mail.MessagingException;import javax.mail.internet.InternetHeaders;import javax.mail.internet.MimeBodyPart;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;/** * The MediaBodyPart class extends the base MimeBodyPart implementation * to provide streaming media support for GData MIME multipart content. * When the body part contains media content (anything other than * "application/atom+xml"), the body part will use a custom * {@link DataHandler} implementation that keeps the data in raw stream format. * *  * @see GDataContentHandler * @see MediaSource * @see MediaMultipart */public class MediaBodyPart extends MimeBodyPart {  private MediaSource mediaSource;  /**   * The MediaDataHandler class customizes the {@link DataHandler} class   * of the Java Activation Framework.  It simply wraps the original   * {@link MediaSource} instance associated with the media, and returns it   * as the content representation for the data.   */  private class MediaSourceDataHandler extends DataHandler {    MediaSource source;    private MediaSourceDataHandler(MediaSource ds) {      super(ds);      source = ds;    }    @Override    public Object getContent() {      // In the case of the MediaSource handler, the content representation      // is just a reference to the underlying media source.      return source;    }    @Override    public void writeTo(OutputStream os)        throws IOException {      MediaSource.Output.writeTo(source, os);    }  }  public MediaBodyPart() {    super();  }  public MediaBodyPart(InputStream is) throws MessagingException {    // Process the headers from the input stream    super(new InternetHeaders(is), null);    // Create a media stream source to read the remaining data, using the    // content type information from the headers.    mediaSource = new MediaStreamSource(is, getContentType());    initMediaDataHandler();  }  public MediaBodyPart(BaseEntry entry) throws MessagingException {    super();    setContent(entry, "application/atom+xml");    setHeader("Content-Type", "application/atom+xml");  }  public MediaBodyPart(MediaSource mediaSource) throws MessagingException {    super();    this.mediaSource = mediaSource;    //headers.setHeader("Content-Type", mediaSource.getContentType());    setHeader("Content-Type", mediaSource.getContentType());    initMediaDataHandler();  }  public MediaBodyPart(InternetHeaders headers,  byte [] content)      throws MessagingException {    super(headers, content);    // javax.mail.util.SharedByteArrayInputStream here.    String contentType = getContentType();    mediaSource =       new MediaStreamSource(new ByteArrayInputStream(content), contentType);    initMediaDataHandler();  }  /**   * Initializes the {@link DataHandler} associated with the body part   * when it contains media content.   */  private void initMediaDataHandler() throws MessagingException {    // Cannot call setDataHandler() because it invalidates header data    // Fortunately, 'dh' is a protected field on the base class.    if (!isAtomPart()) {      // For media content, simply wrap the media source.      dh = new MediaSourceDataHandler(mediaSource);    } else {      // For Atom content, use standard Java activation handling.      dh = new DataHandler(mediaSource);    }  }  /**   * Returns {@code true} if the body part contains Atom data.   */  public boolean isAtomPart() throws MessagingException {    return isMimeType("application/atom+xml");  }  /**   * Returns the media source associated with the body part.   */  public MediaSource getMediaSource() {    return mediaSource;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -