Java Code Examples for com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream

The following are top voted examples for showing how to use com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to generate more good examples.
Example 1
Project: educational-plugin   File: EduStepikRestService.java   View source code 6 votes vote down vote up
private void sendHtmlResponse(@NotNull HttpRequest request, @NotNull ChannelHandlerContext context, String pagePath) throws IOException {
  BufferExposingByteArrayOutputStream byteOut = new BufferExposingByteArrayOutputStream();
  InputStream pageTemplateStream = getClass().getResourceAsStream(pagePath);
  String pageTemplate = StreamUtil.readText(pageTemplateStream, Charset.forName("UTF-8"));
  try {
    String pageWithProductName = pageTemplate.replaceAll("%IDE_NAME", ApplicationNamesInfo.getInstance().getFullProductName());
    byteOut.write(StreamUtil.loadFromStream(new ByteArrayInputStream(pageWithProductName.getBytes(Charset.forName("UTF-8")))));
    HttpResponse response = Responses.response("text/html", Unpooled.wrappedBuffer(byteOut.getInternalBuffer(), 0, byteOut.size()));
    Responses.addNoCache(response);
    response.headers().set("X-Frame-Options", "Deny");
    Responses.send(response, context.channel(), request);
  }
  finally {
    byteOut.close();
    pageTemplateStream.close();
  }
}
 
Example 2
Project: intellij-ce-playground   File: BuildSession.java   View source code 6 votes vote down vote up
private void saveFsState(File dataStorageRoot, BuildFSState state) {
  final ProjectDescriptor pd = myProjectDescriptor;
  final File file = new File(dataStorageRoot, FS_STATE_FILE);
  try {
    final BufferExposingByteArrayOutputStream bytes = new BufferExposingByteArrayOutputStream();
    final DataOutputStream out = new DataOutputStream(bytes);
    try {
      out.writeInt(BuildFSState.VERSION);
      out.writeLong(myLastEventOrdinal);
      out.writeBoolean(hasWorkToDo(state, pd));
      state.save(out);
    }
    finally {
      out.close();
    }

    saveOnDisk(bytes, file);
  }
  catch (Throwable e) {
    LOG.error(e);
    FileUtil.delete(file);
  }
}
 
Example 3
Project: intellij-ce-playground   File: BuildSession.java   View source code 6 votes vote down vote up
private static void saveOnDisk(BufferExposingByteArrayOutputStream bytes, final File file) throws IOException {
  FileOutputStream fos = null;
  try {
    //noinspection IOResourceOpenedButNotSafelyClosed
    fos = new FileOutputStream(file);
  }
  catch (FileNotFoundException ignored) {
    FileUtil.createIfDoesntExist(file);
  }

  if (fos == null) {
    fos = new FileOutputStream(file);
  }
  try {
    fos.write(bytes.getInternalBuffer(), 0, bytes.size());
  }
  finally {
    fos.close();
  }
}
 
Example 4
Project: intellij-ce-playground   File: RefCountingStorage.java   View source code 6 votes vote down vote up
private BufferExposingByteArrayOutputStream internalReadStream(int record) throws IOException {
  waitForPendingWriteForRecord(record);
  byte[] result;

  synchronized (myLock) {
    result = super.readBytes(record);
  }

  InflaterInputStream in = new CustomInflaterInputStream(result);
  try {
    final BufferExposingByteArrayOutputStream outputStream = new BufferExposingByteArrayOutputStream();
    StreamUtil.copyStreamContent(in, outputStream);
    return outputStream;
  }
  finally {
    in.close();
  }
}
 
Example 5
Project: intellij-ce-playground   File: RefCountingStorage.java   View source code 6 votes vote down vote up
private void zipAndWrite(ByteSequence bytes, int record, boolean fixedSize) throws IOException {
  BufferExposingByteArrayOutputStream s = new BufferExposingByteArrayOutputStream();
  DeflaterOutputStream out = new DeflaterOutputStream(s);
  try {
    out.write(bytes.getBytes(), bytes.getOffset(), bytes.getLength());
  }
  finally {
    out.close();
  }

  synchronized (myLock) {
    doWrite(record, fixedSize, s);
    myPendingWriteRequestsSize -= bytes.getLength();
    myPendingWriteRequests.remove(record);
  }
}
 
