From cffa552ba19af61a585c81230cdfca066e995e09 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Wed, 16 Mar 2011 17:12:22 -0700 Subject: [PATCH] renameTo wasn't updating some fields --- src/main/java/org/kohsuke/github/GHPerson.java | 6 +++++- src/main/java/org/kohsuke/github/GHRepository.java | 14 +++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/kohsuke/github/GHPerson.java b/src/main/java/org/kohsuke/github/GHPerson.java index 027c4529c..3e905c05b 100644 --- a/src/main/java/org/kohsuke/github/GHPerson.java +++ b/src/main/java/org/kohsuke/github/GHPerson.java @@ -43,11 +43,15 @@ public abstract class GHPerson { */ protected GHRepository refreshRepository(String name) throws IOException { if (repositories==null) getRepositories(); // fetch the base first - GHRepository r = root.retrieve("/repos/show/" + login + '/' + name, JsonRepository.class).wrap(root); + GHRepository r = fetchRepository(name); repositories.put(name,r); return r; } + protected GHRepository fetchRepository(String name) throws IOException { + return root.retrieve("/repos/show/" + login + '/' + name, JsonRepository.class).wrap(root); + } + public GHRepository getRepository(String name) throws IOException { return getRepositories().get(name); } diff --git a/src/main/java/org/kohsuke/github/GHRepository.java b/src/main/java/org/kohsuke/github/GHRepository.java index 8816fb4d9..5c365c2bf 100644 --- a/src/main/java/org/kohsuke/github/GHRepository.java +++ b/src/main/java/org/kohsuke/github/GHRepository.java @@ -33,6 +33,7 @@ import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; import java.io.IOException; +import java.lang.reflect.Field; import java.net.URL; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -236,7 +237,18 @@ public class GHRepository { try { f.getInputByName("name").setValueAttribute(newName); f.submit((HtmlButton)f.getElementsByTagName("button").get(0)); - name = newName; + + // overwrite fields + final GHRepository r = getOwner().fetchRepository(newName); + for (Field fi : getClass().getDeclaredFields()) { + fi.setAccessible(true); + try { + fi.set(this,fi.get(r)); + } catch (IllegalAccessException e) { + throw (IllegalAccessError)new IllegalAccessError().initCause(e); + } + } + return; } catch (ElementNotFoundException e) { // continue