You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by ma...@apache.org on 2011/10/06 19:56:00 UTC
svn commit: r1179723 - in /hadoop/common/branches/branch-0.20-security-205:
./ src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/
src/hdfs/org/apache/hadoop/hdfs/web/ src/test/org/apache/hadoop/hdfs/web/
Author: mattf
Date: Thu Oct 6 17:56:00 2011
New Revision: 1179723
URL: http://svn.apache.org/viewvc?rev=1179723&view=rev
Log:
HDFS-2404. Webhdfs liststatus json response is not correct. Contributed by Suresh Srinivas.
Modified:
hadoop/common/branches/branch-0.20-security-205/CHANGES.txt (contents, props changed)
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/JsonUtil.java
hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java
hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/TestJsonUtil.java
Modified: hadoop/common/branches/branch-0.20-security-205/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/CHANGES.txt?rev=1179723&r1=1179722&r2=1179723&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/CHANGES.txt (original)
+++ hadoop/common/branches/branch-0.20-security-205/CHANGES.txt Thu Oct 6 17:56:00 2011
@@ -56,6 +56,9 @@ Release 0.20.205.0 - 2011.09.28
BUG FIXES
+ HDFS-2404. Webhdfs liststatus json response is not correct.
+ (Suresh Srinivas via mattf)
+
HDFS-2358. NPE when the default filesystem's uri has no authority.
(Daryn Sharp via mattf)
Propchange: hadoop/common/branches/branch-0.20-security-205/CHANGES.txt
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Oct 6 17:56:00 2011
@@ -1,6 +1,6 @@
/hadoop/common/branches/branch-0.20/CHANGES.txt:826138,826568,829987,831184,833001,880632,898713,909245,909723,960946,990003,1044225
/hadoop/common/branches/branch-0.20-append/CHANGES.txt:955380,955398,955448,956329
-/hadoop/common/branches/branch-0.20-security/CHANGES.txt:1170042,1170087,1170997,1171137,1171181,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1173843,1174326,1174471,1174476,1174482,1175114,1176179,1176182,1176270,1176276,1176675,1176720,1177031,1177036,1177098,1177101,1177907,1178074,1179036,1179171,1179471,1179519,1179713
+/hadoop/common/branches/branch-0.20-security/CHANGES.txt:1170042,1170087,1170997,1171137,1171181,1171380,1171613,1171891,1171905,1172184,1172188,1172190,1172192,1173470,1173843,1174326,1174471,1174476,1174482,1175114,1176179,1176182,1176270,1176276,1176675,1176720,1177031,1177036,1177098,1177101,1177907,1178074,1179036,1179171,1179471,1179519,1179713,1179722
/hadoop/common/branches/branch-0.20-security-203/CHANGES.txt:1096071,1097011,1097249,1097269,1097281,1097966,1098816,1098819,1098823,1098827,1098832,1098839,1098854,1098863,1099088,1099191,1099324,1099330,1099333,1102071,1128115
/hadoop/common/branches/branch-0.20-security-204/CHANGES.txt:1128390,1147228,1148069,1149316,1154413,1159730,1161741
/hadoop/core/branches/branch-0.18/CHANGES.txt:727226
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java?rev=1179723&r1=1179722&r2=1179723&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/server/namenode/web/resources/NamenodeWebHdfsMethods.java Thu Oct 6 17:56:00 2011
@@ -420,7 +420,7 @@ public class NamenodeWebHdfsMethods {
case GETFILESTATUS:
{
final HdfsFileStatus status = namenode.getFileInfo(fullpath);
- final String js = JsonUtil.toJsonString(status);
+ final String js = JsonUtil.toJsonString(status, true);
return Response.ok(js).type(MediaType.APPLICATION_JSON).build();
}
case LISTSTATUS:
@@ -476,22 +476,22 @@ public class NamenodeWebHdfsMethods {
@Override
public void write(final OutputStream outstream) throws IOException {
final PrintStream out = new PrintStream(outstream);
- out.println("{\"" + HdfsFileStatus[].class.getSimpleName() + "\":[");
+ out.println("{\"" + HdfsFileStatus.class.getSimpleName() + "\":[");
final HdfsFileStatus[] partial = first.getPartialListing();
if (partial.length > 0) {
- out.print(JsonUtil.toJsonString(partial[0]));
+ out.print(JsonUtil.toJsonString(partial[0], false));
}
for(int i = 1; i < partial.length; i++) {
out.println(',');
- out.print(JsonUtil.toJsonString(partial[i]));
+ out.print(JsonUtil.toJsonString(partial[i], false));
}
for(DirectoryListing curr = first; curr.hasMore(); ) {
curr = getDirectoryListing(np, p, curr.getLastName());
for(HdfsFileStatus s : curr.getPartialListing()) {
out.println(',');
- out.print(JsonUtil.toJsonString(s));
+ out.print(JsonUtil.toJsonString(s, false));
}
}
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/JsonUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/JsonUtil.java?rev=1179723&r1=1179722&r2=1179723&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/JsonUtil.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/JsonUtil.java Thu Oct 6 17:56:00 2011
@@ -133,32 +133,34 @@ public class JsonUtil {
}
/** Convert a HdfsFileStatus object to a Json string. */
- public static String toJsonString(final HdfsFileStatus status) {
+ public static String toJsonString(final HdfsFileStatus status,
+ boolean includeType) {
if (status == null) {
return null;
- } else {
- final Map<String, Object> m = new TreeMap<String, Object>();
- m.put("localName", status.getLocalName());
- m.put("isDir", status.isDir());
- m.put("len", status.getLen());
- m.put("owner", status.getOwner());
- m.put("group", status.getGroup());
- m.put("permission", toString(status.getPermission()));
- m.put("accessTime", status.getAccessTime());
- m.put("modificationTime", status.getModificationTime());
- m.put("blockSize", status.getBlockSize());
- m.put("replication", status.getReplication());
- return toJsonString(HdfsFileStatus.class, m);
}
+ final Map<String, Object> m = new TreeMap<String, Object>();
+ m.put("localName", status.getLocalName());
+ m.put("isDir", status.isDir());
+ m.put("len", status.getLen());
+ m.put("owner", status.getOwner());
+ m.put("group", status.getGroup());
+ m.put("permission", toString(status.getPermission()));
+ m.put("accessTime", status.getAccessTime());
+ m.put("modificationTime", status.getModificationTime());
+ m.put("blockSize", status.getBlockSize());
+ m.put("replication", status.getReplication());
+ return includeType ? toJsonString(HdfsFileStatus.class, m) :
+ JSON.toString(m);
}
/** Convert a Json map to a HdfsFileStatus object. */
- public static HdfsFileStatus toFileStatus(final Map<?, ?> json) {
+ public static HdfsFileStatus toFileStatus(final Map<?, ?> json, boolean includesType) {
if (json == null) {
return null;
}
- final Map<?, ?> m = (Map<?, ?>)json.get(HdfsFileStatus.class.getSimpleName());
+ final Map<?, ?> m = includesType ?
+ (Map<?, ?>)json.get(HdfsFileStatus.class.getSimpleName()) : json;
final String localName = (String) m.get("localName");
final boolean isDir = (Boolean) m.get("isDir");
final long len = (Long) m.get("len");
@@ -273,7 +275,7 @@ public class JsonUtil {
return array;
}
}
-
+
/** Convert a LocatedBlock to a Json map. */
private static Map<String, Object> toJsonMap(final LocatedBlock locatedblock
) throws IOException {
@@ -452,4 +454,4 @@ public class JsonUtil {
return checksum;
}
-}
\ No newline at end of file
+}
Modified: hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java?rev=1179723&r1=1179722&r2=1179723&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/hdfs/org/apache/hadoop/hdfs/web/WebHdfsFileSystem.java Thu Oct 6 17:56:00 2011
@@ -336,7 +336,7 @@ public class WebHdfsFileSystem extends F
private HdfsFileStatus getHdfsFileStatus(Path f) throws IOException {
final HttpOpParam.Op op = GetOpParam.Op.GETFILESTATUS;
final Map<String, Object> json = run(op, f);
- final HdfsFileStatus status = JsonUtil.toFileStatus(json);
+ final HdfsFileStatus status = JsonUtil.toFileStatus(json, true);
if (status == null) {
throw new FileNotFoundException("File does not exist: " + f);
}
@@ -483,14 +483,14 @@ public class WebHdfsFileSystem extends F
final HttpOpParam.Op op = GetOpParam.Op.LISTSTATUS;
final Map<?, ?> json = run(op, f);
final Object[] array = (Object[])json.get(
- HdfsFileStatus[].class.getSimpleName());
+ HdfsFileStatus.class.getSimpleName());
//convert FileStatus
final FileStatus[] statuses = new FileStatus[array.length];
for(int i = 0; i < array.length; i++) {
@SuppressWarnings("unchecked")
final Map<String, Object> m = (Map<String, Object>)array[i];
- statuses[i] = makeQualified(JsonUtil.toFileStatus(m), f);
+ statuses[i] = makeQualified(JsonUtil.toFileStatus(m, false), f);
}
return statuses;
}
@@ -638,4 +638,4 @@ public class WebHdfsFileSystem extends F
});
}
}
-}
\ No newline at end of file
+}
Modified: hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/TestJsonUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/TestJsonUtil.java?rev=1179723&r1=1179722&r2=1179723&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/TestJsonUtil.java (original)
+++ hadoop/common/branches/branch-0.20-security-205/src/test/org/apache/hadoop/hdfs/web/TestJsonUtil.java Thu Oct 6 17:56:00 2011
@@ -46,9 +46,9 @@ public class TestJsonUtil {
final FileStatus fstatus = toFileStatus(status, parent);
System.out.println("status = " + status);
System.out.println("fstatus = " + fstatus);
- final String json = JsonUtil.toJsonString(status);
+ final String json = JsonUtil.toJsonString(status, true);
System.out.println("json = " + json.replace(",", ",\n "));
- final HdfsFileStatus s2 = JsonUtil.toFileStatus((Map<?, ?>)JSON.parse(json));
+ final HdfsFileStatus s2 = JsonUtil.toFileStatus((Map<?, ?>)JSON.parse(json), true);
final FileStatus fs2 = toFileStatus(s2, parent);
System.out.println("s2 = " + s2);
System.out.println("fs2 = " + fs2);