Example 6
Project: intellij-ce-playground   File: PersistentHashMapValueStorage.java   View source code 6 votes vote down vote up
@Override
protected void saveChunk(BufferExposingByteArrayOutputStream compressedChunk, long endOfFileOffset) throws IOException {
  FileAccessorCache.Handle<DataOutputStream> streamCacheValue = ourAppendersCache.get(myPath);
  try {
    streamCacheValue.get().write(compressedChunk.getInternalBuffer(), 0, compressedChunk.size());
  } finally {
    streamCacheValue.release();
  }

  streamCacheValue = ourAppendersCache.get(myPath + INCOMPLETE_CHUNK_LENGTH_FILE_EXTENSION);
  try {
    DataInputOutputUtil.writeINT(streamCacheValue.get(), compressedChunk.size());
  } finally {
    streamCacheValue.release();
  }
}
 
Example 7
Project: intellij-ce-playground   File: SmallMapSerializer.java   View source code 6 votes vote down vote up
@Override
public void force() {
  if (! myDirty) return;
  try{
    final BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream();
    final DataOutput out = new DataOutputStream(bos);
    out.writeInt(myMap.size());
    for (Map.Entry<KeyWrapper<K>, V> entry : myMap.entrySet()) {
      myKeyDescriptor.save(out, entry.getKey().myKey);
      myValueExternalizer.save(out, entry.getValue());
    }
    FileUtil.writeToFile(myFile, bos.getInternalBuffer(), 0, bos.size());
  } catch (IOException e) {
    LOG.error(e);
  } finally {
    myDirty = false;
  }
}
 
Example 8
Project: intellij-ce-playground   File: MavenProject.java   View source code 6 votes vote down vote up
public void write(@NotNull DataOutputStream out) throws IOException {
  out.writeUTF(getPath());

  BufferExposingByteArrayOutputStream bs = new BufferExposingByteArrayOutputStream();
  ObjectOutputStream os = new ObjectOutputStream(bs);
  try {
    os.writeObject(myState);

    out.writeInt(bs.size());
    out.write(bs.getInternalBuffer(), 0, bs.size());
  }
  finally {
    os.close();
    bs.close();
  }
}
 
Example 9
Project: intellij-ce-playground   File: DiffContentRevision.java   View source code 6 votes vote down vote up
@Nullable
public String getContent() throws VcsException {
  if (myContents == null) {
    BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream(2048);
    try {
      myRepository.getFile(myPath, -1, null, bos);
      myRepository.closeSession();
    } catch (SVNException e) {
      throw new VcsException(e);
    }
    final byte[] bytes = bos.toByteArray();
    final Charset charset = myFilePath.getCharset();
    myContents = CharsetToolkit.bytesToString(bytes, charset);
  }
  return myContents;
}
 
Example 10
Project: tools-idea   File: BuildSession.java   View source code 6 votes vote down vote up
private void saveFsState(File dataStorageRoot, BuildFSState state) {
  final ProjectDescriptor pd = myProjectDescriptor;
  final File file = new File(dataStorageRoot, FS_STATE_FILE);
  try {
    final BufferExposingByteArrayOutputStream bytes = new BufferExposingByteArrayOutputStream();
    final DataOutputStream out = new DataOutputStream(bytes);
    try {
      out.writeInt(FSState.VERSION);
      out.writeLong(myLastEventOrdinal);
      out.writeBoolean(hasWorkToDo(state, pd));
      state.save(out);
    }
    finally {
      out.close();
    }

    saveOnDisk(bytes, file);
  }
  catch (Throwable e) {
    LOG.error(e);
    FileUtil.delete(file);
  }
}
 
Example 11
Project: tools-idea   File: BuildSession.java   View source code 6 votes vote down vote up
private static void saveOnDisk(BufferExposingByteArrayOutputStream bytes, final File file) throws IOException {
  FileOutputStream fos = null;
  try {
    fos = new FileOutputStream(file);
  }
  catch (FileNotFoundException e) {
    FileUtil.createIfDoesntExist(file);
  }

  if (fos == null) {
    fos = new FileOutputStream(file);
  }
  try {
    fos.write(bytes.getInternalBuffer(), 0, bytes.size());
  }
  finally {
    fos.close();
  }
}
 
