Author: ab
Date: Thu Jul 14 13:54:16 2005
New Revision: 219097
URL: http://svn.apache.org/viewcvs?rev=219097&view=rev
Log:
Fix issues reported in NUTCH-46. Submitted by Piotr Kosiorowski.
Modified:
lucene/nutch/trunk/src/java/org/apache/nutch/fs/NDFSFileSystem.java
lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/FSDirectory.java
lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFile.java
lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFileInfo.java
Modified: lucene/nutch/trunk/src/java/org/apache/nutch/fs/NDFSFileSystem.java
URL:
http://svn.apache.org/viewcvs/lucene/nutch/trunk/src/java/org/apache/nutch/fs/NDFSFileSystem.java?rev=219097&r1=219096&r2=219097&view=diff
==============================================================================
--- lucene/nutch/trunk/src/java/org/apache/nutch/fs/NDFSFileSystem.java
(original)
+++ lucene/nutch/trunk/src/java/org/apache/nutch/fs/NDFSFileSystem.java Thu Jul
14 13:54:16 2005
@@ -19,7 +19,6 @@
import java.io.*;
import java.net.*;
import java.util.*;
-import java.text.*;
import org.apache.nutch.io.*;
import org.apache.nutch.ndfs.*;
@@ -44,15 +43,18 @@
*/
public NDFSFileSystem(InetSocketAddress namenode) throws IOException {
this.ndfs = new NDFSClient(namenode);
- this.name = namenode.getHostName()+":"+namenode.getPort();
+ this.name = namenode.getHostName() + ":" + namenode.getPort();
}
public String getName() { return name; }
private UTF8 getPath(File file) {
- if (!file.isAbsolute())
- file = new File(HOME_DIR+file.getPath());
- return new UTF8(file.getPath());
+ File f = file;
+ String path = getNDFSPath(file);
+ if (!path.startsWith(NDFSFile.NDFS_FILE_SEPARATOR)) {
+ f = new File(HOME_DIR, path);
+ }
+ return new UTF8(getNDFSPath(f));
}
/**
@@ -289,5 +291,29 @@
*/
public NDFSClient getClient() {
return ndfs;
+ }
+
+ private String getNDFSPath(File f) {
+ List l = new ArrayList();
+ l.add(f.getName());
+ File parent = f.getParentFile();
+ while (parent != null) {
+ l.add(parent.getName());
+ parent = parent.getParentFile();
+ }
+ StringBuffer path = new StringBuffer();
+ String fname = (String) l.get(l.size() - 1);
+ if (!"".equals(fname)) {
+ path.append(fname); //handle not absolute paths
+ } else {
+ if (l.size() == 1)
+ path.append(NDFSFile.NDFS_FILE_SEPARATOR); //handle root path
+ }
+ for (int i = l.size() - 2; i >= 0; i--) {
+ fname = (String) l.get(i);
+ path.append(NDFSFile.NDFS_FILE_SEPARATOR);
+ path.append(fname);
+ }
+ return path.toString();
}
}
Modified: lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/FSDirectory.java
URL:
http://svn.apache.org/viewcvs/lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/FSDirectory.java?rev=219097&r1=219096&r2=219097&view=diff
==============================================================================
--- lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/FSDirectory.java
(original)
+++ lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/FSDirectory.java Thu Jul
14 13:54:16 2005
@@ -118,11 +118,11 @@
/**
*/
- INode addNode(String target, Block blocks[]) {
+ INode addNode(String target, Block blks[]) {
if (getNode(target) != null) {
return null;
} else {
- String parentName = new File(target).getParent();
+ String parentName = NDFSFile.getNDFSParent(target);
if (parentName == null) {
return null;
}
@@ -132,7 +132,7 @@
return null;
} else {
String targetName = new File(target).getName();
- INode newItem = new INode(targetName, parentNode, blocks);
+ INode newItem = new INode(targetName, parentNode, blks);
parentNode.children.add(newItem);
return newItem;
}
@@ -462,7 +462,7 @@
waitForReady();
// Always do an implicit mkdirs for parent directory tree
- mkdirs(new File(src.toString()).getParent());
+ mkdirs(NDFSFile.getNDFSParent(src.toString()));
if (unprotectedAddFile(src, blocks)) {
logEdit(OP_ADD, src, new ArrayWritable(Block.class, blocks));
return true;
@@ -686,13 +686,13 @@
Vector v = new Vector();
// The dir itself
- File f = new File(src);
- v.add(f.getPath());
+ v.add(src);
// All its parents
- while (f.getParent() != null) {
- f = new File(f.getParent());
- v.add(f.getPath());
+ String parent = NDFSFile.getNDFSParent(src);
+ while (parent != null) {
+ v.add(parent);
+ parent = NDFSFile.getNDFSParent(parent);
}
// Now go backwards through list of dirs, creating along
Modified: lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFile.java
URL:
http://svn.apache.org/viewcvs/lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFile.java?rev=219097&r1=219096&r2=219097&view=diff
==============================================================================
--- lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFile.java (original)
+++ lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFile.java Thu Jul 14
13:54:16 2005
@@ -16,8 +16,6 @@
package org.apache.nutch.ndfs;
import java.io.*;
-import java.net.*;
-import java.util.*;
/*****************************************************************
@@ -29,6 +27,9 @@
public class NDFSFile extends File {
NDFSFileInfo info;
+ /** Separator used in NDFS filenames. */
+ public static final String NDFS_FILE_SEPARATOR = "/";
+
/**
*/
public NDFSFile(NDFSFileInfo info) {
@@ -75,5 +76,23 @@
*/
public long getContentsLength() {
return info.getContentsLen();
+ }
+
+ /**
+ * Retrieving parent path from NDFS path string
+ * @param path - NDFS path
+ * @return - parent path of NDFS path, or null if no parent exist.
+ */
+ public static String getNDFSParent(String path) {
+ if (path == null)
+ return null;
+ if (NDFS_FILE_SEPARATOR.equals(path))
+ return null;
+ int index = path.lastIndexOf(NDFS_FILE_SEPARATOR);
+ if (index == -1)
+ return null;
+ if (index == 0)
+ return NDFS_FILE_SEPARATOR;
+ return path.substring(0, index);
}
}
Modified: lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFileInfo.java
URL:
http://svn.apache.org/viewcvs/lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFileInfo.java?rev=219097&r1=219096&r2=219097&view=diff
==============================================================================
--- lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFileInfo.java
(original)
+++ lucene/nutch/trunk/src/java/org/apache/nutch/ndfs/NDFSFileInfo.java Thu Jul
14 13:54:16 2005
@@ -16,10 +16,8 @@
package org.apache.nutch.ndfs;
import org.apache.nutch.io.*;
-import org.apache.nutch.util.*;
import java.io.*;
-import java.util.*;
/******************************************************
* NDFSFileInfo tracks info about remote files, including
@@ -50,7 +48,7 @@
/**
*/
public String getPath() {
- return new File(path.toString()).getPath();
+ return path.toString();
}
/**
@@ -62,7 +60,7 @@
/**
*/
public String getParent() {
- return new File(path.toString()).getParent();
+ return NDFSFile.getNDFSParent(path.toString());
}
/**