Browse Source

Fix dependency to jersey-client library

pull/76/head
Uldis Ansmits 5 years ago
parent
commit
960f27f3d4
  1. 9
      pom.xml
  2. 68
      src/main/java/com/englishtown/bitbucket/hook/MirrorRemoteAdmin.java
  3. 1
      src/main/java/com/englishtown/bitbucket/hook/MirrorRepositoryHook.java

9
pom.xml

@ -91,10 +91,11 @@
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
<scope>compile</scope>
<groupId>com.atlassian.plugins.rest</groupId>
<artifactId>com.atlassian.jersey-library</artifactId>
<version>6.0.2</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>

68
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());
}
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();
} 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();
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());
}
}

1
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;

Loading…
Cancel
Save