Example 12
Project: tools-idea   File: FSRecords.java   View source code 6 votes vote down vote up
@Override
public void close() throws IOException {
  super.close();

  try {
    synchronized (myAttributeId) {
      final BufferExposingByteArrayOutputStream _out = (BufferExposingByteArrayOutputStream)out;
      final int page;
      try {
        w.lock();
        incModCount(myFileId);
        page = findAttributePage(myFileId, myAttributeId, true);
      }
      finally {
        w.unlock();
      }
      getAttributesStorage().writeBytes(page, new ByteSequence(_out.getInternalBuffer(), 0, _out.size()), myFixedSize);
    }
  }
  catch (Throwable e) {
    throw DbConnection.handleError(e);
  }
}
 
Example 13
Project: tools-idea   File: RefCountingStorage.java   View source code 6 votes vote down vote up
private BufferExposingByteArrayOutputStream internalReadStream(int record) throws IOException {
  waitForPendingWriteForRecord(record);

  synchronized (myLock) {

    byte[] result = super.readBytes(record);
    InflaterInputStream in = new CustomInflaterInputStream(result);
    try {
      final BufferExposingByteArrayOutputStream outputStream = new BufferExposingByteArrayOutputStream();
      StreamUtil.copyStreamContent(in, outputStream);
      return outputStream;
    }
    finally {
      in.close();
    }
  }
}
 
Example 14
Project: tools-idea   File: RefCountingStorage.java   View source code 6 votes vote down vote up
private void zipAndWrite(ByteSequence bytes, int record, boolean fixedSize) throws IOException {
  BufferExposingByteArrayOutputStream s = new BufferExposingByteArrayOutputStream();
  DeflaterOutputStream out = new DeflaterOutputStream(s);
  try {
    out.write(bytes.getBytes(), bytes.getOffset(), bytes.getLength());
  }
  finally {
    out.close();
  }

  synchronized (myLock) {
    doWrite(record, fixedSize, s);
    myPendingWriteRequestsSize -= bytes.getLength();
    myPendingWriteRequests.remove(record);
  }
}
 
Example 15
Project: tools-idea   File: SmallMapSerializer.java   View source code 6 votes vote down vote up
@Override
public void force() {
  if (! myDirty) return;
  try{
    final BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream();
    final DataOutput out = new DataOutputStream(bos);
    out.writeInt(myMap.size());
    for (Map.Entry<KeyWrapper<K>, V> entry : myMap.entrySet()) {
      myKeyDescriptor.save(out, entry.getKey().myKey);
      myValueExternalizer.save(out, entry.getValue());
    }
    FileUtil.writeToFile(myFile, bos.getInternalBuffer(), 0, bos.size());
  } catch (IOException e) {
    LOG.error(e);
  } finally {
    myDirty = false;
  }
}
 
Example 16
Project: tools-idea   File: MavenProject.java   View source code 6 votes vote down vote up
public void write(@NotNull DataOutputStream out) throws IOException {
  out.writeUTF(getPath());

  BufferExposingByteArrayOutputStream bs = new BufferExposingByteArrayOutputStream();
  ObjectOutputStream os = new ObjectOutputStream(bs);
  try {
    os.writeObject(myState);

    out.writeInt(bs.size());
    out.write(bs.getInternalBuffer(), 0, bs.size());
  }
  finally {
    os.close();
    bs.close();
  }
}
 
Example 17
Project: tools-idea   File: DiffContentRevision.java   View source code 6 votes vote down vote up
@Nullable
public String getContent() throws VcsException {
  if (myContents == null) {
    BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream(2048);
    try {
      myRepository.getFile(myPath, -1, null, bos);
      myRepository.closeSession();
    } catch (SVNException e) {
      throw new VcsException(e);
    }
    final byte[] bytes = bos.toByteArray();
    final Charset charset = myFilePath.getCharset();
    myContents = charset == null ? CharsetToolkit.bytesToString(bytes, EncodingRegistry.getInstance().getDefaultCharset()) : CharsetToolkit.bytesToString(bytes, charset);
  }
  return myContents;
}
 
