View Javadoc

1   package rydeen.io;
2   
3   import rydeen.ProcessTarget;
4   import rydeen.TargetSource;
5   import rydeen.TargetType;
6   
7   import java.io.ByteArrayInputStream;
8   import java.io.IOException;
9   import java.io.InputStream;
10  
11  /**
12   * バイト配列を入力ソースとする{@link ProcessTarget <code>ProcessTarget</code>}です.
13   *
14   * @author Haruaki Tamada
15   */
16  public class ByteArrayProcessTarget extends AbstractProcessTarget{
17      private byte[] data;
18      private String name;
19  
20      /**
21       * <p>
22       * 名前とデータであるバイト配列を指定してオブジェクトを構築します.
23       * データの型はクラスファイルであることを前提としています.
24       * </p><p>
25       * <code>this(source, name, data, TargetType.CLASS_FILE);</code>
26       * </p>
27       * @param name この入力ソースの名前
28       * @param data 入力データ
29       * @see #ByteArrayProcessTarget(TargetSource, String, byte[], TargetType)
30       */
31      public ByteArrayProcessTarget(TargetSource source, String name, byte[] data){
32          this(source, name, data, TargetType.CLASS_FILE);
33      }
34  
35      /**
36       * 名前とデータであるバイト配列,そして,データの型を指定してオブジェクトを構築します.
37       * @param source このProcessTargetを保持するTargetSource.
38       * @param name この入力ソースの名前
39       * @param initData 入力データ
40       * @param type 入力データの型
41       */
42      public ByteArrayProcessTarget(TargetSource source, String name, byte[] initData, TargetType type){
43          super(source, name, type);
44          this.name = name;
45          data = new byte[initData.length];
46          System.arraycopy(initData, 0, data, 0, data.length);
47      }
48  
49      /**
50       * この入力ソースの名前を返します.
51       * @return 入力ソースの名前
52       */
53      @Override
54      public String getName(){
55          return name;
56      }
57  
58      /**
59       * この入力ソースからデータを読み取るための入力ストリームを構築して返します.
60       * @return 入力ソースからデータを読み取るための入力ストリーム
61       */
62      @Override
63      public InputStream openStream() throws IOException{
64          return new ByteArrayInputStream(data);
65      }
66  }