diff --git a/pom.xml b/pom.xml
index f438ea0..5eb6c0a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
org.gcube.dataAnalysis
dataminer-pool-manager
war
- 2.4.0-SNAPSHOT
+ 2.5.0-SNAPSHOT
dataminer-pool-manager
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java
index da357ca..c65ef9a 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ClientConfigurationCache.java
@@ -5,33 +5,35 @@ import static org.gcube.resources.discovery.icclient.ICFactory.queryFor;
import java.util.Date;
import java.util.HashMap;
+import java.util.Iterator;
***REMOVED***
import java.util.Map;
import org.gcube.common.resources.gcore.GenericResource;
import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.ConfigurationImpl.CONFIGURATIONS;
-import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.ConfigurationImpl.REPOSITORIES;
import org.gcube.dataanalysis.dataminer.poolmanager.clients.configurations.AbstractConfiguration;
import org.gcube.resources.discovery.client.api.DiscoveryClient;
import org.gcube.resources.discovery.client.queries.api.SimpleQuery;
+***REMOVED***
+***REMOVED***
public class ClientConfigurationCache
{
- private Map repositories;
-
+***REMOVED***
+ private SVNRepository svnRepository;
private Map configurations;
-
- private Map repoTimeouts,
- configurationsTimeouts;
+ private long svnRepositoryTimeout;
+ private Map configurationsTimeouts;
private final long duration = 120000; ***REMOVED***2 minutes
- public ClientConfigurationCache ()
+ ClientConfigurationCache ()
{
- this.repositories = new HashMap<>();
+ this.logger = LoggerFactory.getLogger(ClientConfigurationCache.class);
+ this.svnRepository = null;
this.configurations = new HashMap<>();
- this.repoTimeouts = new HashMap<>();
+ this.svnRepositoryTimeout = 0;
this.configurationsTimeouts = new HashMap<>();
***REMOVED***
@@ -50,40 +52,69 @@ public class ClientConfigurationCache
***REMOVED***
- public String getRepository (REPOSITORIES repository)
+ public SVNRepository getSVNRepository ()
{
- Long time = this.repoTimeouts.get(repository);
long currentTime = new Date().getTime();
- if (time == null || currentTime > time+this.duration)
+ if (this.svnRepositoryTimeout == 0 || currentTime > this.svnRepositoryTimeout+this.duration)
{
- this.repositories.put(repository.toString(), getRepository (repository.toString()));
- this.repoTimeouts.put(repository.toString(), currentTime);
+ this.svnRepository = queryForRepository();
+ this.svnRepositoryTimeout = currentTime;
***REMOVED***
- return this.repositories.get(repository.toString());
+ return this.svnRepository;
***REMOVED***
- private String getRepository(String type) {
-
-
- String ghost = "";
+ private SVNRepository queryForRepository()
+ {
SimpleQuery query = queryFor(GenericResource.class);
query.addCondition("$resource/Profile/SecondaryType/text() eq 'DMPMConfigurator'").setResult("$resource");
DiscoveryClient client = clientFor(GenericResource.class);
List ds = client.submit(query);
- for (GenericResource a : ds) {
- ghost = a.profile().body().getElementsByTagName(type).item(0).getTextContent();
+ Iterator resourcesIterator = ds.iterator();
+ SVNRepository response = null;
+
+ while (resourcesIterator.hasNext() && response == null)
+ {
+ GenericResource resource = resourcesIterator.next();
+ String repositoryURL = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_URL).item(0).getTextContent();
+
+ if (repositoryURL != null)
+ {
+
+ String repositoryPath = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_PATH).item(0).getTextContent();
+ String repositoryUsername = null;
+ String repositoryPassword = null;
+
+
+ try
+ {
+ repositoryUsername = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_USERNAME).item(0).getTextContent();
+ repositoryPassword = resource.profile().body().getElementsByTagName(SVNRepository.REPOSITORY_PASSWORD).item(0).getTextContent();
+
+ if (repositoryUsername != null && repositoryUsername.trim() == "") repositoryUsername = null;
+
+ if (repositoryPassword != null && repositoryPassword.trim() == "") repositoryPassword = null;
+
+ this.logger.debug("Repository username "+repositoryUsername);
+ this.logger.debug("Repository password "+repositoryPassword);
+
+ ***REMOVED*** catch (Exception e)
+ {
+ this.logger.debug("SVN Username and password not present");
+ ***REMOVED***
+
+ this.logger.debug("SVN Repository URL: "+repositoryURL);
+ this.logger.debug("SVN Repository path: "+repositoryPath);
+
+ response = new SVNRepository(repositoryURL, repositoryPath,repositoryUsername, repositoryPassword);
+
+ ***REMOVED***
***REMOVED***
-
-
-
- return ghost.trim ();
-
- ***REMOVED*** TODO Auto-generated method stub
-
+
+ return response;
***REMOVED***
private AbstractConfiguration getConfiguration (AbstractConfiguration type)
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java
index fba4107..f2ed60e 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/Configuration.java
@@ -27,9 +27,7 @@ public interface Configuration {
public String getSVNWCDepsList();
- public String getSVNRepository();
-
- public String getSVNMainAlgoRepo();
+ public SVNRepository getSVNRepository();
public String getGhostAlgoDirectory();
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java
index 092e568..e679a5d 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/ConfigurationImpl.java
@@ -30,21 +30,21 @@ public class ConfigurationImpl implements Configuration {
***REMOVED***
- enum REPOSITORIES {
- REPO ("svn.repository"),
- MAIN_ALGO ("svn.algo.main.repo");
-
- private String type;
-
- private REPOSITORIES(String type) {
- this.type = type;
- ***REMOVED***
-
- @Override
- public String toString() {
- return this.type;
- ***REMOVED***
-***REMOVED***
+***REMOVED*** enum REPOSITORIES {
+***REMOVED*** REPO ("svn.repository"),
+***REMOVED*** MAIN_ALGO ("svn.algo.main.repo");
+***REMOVED***
+***REMOVED*** private String type;
+***REMOVED***
+***REMOVED*** private REPOSITORIES(String type) {
+***REMOVED*** this.type = type;
+***REMOVED*** ***REMOVED***
+***REMOVED***
+***REMOVED*** @Override
+***REMOVED*** public String toString() {
+***REMOVED*** return this.type;
+***REMOVED*** ***REMOVED***
+***REMOVED******REMOVED***
private CONFIGURATIONS type;
@@ -129,17 +129,12 @@ public class ConfigurationImpl implements Configuration {
***REMOVED***
@Override
- public String getSVNRepository()
+ public SVNRepository getSVNRepository()
{
- return this.cache.getRepository(REPOSITORIES.REPO);
+ return this.cache.getSVNRepository();
***REMOVED***
- @Override
- public String getSVNMainAlgoRepo() {
-
- return this.cache.getRepository(REPOSITORIES.MAIN_ALGO);
-***REMOVED***
@Override
public String getGhostAlgoDirectory() {
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java
index f97a4a5..650ab5c 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/DMPMClientConfiguratorManager.java
@@ -106,7 +106,7 @@ public class DMPMClientConfiguratorManager
System.out.println("RESULT 1"+a.getStagingConfiguration().getSVNCRANDepsList());
System.out.println("RESULT 2"+a.getProductionConfiguration().getRepository());
- System.out.println("RESULT 3"+a.getStagingConfiguration().getSVNMainAlgoRepo());
+ System.out.println("RESULT 3"+a.getStagingConfiguration().getSVNRepository().getPath());
***REMOVED***System.out.println(a.getRepo());
***REMOVED***System.out.println(a.getAlgoRepo());
***REMOVED***System.out.println(a.getSVNRepo());
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/SVNRepository.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/SVNRepository.java
new file mode 100755
index 0000000..f7ef1a6
--- /dev/null
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configuration/SVNRepository.java
@@ -0,0 +1,53 @@
+package org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration;
+
+public class SVNRepository
+{
+
+ static final String REPOSITORY_URL = "svn.repository",
+ REPOSITORY_PATH = "svn.algo.main.repo",
+ REPOSITORY_USERNAME = "svn.repository.username",
+ REPOSITORY_PASSWORD = "svn.repository.password";
+
+ private String baseUrl,
+ path,
+ username,
+ password;
+
+ SVNRepository(String baseUrl, String path, String username, String password) {
+ this.baseUrl = baseUrl;
+ this.path = path;
+ this.username = username;
+ this.password = password;
+***REMOVED***
+
+ SVNRepository(String baseUrl, String path) {
+ this (baseUrl, path, null, null);
+***REMOVED***
+
+ public String getUsername() {
+ return username;
+***REMOVED***
+
+ public void setUsername(String username) {
+ this.username = username;
+***REMOVED***
+
+ public String getPassword() {
+ return password;
+***REMOVED***
+
+ public void setPassword(String password) {
+ this.password = password;
+***REMOVED***
+
+ public String getBaseUrl() {
+ return baseUrl;
+***REMOVED***
+
+ public String getPath() {
+ return path;
+***REMOVED***
+
+
+
+***REMOVED***
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java
index 7233e1b..5c8af71 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/clients/configurations/AbstractConfiguration.java
@@ -6,7 +6,7 @@ import javax.xml.bind.annotation.XmlElement;
public abstract class AbstractConfiguration
{
- private String host;
+ private String host;
private String algorithmsList;
private String softwareRepo;
private String ghostRepo;
@@ -19,11 +19,8 @@ public abstract class AbstractConfiguration
private String depsOctave;
private String depsPython;
private String depsWindowsCompiled;
-
-
-
-
-
+
+
@XmlElement (name="host")
public String getHost() {
return host;
@@ -47,7 +44,8 @@ public abstract class AbstractConfiguration
public void setSoftwareRepo(String softwareRepo) {
this.softwareRepo = softwareRepo;
***REMOVED***
-
+
+
@XmlElement (name="ghost-repo")
public String getGhostRepo() {
return ghostRepo;
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java
index d684a12..9ff0239 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/SVNRepositoryManager.java
@@ -1,6 +1,8 @@
package org.gcube.dataanalysis.dataminer.poolmanager.util;
import org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.Configuration;
+***REMOVED***
+***REMOVED***
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
@@ -12,11 +14,27 @@ public class SVNRepositoryManager {
private SVNRepository svnRepository;
private static SVNRepositoryManager instance;
+***REMOVED***
private SVNRepositoryManager (Configuration configuration) throws SVNException
{
- this.svnRepository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(configuration.getSVNRepository()));
- ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager();
+ this.logger = LoggerFactory.getLogger(SVNRepositoryManager.class);
+ org.gcube.dataanalysis.dataminer.poolmanager.clients.configuration.SVNRepository repository = configuration.getSVNRepository();
+ this.svnRepository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(repository.getBaseUrl()));
+ ISVNAuthenticationManager authManager = null;
+
+ if (repository.getUsername() == null)
+ {
+ this.logger.debug("Using SVN default credentials");
+ authManager = SVNWCUtil.createDefaultAuthenticationManager();
+ ***REMOVED***
+ else
+ {
+ this.logger.debug("Using IS credentials");
+ authManager = SVNWCUtil.createDefaultAuthenticationManager(repository.getUsername(),repository.getPassword());
+
+ ***REMOVED***
+
this.svnRepository.setAuthenticationManager(authManager);
***REMOVED***
diff --git a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java
index 2bebd43..680cda6 100755
--- a/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java
+++ b/src/main/java/org/gcube/dataanalysis/dataminer/poolmanager/util/impl/CheckMethodStaging.java
@@ -12,17 +12,6 @@ public class CheckMethodStaging extends CheckMethod{
{
super (DMPMClientConfiguratorManager.getInstance().getStagingConfiguration());
***REMOVED***
-
-
-
-
-
-
-
-
-
-
-
@Override
protected void copyFromDmToSVN(File a) throws Exception{
@@ -30,10 +19,7 @@ public class CheckMethodStaging extends CheckMethod{
***REMOVED***
-
-
-
-
+
public static void main(String[] args) throws Exception {
***REMOVED*** ServiceConfiguration a = new ServiceConfiguration();
***REMOVED*** System.out.println(a.getStagingHost());