Example 18
Project: consulo   File: StateMap.java   View source code 6 votes vote down vote up
@Nonnull
private static byte[] archiveState(@Nonnull Element state) {
  BufferExposingByteArrayOutputStream byteOut = new BufferExposingByteArrayOutputStream();
  try {
    OutputStreamWriter writer = new OutputStreamWriter(new SnappyOutputStream(byteOut), CharsetToolkit.UTF8_CHARSET);
    try {
      XMLOutputter xmlOutputter = new JDOMUtil.MyXMLOutputter();
      xmlOutputter.setFormat(XML_FORMAT);
      xmlOutputter.output(state, writer);
    }
    finally {
      writer.close();
    }
  }
  catch (IOException e) {
    throw new StateStorageException(e);
  }
  return ArrayUtil.realloc(byteOut.getInternalBuffer(), byteOut.size());
}
 
Example 19
Project: consulo   File: RefCountingStorage.java   View source code 6 votes vote down vote up
private BufferExposingByteArrayOutputStream internalReadStream(int record) throws IOException {
  waitForPendingWriteForRecord(record);
  byte[] result;

  synchronized (myLock) {
    result = super.readBytes(record);
  }

  InflaterInputStream in = new CustomInflaterInputStream(result);
  try {
    final BufferExposingByteArrayOutputStream outputStream = new BufferExposingByteArrayOutputStream();
    StreamUtil.copyStreamContent(in, outputStream);
    return outputStream;
  }
  finally {
    in.close();
  }
}
 
Example 20
Project: consulo   File: RefCountingStorage.java   View source code 6 votes vote down vote up
private void zipAndWrite(ByteSequence bytes, int record, boolean fixedSize) throws IOException {
  BufferExposingByteArrayOutputStream s = new BufferExposingByteArrayOutputStream();
  DeflaterOutputStream out = new DeflaterOutputStream(s);
  try {
    out.write(bytes.getBytes(), bytes.getOffset(), bytes.getLength());
  }
  finally {
    out.close();
  }

  synchronized (myLock) {
    doWrite(record, fixedSize, s);
    myPendingWriteRequestsSize -= bytes.getLength();
    myPendingWriteRequests.remove(record);
  }
}
 
Example 21
Project: consulo   File: PersistentHashMapValueStorage.java   View source code 6 votes vote down vote up
@Override
protected void saveChunk(BufferExposingByteArrayOutputStream compressedChunk, long endOfFileOffset) throws IOException {
  FileAccessorCache.Handle<DataOutputStream> streamCacheValue = ourAppendersCache.get(myPath);
  try {
    streamCacheValue.get().write(compressedChunk.getInternalBuffer(), 0, compressedChunk.size());
  } finally {
    streamCacheValue.release();
  }

  streamCacheValue = ourAppendersCache.get(myPath + INCOMPLETE_CHUNK_LENGTH_FILE_EXTENSION);
  try {
    DataInputOutputUtil.writeINT(streamCacheValue.get(), compressedChunk.size());
  } finally {
    streamCacheValue.release();
  }
}
 
Example 22
Project: consulo   File: SmallMapSerializer.java   View source code 6 votes vote down vote up
@Override
public void force() {
  if (! myDirty) return;
  try{
    final BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream();
    final DataOutput out = new DataOutputStream(bos);
    out.writeInt(myMap.size());
    for (Map.Entry<KeyWrapper<K>, V> entry : myMap.entrySet()) {
      myKeyDescriptor.save(out, entry.getKey().myKey);
      myValueExternalizer.save(out, entry.getValue());
    }
    FileUtil.writeToFile(myFile, bos.getInternalBuffer(), 0, bos.size());
  } catch (IOException e) {
    LOG.error(e);
  } finally {
    myDirty = false;
  }
}
 
Example 23
Project: intellij-ce-playground   File: BuildSession.java   View source code 5 votes vote down vote up
private static void updateFsStateOnDisk(File dataStorageRoot, DataInputStream original, final long ordinal) {
  final File file = new File(dataStorageRoot, FS_STATE_FILE);
  try {
    final BufferExposingByteArrayOutputStream bytes = new BufferExposingByteArrayOutputStream();
    final DataOutputStream out = new DataOutputStream(bytes);
    try {
      out.writeInt(BuildFSState.VERSION);
      out.writeLong(ordinal);
      out.writeBoolean(false);
      while (true) {
        final int b = original.read();
        if (b == -1) {
          break;
        }
        out.write(b);
      }
    }
    finally {
      out.close();
    }

    saveOnDisk(bytes, file);
  }
  catch (Throwable e) {
    LOG.error(e);
    FileUtil.delete(file);
  }
}
 
