From 068eb927107503059eb6b9e99b7aa7447d7e5bb4 Mon Sep 17 00:00:00 2001 From: Andrew Bayer Date: Wed, 16 Jun 2010 15:49:49 -0700 Subject: [PATCH] Make ObjectId, RefSpec, RemoteConfig, URIish serializable Modifications to various classes in order to allow serialization for use of JGit in Hudson's git plugin. Change-Id: If088717d3da7483538c00a927e433a74085ae9e6 --- .../src/org/eclipse/jgit/lib/ObjectId.java | 26 +++++++++++++++++-- .../org/eclipse/jgit/transport/RefSpec.java | 7 +++-- .../eclipse/jgit/transport/RemoteConfig.java | 5 +++- .../org/eclipse/jgit/transport/URIish.java | 5 +++- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java index fc43d1953..36a9c7cd3 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectId.java @@ -48,11 +48,17 @@ import org.eclipse.jgit.util.NB; import org.eclipse.jgit.util.RawParseUtils; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; + /** * A SHA-1 abstraction. */ -public class ObjectId extends AnyObjectId { - private static final ObjectId ZEROID; +public class ObjectId extends AnyObjectId implements Serializable { + private static final long serialVersionUID = 1L; + private static final ObjectId ZEROID; private static final String ZEROID_STR; @@ -271,4 +277,20 @@ protected ObjectId(final AnyObjectId src) { public ObjectId toObjectId() { return this; } + + private void writeObject(ObjectOutputStream os) throws IOException { + os.writeInt(w1); + os.writeInt(w2); + os.writeInt(w3); + os.writeInt(w4); + os.writeInt(w5); + } + + private void readObject(ObjectInputStream ois) throws IOException { + w1 = ois.readInt(); + w2 = ois.readInt(); + w3 = ois.readInt(); + w4 = ois.readInt(); + w5 = ois.readInt(); + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java index ca6f01500..1b4d3c615 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RefSpec.java @@ -44,6 +44,7 @@ package org.eclipse.jgit.transport; import java.text.MessageFormat; +import java.io.Serializable; import org.eclipse.jgit.JGitText; import org.eclipse.jgit.lib.Constants; @@ -55,8 +56,10 @@ * A ref specification provides matching support and limited rules to rewrite a * reference in one repository to another reference in another repository. */ -public class RefSpec { - /** +public class RefSpec implements Serializable { + private static final long serialVersionUID = 1L; + + /** * Suffix for wildcard ref spec component, that indicate matching all refs * with specified prefix. */ diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteConfig.java index 28e1cd967..3df56c696 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteConfig.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/RemoteConfig.java @@ -45,6 +45,7 @@ package org.eclipse.jgit.transport; +import java.io.Serializable; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; @@ -60,7 +61,9 @@ * describing how refs should be transferred between this repository and the * remote repository. */ -public class RemoteConfig { +public class RemoteConfig implements Serializable { + private static final long serialVersionUID = 1L; + private static final String SECTION = "remote"; private static final String KEY_URL = "url"; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java index 5939bc2f2..15bd0b1de 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/URIish.java @@ -45,6 +45,7 @@ package org.eclipse.jgit.transport; +import java.io.Serializable; import java.net.URISyntaxException; import java.net.URL; import java.util.regex.Matcher; @@ -59,7 +60,9 @@ * RFC 2396 URI's is that no URI encoding/decoding ever takes place. A space or * any special character is written as-is. */ -public class URIish { +public class URIish implements Serializable { + private static final long serialVersionUID = 1L; + private static final Pattern FULL_URI = Pattern .compile("^(?:([a-z][a-z0-9+-]+)://(?:([^/]+?)(?::([^/]+?))?@)?(?:([^/]+?))?(?::(\\d+))?)?((?:[A-Za-z]:)?/.+)$");