Assembled lite version.
Change-Id: I48e60fffd9219a97923e7c388f4f97bcda416d3f
diff --git a/core/pom.xml b/core/pom.xml
new file mode 100644
index 0000000..26765dd
--- /dev/null
+++ b/core/pom.xml
@@ -0,0 +1,449 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>de.ids_mannheim.korap</groupId>
+ <artifactId>Kustvakt-core</artifactId>
+ <version>0.59.8</version>
+
+ <properties>
+ <java.version>1.7</java.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <spring-framework.version>4.3.7.RELEASE</spring-framework.version>
+ <jersey.version>1.19.4</jersey.version>
+ </properties>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>**/*.info</include>
+ <include>**/*.xml</include>
+ <include>**/*.conf</include>
+ <include>**/*.kustvakt</include>
+ <include>**/*.properties</include>
+ <include>**/*.sql</include>
+ </includes>
+ </resource>
+ </resources>
+ <testResources>
+ <testResource>
+ <directory>src/test/resources</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>**/*.prop</include>
+ <include>**/*.xml</include>
+ <include>**/*.conf</include>
+ <include>**/*.info</include>
+ <include>**/*.properties</include>
+ </includes>
+ </testResource>
+ <testResource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ <includes>
+ <include>**/*.info</include>
+ <include>**/*.properties</include>
+ </includes>
+ </testResource>
+ </testResources>
+ <plugins>
+ <!-- Formatter plugin for Eclipse based coding conventions http://maven-java-formatter-plugin.googlecode.com/svn/site/0.4/usage.html -->
+ <plugin>
+ <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
+ <artifactId>maven-java-formatter-plugin</artifactId>
+ <version>0.4</version>
+ <configuration>
+ <configFile>${project.basedir}/Format.xml</configFile>
+ <overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
+ <compilerSource>1.7</compilerSource>
+ <compilerCompliance>1.7</compilerCompliance>
+ <compilerTargetPlatform>1.7</compilerTargetPlatform>
+ </configuration>
+ <!-- <executions> <execution> <goals> <goal>format</goal> </goals> </execution>
+ </executions> -->
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.3</version>
+ <configuration>
+ <compilerVersion>${java.version}</compilerVersion>
+ <source>${java.version}</source>
+ <target>${java.version}</target>
+ </configuration>
+ </plugin>
+
+ <!-- build tests jar, so extensions can use fastjerseytest class to build
+ rest tests -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <version>2.1</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.19.1</version>
+
+ <configuration>
+ <reuseForks>false</reuseForks>
+ <forkCount>2</forkCount>
+ <threadCount>10</threadCount>
+ <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
+
+ <excludes>
+ <exclude>**/*APITest.java</exclude>
+ <exclude>de/ids_mannheim/korap/suites/*.java</exclude>
+ <exclude>**/KustvaktServerTest.java</exclude>
+ <exclude>**/ResourceServiceTest.java</exclude>
+ <exclude>**/ResourceInfoServiceTest.java</exclude>
+ <exclude>**/PolicyServiceTest.java</exclude>
+ </excludes>
+ <includes>
+ <include>de/ids_mannheim/korap/**/*.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>2.1</version>
+ <executions>
+ <!-- option 1 -->
+ <execution>
+ <id>full</id>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <finalName>Kustvakt-${project.version}}-core</finalName>
+ <transformers>
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <mainClass> de.ids_mannheim.korap.web.KustvaktServer </mainClass>
+ </transformer>
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>META-INF/spring.handlers </resource>
+ </transformer>
+ <transformer
+ implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+ <resource>META-INF/spring.schemas </resource>
+ </transformer>
+ </transformers>
+ <!-- Additional configuration. apparently there is a securityException -->
+ <filters>
+ <filter>
+ <artifact>*:*</artifact>
+ <excludes>
+ <exclude>META-INF/*.SF</exclude>
+ <exclude>META-INF/*.DSA </exclude>
+ <exclude>META-INF/*.RSA </exclude>
+ </excludes>
+ </filter>
+ </filters>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-bundle</artifactId>
+ <version>${jersey.version}</version>
+ </dependency>
+ <!--EM: added -->
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-server</artifactId>
+ <version>${jersey.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.jersey.contribs</groupId>
+ <artifactId>jersey-spring</artifactId>
+ <version>${jersey.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-beans</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <!-- EM:done -->
+ <dependency>
+ <groupId>com.sun.jersey.jersey-test-framework</groupId>
+ <artifactId>jersey-test-framework-core</artifactId>
+ <version>${jersey.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.jersey.jersey-test-framework</groupId>
+ <artifactId>jersey-test-framework-grizzly</artifactId>
+ <version>${jersey.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <!-- <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId>
+ <version>1.7.5</version> </dependency> -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.7.5</version>
+ </dependency>
+ <!-- <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId>
+ <version>1.2.17</version> </dependency> <dependency> <groupId>log4j</groupId>
+ <artifactId>apache-log4j-extras</artifactId> <version>1.2.17</version> </dependency> -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ <dependency>
+ <groupId>org.projectlombok</groupId>
+ <artifactId>lombok</artifactId>
+ <version>1.16.6</version>
+ </dependency>
+ <dependency>
+ <groupId>joda-time</groupId>
+ <artifactId>joda-time</artifactId>
+ <version>2.2</version>
+ </dependency>
+ <dependency>
+ <groupId>de.ids_mannheim.korap</groupId>
+ <artifactId>Koral</artifactId>
+ <version>0.27</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.xerial</groupId>
+ <artifactId>sqlite-jdbc</artifactId>
+ <version>3.8.10.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <version>5.1.6</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-dbcp2</artifactId>
+ <version>2.1.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-validator</groupId>
+ <artifactId>commons-validator</artifactId>
+ <version>1.4.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mindrot</groupId>
+ <artifactId>jbcrypt</artifactId>
+ <version>0.3m</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.nimbusds</groupId>
+ <artifactId>nimbus-jose-jwt</artifactId>
+ <version>2.10.1</version>
+ </dependency>
+
+ <dependency>
+ <groupId>de.ids_mannheim.korap</groupId>
+ <artifactId>Krill</artifactId>
+ <version>0.55.9</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.xerial</groupId>
+ <artifactId>sqlite-jdbc</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.reflections</groupId>
+ <artifactId>reflections</artifactId>
+ <version>0.9.9-RC1</version>
+ </dependency>
+
+
+
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-asm</artifactId>
+ <version>3.1.4.RELEASE</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-orm</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <!-- EM: done -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context-support</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-test</artifactId>
+ <version>${spring-framework.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- apparently this order prevents the spring schemas from being overriden
+ in META-INF/spring.schemas, thus must stay like this -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aspects</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+
+ <!-- copied from extension -->
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-jdbc</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-tx</artifactId>
+ <version>${spring-framework.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.flywaydb</groupId>
+ <artifactId>flyway-core</artifactId>
+ <version>4.0</version>
+ </dependency>
+
+ <!-- <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId>
+ <version>2.6.5</version> </dependency> -->
+
+ <dependency>
+ <groupId>org.apache.oltu.oauth2</groupId>
+ <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
+ <version>1.0.0</version>
+ </dependency>
+
+ <!-- end copy -->
+
+ <dependency>
+ <groupId>commons-collections</groupId>
+ <artifactId>commons-collections</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-server</artifactId>
+ <version>8.1.8.v20121106</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.jetty</groupId>
+ <artifactId>jetty-servlet</artifactId>
+ <version>8.1.8.v20121106</version>
+ </dependency>
+ <dependency>
+ <groupId>asm</groupId>
+ <artifactId>asm</artifactId>
+ <version>3.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.novell.ldap</groupId>
+ <artifactId>jldap</artifactId>
+ <version>4.3</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/com.unboundid/unboundid-ldapsdk -->
+ <dependency>
+ <groupId>com.unboundid</groupId>
+ <artifactId>unboundid-ldapsdk</artifactId>
+ <version>3.2.1</version>
+ </dependency>
+
+ <!-- not part of public release <dependency> <groupId>KorAP-graphDB</groupId>
+ <artifactId>KorAP-graphDB</artifactId> <version>1.0-SNAPSHOT</version> <exclusions>
+ <exclusion> <groupId>org.antlr</groupId> <artifactId>antlr4-runtime</artifactId>
+ </exclusion> <exclusion> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId>
+ </exclusion> <exclusion> <groupId>org.glassfish.jersey.containers</groupId>
+ <artifactId>jersey-container-grizzly2-http</artifactId> </exclusion> <exclusion>
+ <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-common</artifactId>
+ </exclusion> <exclusion> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server</artifactId>
+ </exclusion> </exclusions> </dependency> -->
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.3.3</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-ehcache</artifactId>
+ <version>5.1.8.Final</version>
+ </dependency>
+ </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/core/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java b/core/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
index 6c100ab..ae25ae1 100644
--- a/core/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
+++ b/core/src/main/java/de/ids_mannheim/korap/config/KustvaktConfiguration.java
@@ -1,25 +1,27 @@
package de.ids_mannheim.korap.config;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Pattern;
+
+import org.apache.log4j.PropertyConfigurator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.utils.TimeUtils;
import lombok.Getter;
-import org.apache.log4j.PropertyConfigurator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-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.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import java.util.regex.Pattern;
/**
* if configuration class is extended, loadSubTypes method should be
@@ -92,7 +94,10 @@
private String ldapConfig;
-
+ public KustvaktConfiguration (Properties properties) throws IOException {
+ load(properties);
+ }
+
/**
* loading of the properties and mapping to parameter variables
*
@@ -228,9 +233,9 @@
* @param props
* @throws IOException
*/
- public void setProperties (Properties props) throws IOException {
- this.load(props);
- }
+// public void setProperties (Properties props) throws IOException {
+// this.load(props);
+// }
/**
diff --git a/core/src/main/java/de/ids_mannheim/korap/exceptions/DatabaseException.java b/core/src/main/java/de/ids_mannheim/korap/exceptions/DatabaseException.java
index 702bf4b..26190cc 100644
--- a/core/src/main/java/de/ids_mannheim/korap/exceptions/DatabaseException.java
+++ b/core/src/main/java/de/ids_mannheim/korap/exceptions/DatabaseException.java
@@ -11,14 +11,18 @@
public class DatabaseException extends KustvaktException {
private DatabaseException (Object userid, Integer status, String message,
- String args) {
- super(String.valueOf(userid), status, message, args);
+ String args, Exception e) {
+ super(String.valueOf(userid), status, message, args, e);
}
-
public DatabaseException (Object userid, String target, Integer status, String message,
+ String ... args) {
+ this(null, userid, target, status, message);
+ }
+
+ public DatabaseException (Exception e, Object userid, String target, Integer status, String message,
String ... args) {
- this(userid, status, message, Arrays.asList(args).toString());
+ this(userid, status, message, Arrays.asList(args).toString(), e);
AuditRecord record = new AuditRecord(AuditRecord.CATEGORY.DATABASE);
record.setUserid(String.valueOf(userid));
record.setStatus(status);
@@ -29,7 +33,7 @@
public DatabaseException (KustvaktException e, Integer status, String ... args) {
- this(e.getUserid(), e.getStatusCode(), e.getMessage(), e.getEntity());
+ this(e.getUserid(), e.getStatusCode(), e.getMessage(), e.getEntity(), e);
AuditRecord record = AuditRecord.dbRecord(e.getUserid(), status, args);
record.setField_1(e.string());
this.records.addAll(e.getRecords());
diff --git a/core/src/main/java/de/ids_mannheim/korap/exceptions/KustvaktException.java b/core/src/main/java/de/ids_mannheim/korap/exceptions/KustvaktException.java
index bdbe010..696d34f 100644
--- a/core/src/main/java/de/ids_mannheim/korap/exceptions/KustvaktException.java
+++ b/core/src/main/java/de/ids_mannheim/korap/exceptions/KustvaktException.java
@@ -38,10 +38,14 @@
this.userid = String.valueOf(userid);
}
+ public KustvaktException (Object userid, int status, String message,
+ String entity) {
+ this(userid, status, message, entity, null);
+ }
public KustvaktException (Object userid, int status, String message,
- String entity) {
- super(message);
+ String entity, Exception e) {
+ super(message, e);
this.statusCode = status;
this.entity = entity;
this.userid = String.valueOf(userid);
diff --git a/core/src/main/java/de/ids_mannheim/korap/exceptions/WrappedException.java b/core/src/main/java/de/ids_mannheim/korap/exceptions/WrappedException.java
index 3e067a7..534419a 100644
--- a/core/src/main/java/de/ids_mannheim/korap/exceptions/WrappedException.java
+++ b/core/src/main/java/de/ids_mannheim/korap/exceptions/WrappedException.java
@@ -13,13 +13,13 @@
public class WrappedException extends KustvaktException {
private WrappedException (Object userid, Integer status, String message,
- String args) {
- super(String.valueOf(userid), status, message, args);
+ String args, Exception rootCause) {
+ super(String.valueOf(userid), status, message, args, rootCause);
}
public WrappedException (Object userid, Integer status, String ... args) {
- this(userid, status, "", Arrays.asList(args).toString());
+ this(userid, status, "", Arrays.asList(args).toString(), null);
AuditRecord record = AuditRecord.serviceRecord(userid, status, args);
this.records.add(record);
}
@@ -27,7 +27,7 @@
public WrappedException (KustvaktException e, Integer status,
String ... args) {
- this(e.getUserid(), e.getStatusCode(), e.getMessage(), e.getEntity());
+ this(e.getUserid(), e.getStatusCode(), e.getMessage(), e.getEntity(), e);
AuditRecord record = AuditRecord.serviceRecord(e.getUserid(), status,
args);
record.setField_1(e.string());
diff --git a/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java b/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
index 7a3308f..89f9bdd 100644
--- a/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
+++ b/core/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
@@ -49,11 +49,12 @@
this.query_processors = new HashSet<>();
this.failed_task_registration = new HashSet<>();
this.beans = null;
+ this.add(FoundryInject.class);
}
public void defaultRewriteConstraints () {
- this.add(FoundryInject.class);
+// this.add(FoundryInject.class);
//this.add(PublicCollection.class);
this.add(CollectionRewrite.class);
this.add(IdWriter.class);
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java b/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
index 4ef0d7a..92be0ef 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
@@ -30,25 +30,6 @@
}
- public static void main (String[] args) throws Exception {
- KustvaktBaseServer server = new KustvaktBaseServer() {
- @Override
- protected void setup () {}
- };
- kargs = server.readAttributes(args);
-
- if (kargs.config != null)
- BeansFactory.loadFileContext(kargs.config);
- else
- BeansFactory.loadClasspathContext();
-
- kargs.setRootPackages(new String[] { "de.ids_mannheim.korap.web.service.light" });
- rootPackages = "de.ids_mannheim.korap.web.service.light";
-
- server.start();
- }
-
-
protected KustvaktArgs readAttributes (String[] args) {
KustvaktArgs kargs = new KustvaktArgs();
for (int i = 0; i < args.length; i++) {
@@ -94,7 +75,7 @@
ServletContextHandler contextHandler = new ServletContextHandler(
ServletContextHandler.NO_SESSIONS);
contextHandler.setContextPath("/");
- contextHandler.setInitParameter("contextConfigLocation", "classpath:default-config.xml");
+ contextHandler.setInitParameter("contextConfigLocation", "classpath:"+kargs.getConfig());
ServletContextListener listener = new ContextLoaderListener();
contextHandler.addEventListener(listener);
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java b/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java
index eca0a23..3e7095c 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/SearchKrill.java
@@ -5,6 +5,7 @@
import java.io.IOException;
import java.nio.file.Paths;
import java.util.List;
+import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -36,7 +37,7 @@
String i = "/Users/hanl/Projects/prep_corpus";
String klinux10 = "/vol/work/hanl/indices";
private KrillIndex index;
-
+
/**
* Constructor
*/
diff --git a/core/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java b/core/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
index bfd12f9..377efaa 100644
--- a/core/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
+++ b/core/src/main/java/de/ids_mannheim/korap/web/filter/AdminFilter.java
@@ -5,6 +5,8 @@
import javax.ws.rs.ext.Provider;
+import org.springframework.beans.factory.annotation.Autowired;
+
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
import com.sun.jersey.spi.container.ContainerResponseFilter;
@@ -28,8 +30,8 @@
@Provider
public class AdminFilter implements ContainerRequestFilter, ResourceFilter {
- private static AuthenticationManagerIface authManager = BeansFactory.getKustvaktContext()
- .getAuthenticationManager();
+ @Autowired
+ private AuthenticationManagerIface authManager;
@Override
public ContainerRequest filter(ContainerRequest cr) {
diff --git a/core/src/test/java/de/ids_mannheim/korap/config/AppTestConfigBase.java b/core/src/test/java/de/ids_mannheim/korap/config/AppTestConfigBase.java
new file mode 100644
index 0000000..76db69e
--- /dev/null
+++ b/core/src/test/java/de/ids_mannheim/korap/config/AppTestConfigBase.java
@@ -0,0 +1,39 @@
+package de.ids_mannheim.korap.config;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class AppTestConfigBase {
+
+ private static String mainConfigurationFile = "kustvakt-test.conf";
+
+ @Bean(name = ContextHolder.KUSTVAKT_CONFIG)
+ public KustvaktConfiguration getConfig () {
+
+ KustvaktConfiguration c = null;
+
+ InputStream s = ConfigLoader.loadConfigStream(mainConfigurationFile);
+
+ if (s != null){
+ Properties p = new Properties();
+ try {
+ p.load(s);
+ c = new KustvaktConfiguration(p);
+ }
+ catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ else {
+ System.out.println("No properties found!");
+ System.exit(-1);
+ }
+ return c;
+ }
+
+}
diff --git a/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java b/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java
new file mode 100644
index 0000000..d7be3d1
--- /dev/null
+++ b/core/src/test/java/de/ids_mannheim/korap/config/BeanConfigBaseTest.java
@@ -0,0 +1,100 @@
+package de.ids_mannheim.korap.config;
+
+import static org.junit.Assert.assertNotNull;
+
+import org.apache.log4j.Logger;
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.junit.runner.notification.RunNotifier;
+import org.junit.runners.model.InitializationError;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import net.jcip.annotations.NotThreadSafe;
+
+/**
+ * @author hanl
+ * @date 09/03/2016
+ */
+@NotThreadSafe
+@RunWith(BeanConfigBaseTest.SpringExtendedSetupListener.class)
+@ContextConfiguration(classes = AppTestConfigBase.class)
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+public abstract class BeanConfigBaseTest {
+
+ private static Logger jlog = Logger.getLogger(BeanConfigBaseTest.class);
+// @Autowired
+ protected ApplicationContext context;
+
+ @Before
+ public void init () throws Exception {
+ context = new ClassPathXmlApplicationContext("test-default-config.xml");
+ assertNotNull("Application context must not be null!", this.context);
+ jlog.debug("running one-time before init for class "
+ + this.getClass().getSimpleName() + " ...");
+ BeansFactory.setKustvaktContext(getContext());
+ assertNotNull(BeansFactory.getKustvaktContext());
+ initMethod();
+ }
+
+
+ protected abstract ContextHolder getContext ();
+
+
+ public void close () {
+ BeansFactory.closeApplication();
+ }
+
+ public abstract void initMethod () throws KustvaktException;
+
+
+// protected TestHelper helper () {
+// try {
+// return TestHelper.newInstance(this.context);
+// }
+// catch (Exception e) {
+// return null;
+// }
+// }
+
+
+ public static class SpringExtendedSetupListener extends
+ SpringJUnit4ClassRunner {
+
+ private BeanConfigBaseTest instanceSetupListener;
+
+
+ public SpringExtendedSetupListener (Class<?> clazz)
+ throws InitializationError {
+ super(clazz);
+ }
+
+
+ @Override
+ protected Object createTest () throws Exception {
+ Object test = super.createTest();
+ // Note that JUnit4 will call this createTest() multiple times for each
+ // test method, so we need to ensure to call "beforeClassSetup" only once.
+ if (test instanceof BeanConfigBaseTest && instanceSetupListener == null) {
+ instanceSetupListener = (BeanConfigBaseTest) test;
+ instanceSetupListener.init();
+ }
+ return test;
+ }
+
+
+ @Override
+ public void run (RunNotifier notifier) {
+ super.run(notifier);
+ if (instanceSetupListener != null)
+ instanceSetupListener.close();
+ }
+
+
+ }
+}
diff --git a/core/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyBaseTest.java b/core/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyBaseTest.java
new file mode 100644
index 0000000..625be6a
--- /dev/null
+++ b/core/src/test/java/de/ids_mannheim/korap/web/service/FastJerseyBaseTest.java
@@ -0,0 +1,150 @@
+package de.ids_mannheim.korap.web.service;
+
+import com.sun.jersey.api.client.Client;
+import com.sun.jersey.api.client.WebResource;
+import com.sun.jersey.api.core.DefaultResourceConfig;
+import com.sun.jersey.spi.inject.SingletonTypeInjectableProvider;
+import com.sun.jersey.spi.spring.container.servlet.SpringServlet;
+import com.sun.jersey.test.framework.AppDescriptor;
+import com.sun.jersey.test.framework.LowLevelAppDescriptor;
+import com.sun.jersey.test.framework.WebAppDescriptor;
+import com.sun.jersey.test.framework.spi.container.TestContainer;
+import com.sun.jersey.test.framework.spi.container.TestContainerException;
+import com.sun.jersey.test.framework.spi.container.TestContainerFactory;
+import com.sun.jersey.test.framework.spi.container.grizzly.GrizzlyTestContainerFactory;
+import com.sun.jersey.test.framework.spi.container.grizzly.web.GrizzlyWebTestContainerFactory;
+import de.ids_mannheim.korap.config.BeanConfigBaseTest;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.springframework.web.context.ContextLoaderListener;
+
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.UriBuilder;
+import java.io.IOException;
+import java.net.BindException;
+import java.net.URI;
+
+/**
+ * @author hanl
+ * @date 29/07/2015
+ */
+public abstract class FastJerseyBaseTest extends BeanConfigBaseTest {
+
+ private final static String API_VERSION = "v0.1";
+
+ private static DefaultResourceConfig resourceConfig =
+ new DefaultResourceConfig();
+
+ private static TestContainerFactory testContainerFactory;
+
+ protected static TestContainer testContainer;
+
+ protected static Client client;
+
+ protected static int PORT = 8089; // FB, was: 9000;
+ protected static int PORT_IT = 1;
+ protected static String containerURI = "http://localhost/";
+
+
+ public static void addClass (Class<?> resourceClass) {
+ resourceConfig.getClasses().add(resourceClass);
+ }
+
+ public static void addSingleton (Object resourceSingleton) {
+ resourceConfig.getSingletons().add(resourceSingleton);
+ }
+
+
+ public String getAPIVersion () {
+ return API_VERSION;
+ }
+
+
+ public static <T> void addProviderForContext (Class<T> contextClass,
+ T contextObject) {
+ addSingleton(new SingletonTypeInjectableProvider<Context, T>(
+ contextClass, contextObject) {});
+ }
+
+
+ public static void addRequestFilter (Object filter) {
+ resourceConfig.getContainerRequestFilters().add(filter);
+ }
+
+
+ public static void addResponseFilter (Object filter) {
+ resourceConfig.getContainerResponseFilters().add(filter);
+ }
+
+
+ public static void setTestContainerFactory (
+ TestContainerFactory newTestContainerFactory) {
+ testContainerFactory = newTestContainerFactory;
+ }
+
+
+ @BeforeClass
+ public static void cleanStaticVariables () {
+ resourceConfig = new DefaultResourceConfig();
+ }
+
+
+ protected static void initServer (int port, String[] classPackages) {
+ AppDescriptor ad;
+ if (classPackages == null)
+ ad = new LowLevelAppDescriptor.Builder(resourceConfig).build();
+ else
+ ad = new WebAppDescriptor.Builder(classPackages)
+ .servletClass(SpringServlet.class)
+ .contextListenerClass(ContextLoaderListener.class)
+ .contextParam("contextConfigLocation", "classpath:test-default-config.xml")
+ .build();
+
+ TestContainerFactory tcf = testContainerFactory;
+ if (tcf == null) {
+ if (classPackages == null)
+ tcf = new GrizzlyTestContainerFactory();
+ else
+ tcf = new GrizzlyWebTestContainerFactory();
+ }
+
+ testContainer = tcf.create(
+ UriBuilder.fromUri(containerURI).port(port).build(), ad);
+ client = testContainer.getClient();
+ if (client == null) {
+ client = Client.create(ad.getClientConfig());
+ }
+ }
+
+
+
+
+
+ @After
+ public void stopServer () {
+ testContainer.stop();
+ testContainer = null;
+ client = null;
+ }
+
+
+ public Client client () {
+ return client;
+ }
+
+
+ public URI getBaseUri () {
+ return testContainer.getBaseUri();
+ }
+
+
+ public WebResource resource () {
+ return client.resource(getBaseUri());
+ }
+
+
+
+}