Example 24
Project: intellij-ce-playground   File: RequestBuilder.java   View source code 5 votes vote down vote up
@NotNull
public String readString(@Nullable final ProgressIndicator indicator) throws IOException {
  return connect(new HttpRequests.RequestProcessor<String>() {
    @Override
    public String process(@NotNull HttpRequests.Request request) throws IOException {
      int contentLength = request.getConnection().getContentLength();
      BufferExposingByteArrayOutputStream out = new BufferExposingByteArrayOutputStream(contentLength > 0 ? contentLength : 16 * 1024);
      NetUtils.copyStreamContent(indicator, request.getInputStream(), out, contentLength);
      return new String(out.getInternalBuffer(), 0, out.size(), HttpRequests.getCharset(request));
    }
  });
}
 
Example 25
Project: intellij-ce-playground   File: FSRecords.java   View source code 5 votes vote down vote up
@Override
public void close() throws IOException {
  super.close();

  try {
    final BufferExposingByteArrayOutputStream _out = (BufferExposingByteArrayOutputStream)out;
    writeBytes(new ByteSequence(_out.getInternalBuffer(), 0, _out.size()));
  }
  catch (Throwable e) {
    throw DbConnection.handleError(e);
  }
}
 
Example 26
Project: intellij-ce-playground   File: ImageLoader.java   View source code 5 votes vote down vote up
public static Image loadFromStream(@NotNull final InputStream inputStream, final int scale) {
  if (scale <= 0) throw new IllegalArgumentException("Scale must 1 or more");
  try {
    BufferExposingByteArrayOutputStream outputStream = new BufferExposingByteArrayOutputStream();
    try {
      byte[] buffer = new byte[1024];
      while (true) {
        final int n = inputStream.read(buffer);
        if (n < 0) break;
        outputStream.write(buffer, 0, n);
      }
    }
    finally {
      inputStream.close();
    }

    Image image = Toolkit.getDefaultToolkit().createImage(outputStream.getInternalBuffer(), 0, outputStream.size());

    waitForImage(image);

    if (UIUtil.isRetina() && scale > 1) {
      image = RetinaImage.createFrom(image, scale, ourComponent);
    }

    return image;
  }
  catch (Exception ex) {
    LOG.error(ex);
  }

  return null;
}
 
Example 27
Project: intellij-ce-playground   File: JBZipOutputStream.java   View source code 5 votes vote down vote up
public void putNextEntryBytes(JBZipEntry entry, byte[] bytes) throws IOException {
  entry.setSize(bytes.length);

  crc.reset();
  crc.update(bytes);
  entry.setCrc(crc.getValue());

  if (entry.getMethod() == -1) {
    entry.setMethod(method);
  }

  if (entry.getTime() == -1) {
    entry.setTime(System.currentTimeMillis());
  }

  final byte[] outputBytes;
  final int outputBytesLength;
  if (entry.getMethod() == ZipEntry.DEFLATED) {
    def.setLevel(level);
    final BufferExposingByteArrayOutputStream compressedBytesStream = new BufferExposingByteArrayOutputStream();
    final DeflaterOutputStream stream = new DeflaterOutputStream(compressedBytesStream, def);
    try {
      stream.write(bytes);
    }
    finally {
      stream.close();
    }
    outputBytesLength = compressedBytesStream.size();
    outputBytes = compressedBytesStream.getInternalBuffer();
  }
  else {
    outputBytesLength = bytes.length;
    outputBytes = bytes;
  }

  entry.setCompressedSize(outputBytesLength);
  writeLocalFileHeader(entry);
  writeOut(outputBytes, 0, outputBytesLength);
}
 
Example 28
Project: intellij-ce-playground   File: AppendableStorageBackedByResizableMappedFile.java   View source code 5 votes vote down vote up
public <Data> int append(Data value, KeyDescriptor<Data> descriptor) throws IOException {
  final BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream();
  DataOutput out = new DataOutputStream(bos);
  descriptor.save(out, value);
  final int size = bos.size();
  final byte[] buffer = bos.getInternalBuffer();

  int currentLength = getCurrentLength();

  if (myCompressedAppendableFile != null) {
    //myCompressedAppendableFile.append(value, descriptor);
    myCompressedAppendableFile.append(buffer, size);
    if (!testMode) return currentLength;
  }

  if (size > ourAppendBufferLength) {
    flushKeyStoreBuffer();
    put(currentLength, buffer, 0, size);
    myFileLength += size;
  }
  else {
    if (size > ourAppendBufferLength - myBufferPosition) {
      flushKeyStoreBuffer();
    }
    // myAppendBuffer will contain complete records
    if (myAppendBuffer == null) {
      myAppendBuffer = new byte[ourAppendBufferLength];
    }
    System.arraycopy(buffer, 0, myAppendBuffer, myBufferPosition, size);
    myBufferPosition += size;
  }
  return currentLength;
}
 
