package eu.etaxonomy.taxeditor.httpinvoker;
import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Properties;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.sql.DataSource;
import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
+import org.osgi.framework.Bundle;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.unitils.database.annotations.TestDataSource;
+import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
+import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.taxeditor.remoting.server.CDMServerException;
import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSourceBase;
private boolean serverAlreadyRunning = false;
- private void CDMServer() {}
+ private File dataSourcesFile;
+ private final String dataSourceName;
- public static CDMServer getInstance() {
- if(cdmServer == null) {
- cdmServer = new CDMServer();
+ public CDMServer(String dataSourceName) throws CDMServerException {
+ this.dataSourceName = dataSourceName;
+ Properties prop = new Properties();
+
+ Bundle bundle = Platform.getBundle("eu.etaxonomy.taxeditor.cdmlib");
+ URL serverPropertiesURL = bundle.getEntry("src/test/resources/server.properties");
+
+ try {
+ File serverPropertiesFile = new File(FileLocator.resolve(serverPropertiesURL).toURI());
+ InputStream inputStream = new FileInputStream(serverPropertiesFile);
+
+ if (inputStream != null) {
+ prop.load(inputStream);
+ inputStream.close();
+ }
+ } catch (FileNotFoundException e) {
+ throw new CDMServerException(e);
+ } catch (URISyntaxException e) {
+ throw new CDMServerException(e);
+ } catch (IOException e) {
+ throw new CDMServerException(e);
}
- return cdmServer;
+
+
+
+ if(prop.getProperty("httpPort") != null) {
+ setHttpPort(Integer.valueOf(prop.getProperty("httpPort")));
+ }
+
+ if(prop.getProperty("stopPort") != null) {
+ setStopPort(Integer.valueOf(prop.getProperty("stopPort")));
+ }
+
+ if(prop.getProperty("stopKey") != null) {
+ setStopKey(prop.getProperty("stopKey"));
+ }
+
}
+
+
public String getName() {
return name;
}
public void stop(boolean force) throws Exception {
if(!force) {
- if(!getInstance().isStarted(1)) {
+ if(!cdmServer.isStarted(1)) {
logger.info("[CDM-Server] Server already stopped @ " + host + ":" + httpPort );
return;
}
} catch (MalformedObjectNameException e) {
throw new CDMServerException(e);
}
+ }
+ public void convertEditorToServerConfig() {
+ String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> " + System.lineSeparator() +
+ "<beans xmlns=\"http://www.springframework.org/schema/beans\"" + System.lineSeparator() +
+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + System.lineSeparator() +
+ "xmlns:tx=\"http://www.springframework.org/schema/tx\"" + System.lineSeparator() +
+ "xmlns:context=\"http://www.springframework.org/schema/context\"" + System.lineSeparator() +
+ "xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" + System.lineSeparator() +
+ "http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" + System.lineSeparator() +
+ "http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd" + System.lineSeparator() +
+ ">" + System.lineSeparator() +
+ "<bean id=\"dataSourceProperties\" class=\"eu.etaxonomy.cdm.remote.config.DataSourceProperties\">" + System.lineSeparator() +
+ " <property name=\"propsMap\">" + System.lineSeparator() +
+ " <map/>" + System.lineSeparator() +
+ " </property>" + System.lineSeparator() +
+ "</bean>";
+
+ for(ICdmDataSource dataSource : CdmPersistentDataSource.getAllDataSources()) {
-
+ }
}
}