From 274227c07205d3dbd7125ed75ed6d2acdd3c9ce0 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 10 Jan 2014 10:02:47 +0000
Subject: [PATCH]
---
opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java | 39 ++++++++++++++++++++++++++++++---------
1 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
index faadc5b..2cdddde 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/jeb/ID2Entry.java
@@ -22,7 +22,7 @@
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
- * Portions copyright 2012-2013 ForgeRock AS.
+ * Portions Copyright 2012-2014 ForgeRock AS.
*/
package org.opends.server.backends.jeb;
import org.opends.messages.Message;
@@ -31,11 +31,15 @@
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.debug.DebugTracer;
+
import static org.opends.messages.JebMessages.*;
+import com.forgerock.opendj.util.StaticUtils;
import com.sleepycat.je.*;
import org.opends.server.types.*;
+import org.forgerock.opendj.ldap.ByteString;
+import org.forgerock.opendj.ldap.ByteStringBuilder;
import org.opends.server.core.DirectoryServer;
import org.opends.server.protocols.asn1.ASN1Writer;
import org.opends.server.protocols.asn1.ASN1;
@@ -44,7 +48,10 @@
import org.opends.server.api.CompressedSchema;
import java.io.IOException;
+import java.io.OutputStream;
import java.util.zip.DataFormatException;
+import java.util.zip.DeflaterOutputStream;
+import java.util.zip.InflaterOutputStream;
/**
* Represents the database containing the LDAP entries. The database key is
@@ -161,10 +168,17 @@
{
// It was compressed.
reader.readOctetString(compressedEntryBuffer);
- CryptoManager cryptoManager = DirectoryServer.getCryptoManager();
- // TODO: Should handle the case where uncompress returns < 0
- compressedEntryBuffer.uncompress(entryBuffer, cryptoManager,
- uncompressedSize);
+
+ OutputStream decompressor = null;
+ try
+ {
+ // TODO: Should handle the case where uncompress fails
+ decompressor = new InflaterOutputStream(entryBuffer.asOutputStream());
+ compressedEntryBuffer.copyTo(decompressor);
+ }
+ finally {
+ StaticUtils.closeSilently(decompressor);
+ }
// Since we are used the cached buffers (ByteStringBuilders),
// the decoded attribute values will not refer back to the
@@ -209,11 +223,18 @@
// Then start the ASN1 sequence.
writer.writeStartSequence(JebFormat.TAG_DATABASE_ENTRY);
- // Do optional compression.
- CryptoManager cryptoManager = DirectoryServer.getCryptoManager();
- if (dataConfig.isCompressed() && cryptoManager != null &&
- entryBuffer.compress(compressedEntryBuffer, cryptoManager))
+ if (dataConfig.isCompressed())
{
+ OutputStream compressor = null;
+ try {
+ compressor = new DeflaterOutputStream(
+ compressedEntryBuffer.asOutputStream());
+ entryBuffer.copyTo(compressor);
+ }
+ finally {
+ StaticUtils.closeSilently(compressor);
+ }
+
// Compression needed and successful.
writer.writeInteger(entryBuffer.length());
writer.writeOctetString(compressedEntryBuffer);
--
Gitblit v1.10.0