Example 29
Project: intellij-ce-playground   File: AppendableStorageBackedByResizableMappedFile.java   View source code 5 votes vote down vote up
@Override
protected void saveChunk(BufferExposingByteArrayOutputStream compressedChunk, long endOfFileOffset) throws IOException {
  AppendableStorageBackedByResizableMappedFile.super
    .put(endOfFileOffset, compressedChunk.getInternalBuffer(), 0, compressedChunk.size());

  if (myChunkLengthTableStream == null) {
    myChunkLengthTableStream =
      new DataOutputStream(new BufferedOutputStream(new FileOutputStream(getChunkLengthFile(), true)));
  }

  DataInputOutputUtil.writeINT(myChunkLengthTableStream, compressedChunk.size());
}
 
Example 30
Project: intellij-ce-playground   File: CompressedAppendableFile.java   View source code 5 votes vote down vote up
public synchronized <Data> void append(Data value, KeyDescriptor<Data> descriptor) throws IOException {
  final BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream();
  DataOutput out = new DataOutputStream(bos);
  descriptor.save(out, value);
  final int size = bos.size();
  final byte[] buffer = bos.getInternalBuffer();
  append(buffer, size);
}
 
Example 31
Project: intellij-ce-playground   File: StubSerializationHelper.java   View source code 5 votes vote down vote up
public void serialize(@NotNull Stub rootStub, @NotNull OutputStream stream) throws IOException {
  BufferExposingByteArrayOutputStream out = new BufferExposingByteArrayOutputStream();
  FileLocalStringEnumerator storage = new FileLocalStringEnumerator(true);
  StubOutputStream stubOutputStream = new StubOutputStream(out, storage);
  boolean doDefaultSerialization = true;

  if (rootStub instanceof PsiFileStub) {
    final PsiFileStub[] roots = ((PsiFileStub)rootStub).getStubRoots();
    if (roots.length == 0) {
      Logger.getInstance(getClass()).error("Incorrect stub files count during serialization:" + rootStub + "," + rootStub.getStubType());
    } else {
      doDefaultSerialization = false;
      DataInputOutputUtil.writeINT(stubOutputStream, roots.length);
      for (PsiFileStub root : roots) {
        doSerialize(root, stubOutputStream);
      }
    }
  }

  if (doDefaultSerialization) {
    DataInputOutputUtil.writeINT(stubOutputStream, 1);
    doSerialize(rootStub, stubOutputStream);
  }
  DataOutputStream resultStream = new DataOutputStream(stream);
  DataInputOutputUtil.writeINT(resultStream, storage.myStrings.size());
  byte[] buffer = IOUtil.allocReadWriteUTFBuffer();
  for(String s:storage.myStrings) {
    IOUtil.writeUTFFast(buffer, resultStream, s);
  }
  resultStream.write(out.getInternalBuffer(), 0, out.size());
}
 
Example 32
Project: intellij-ce-playground   File: ValueContainerMap.java   View source code 5 votes vote down vote up
@Override
protected void doPut(Key key, ValueContainer<Value> container) throws IOException {
  synchronized (myEnumerator) {
    ChangeTrackingValueContainer<Value> valueContainer = (ChangeTrackingValueContainer<Value>)container;

    // try to accumulate index value calculated for particular key to avoid fragmentation: usually keys are scattered across many files
    // note that keys unique for indexed file have their value calculated at once (e.g. key is file id, index calculates something for particular
    // file) and there is no benefit to accumulate values for particular key because only one value exists
    if (!valueContainer.needsCompacting() && !myKeyIsUniqueForIndexedFile) {
      final BufferExposingByteArrayOutputStream bytes = new BufferExposingByteArrayOutputStream();
      //noinspection IOResourceOpenedButNotSafelyClosed
      final DataOutputStream _out = new DataOutputStream(bytes);
      valueContainer.saveTo(_out, myValueExternalizer);

      appendData(key, new PersistentHashMap.ValueDataAppender() {
        @Override
        public void append(@NotNull final DataOutput out) throws IOException {
          out.write(bytes.getInternalBuffer(), 0, bytes.size());
        }
      });
    }
    else {
      // rewrite the value container for defragmentation
      super.doPut(key, valueContainer);
    }
  }
}
 
