Author: nextgens
Date: 2008-04-15 06:47:01 +0000 (Tue, 15 Apr 2008)
New Revision: 19344
Modified:
trunk/freenet/src/freenet/keys/FreenetURI.java
Log:
doh
Modified: trunk/freenet/src/freenet/keys/FreenetURI.java
===================================================================
--- trunk/freenet/src/freenet/keys/FreenetURI.java 2008-04-15 06:46:12 UTC
(rev 19343)
+++ trunk/freenet/src/freenet/keys/FreenetURI.java 2008-04-15 06:47:01 UTC
(rev 19344)
@@ -72,25 +72,26 @@
* REDFLAG: Old code has a FieldSet, and the ability to put arbitrary metadata
* in through name/value pairs. Do we want this?
*/
-public class FreenetURI implements Cloneable{
+public class FreenetURI implements Cloneable {
- private final String keyType, docName;
+ private final String keyType, docName;
private final String[] metaStr;
- private final byte[] routingKey, cryptoKey, extra;
+ private final byte[] routingKey, cryptoKey, extra;
private final long suggestedEdition; // for USKs
private boolean hasHashCode;
private int hashCode;
static final String[] VALID_KEY_TYPES =
- new String[] { "CHK", "SSK", "KSK", "USK" };
-
+ new String[]{"CHK", "SSK", "KSK", "USK"};
+
public int hashCode() {
- if(hasHashCode) return hashCode;
+ if(hasHashCode)
+ return hashCode;
int x = keyType.hashCode();
- if(docName != null) x ^= docName.hashCode();
- if(metaStr != null) {
- for(int i=0;i<metaStr.length;i++)
+ if(docName != null)
+ x ^= docName.hashCode();
+ if(metaStr != null)
+ for(int i = 0; i < metaStr.length; i++)
x ^= metaStr[i].hashCode();
- }
if(routingKey != null)
x ^= Fields.hashCode(routingKey);
if(cryptoKey != null)
@@ -108,21 +109,32 @@
if(!(o instanceof FreenetURI))
return false;
else {
- FreenetURI f = (FreenetURI)o;
- if(!keyType.equals(f.keyType)) return false;
- if(keyType.equals("USK")) {
- if(!(suggestedEdition == f.suggestedEdition))
return false;
- }
- if((docName == null) ^ (f.docName == null)) return
false;
- if((metaStr == null) ^ (f.metaStr == null)) return
false;
- if((routingKey == null) ^ (f.routingKey == null))
return false;
- if((cryptoKey == null) ^ (f.cryptoKey == null)) return
false;
- if((extra == null) ^ (f.extra == null)) return false;
- if((docName != null) && !docName.equals(f.docName))
return false;
- if((metaStr != null) && !Arrays.equals(metaStr,
f.metaStr)) return false;
- if((routingKey != null) && !Arrays.equals(routingKey,
f.routingKey)) return false;
- if((cryptoKey != null) && !Arrays.equals(cryptoKey,
f.cryptoKey)) return false;
- if((extra != null) && !Arrays.equals(extra, f.extra))
return false;
+ FreenetURI f = (FreenetURI) o;
+ if(!keyType.equals(f.keyType))
+ return false;
+ if(keyType.equals("USK"))
+ if(!(suggestedEdition == f.suggestedEdition))
+ return false;
+ if((docName == null) ^ (f.docName == null))
+ return false;
+ if((metaStr == null) ^ (f.metaStr == null))
+ return false;
+ if((routingKey == null) ^ (f.routingKey == null))
+ return false;
+ if((cryptoKey == null) ^ (f.cryptoKey == null))
+ return false;
+ if((extra == null) ^ (f.extra == null))
+ return false;
+ if((docName != null) && !docName.equals(f.docName))
+ return false;
+ if((metaStr != null) && !Arrays.equals(metaStr,
f.metaStr))
+ return false;
+ if((routingKey != null) && !Arrays.equals(routingKey,
f.routingKey))
+ return false;
+ if((cryptoKey != null) && !Arrays.equals(cryptoKey,
f.cryptoKey))
+ return false;
+ if((extra != null) && !Arrays.equals(extra, f.extra))
+ return false;
return true;
}
}
@@ -130,39 +142,35 @@
public final Object clone() {
return new FreenetURI(this);
}
-
+
public FreenetURI(FreenetURI uri) {
keyType = uri.keyType;
docName = uri.docName;
metaStr = new String[uri.metaStr.length];
- System.arraycopy(uri.metaStr, 0, metaStr, 0, metaStr.length);
- if(uri.routingKey != null) {
+ System.arraycopy(uri.metaStr, 0, metaStr, 0, metaStr.length);
+ if(uri.routingKey != null) {
routingKey = new byte[uri.routingKey.length];
System.arraycopy(uri.routingKey, 0, routingKey, 0,
routingKey.length);
- } else {
+ } else
routingKey = null;
- }
if(uri.cryptoKey != null) {
cryptoKey = new byte[uri.cryptoKey.length];
System.arraycopy(uri.cryptoKey, 0, cryptoKey, 0,
cryptoKey.length);
- } else {
+ } else
cryptoKey = null;
- }
if(uri.extra != null) {
extra = new byte[uri.extra.length];
System.arraycopy(uri.extra, 0, extra, 0, extra.length);
- } else {
+ } else
extra = null;
- }
this.suggestedEdition = uri.suggestedEdition;
}
-
+
public FreenetURI(String keyType, String docName) {
this(keyType, docName, (String[]) null, null, null, null);
}
+ public static final FreenetURI EMPTY_CHK_URI = new FreenetURI("CHK",
null, null, null, null, null);
- public static final FreenetURI EMPTY_CHK_URI = new FreenetURI("CHK",
null, null, null, null, null);
-
public FreenetURI(
String keyType,
String docName,
@@ -180,7 +188,7 @@
this(
keyType,
docName,
- (metaStr == null ? (String[]) null : new String[] {
metaStr }),
+ (metaStr == null ? (String[]) null : new
String[]{metaStr}),
routingKey,
cryptoKey,
null);
@@ -202,97 +210,99 @@
}
public FreenetURI(
- String keyType,
- String docName,
- String[] metaStr,
- byte[] routingKey,
- byte[] cryptoKey, byte[] extra2,
- long suggestedEdition) {
- this.keyType = keyType.trim().toUpperCase();
- this.docName = docName;
- this.metaStr = metaStr;
- this.routingKey = routingKey;
- this.cryptoKey = cryptoKey;
- this.extra = extra2;
- this.suggestedEdition = suggestedEdition;
- }
+ String keyType,
+ String docName,
+ String[] metaStr,
+ byte[] routingKey,
+ byte[] cryptoKey, byte[] extra2,
+ long suggestedEdition) {
+ this.keyType = keyType.trim().toUpperCase();
+ this.docName = docName;
+ this.metaStr = metaStr;
+ this.routingKey = routingKey;
+ this.cryptoKey = cryptoKey;
+ this.extra = extra2;
+ this.suggestedEdition = suggestedEdition;
+ }
public FreenetURI(String URI) throws MalformedURLException {
- if (URI == null) {
+ if(URI == null)
throw new MalformedURLException("No URI specified");
- } else
+ else
URI = URI.trim();
-
- if(URI.startsWith("freenet:")) {
+
+ if(URI.startsWith("freenet:"))
URI = URI.substring("freenet:".length());
+
+ // Strip any leading /
+ while(URI.startsWith("/")) {
+ URI = URI.substring(1);
}
-
- // Strip any leading /
- while(URI.startsWith("/")) URI = URI.substring(1);
-
- if(URI.indexOf('@') < 0 || URI.indexOf('/') < 0) {
+
+ if(URI.indexOf('@') < 0 || URI.indexOf('/') < 0)
// Encoded URL?
try {
- URI=URLDecoder.decode(URI, false);
- } catch (URLEncodedFormatException e) {
+ URI = URLDecoder.decode(URI, false);
+ } catch(URLEncodedFormatException e) {
throw new MalformedURLException("Invalid URI:
no @ or /, or @ or / is escaped but there are invalid escapes");
}
- }
-
+
// Strip http:// prefix
- URI = URI.replaceFirst("^http://[^/]+/+","");
-
+ URI = URI.replaceFirst("^http://[^/]+/+", "");
+
// decode keyType
int atchar = URI.indexOf('@');
- if (atchar == -1) {
- throw new MalformedURLException("There is no @ in that
URI! ("+URI+')');
- } else {
+ if(atchar == -1)
+ throw new MalformedURLException("There is no @ in that
URI! (" + URI + ')');
+ else
keyType = URI.substring(0, atchar).toUpperCase().trim();
- }
URI = URI.substring(atchar + 1);
-
+
boolean validKeyType = false;
- for(int i=0;i<VALID_KEY_TYPES.length;i++) {
- if(keyType.equals(VALID_KEY_TYPES[i])) validKeyType =
true;
+ for(int i = 0; i < VALID_KEY_TYPES.length; i++) {
+ if(keyType.equals(VALID_KEY_TYPES[i]))
+ validKeyType = true;
}
- if(!validKeyType) throw new MalformedURLException("Invalid key
type: "+keyType);
-
+ if(!validKeyType)
+ throw new MalformedURLException("Invalid key type: " +
keyType);
+
// decode metaString
Vector sv = null;
int slash2;
sv = new Vector();
- while ((slash2 = URI.lastIndexOf("/")) != -1) {
+ while((slash2 = URI.lastIndexOf("/")) != -1) {
String s;
try {
s = URLDecoder.decode(URI.substring(slash2 +
"/".length()), true);
- } catch (URLEncodedFormatException e) {
+ } catch(URLEncodedFormatException e) {
MalformedURLException ue = new
MalformedURLException(e.toString());
ue.initCause(e);
throw ue;
}
- if (s != null)
+ if(s != null)
sv.addElement(s);
URI = URI.substring(0, slash2);
}
-
+
// sv is *backwards*
// this makes for more efficient handling
-
+
boolean isSSK = "SSK".equals(keyType);
boolean isUSK = "USK".equals(keyType);
boolean isKSK = "KSK".equals(keyType);
-
+
if(isSSK || isUSK) {
-
+
if(sv.isEmpty())
- throw new MalformedURLException("No docname for
"+keyType);
- docName = (String) sv.remove(sv.size()-1);
+ throw new MalformedURLException("No docname for
" + keyType);
+ docName = (String) sv.remove(sv.size() - 1);
if(isUSK) {
- if(sv.isEmpty()) throw new
MalformedURLException("No suggested edition number for USK");
+ if(sv.isEmpty())
+ throw new MalformedURLException("No
suggested edition number for USK");
try {
- suggestedEdition =
Long.parseLong((String)sv.remove(sv.size()-1));
- } catch (NumberFormatException e) {
- MalformedURLException e1 = new
MalformedURLException("Invalid suggested edition: "+e);
+ suggestedEdition =
Long.parseLong((String) sv.remove(sv.size() - 1));
+ } catch(NumberFormatException e) {
+ MalformedURLException e1 = new
MalformedURLException("Invalid suggested edition: " + e);
e1.initCause(e);
throw e1;
}
@@ -307,38 +317,37 @@
docName = null;
suggestedEdition = -1;
}
-
- if (!sv.isEmpty()) {
+
+ if(!sv.isEmpty()) {
metaStr = new String[sv.size()];
- for (int i = 0; i < metaStr.length; i++) {
+ for(int i = 0; i < metaStr.length; i++) {
metaStr[i] = (String)
sv.elementAt(metaStr.length - 1 - i);
- if(metaStr[i] == null) throw new
NullPointerException();
+ if(metaStr[i] == null)
+ throw new NullPointerException();
}
- } else {
+ } else
metaStr = null;
- }
if(isKSK) {
routingKey = extra = cryptoKey = null;
return;
}
-
- // strip 'file extensions' from CHKs
- // added by aum (david at rebirthing.co.nz)
- if ("CHK".equals(keyType)) {
- URI = URI.split("[.]")[0];
- }
+ // strip 'file extensions' from CHKs
+ // added by aum (david at rebirthing.co.nz)
+ if("CHK".equals(keyType))
+ URI = URI.split("[.]")[0];
+
// URI now contains: routingKey[,cryptoKey][,metaInfo]
StringTokenizer st = new StringTokenizer(URI, ",");
try {
- if (st.hasMoreTokens()) {
+ if(st.hasMoreTokens())
routingKey = Base64.decode(st.nextToken());
- } else {
+ else {
routingKey = cryptoKey = extra = null;
return;
}
- if (!st.hasMoreTokens()) {
+ if(!st.hasMoreTokens()) {
cryptoKey = extra = null;
return;
}
@@ -346,13 +355,13 @@
// Can be cryptokey or name-value pair.
String t = st.nextToken();
cryptoKey = Base64.decode(t);
- if (!st.hasMoreTokens()) {
+ if(!st.hasMoreTokens()) {
extra = null;
return;
}
extra = Base64.decode(st.nextToken());
- } catch (IllegalBase64Exception e) {
+ } catch(IllegalBase64Exception e) {
throw new MalformedURLException("Invalid Base64
quantity: " + e);
}
}
@@ -378,18 +387,17 @@
System.out.println("Crypto key : " + k);
System.out.println("Extra : " + e);
System.out.println(
- "Doc name : " + (docName == null ? "none" : docName));
+ "Doc name : " + (docName == null ? "none" : docName));
System.out.print("Meta strings: ");
- if (metaStr == null) {
+ if(metaStr == null)
System.err.println("none");
- } else
- for (int i = 0; i < metaStr.length; i++) {
+ else
+ for(int i = 0; i < metaStr.length; i++) {
System.err.print(metaStr[i]);
- if (i == metaStr.length - 1) {
+ if(i == metaStr.length - 1)
System.err.println();
- } else {
+ else
System.err.print(", ");
- }
}
}
@@ -406,13 +414,13 @@
}
public String lastMetaString() {
- return ((metaStr == null ) || (metaStr.length == 0)) ? null :
metaStr[metaStr.length-1];
+ return ((metaStr == null) || (metaStr.length == 0)) ? null :
metaStr[metaStr.length - 1];
}
-
+
public String[] getAllMetaStrings() {
return metaStr;
}
-
+
public boolean hasMetaStrings() {
return !(metaStr == null || metaStr.length == 0);
}
@@ -435,7 +443,7 @@
public FreenetURI popMetaString() {
String[] newMetaStr = null;
final int metaStrLength = metaStr.length;
- if ((metaStr != null) && (metaStrLength > 1)) {
+ if((metaStr != null) && (metaStrLength > 1)) {
newMetaStr = new String[metaStrLength - 1];
System.arraycopy(metaStr, 1, newMetaStr, 0,
newMetaStr.length);
}
@@ -444,8 +452,9 @@
public FreenetURI dropLastMetaStrings(int i) {
String[] newMetaStr = null;
- if ((metaStr != null) && (metaStr.length > 1)) {
- if(i > metaStr.length) i = metaStr.length;
+ if((metaStr != null) && (metaStr.length > 1)) {
+ if(i > metaStr.length)
+ i = metaStr.length;
newMetaStr = new String[metaStr.length - i];
System.arraycopy(metaStr, 0, newMetaStr, 0,
newMetaStr.length);
}
@@ -457,30 +466,33 @@
*/
public FreenetURI pushMetaString(String name) {
String[] newMetaStr;
- if(name == null) throw new NullPointerException();
+ if(name == null)
+ throw new NullPointerException();
if(metaStr == null)
- newMetaStr = new String[] { name };
+ newMetaStr = new String[]{name};
else {
- newMetaStr = new String[metaStr.length+1];
+ newMetaStr = new String[metaStr.length + 1];
System.arraycopy(metaStr, 0, newMetaStr, 0,
metaStr.length);
newMetaStr[metaStr.length] = name;
}
return setMetaString(newMetaStr);
}
-
+
/**
* Returns a copy of this URI with the those meta strings appended.
*/
public FreenetURI addMetaStrings(String[] strs) {
- if (strs == null)
+ if(strs == null)
return this; // legal noop, since getMetaStrings can
return null
- for(int i=0;i<strs.length;i++) if(strs[i] == null) throw new
NullPointerException("element "+i+" of "+strs.length+" is null");
+ for(int i = 0; i < strs.length; i++)
+ if(strs[i] == null)
+ throw new NullPointerException("element " + i +
" of " + strs.length + " is null");
String[] newMetaStr;
- if (metaStr == null)
+ if(metaStr == null)
return setMetaString(strs);
else {
newMetaStr = new String[metaStr.length + strs.length];
- if (metaStr != null)
+ if(metaStr != null)
System.arraycopy(metaStr, 0, newMetaStr, 0,
metaStr.length);
System.arraycopy(strs, 0, newMetaStr, metaStr.length,
strs.length);
return setMetaString(strs);
@@ -488,9 +500,9 @@
}
public FreenetURI addMetaStrings(LinkedList metaStrings) {
- return addMetaStrings((String[])metaStrings.toArray(new
String[metaStrings.size()]));
+ return addMetaStrings((String[]) metaStrings.toArray(new
String[metaStrings.size()]));
}
-
+
/**
* Returns a copy of this URI with a new Document name set.
*/
@@ -520,67 +532,65 @@
public String toString() {
return toString(false, false);
}
-
+
public String toACIIString() {
return toString(true, true);
}
public String toString(boolean prefix, boolean pureAscii) {
StringBuffer b;
- if (prefix)
+ if(prefix)
b = new StringBuffer("freenet:");
else
b = new StringBuffer();
b.append(keyType).append('@');
- if (!"KSK".equals(keyType)) {
- if (routingKey != null)
+ if(!"KSK".equals(keyType)) {
+ if(routingKey != null)
b.append(Base64.encode(routingKey));
- if (cryptoKey != null)
+ if(cryptoKey != null)
b.append(',').append(Base64.encode(cryptoKey));
- if (extra != null)
- b.append(',').append(Base64.encode(extra));
- if (docName != null)
+ if(extra != null)
+ b.append(',').append(Base64.encode(extra));
+ if(docName != null)
b.append('/');
}
- if (docName != null)
+ if(docName != null)
b.append(URLEncoder.encode(docName, "/", pureAscii));
if(keyType.equals("USK")) {
b.append('/');
b.append(suggestedEdition);
}
- if (metaStr != null) {
- for (int i = 0; i < metaStr.length; i++) {
+ if(metaStr != null)
+ for(int i = 0; i < metaStr.length; i++) {
b.append('/').append(URLEncoder.encode(metaStr[i], "/", pureAscii));
}
- }
return b.toString();
}
-
+
public String toShortString() {
StringBuffer b = new StringBuffer();
-
+
b.append(keyType).append('@');
-
- if (!"KSK".equals(keyType)) {
+
+ if(!"KSK".equals(keyType)) {
b.append("...");
- if (docName != null)
+ if(docName != null)
b.append('/');
}
-
- if (docName != null)
+
+ if(docName != null)
b.append(URLEncoder.encode(docName, "/", false));
if(keyType.equals("USK")) {
b.append('/');
b.append(suggestedEdition);
}
- if (metaStr != null) {
- for (int i = 0; i < metaStr.length; i++) {
+ if(metaStr != null)
+ for(int i = 0; i < metaStr.length; i++) {
b.append('/').append(URLEncoder.encode(metaStr[i], "/", false));
}
- }
return b.toString();
}
@@ -588,39 +598,37 @@
(new FreenetURI(args[0])).decompose();
}
- public byte[] getExtra() {
- return extra;
- }
+ public byte[] getExtra() {
+ return extra;
+ }
public LinkedList listMetaStrings() {
LinkedList l = new LinkedList();
- if(metaStr != null) {
- for(int i=0;i<metaStr.length;i++)
+ if(metaStr != null)
+ for(int i = 0; i < metaStr.length; i++)
l.addLast(metaStr[i]);
- }
return l;
}
-
static final byte CHK = 1;
static final byte SSK = 2;
static final byte KSK = 3;
static final byte USK = 4;
-
+
public static FreenetURI readFullBinaryKeyWithLength(DataInputStream
dis) throws IOException {
int len = dis.readShort();
byte[] buf = new byte[len];
dis.readFully(buf);
if(Logger.shouldLog(Logger.MINOR, FreenetURI.class))
- Logger.minor(FreenetURI.class, "Read "+len+" bytes for
key");
+ Logger.minor(FreenetURI.class, "Read " + len + " bytes
for key");
return fromFullBinaryKey(buf);
}
-
+
public static FreenetURI fromFullBinaryKey(byte[] buf) throws
IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
return readFullBinaryKey(dis);
}
-
+
public static FreenetURI readFullBinaryKey(DataInputStream dis) throws
IOException {
byte type = dis.readByte();
String keyType;
@@ -631,7 +639,7 @@
else if(type == KSK)
keyType = "KSK";
else
- throw new MalformedURLException("Unrecognized type
"+type);
+ throw new MalformedURLException("Unrecognized type " +
type);
byte[] routingKey = null;
byte[] cryptoKey = null;
byte[] extra = null;
@@ -644,19 +652,17 @@
dis.readFully(cryptoKey);
// Number of bytes of extra depends on key type
int extraLen;
- if((type == CHK) || (type == SSK)) {
- extraLen = ClientCHK.EXTRA_LENGTH;
- extra = new byte[extraLen];
- dis.readFully(extra);
- } else
- extra = new byte[0];
+ extraLen = (type == CHK ? ClientCHK.EXTRA_LENGTH :
ClientSSK.EXTRA_LENGTH);
+ extra = new byte[extraLen];
+ dis.readFully(extra);
}
String docName = null;
if(type != CHK)
docName = dis.readUTF();
int count = dis.readInt();
String[] metaStrings = new String[count];
- for(int i=0;i<metaStrings.length;i++) metaStrings[i] =
dis.readUTF();
+ for(int i = 0; i < metaStrings.length; i++)
+ metaStrings[i] = dis.readUTF();
return new FreenetURI(keyType, docName, metaStrings,
routingKey, cryptoKey, extra);
}
@@ -674,10 +680,10 @@
ndos.close();
byte[] data = baos.toByteArray();
if(data.length > Short.MAX_VALUE)
- throw new MalformedURLException("Full key too long:
"+data.length+" - "+this);
- dos.writeShort((short)data.length);
+ throw new MalformedURLException("Full key too long: " +
data.length + " - " + this);
+ dos.writeShort((short) data.length);
if(Logger.shouldLog(Logger.MINOR, FreenetURI.class))
- Logger.minor(this, "Written "+data.length+" bytes");
+ Logger.minor(this, "Written " + data.length + " bytes");
dos.write(data);
}
@@ -689,16 +695,16 @@
* @throws IOException If an error occurred while writing the key.
*/
private void writeFullBinaryKey(DataOutputStream dos) throws
IOException {
- if(keyType.equals("CHK")) {
+ if(keyType.equals("CHK"))
dos.writeByte(CHK);
- } else if(keyType.equals("SSK")) {
+ else if(keyType.equals("SSK"))
dos.writeByte(SSK);
- } else if(keyType.equals("KSK")) {
+ else if(keyType.equals("KSK"))
dos.writeByte(KSK);
- } else if(keyType.equals("USK")) {
+ else if(keyType.equals("USK"))
throw new MalformedURLException("Cannot write USKs as
binary keys");
- } else
- throw new MalformedURLException("Cannot write key of
type "+keyType+" - do not know how");
+ else
+ throw new MalformedURLException("Cannot write key of
type " + keyType + " - do not know how");
if(!keyType.equals("KSK")) {
if(routingKey.length != 32)
throw new MalformedURLException("Routing key
must be of length 32");
@@ -716,7 +722,7 @@
dos.writeUTF(docName);
if(metaStr != null) {
dos.writeInt(metaStr.length);
- for(int i=0;i<metaStr.length;i++)
+ for(int i = 0; i < metaStr.length; i++)
dos.writeUTF(metaStr[i]);
} else
dos.writeInt(0);
@@ -726,41 +732,47 @@
public long getSuggestedEdition() {
if(keyType.equals("USK"))
return suggestedEdition;
- else throw new IllegalArgumentException("Not a USK requesting
suggested edition");
+ else
+ throw new IllegalArgumentException("Not a USK
requesting suggested edition");
}
public String getPreferredFilename() {
boolean logMINOR = Logger.shouldLog(Logger.MINOR, this);
- Logger.minor(this, "Getting preferred filename for "+this);
+ Logger.minor(this, "Getting preferred filename for " + this);
Vector names = new Vector();
if(keyType != null && (keyType.equals("KSK") ||
keyType.equals("SSK") || keyType.equals("USK"))) {
- if(logMINOR) Logger.minor(this, "Adding docName:
"+docName);
+ if(logMINOR)
+ Logger.minor(this, "Adding docName: " +
docName);
names.add(docName);
- if(keyType.equals("USK")) {
+ if(keyType.equals("USK"))
names.add(Long.toString(suggestedEdition));
- }
}
if(metaStr != null)
- for(int i=0;i<metaStr.length;i++) {
- if(logMINOR) Logger.minor(this, "Adding
metaString "+i+": "+metaStr[i]);
+ for(int i = 0; i < metaStr.length; i++) {
+ if(logMINOR)
+ Logger.minor(this, "Adding metaString "
+ i + ": " + metaStr[i]);
names.add(metaStr[i]);
}
StringBuffer out = new StringBuffer();
- for(int i=0;i<names.size();i++) {
+ for(int i = 0; i < names.size(); i++) {
String s = (String) names.get(i);
- if(logMINOR) Logger.minor(this, "name "+i+" = "+s);
+ if(logMINOR)
+ Logger.minor(this, "name " + i + " = " + s);
s = FileUtil.sanitize(s);
- if(logMINOR) Logger.minor(this, "Sanitized name "+i+" =
"+s);
+ if(logMINOR)
+ Logger.minor(this, "Sanitized name " + i + " =
" + s);
if(s.length() > 0) {
if(out.length() > 0)
out.append('-');
out.append(s);
}
}
- if(logMINOR) Logger.minor(this, "out = "+out.toString());
+ if(logMINOR)
+ Logger.minor(this, "out = " + out.toString());
if(out.length() == 0) {
if(routingKey != null) {
- if(logMINOR) Logger.minor(this, "Returning
base64 encoded routing key");
+ if(logMINOR)
+ Logger.minor(this, "Returning base64
encoded routing key");
return Base64.encode(routingKey);
}
return "unknown";
@@ -770,44 +782,46 @@
public FreenetURI setSuggestedEdition(long newEdition) {
return new FreenetURI(
- keyType,
- docName,
- metaStr,
- routingKey,
- cryptoKey,
- extra,
- newEdition);
+ keyType,
+ docName,
+ metaStr,
+ routingKey,
+ cryptoKey,
+ extra,
+ newEdition);
}
public FreenetURI setKeyType(String newKeyType) {
return new FreenetURI(
- newKeyType,
- docName,
- metaStr,
- routingKey,
- cryptoKey,
- extra,
- suggestedEdition);
+ newKeyType,
+ docName,
+ metaStr,
+ routingKey,
+ cryptoKey,
+ extra,
+ suggestedEdition);
}
-
+
public FreenetURI setRoutingKey(byte[] newRoutingKey) {
return new FreenetURI(
- keyType,
- docName,
- metaStr,
- newRoutingKey,
- cryptoKey,
- extra,
- suggestedEdition);
+ keyType,
+ docName,
+ metaStr,
+ newRoutingKey,
+ cryptoKey,
+ extra,
+ suggestedEdition);
}
public void checkInsertURI() throws InsertException {
if(metaStr != null && metaStr.length > 0)
- throw new
InsertException(InsertException.META_STRINGS_NOT_SUPPORTED,this);
+ throw new
InsertException(InsertException.META_STRINGS_NOT_SUPPORTED, this);
}
-
- public static void checkInsertURI(FreenetURI uri) throws
InsertException { uri.checkInsertURI(); }
+ public static void checkInsertURI(FreenetURI uri) throws
InsertException {
+ uri.checkInsertURI();
+ }
+
public URI toRelativeURI() throws URISyntaxException {
// Single-argument constructor used because it preserves
encoded /'es in path.
// Hence we can have slashes, question marks etc in the path,
but they are encoded.
@@ -817,5 +831,4 @@
public URI toURI(String basePath) throws URISyntaxException {
return new URI(basePath + toString(false, false));
}
-
}