diff --git a/pom.xml b/pom.xml index b839f66..de734e9 100644 --- a/pom.xml +++ b/pom.xml @@ -91,10 +91,11 @@ provided - com.sun.jersey - jersey-client - 1.8 - compile + com.atlassian.plugins.rest + com.atlassian.jersey-library + 6.0.2 + provided + pom org.codehaus.jackson diff --git a/src/main/java/com/englishtown/bitbucket/hook/MirrorRemoteAdmin.java b/src/main/java/com/englishtown/bitbucket/hook/MirrorRemoteAdmin.java index 5235ba4..5ef3629 100644 --- a/src/main/java/com/englishtown/bitbucket/hook/MirrorRemoteAdmin.java +++ b/src/main/java/com/englishtown/bitbucket/hook/MirrorRemoteAdmin.java @@ -25,90 +25,94 @@ public class MirrorRemoteAdmin { private final I18nService i18nService; Client client; - public MirrorRemoteAdmin(PasswordEncryptor passwordEncryptor,I18nService i18nService) { - this.passwordEncryptor=passwordEncryptor; - this.i18nService=i18nService; - ClientConfig config=new DefaultClientConfig(); + + public MirrorRemoteAdmin(PasswordEncryptor passwordEncryptor, I18nService i18nService) { + this.passwordEncryptor = passwordEncryptor; + this.i18nService = i18nService; + ClientConfig config = new DefaultClientConfig(); this.client = Client.create(config); } - private void addToStream(StringOutputHandler outputHandler,String text) { + + private void addToStream(StringOutputHandler outputHandler, String text) { try { outputHandler.process(new ByteArrayInputStream(text.getBytes())); } catch (ProcessException e) { - log.error("Failed to process response: "+e.getMessage()); + log.error("Failed to process response: " + e.getMessage()); } } + public void delete(MirrorSettings settings, Repository repository, StringOutputHandler outputHandler) { String plainPassword = passwordEncryptor.decrypt(settings.password); String plainPrivateToken = passwordEncryptor.decrypt(settings.privateToken); - PasswordHandler passwordHandler = new PasswordHandler(plainPassword,plainPrivateToken, + PasswordHandler passwordHandler = new PasswordHandler(plainPassword, plainPrivateToken, new GitCommandExitHandler(i18nService, repository)); - RuntimeException e=null; + RuntimeException e = null; try { delete(settings, repository, passwordHandler); } catch (RuntimeException deleteException) { - e=deleteException; + e = deleteException; } - addToStream(outputHandler,passwordHandler.getOutput()); - if(e!=null) { + addToStream(outputHandler, passwordHandler.getOutput()); + if (e != null) { throw e; } } + private void delete(MirrorSettings settings, Repository repository, PasswordHandler passwordHandler) { ObjectMapper mapper = new ObjectMapper(); String plainPrivateToken = passwordEncryptor.decrypt(settings.privateToken); - if(settings.restApiURL.isEmpty()) { - log.error("Remote REST Api URL not configured for "+ repository.getName()); + if (settings.restApiURL.isEmpty()) { + log.error("Remote REST Api URL not configured for " + repository.getName()); return; } WebResource webResource = client - .resource(settings.restApiURL+"/api/v4/projects") - .queryParam("search",repository.getName()); - if(!settings.privateToken.isEmpty()) { + .resource(settings.restApiURL + "/api/v4/projects") + .queryParam("search", repository.getName()); + if (!settings.privateToken.isEmpty()) { - webResource=webResource.queryParam("private_token", plainPrivateToken); + webResource = webResource.queryParam("private_token", plainPrivateToken); } ClientResponse response = webResource.accept(MediaType.APPLICATION_JSON) .get(ClientResponse.class); if (response.getStatus() != 200) { - addToStream(passwordHandler,response.toString()); + addToStream(passwordHandler, response.toString()); throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); } JsonNode output; try { output = mapper.readTree(response.getEntityInputStream()); - } catch (IOException e){ - addToStream(passwordHandler,e.toString()); - throw new RuntimeException("Failed : Invalid response data from "+ settings.restApiURL + " : " + e.getMessage()); + } catch (IOException e) { + addToStream(passwordHandler, e.toString()); + throw new RuntimeException("Failed : Invalid response data from " + settings.restApiURL + " : " + e.getMessage()); } - Integer repoId=null; - for(JsonNode project: output) { - if(project.get("path_with_namespace").asText().equals(repository.getProject().getKey() +"/"+repository.getName())) { - repoId= project.get("id").asInt(); + Integer repoId = null; + for (JsonNode project : output) { + if (project.get("path_with_namespace").asText().equals(repository.getProject().getKey() + "/" + repository.getName())) { + repoId = project.get("id").asInt(); break; } } - if(repoId == null) { + if (repoId == null) { addToStream(passwordHandler, response.toString()); throw new RuntimeException("Remote repository not found"); } webResource = client - .resource(settings.restApiURL+"/api/v4/projects/"+repoId); - if(!settings.privateToken.isEmpty()) { - webResource=webResource.queryParam("private_token", plainPrivateToken); + .resource(settings.restApiURL + "/api/v4/projects/" + repoId); + if (!settings.privateToken.isEmpty()) { + webResource = webResource.queryParam("private_token", plainPrivateToken); } response = webResource.accept(MediaType.APPLICATION_JSON) .delete(ClientResponse.class); if (response.getStatus() != 202) { - addToStream(passwordHandler,response.toString()); + addToStream(passwordHandler, response.toString()); throw new RuntimeException("Failed : HTTP error code : " + response.getStatus()); } - addToStream(passwordHandler,response.toString()); + addToStream(passwordHandler, response.toString()); } } diff --git a/src/main/java/com/englishtown/bitbucket/hook/MirrorRepositoryHook.java b/src/main/java/com/englishtown/bitbucket/hook/MirrorRepositoryHook.java index 85b9e6e..a58ae67 100644 --- a/src/main/java/com/englishtown/bitbucket/hook/MirrorRepositoryHook.java +++ b/src/main/java/com/englishtown/bitbucket/hook/MirrorRepositoryHook.java @@ -11,7 +11,6 @@ import com.atlassian.bitbucket.i18n.I18nService; import com.atlassian.bitbucket.project.Project; import com.atlassian.bitbucket.repository.Repository; import com.atlassian.bitbucket.scm.git.GitScm; -import com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler; import com.atlassian.bitbucket.scope.ProjectScope; import com.atlassian.bitbucket.scope.RepositoryScope; import com.atlassian.bitbucket.scope.Scope;