Example 33
Project: intellij-ce-playground   File: RadFormLayoutManager.java   View source code 5 votes vote down vote up
private static Object createSerializedCopy(final Object original) {
  // FormLayout may have been loaded with a different classloader, so we need to create a copy through serialization
  Object copy;
  try {
    BufferExposingByteArrayOutputStream baos = new BufferExposingByteArrayOutputStream();
    ObjectOutputStream os = new ObjectOutputStream(baos);
    try {
      os.writeObject(original);
    }
    finally {
      os.close();
    }

    InputStream bais = new ByteArrayInputStream(baos.getInternalBuffer(), 0, baos.size());
    ObjectInputStream is = new ObjectInputStream(bais);
    try {
      copy = is.readObject();
    }
    finally {
      is.close();
    }
  }
  catch (Exception e) {
    throw new RuntimeException(e);
  }
  return copy;
}
 
Example 34
Project: tools-idea   File: BuildSession.java   View source code 5 votes vote down vote up
private static void updateFsStateOnDisk(File dataStorageRoot, DataInputStream original, final long ordinal) {
  final File file = new File(dataStorageRoot, FS_STATE_FILE);
  try {
    final BufferExposingByteArrayOutputStream bytes = new BufferExposingByteArrayOutputStream();
    final DataOutputStream out = new DataOutputStream(bytes);
    try {
      out.writeInt(FSState.VERSION);
      out.writeLong(ordinal);
      out.writeBoolean(false);
      while (true) {
        final int b = original.read();
        if (b == -1) {
          break;
        }
        out.write(b);
      }
    }
    finally {
      out.close();
    }

    saveOnDisk(bytes, file);
  }
  catch (Throwable e) {
    LOG.error(e);
    FileUtil.delete(file);
  }
}
 
Example 35
Project: tools-idea   File: StubSerializationHelper.java   View source code 5 votes vote down vote up
public void serialize(@NotNull Stub rootStub, @NotNull OutputStream stream) throws IOException {
  BufferExposingByteArrayOutputStream out = new BufferExposingByteArrayOutputStream();
  FileLocalStringEnumerator storage = new FileLocalStringEnumerator();
  StubOutputStream stubOutputStream = new StubOutputStream(out, storage);

  doSerialize(rootStub, stubOutputStream);
  DataOutputStream resultStream = new DataOutputStream(stream);
  DataInputOutputUtil.writeINT(resultStream, storage.myStrings.size());
  byte[] buffer = IOUtil.allocReadWriteUTFBuffer();
  for(String s:storage.myStrings) {
    IOUtil.writeUTFFast(buffer, resultStream, s);
  }
  resultStream.write(out.getInternalBuffer(), 0, out.size());
}
 
Example 36
Project: tools-idea   File: FSRecords.java   View source code 5 votes vote down vote up
@Override
public void close() throws IOException {
  super.close();

  try {
    final BufferExposingByteArrayOutputStream _out = (BufferExposingByteArrayOutputStream)out;
    writeBytes(new ByteSequence(_out.getInternalBuffer(), 0, _out.size()));
  }
  catch (Throwable e) {
    throw DbConnection.handleError(e);
  }
}
 
Example 37
Project: tools-idea   File: ImageLoader.java   View source code 5 votes vote down vote up
public static Image loadFromStream(@NotNull final InputStream inputStream, final int scale) {
  if (scale <= 0) throw new IllegalArgumentException("Scale must 1 or more");
  try {
    BufferExposingByteArrayOutputStream outputStream = new BufferExposingByteArrayOutputStream();
    try {
      byte[] buffer = new byte[1024];
      while (true) {
        final int n = inputStream.read(buffer);
        if (n < 0) break;
        outputStream.write(buffer, 0, n);
      }
    }
    finally {
      inputStream.close();
    }

    Image image = Toolkit.getDefaultToolkit().createImage(outputStream.getInternalBuffer(), 0, outputStream.size());

    waitForImage(image);

    if (UIUtil.isRetina() && scale > 1) {
      image = RetinaImage.createFrom(image, scale, ourComponent);
    }

    return image;
  }
  catch (Exception ex) {
    LOG.error(ex);
  }

  return null;
}
 
