*/
package eu.etaxonomy.taxeditor.httpinvoker;
+import java.io.File;
import java.io.InputStream;
import java.lang.reflect.Field;
+import java.net.URL;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Platform;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.osgi.framework.Bundle;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
public static final Resource SERVER_PROPERTIES_FILE =
new ClassPathResource("server.properties");
+ public static final Resource EDITOR_DATASOURCES_FILE =
+ new ClassPathResource(".cdmLibrary/writableResources/cdm.datasources.xml");
+
private static CdmApplicationRemoteController remoteApplicationController;
private static ICdmRemoteSource cdmRemoteSource;
private static CdmPersistentRemoteSource remotePersistentSource;
private final static String DEFAULT_USER = "admin";
private final static String DEFAULT_PASSWORD = "00000";
+ private static String userHomeKey = "user.home";
+
private static String user = DEFAULT_USER;
private static String password = DEFAULT_PASSWORD;
@BeforeClass
public static void initializeBaseRemotingTest() {
+
//NOTE: Run this the cdmTest H2 DB whenever it needs to be
- // recreated e.g. after a model change
- DatabaseUnitils.disableConstraints();
+ // recreated e.g. after a model change
+ DatabaseUnitils.disableConstraints();
+ try {
+ String userHomeDirPath;
+ Bundle bundle = Platform.getBundle("eu.etaxonomy.taxeditor.test");
+ // if bundle is null then we are running as junit test in eclipse
+ if(bundle == null) {
+ userHomeDirPath = EDITOR_DATASOURCES_FILE.getFile().getParentFile().getParentFile().getParent();
+ } else {
+ // ... else we are running in maven which requires loading the dir via the
+ // classpath bundle
+ URL userHomeDirURL = bundle.getEntry("src/test/resources");
+ File userHomeDir = new File(FileLocator.resolve(userHomeDirURL).toURI());
+ userHomeDirPath = userHomeDir.getAbsolutePath();
+ }
- useManagedServer = (System.getProperty("use.managed.server") == null) ? useManagedServer : Boolean.valueOf(System.getProperty("use.managed.server"));
- if(useManagedServer) {
- try {
- CDMServer cdmServer = CDMServer.getInstance();
- Properties prop = new Properties();
- InputStream inputStream = SERVER_PROPERTIES_FILE.getInputStream();
- if (inputStream != null) {
- prop.load(inputStream);
- }
+ logger.info("Setting user.home to " + userHomeDirPath);
+ System.setProperty(userHomeKey, userHomeDirPath);
- if(prop.getProperty("httpPort") != null) {
- cdmServer.setHttpPort(Integer.valueOf(prop.getProperty("httpPort")));
- }
+ CDMServer cdmServer = CDMServer.getInstance();
- if(prop.getProperty("stopPort") != null) {
- cdmServer.setStopPort(Integer.valueOf(prop.getProperty("stopPort")));
- }
- if(prop.getProperty("stopKey") != null) {
- cdmServer.setStopKey(prop.getProperty("stopKey"));
- }
+ Properties prop = new Properties();
+ InputStream inputStream = SERVER_PROPERTIES_FILE.getInputStream();
- if(prop.getProperty("user") != null) {
- user = prop.getProperty("user");
- }
+ if (inputStream != null) {
+ prop.load(inputStream);
+ inputStream.close();
+ }
- if(prop.getProperty("password") != null) {
- password = prop.getProperty("password");
- }
+ if(prop.getProperty("httpPort") != null) {
+ cdmServer.setHttpPort(Integer.valueOf(prop.getProperty("httpPort")));
+ }
- cdmServer.start();
- } catch (Exception e) {
- e.printStackTrace();
- Assert.fail("Server failed to start. Reason : " + e.getMessage());
+ if(prop.getProperty("stopPort") != null) {
+ cdmServer.setStopPort(Integer.valueOf(prop.getProperty("stopPort")));
}
- initializeController(CDMServer.getInstance().getName(),
- CDMServer.getInstance().getHost(),
- CDMServer.getInstance().getPort(),
- CDMServer.getInstance().getContextPath(),
- NomenclaturalCode.ICNAFP,
- user,
- password);
- }
+ if(prop.getProperty("stopKey") != null) {
+ cdmServer.setStopKey(prop.getProperty("stopKey"));
+ }
+
+ if(prop.getProperty("user") != null) {
+ user = prop.getProperty("user");
+ }
+ if(prop.getProperty("password") != null) {
+ password = prop.getProperty("password");
+ }
+ cdmServer.start();
+ initializeController(CDMServer.getInstance().getName(),
+ CDMServer.getInstance().getHost(),
+ CDMServer.getInstance().getPort(),
+ CDMServer.getInstance().getContextPath(),
+ NomenclaturalCode.ICNAFP,
+ user,
+ password);
+ } catch (Exception e) {
+ e.printStackTrace();
+ // Assert.fail("Server failed to start. Reason : " + e.getMessage());
+ }
}
@Test
public void disableConstraints() {
- // To be run on the src/test/resources/h2/cdmTest h2 db after
- // updating the unitils.properties 'database.url' property
- DatabaseUnitils.disableConstraints();
+ // To be run on the src/test/resources/h2/cdmTest h2 db after
+ // updating the unitils.properties 'database.url' property
+ DatabaseUnitils.disableConstraints();
}
}
protected static ICdmEntitySessionManager getCdmEntitySessionManager() {
- return cdmEntitySessionManager;
+ return cdmEntitySessionManager;
}
protected static CdmEntitySession getSession(ICdmEntitySessionEnabled sessionOwner) {
- Map<ICdmEntitySessionEnabled, CdmEntitySession> ownerSessionMap =
- (Map<ICdmEntitySessionEnabled, CdmEntitySession>) getFieldValueViaReflection(cdmEntitySessionManager, "ownerSessionMap");
- return ownerSessionMap.get(sessionOwner);
+ Map<ICdmEntitySessionEnabled, CdmEntitySession> ownerSessionMap =
+ (Map<ICdmEntitySessionEnabled, CdmEntitySession>) getFieldValueViaReflection(cdmEntitySessionManager, "ownerSessionMap");
+ return ownerSessionMap.get(sessionOwner);
}
protected static CdmTransientEntityCacher getActiveSession() {
- return (CdmTransientEntityCacher) getFieldValueViaReflection(cdmEntitySessionManager, "activeSession");
+ return (CdmTransientEntityCacher) getFieldValueViaReflection(cdmEntitySessionManager, "activeSession");
}
protected static CdmTransientEntityCacher getCacher(ICdmEntitySessionEnabled sessionOwner) {
- return (CdmTransientEntityCacher) getFieldValueViaReflection(getSession(sessionOwner), "cdmTransientEntityCacher");
+ return (CdmTransientEntityCacher) getFieldValueViaReflection(getSession(sessionOwner), "cdmTransientEntityCacher");
}
@AfterClass