Skip to content
Prev Previous commit
Next Next commit
Refactor plugin setting parsing
  • Loading branch information
juhasipo committed Oct 22, 2016
commit a31dc92c9be586d6d8bae9f4a43300db7e75b2ef
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,12 @@
import in.ashwanthkumar.gocd.github.jsonapi.Server;
import in.ashwanthkumar.gocd.github.jsonapi.ServerFactory;
import in.ashwanthkumar.gocd.github.provider.Provider;
import in.ashwanthkumar.gocd.github.settings.general.GeneralPluginSettings;
import in.ashwanthkumar.gocd.github.settings.scm.PluginConfigurationView;
import in.ashwanthkumar.gocd.github.util.*;
import in.ashwanthkumar.gocd.github.util.BranchFilter;
import in.ashwanthkumar.gocd.github.util.GitFactory;
import in.ashwanthkumar.gocd.github.util.GitFolderFactory;
import in.ashwanthkumar.gocd.github.util.JSONUtils;
import in.ashwanthkumar.utils.lang.option.Option;
import org.apache.commons.io.IOUtils;

Expand Down Expand Up @@ -488,17 +492,13 @@ public String responseBody() {
};
}

public PluginSettings getPluginSettings() {
public GeneralPluginSettings getPluginSettings() {
DefaultGoApiRequest request =
new DefaultGoApiRequest(GET_PLUGIN_SETTINGS, "1.0", provider.getPluginId());
request.setRequestBody("{\"plugin-id\": \"" + provider.getPluginId().getExtension() + "\"}");
String response = goApplicationAccessor.submit(request).responseBody();
Map<String, Object> settings = JSONUtils.fromJSON(response, Map.class);

return new PluginSettings(
(String)settings.get("go_api_host"),
(String)settings.get("go_api_username"),
(String)settings.get("go_api_password")
);
return provider.getGeneralConfigurationView().getSettings(settings);
}
}
12 changes: 6 additions & 6 deletions src/main/java/in/ashwanthkumar/gocd/github/jsonapi/Server.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package in.ashwanthkumar.gocd.github.jsonapi;

import com.thoughtworks.go.plugin.api.logging.Logger;
import in.ashwanthkumar.gocd.github.util.PluginSettings;
import in.ashwanthkumar.gocd.github.settings.general.GeneralPluginSettings;

import javax.xml.bind.DatatypeConverter;
import java.io.IOException;
Expand All @@ -15,18 +15,18 @@
public class Server {
private Logger LOG = Logger.getLoggerFor(Server.class);

private PluginSettings settings;
private GeneralPluginSettings settings;
private HttpConnectionUtil httpConnectionUtil;

/**
* Construct a new server object, using credentials from PluginSettings.
*/
public Server(PluginSettings settings) {
public Server(GeneralPluginSettings settings) {
this.settings = settings;
httpConnectionUtil = new HttpConnectionUtil();
}

Server(PluginSettings settings, HttpConnectionUtil httpConnectionUtil) {
Server(GeneralPluginSettings settings, HttpConnectionUtil httpConnectionUtil) {
this.settings = settings;
this.httpConnectionUtil = httpConnectionUtil;
}
Expand All @@ -43,8 +43,8 @@ public <T> T getResourceAs(URL url, Class<T> type)

HttpURLConnection request = httpConnectionUtil.getConnection(normalizedUrl);

final String login = settings.getGoUsername();
final String password = settings.getGoPassword();
final String login = settings.getGoApiUsername();
final String password = settings.getGoApiPassword();
// Add in our HTTP authorization credentials if we have them.
if (!isEmpty(login) && !isEmpty(password)) {
String userpass = login + ":" + password;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package in.ashwanthkumar.gocd.github.jsonapi;

import in.ashwanthkumar.gocd.github.util.PluginSettings;
import in.ashwanthkumar.gocd.github.settings.general.GeneralPluginSettings;

public class ServerFactory {

public Server getServer(PluginSettings settings) {
public Server getServer(GeneralPluginSettings settings) {
return new Server(settings);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package in.ashwanthkumar.gocd.github.provider.gerrit;

import in.ashwanthkumar.gocd.github.settings.general.DefaultGeneralPluginSettings;
import in.ashwanthkumar.gocd.github.settings.general.GeneralPluginConfigurationView;
import in.ashwanthkumar.gocd.github.settings.general.GeneralPluginSettings;
import in.ashwanthkumar.gocd.github.util.FieldFactory;

import java.util.HashMap;
Expand All @@ -27,4 +29,14 @@ public Map<String, Object> fields() {
public boolean hasConfigurationView() {
return true;
}

public GeneralPluginSettings getSettings(Map<String, Object> rawSettings) {
GeneralPluginSettings settings = new DefaultGeneralPluginSettings(
(String)rawSettings.get("go_api_host"),
(String)rawSettings.get("go_api_username"),
(String)rawSettings.get("go_api_password")
);

return settings;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,8 @@ public Map<String, Object> fields() {
public boolean hasConfigurationView() {
return false;
}

public GeneralPluginSettings getSettings(Map<String, Object> rawSettings) {
return new DefaultGeneralPluginSettings();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,32 @@
package in.ashwanthkumar.gocd.github.settings.general;

import in.ashwanthkumar.gocd.github.settings.scm.ScmPluginSettings;
public class DefaultGeneralPluginSettings implements GeneralPluginSettings {

public class DefaultGeneralPluginSettings implements ScmPluginSettings {
private String goApiHost;
private String goApiUsername;
private String goApiPassword;

public DefaultGeneralPluginSettings() {
}

public DefaultGeneralPluginSettings(String goApiHost, String goApiUsername, String goApiPassword) {
this.goApiHost = goApiHost;
this.goApiUsername = goApiUsername;
this.goApiPassword = goApiPassword;
}

@Override
public String getGoApiHost() {
return goApiHost;
}

@Override
public String getGoApiUsername() {
return goApiUsername;
}

@Override
public String getGoApiPassword() {
return goApiPassword;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,10 @@

import in.ashwanthkumar.gocd.github.settings.scm.PluginConfigurationView;

import java.util.Map;

public interface GeneralPluginConfigurationView extends PluginConfigurationView {

GeneralPluginSettings getSettings(Map<String, Object> rawSettings);

}
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
package in.ashwanthkumar.gocd.github.settings.general;

public interface GeneralPluginSettings {

String getGoApiHost();
String getGoApiUsername();
String getGoApiPassword();

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
import in.ashwanthkumar.gocd.github.provider.git.GitProvider;
import in.ashwanthkumar.gocd.github.provider.github.GHUtils;
import in.ashwanthkumar.gocd.github.provider.github.GitHubProvider;
import in.ashwanthkumar.gocd.github.settings.general.GeneralPluginSettings;
import in.ashwanthkumar.gocd.github.util.GitFactory;
import in.ashwanthkumar.gocd.github.util.GitFolderFactory;
import in.ashwanthkumar.gocd.github.util.JSONUtils;
import in.ashwanthkumar.gocd.github.util.PluginSettings;
import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.Before;
Expand Down Expand Up @@ -339,7 +339,7 @@ private ServerFactory mockServerFactory() throws Exception {
status.schedulable = true;
when(server.getPipelineStatus(anyString())).thenReturn(status);

when(serverFactory.getServer(any(PluginSettings.class))).thenReturn(server);
when(serverFactory.getServer(any(GeneralPluginSettings.class))).thenReturn(server);
return serverFactory;
}

Expand Down