Example 38
Project: tools-idea   File: JBZipOutputStream.java   View source code 5 votes vote down vote up
public void putNextEntryBytes(JBZipEntry entry, byte[] bytes) throws IOException {
  entry.setSize(bytes.length);

  crc.reset();
  crc.update(bytes);
  entry.setCrc(crc.getValue());

  if (entry.getMethod() == -1) {
    entry.setMethod(method);
  }

  if (entry.getTime() == -1) {
    entry.setTime(System.currentTimeMillis());
  }

  final byte[] outputBytes;
  final int outputBytesLength;
  if (entry.getMethod() == ZipEntry.DEFLATED) {
    def.setLevel(level);
    final BufferExposingByteArrayOutputStream compressedBytesStream = new BufferExposingByteArrayOutputStream();
    final DeflaterOutputStream stream = new DeflaterOutputStream(compressedBytesStream, def);
    try {
      stream.write(bytes);
    }
    finally {
      stream.close();
    }
    outputBytesLength = compressedBytesStream.size();
    outputBytes = compressedBytesStream.getInternalBuffer();
  }
  else {
    outputBytesLength = bytes.length;
    outputBytes = bytes;
  }

  entry.setCompressedSize(outputBytesLength);
  writeLocalFileHeader(entry);
  writeOut(outputBytes, 0, outputBytesLength);
}
 
Example 39
Project: tools-idea   File: PersistentEnumeratorBase.java   View source code 5 votes vote down vote up
protected int doWriteData(Data value) throws IOException {
  final int dataOff = myKeyStorage != null ?
                      myKeyStoreBufferPosition + myKeyStoreFileLength :
                      ((InlineKeyDescriptor<Data>)myDataDescriptor).toInt(value);

  if (myKeyStorage != null) {
    final BufferExposingByteArrayOutputStream bos = new BufferExposingByteArrayOutputStream();
    DataOutput out = new DataOutputStream(bos);
    myDataDescriptor.save(out, value);
    final int size = bos.size();
    final byte[] buffer = bos.getInternalBuffer();

    if (size > myInitialSize) {
      flushKeyStoreBuffer();
      myKeyStorage.put(dataOff, buffer, 0, size);
      myKeyStoreFileLength += size;
    }
    else {
      if (size > myInitialSize - myKeyStoreBufferPosition) {
        flushKeyStoreBuffer();
      }
      // myKeyStoreFileBuffer will contain complete records
      if (myKeyStoreFileBuffer == null) {
        myKeyStoreFileBuffer = new byte[myInitialSize];
      }
      System.arraycopy(buffer, 0, myKeyStoreFileBuffer, myKeyStoreBufferPosition, size);
      myKeyStoreBufferPosition += size;
    }
  }
  return dataOff;
}
 
Example 40
Project: tools-idea   File: PersistentHashMap.java   View source code 5 votes vote down vote up
protected void doPut(Key key, Value value) throws IOException {
  myEnumerator.lockStorage();
  try {
    myEnumerator.markDirty(true);
    myAppendCache.remove(key);

    final BufferExposingByteArrayOutputStream bytes = new BufferExposingByteArrayOutputStream();
    if (myFlyweightAppenderStream == null) myFlyweightAppenderStream = new AppendStream();
    myFlyweightAppenderStream.setOut(bytes);
    myValueExternalizer.save(myFlyweightAppenderStream, value);
    myFlyweightAppenderStream.setOut(null);

    final int id = enumerate(key);

    long oldheader = readValueId(id);
    if (oldheader != NULL_ADDR) {
      myLiveAndGarbageKeysCounter++;
    }
    else {
      myLiveAndGarbageKeysCounter += LIVE_KEY_MASK;
    }

    long header = myValueStorage.appendBytes(bytes.getInternalBuffer(), 0, bytes.size(), 0);

    updateValueId(id, header, oldheader, key, 0);
  }
  finally {
    myEnumerator.unlockStorage();
  }
}