modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
| 7 ++++++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerRemote.java
| 2 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
| 11 +++++++---
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
| 2 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftServerPluginFacet.java
| 2 +
modules/enterprise/server/plugins/drift-rhq/src/main/java/org/rhq/enterprise/server/plugins/drift/JPADriftServerPluginComponent.java
| 5 ++++
6 files changed, 26 insertions(+), 3 deletions(-)
New commits:
commit 162cef94f640dc8b226023161c29e6bef00c2c2d
Author: John Sanda <jsanda(a)redhat.com>
Date: Sat Nov 19 10:12:38 2011 -0500
Adding method to retrieve drift content as byte array
Yesterday I discovered an issue while working on a CLI script that was
trying to fetch drift file content. Whitespace characters like \n and \t
were getting stripped out and replaced with a single whitespace
character. After a lot of debugging I determined that this is happening
in the transport layer which is jboss remoting. Fetching file content as
a byte array and then constructing a string on the client side bypasses
this issue.
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
index 851372d..e3c5602 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerBean.java
@@ -684,6 +684,13 @@ public class DriftManagerBean implements DriftManagerLocal,
DriftManagerRemote {
}
@Override
+ public byte[] getDriftFileAsByteArray(Subject subject, String hash) {
+ log.debug("Retrieving drift file content for " + hash);
+ DriftServerPluginFacet driftServerPlugin = getServerPlugin();
+ return driftServerPlugin.getDriftFileAsByteArray(subject, hash);
+ }
+
+ @Override
public FileDiffReport generateUnifiedDiff(Subject subject, Drift<?, ?> drift)
{
log.debug("Generating diff for " + drift);
String oldContent = getDriftFileBits(subject,
drift.getOldDriftFile().getHashId());
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerRemote.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerRemote.java
index f75602b..1d3dc82 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerRemote.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/DriftManagerRemote.java
@@ -104,6 +104,8 @@ public interface DriftManagerRemote {
*/
String getDriftFileBits(Subject subject, String hash);
+ byte[] getDriftFileAsByteArray(Subject subject, String hash);
+
/**
* Calculate and return requested Drift Snapshot.
*
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
index dce9398..142e959 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerBean.java
@@ -29,6 +29,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.nio.charset.Charset;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -497,14 +498,18 @@ public class JPADriftServerBean implements JPADriftServerLocal {
@Override
public String getDriftFileBits(String hash) {
// TODO add security
+ return new String(getDriftFileAsByteArray(hash), Charset.defaultCharset());
+ }
+
+ @Override
+ public byte[] getDriftFileAsByteArray(String hash) {
try {
JPADriftFileBits content = (JPADriftFileBits)
entityManager.createNamedQuery(
JPADriftFileBits.QUERY_FIND_BY_ID).setParameter("hashId",
hash).getSingleResult();
if (content.getDataSize() == null || content.getDataSize() < 1) {
- return "";
+ return new byte[] {};
}
- byte[] bytes = StreamUtil.slurp(content.getBlob().getBinaryStream());
- return new String(bytes);
+ return StreamUtil.slurp(content.getBlob().getBinaryStream());
} catch (SQLException e) {
e.printStackTrace();
return null;
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
index 76b125a..0cd1e78 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/drift/JPADriftServerLocal.java
@@ -131,4 +131,6 @@ public interface JPADriftServerLocal {
int purgeOrphanedDriftFiles(Subject subject, long purgeMillis);
String getDriftFileBits(String hash);
+
+ byte[] getDriftFileAsByteArray(String hash);
}
diff --git
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftServerPluginFacet.java
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftServerPluginFacet.java
index 97e402e..a9d7f30 100644
---
a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftServerPluginFacet.java
+++
b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/plugin/pc/drift/DriftServerPluginFacet.java
@@ -146,4 +146,6 @@ public interface DriftServerPluginFacet {
* @return The content as a string
*/
String getDriftFileBits(Subject subject, String hash);
+
+ byte[] getDriftFileAsByteArray(Subject subject, String hash);
}
diff --git
a/modules/enterprise/server/plugins/drift-rhq/src/main/java/org/rhq/enterprise/server/plugins/drift/JPADriftServerPluginComponent.java
b/modules/enterprise/server/plugins/drift-rhq/src/main/java/org/rhq/enterprise/server/plugins/drift/JPADriftServerPluginComponent.java
index 2da3167..9ebc2fc 100644
---
a/modules/enterprise/server/plugins/drift-rhq/src/main/java/org/rhq/enterprise/server/plugins/drift/JPADriftServerPluginComponent.java
+++
b/modules/enterprise/server/plugins/drift-rhq/src/main/java/org/rhq/enterprise/server/plugins/drift/JPADriftServerPluginComponent.java
@@ -132,4 +132,9 @@ public class JPADriftServerPluginComponent implements
DriftServerPluginFacet, Se
public String getDriftFileBits(Subject subject, String hash) {
return getJPADriftServer().getDriftFileBits(hash);
}
+
+ @Override
+ public byte[] getDriftFileAsByteArray(Subject subject, String hash) {
+ return getJPADriftServer().getDriftFileAsByteArray(hash);
+ }
}
Show replies by date