higher performance implementation for rewrite handler, test suite for rest functions, fast jersey junit tester, rewrite test suite
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/AuditingIface.java b/src/main/java/de/ids_mannheim/korap/interfaces/AuditingIface.java
index 873f435..410ecbd 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/AuditingIface.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/AuditingIface.java
@@ -2,6 +2,7 @@
import de.ids_mannheim.korap.auditing.AuditRecord;
import de.ids_mannheim.korap.user.User;
+import edu.emory.mathcs.backport.java.util.Collections;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
@@ -14,10 +15,11 @@
* Time: 10:45 AM
*/
//fixme: move table to different database!
-public abstract class AuditingIface implements Runnable {
+public abstract class AuditingIface {
protected static int BATCH_SIZE = 15;
- private final List<AuditRecord> records = new ArrayList<>(BATCH_SIZE + 5);
+ private final List<AuditRecord> records = Collections
+ .synchronizedList(new ArrayList<>(BATCH_SIZE + 5));
private final List<AuditRecord> buffer = new ArrayList<>(BATCH_SIZE + 5);
public abstract <T extends AuditRecord> List<T> retrieveRecords(
@@ -37,7 +39,12 @@
if (buffer.size() > BATCH_SIZE) {
records.clear();
records.addAll(buffer);
- run();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ apply();
+ }
+ }).start();
buffer.clear();
}
if (buffer.size() <= BATCH_SIZE)
@@ -53,6 +60,8 @@
addAndRun(rec);
}
+ public abstract void apply();
+
protected List<AuditRecord> getRecordsToSave() {
return this.records;
}
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java b/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java
index 4021836..f44bdab 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationManagerIface.java
@@ -1,11 +1,9 @@
package de.ids_mannheim.korap.interfaces;
-import de.ids_mannheim.korap.config.KustvaktClassLoader;
import de.ids_mannheim.korap.exceptions.KorAPException;
import de.ids_mannheim.korap.user.*;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -19,21 +17,6 @@
public AuthenticationManagerIface() {
this.providers = new HashMap<>();
- loadProviders();
- }
-
- private void loadProviders() {
- Set<Class<? extends AuthenticationIface>> set = KustvaktClassLoader
- .load(AuthenticationIface.class);
- Set<AuthenticationIface> set2 = new HashSet<>();
- for (Class<? extends AuthenticationIface> i : set) {
- try {
- set2.add(i.newInstance());
- }catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- this.setProviders(set2);
}
public void setProviders(Set<AuthenticationIface> providers) {
@@ -88,6 +71,9 @@
public abstract Object[] validateResetPasswordRequest(String username,
String email) throws KorAPException;
+ public abstract void resetPassword(String uriFragment, String username,
+ String newPassphrase) throws KorAPException;
+
public abstract void confirmRegistration(String uriFragment,
String username) throws KorAPException;
}
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/PersistenceClient.java b/src/main/java/de/ids_mannheim/korap/interfaces/PersistenceClient.java
new file mode 100644
index 0000000..43e0faa
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/PersistenceClient.java
@@ -0,0 +1,52 @@
+package de.ids_mannheim.korap.interfaces;
+
+import lombok.Getter;
+
+import java.io.*;
+
+@Getter
+public abstract class PersistenceClient<SOURCE> {
+
+ private SOURCE source;
+ private TYPE type;
+ protected String database;
+ private InputStream schema;
+
+ public PersistenceClient(String database, TYPE type) {
+ this.type = type;
+ this.database = database;
+ }
+
+ public PersistenceClient(TYPE type) {
+ this.type = type;
+ }
+
+ public PersistenceClient() {
+ }
+
+ protected void setSource(SOURCE conn) {
+ this.source = conn;
+ }
+
+ public void setDatabase(String name) {
+ this.database = name;
+ }
+
+ public void setSchema(String schema_path) throws FileNotFoundException {
+ this.schema = new FileInputStream(new File(schema_path));
+ }
+
+ // for spring configuration
+ @Deprecated
+ public void setSchema(InputStream schema) throws IOException {
+ this.schema = schema;
+ }
+
+ public abstract boolean checkDatabase() throws Exception;
+
+ public abstract void createDatabase() throws IOException;
+
+ public enum TYPE {
+ SQL, CASSANDRA
+ }
+}
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultAuditing.java b/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultAuditing.java
index 27bb3a1..24bc445 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultAuditing.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultAuditing.java
@@ -1,6 +1,8 @@
package de.ids_mannheim.korap.interfaces.defaults;
import de.ids_mannheim.korap.auditing.AuditRecord;
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.Configurable;
import de.ids_mannheim.korap.interfaces.AuditingIface;
import de.ids_mannheim.korap.user.User;
import org.joda.time.DateTime;
@@ -16,6 +18,7 @@
* @author hanl
* @date 05/06/2015
*/
+@Configurable(BeanConfiguration.KUSTVAKT_AUDITING)
public class DefaultAuditing extends AuditingIface {
private FileOutputStream stream;
@@ -56,7 +59,7 @@
}
@Override
- public void run() {
+ public void apply() {
try {
for (AuditRecord r : getRecordsToSave())
stream.write((r.toString() + "\n").getBytes());
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultEncryption.java b/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultEncryption.java
index 64f3b5e..a79c82f 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultEncryption.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/defaults/DefaultEncryption.java
@@ -1,5 +1,7 @@
package de.ids_mannheim.korap.interfaces.defaults;
+import de.ids_mannheim.korap.config.BeanConfiguration;
+import de.ids_mannheim.korap.config.Configurable;
import de.ids_mannheim.korap.exceptions.KorAPException;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.user.User;
@@ -14,7 +16,7 @@
* @author hanl
* @date 05/06/2015
*/
-//todo: init!
+@Configurable(BeanConfiguration.KUSTVAKT_ENCRYPTION)
public class DefaultEncryption implements EncryptionIface {
private SecureRandom randomizer;