コード例 #1
0
  @Test
  public void testTypeConversion() throws Exception {
    BufferManager bm = BufferManagerFactory.getStandaloneBufferManager();

    String str = "hello world";

    Object source = new StreamSource(new StringReader(str));
    XMLType xml =
        (XMLType)
            ConnectorWorkItem.convertToRuntimeType(
                bm, source, DataTypeManager.DefaultDataClasses.XML, null);
    assertEquals(str, xml.getString());

    source =
        new StAXSource(XMLType.getXmlInputFactory().createXMLEventReader(new StringReader("<a/>")));
    xml =
        (XMLType)
            ConnectorWorkItem.convertToRuntimeType(
                bm, source, DataTypeManager.DefaultDataClasses.XML, null);
    XMLInputFactory in = XMLType.getXmlInputFactory();
    XMLStreamReader reader = in.createXMLStreamReader(new StringReader(xml.getString()));
    assertEquals(XMLEvent.START_DOCUMENT, reader.getEventType());
    assertEquals(XMLEvent.START_ELEMENT, reader.next());
    assertEquals("a", reader.getLocalName());
    assertEquals(XMLEvent.END_ELEMENT, reader.next());

    byte[] bytes = str.getBytes(Streamable.ENCODING);
    source = new InputStreamFactory.BlobInputStreamFactory(BlobType.createBlob(bytes));
    BlobType blob =
        (BlobType)
            ConnectorWorkItem.convertToRuntimeType(
                bm, source, DataTypeManager.DefaultDataClasses.BLOB, null);

    assertArrayEquals(bytes, ObjectConverterUtil.convertToByteArray(blob.getBinaryStream()));
  }
コード例 #2
0
ファイル: TestLobManager.java プロジェクト: TSurendhar/teiid
  @Test
  public void testLobPeristence() throws Exception {

    BufferManager buffMgr = BufferManagerFactory.getStandaloneBufferManager();
    FileStore fs = buffMgr.createFileStore("temp");

    ClobType clob =
        new ClobType(
            new ClobImpl(
                new InputStreamFactory() {
                  @Override
                  public InputStream getInputStream() throws IOException {
                    return new ReaderInputStream(
                        new StringReader("Clob contents One"),
                        Charset.forName(Streamable.ENCODING));
                  }
                },
                -1));

    BlobType blob =
        new BlobType(
            new BlobImpl(
                new InputStreamFactory() {
                  @Override
                  public InputStream getInputStream() throws IOException {
                    return new ReaderInputStream(
                        new StringReader("Blob contents Two"),
                        Charset.forName(Streamable.ENCODING));
                  }
                }));

    BlobType blobEmpty =
        new BlobType(
            new BlobImpl(
                new InputStreamFactory() {
                  @Override
                  public InputStream getInputStream() throws IOException {
                    return new ByteArrayInputStream(new byte[0]);
                  }
                }));

    FileStore fs1 = buffMgr.createFileStore("blob");
    FileStoreInputStreamFactory fsisf = new FileStoreInputStreamFactory(fs1, Streamable.ENCODING);
    FileStoreOutputStream fsos = fsisf.getOuputStream();
    byte[] b = new byte[DataTypeManager.MAX_LOB_MEMORY_BYTES + 1];
    fsos.write(b);
    fsos.close();
    BlobType blob1 = new BlobType(new BlobImpl(fsisf));

    assertNotNull(blob1.getReferenceStreamId());

    LobManager lobManager = new LobManager(new int[] {0, 1, 2, 3}, fs);
    lobManager.setMaxMemoryBytes(4);
    List<?> tuple = Arrays.asList(clob, blob, blob1, blobEmpty);
    lobManager.updateReferences(tuple, ReferenceMode.CREATE);

    assertNotNull(blob1.getReferenceStreamId());

    lobManager.persist();

    Streamable<?> lob = lobManager.getLobReference(clob.getReferenceStreamId());
    assertTrue(lob.getClass().isAssignableFrom(ClobType.class));
    ClobType clobRead = (ClobType) lob;
    assertEquals(ClobType.getString(clob), ClobType.getString(clobRead));
    assertTrue(clobRead.length() != -1);

    lob = lobManager.getLobReference(blob.getReferenceStreamId());
    assertTrue(lob.getClass().isAssignableFrom(BlobType.class));
    BlobType blobRead = (BlobType) lob;
    assertTrue(
        Arrays.equals(
            ObjectConverterUtil.convertToByteArray(blob.getBinaryStream()),
            ObjectConverterUtil.convertToByteArray(blobRead.getBinaryStream())));

    lobManager.updateReferences(tuple, ReferenceMode.REMOVE);

    assertEquals(0, lobManager.getLobCount());
  }
コード例 #3
0
 @Override
 protected Object readObject(ObjectInput in) throws IOException, ClassNotFoundException {
   BlobType bt = new BlobType();
   bt.readExternal(in);
   return bt;
 }