Integrated lite and full services and controllers in core.
Change-Id: I34914c89c2266fa02bee1a5b0522c46139b13966
diff --git a/full/src/main/java/de/ids_mannheim/de/init/Initializator.java b/full/src/main/java/de/ids_mannheim/de/init/Initializator.java
deleted file mode 100644
index 0ef9dbb..0000000
--- a/full/src/main/java/de/ids_mannheim/de/init/Initializator.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package de.ids_mannheim.de.init;
-
-import java.io.IOException;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.util.QueryException;
-
-/** Init methods run after spring dependency injection
- *
- * @author margaretha
- *
- */
-public interface Initializator {
-
- void init () throws IOException, QueryException, KustvaktException;
-
- void initTest () throws IOException, KustvaktException;
-
-}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java b/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
index 318f47e..9f0e27d 100644
--- a/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
+++ b/full/src/main/java/de/ids_mannheim/de/init/InitializatorImpl.java
@@ -8,8 +8,8 @@
import de.ids_mannheim.korap.annotation.AnnotationParser;
import de.ids_mannheim.korap.annotation.FreeResourceParser;
import de.ids_mannheim.korap.config.NamedVCLoader;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.dao.AccessScopeDao;
import de.ids_mannheim.korap.util.QueryException;
@@ -54,7 +54,11 @@
* @see de.ids_mannheim.de.init.Initializator#initTest()
*/
@Override
- public void initTest () throws IOException, KustvaktException {
+ public void initTest () {
+ setInitialAccessScope();
+ }
+
+ public void initAnnotationTest () throws IOException, KustvaktException {
setInitialAccessScope();
annotationParser.run();
resourceParser.run();
diff --git a/full/src/main/java/de/ids_mannheim/de/init/LiteInitializatorImpl.java b/full/src/main/java/de/ids_mannheim/de/init/LiteInitializatorImpl.java
deleted file mode 100644
index 31d90af..0000000
--- a/full/src/main/java/de/ids_mannheim/de/init/LiteInitializatorImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package de.ids_mannheim.de.init;
-
-import java.io.IOException;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ids_mannheim.korap.annotation.AnnotationParser;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.util.QueryException;
-
-public class LiteInitializatorImpl implements Initializator {
-
- @Autowired
- private AnnotationParser annotationParser;
-
- @Override
- public void init () throws IOException, QueryException, KustvaktException {
- annotationParser.run();
- }
-
- @Override
- public void initTest () throws IOException, KustvaktException {
- annotationParser.run();
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java b/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java
deleted file mode 100644
index 4f995cb..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/annotation/AnnotationParser.java
+++ /dev/null
@@ -1,239 +0,0 @@
-package de.ids_mannheim.korap.annotation;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import de.ids_mannheim.korap.constant.AnnotationType;
-import de.ids_mannheim.korap.dao.AnnotationDao;
-import de.ids_mannheim.korap.entity.Annotation;
-import de.ids_mannheim.korap.entity.AnnotationKey;
-import de.ids_mannheim.korap.entity.AnnotationLayer;
-
-@Component
-public class AnnotationParser {
-
- private Logger log = LogManager.getLogger(AnnotationDao.class);
-
- public static final Pattern quotePattern = Pattern.compile("\"([^\"]*)\"");
-
- @Autowired
- private AnnotationDao annotationDao;
-
- private Annotation foundry = null;
- private AnnotationLayer layer = null;
- private AnnotationKey key = null;
-
- private Set<AnnotationKey> keys = new HashSet<>();
- private Set<Annotation> values = new HashSet<>();
-
- public void run () throws IOException {
- String dir = "annotation-scripts/foundries";
- if (dir.isEmpty()) return;
-
- File d = new File(dir);
- if (!d.isDirectory()) {
- throw new IOException("Directory " + dir + " is not valid");
- }
-
- for (File file : d.listFiles()) {
- if (!file.exists()) {
- throw new IOException("File " + file + " is not found.");
- }
- readFile(file);
- }
- }
-
- private void readFile (File file) throws IOException {
- BufferedReader br = new BufferedReader(
- new InputStreamReader(new FileInputStream(file)), 1024);
-
- foundry = null;
-
- String line, annotationCode = "", annotationType = "";
- Matcher m;
- ArrayList<String> array;
- while ((line = br.readLine()) != null) {
- line = line.trim();
- if (line.startsWith("ah")) {
- m = quotePattern.matcher(line);
- if (m.find()) {
- annotationCode = m.group(1);
- annotationType = computeAnnotationType(annotationCode);
- }
- m.reset();
- }
- else if (line.startsWith("];")) {
- if (!keys.isEmpty()) {
- layer.setKeys(keys);
- annotationDao.updateAnnotationLayer(layer);
- }
- if (!values.isEmpty()) {
- key.setValues(values);
- annotationDao.updateAnnotationKey(key);
- }
- keys.clear();
- values.clear();
- layer = null;
- key = null;
- }
- else if (line.startsWith("[")) {
- array = computeValues(line);
- parseArray(annotationCode, annotationType, array);
- }
-
- }
- br.close();
- }
-
- public static ArrayList<String> computeValues (String line) {
- ArrayList<String> values;
- Matcher m = quotePattern.matcher(line);
- values = new ArrayList<String>();
- while (m.find()) {
- values.add(m.group(1));
- }
- return values;
- }
-
- private void parseArray (String annotationCode, String annotationType,
- ArrayList<String> array) {
- if (annotationType.equals(AnnotationType.FOUNDRY)) {
- String code = array.get(1).substring(0, array.get(1).length() - 1);
- foundry = retrieveOrCreateAnnotation(code, AnnotationType.FOUNDRY,
- null, array.get(0));
- }
- else if (annotationType.equals(AnnotationType.LAYER)) {
- String code = array.get(1);
- if (code.endsWith("=")) {
- code = code.substring(0, code.length() - 1);
- }
- Annotation layer = retrieveOrCreateAnnotation(code, annotationType,
- null, array.get(0));
- try {
- AnnotationLayer annotationLayer =
- annotationDao.retrieveAnnotationLayer(foundry.getCode(),
- layer.getCode());
- if (annotationLayer == null) {
- annotationDao.createAnnotationLayer(foundry, layer);
- }
- }
- catch (Exception e) {
- log.debug("Duplicate annotation layer: " + foundry.getCode()
- + "/" + layer.getCode());
- }
- }
- else if (annotationType.equals(AnnotationType.KEY))
-
- {
- if (layer == null) {
- computeLayer(annotationCode);
- }
-
- Annotation annotation = null;
- if (array.size() == 2) {
- String code = array.get(1);
- if (code.endsWith("=") || code.endsWith(":")) {
- code = code.substring(0, code.length() - 1);
- }
- annotation = retrieveOrCreateAnnotation(code, annotationType,
- null, array.get(0));
- }
- else if (array.size() == 3) {
- annotation = retrieveOrCreateAnnotation(array.get(0),
- annotationType, array.get(1), array.get(2));
- }
- if (annotation != null) {
- AnnotationKey annotationKey =
- annotationDao.retrieveAnnotationKey(layer, annotation);
- if (annotationKey == null) {
- annotationDao.createAnnotationKey(layer, annotation);
- }
- this.keys.add(annotationKey);
- }
- }
- else if (annotationType.equals(AnnotationType.VALUE)) {
- if (this.key == null) {
- computeKey(annotationCode);
- }
- Annotation value = retrieveOrCreateAnnotation(array.get(0),
- AnnotationType.VALUE, array.get(1), array.get(2));
- if (value != null) {
- values.add(value);
- }
- }
- }
-
- private void computeKey (String code) {
- String[] codes = code.split("=");
- if (codes.length > 1) {
- computeLayer(codes[0]);
- String keyCode = codes[1];
- if (keyCode.endsWith(":") || keyCode.endsWith("-")) {
- keyCode = keyCode.substring(0, keyCode.length() - 1);
- }
- Annotation key = annotationDao.retrieveAnnotation(keyCode,
- AnnotationType.KEY);
- this.key = annotationDao.retrieveAnnotationKey(layer, key);
- }
-
- }
-
- private void computeLayer (String code) {
- String[] codes = code.split("/");
- if (codes.length > 1) {
- String layerCode = codes[1];
- if (layerCode.endsWith("=")) {
- layerCode = layerCode.substring(0, layerCode.length() - 1);
- }
- this.layer =
- annotationDao.retrieveAnnotationLayer(codes[0], layerCode);
- if (layer == null) {
- log.warn("Layer is null for " + code);
- }
- }
- }
-
- private Annotation retrieveOrCreateAnnotation (String code, String type,
- String text, String description) {
- Annotation annotation = annotationDao.retrieveAnnotation(code, type);
- if (annotation == null) {
- annotation = annotationDao.createAnnotation(code, type, text,
- description);
- }
- return annotation;
- }
-
- private String computeAnnotationType (String code) {
- String[] codes = code.split("/");
- if (codes.length == 1) {
- if (codes[0].equals("-")) {
- return AnnotationType.FOUNDRY;
- }
- return AnnotationType.LAYER;
- }
- else if (codes.length == 2) {
- if (codes[1].endsWith(":") || codes[1].endsWith("-")) {
- return AnnotationType.VALUE;
- }
- else {
- return AnnotationType.KEY;
- }
- }
-
- return "unknown";
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/annotation/ArrayVariables.java b/full/src/main/java/de/ids_mannheim/korap/annotation/ArrayVariables.java
deleted file mode 100644
index 55f476a..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/annotation/ArrayVariables.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package de.ids_mannheim.korap.annotation;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import de.ids_mannheim.korap.constant.AnnotationType;
-import de.ids_mannheim.korap.entity.Annotation;
-
-/**
- * Helper class to parse annotation scripts variables. It prints out
- * corenlp constituency layer for each negranodes.
- *
- * @author margaretha
- *
- */
-public class ArrayVariables {
-
- public static HashMap<String, List<Annotation>> annotationMap =
- new HashMap<>();
-
- public static void main (String[] args) throws IOException {
- ArrayVariables variables = new ArrayVariables();
- variables.extractVariables();
-
- List<Annotation> negranodes = annotationMap.get("negranodes");
- for (Annotation n : negranodes) {
- System.out.println("ah[\"corenlp/c=" + n.getCode() + "-\"] = [");
- int i = 1;
- List<Annotation> negraedges = annotationMap.get("negraedges");
- for (Annotation edge : negraedges) {
- System.out.print(
- " [\"" + edge.getCode() + "\", \"" + edge.getText()
- + "\", \"" + edge.getDescription() + "\"]");
- if (i < negraedges.size()) {
- System.out.println(",");
- }
- else {
- System.out.println();
- }
- i++;
- }
- System.out.println("];");
- System.out.println();
- }
- }
-
- public void extractVariables () throws IOException {
- String dir = "annotation-scripts/variables";
- if (dir.isEmpty()) return;
-
- File d = new File(dir);
- if (!d.isDirectory()) {
- throw new IOException("Directory " + dir + " is not valid");
- }
-
- for (File file : d.listFiles()) {
- if (!file.exists()) {
- throw new IOException("File " + file + " is not found.");
- }
- readFile(file);
- }
-
- }
-
- private void readFile (File file) throws IOException {
- BufferedReader br = new BufferedReader(
- new InputStreamReader(new FileInputStream(file)));
-
- String line;
- ArrayList<String> values;
- List<Annotation> annotations = new ArrayList<>();
- while ((line = br.readLine()) != null) {
- line = line.trim();
- if (line.startsWith("[")) {
- values = AnnotationParser.computeValues(line);
-
- Annotation annotation = new Annotation(values.get(0),
- AnnotationType.VALUE, values.get(1), values.get(2));
- annotations.add(annotation);
- }
- }
- br.close();
-
- String filename = file.getName();
- filename = filename.substring(0, filename.length() - 3);
- annotationMap.put(filename, annotations);
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java
index 77504a5..869b641 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/APIAuthentication.java
@@ -18,7 +18,6 @@
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
import net.sf.ehcache.Cache;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/AuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/AuthenticationManager.java
deleted file mode 100644
index e9e6764..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/AuthenticationManager.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package de.ids_mannheim.korap.authentication;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import javax.ws.rs.core.HttpHeaders;
-
-import de.ids_mannheim.korap.config.KustvaktCacheable;
-import de.ids_mannheim.korap.constant.AuthenticationMethod;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.interfaces.AuthenticationIface;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.user.Userdata;
-
-/**
- * @author hanl
- * @date 15/06/2015
- */
-public abstract class AuthenticationManager extends KustvaktCacheable {
-
- private Map<TokenType, AuthenticationIface> providers;
-
- public AuthenticationManager () {
- super("id_tokens", "key:id_tokens");
- this.providers = new HashMap<>();
- }
-
- public void setProviders (Set<AuthenticationIface> providers) {
- for (AuthenticationIface i : providers) {
- this.providers.put(i.getTokenType(), i);
- }
- }
-
- protected AuthenticationIface getProvider (TokenType scheme,
- TokenType default_iface) {
-
- // Debug FB: loop a Map
-
- /*for (Map.Entry<String, AuthenticationIface> entry : this.providers.entrySet())
- {
- System.out.println("Debug: provider: Key : " + entry.getKey() + " Value : " + entry.getValue());
- }
- */
- // todo: configurable authentication schema
- if (scheme == null) {
- return this.providers.get(default_iface);
- }
- else {
- return this.providers.get(scheme);
- }
- }
-
- public abstract TokenContext getTokenContext (TokenType type, String token,
- String host, String useragent) throws KustvaktException;
-
- public abstract User getUser (String username) throws KustvaktException;
-
- public abstract boolean isRegistered (String id);
-
- public abstract User authenticate (AuthenticationMethod method,
- String username, String password, Map<String, Object> attributes)
- throws KustvaktException;
-
- public abstract TokenContext createTokenContext (User user,
- Map<String, Object> attr, TokenType type) throws KustvaktException;
-
- public abstract void setAccessAndLocation (User user, HttpHeaders headers);
-
- public abstract void logout (TokenContext context) throws KustvaktException;
-
- public abstract void lockAccount (User user) throws KustvaktException;
-
- public abstract User createUserAccount (Map<String, Object> attributes,
- boolean confirmation_required) throws KustvaktException;
-
- public abstract boolean deleteAccount (User user) throws KustvaktException;
-
- public abstract <T extends Userdata> T getUserData (User user,
- Class<T> clazz) throws KustvaktException;
-
- public abstract void updateUserData (Userdata data)
- throws KustvaktException;
-
- public abstract Object[] validateResetPasswordRequest (String username,
- String email) throws KustvaktException;
-
- public abstract void resetPassword (String uriFragment, String username,
- String newPassphrase) throws KustvaktException;
-
- public abstract void confirmRegistration (String uriFragment,
- String username) throws KustvaktException;
-
- public String providerList () {
- return "provider list: " + this.providers.toString();
- }
-
- public abstract User getUser (String username, String method)
- throws KustvaktException;
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java
index b90406b..f94ab3f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/BasicAuthentication.java
@@ -15,7 +15,6 @@
import de.ids_mannheim.korap.dao.UserDao;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.utils.StringUtils;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/DummyAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/DummyAuthenticationManager.java
deleted file mode 100644
index 0a473ac..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/DummyAuthenticationManager.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package de.ids_mannheim.korap.authentication;
-
-import java.util.Map;
-
-import javax.ws.rs.core.HttpHeaders;
-
-import org.springframework.beans.factory.annotation.Autowired;
-
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.constant.AuthenticationMethod;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.user.Userdata;
-import de.ids_mannheim.korap.utils.TimeUtils;
-
-public class DummyAuthenticationManager extends AuthenticationManager {
-
- @Autowired
- private KustvaktConfiguration config;
-
- @Override
- public TokenContext getTokenContext (TokenType type, String token,
- String host, String useragent) throws KustvaktException {
- TokenContext c = new TokenContext();
- c.setUsername("guest");
- c.setHostAddress(host);
- c.setUserAgent(useragent);
- c.setExpirationTime(
- TimeUtils.plusSeconds(config.getShortTokenTTL()).getMillis());
- c.setTokenType(TokenType.BASIC);
- c.setToken("dummyToken");
- return c;
- }
-
- @Override
- public User getUser (String username) throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public boolean isRegistered (String id) {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public User authenticate (AuthenticationMethod method, String username,
- String password, Map<String, Object> attributes)
- throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public TokenContext createTokenContext (User user, Map<String, Object> attr,
- TokenType type) throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void setAccessAndLocation (User user, HttpHeaders headers) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void logout (TokenContext context) throws KustvaktException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void lockAccount (User user) throws KustvaktException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public User createUserAccount (Map<String, Object> attributes,
- boolean confirmation_required) throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public boolean deleteAccount (User user) throws KustvaktException {
- // TODO Auto-generated method stub
- return false;
- }
-
- @Override
- public <T extends Userdata> T getUserData (User user, Class<T> clazz)
- throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void updateUserData (Userdata data) throws KustvaktException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Object[] validateResetPasswordRequest (String username, String email)
- throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void resetPassword (String uriFragment, String username,
- String newPassphrase) throws KustvaktException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void confirmRegistration (String uriFragment, String username)
- throws KustvaktException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public User getUser (String username, String method)
- throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
index 6aa5b9f..e4e8ac1 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/KustvaktAuthenticationManager.java
@@ -33,7 +33,6 @@
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.exceptions.WrappedException;
-import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.interfaces.EntityHandlerIface;
import de.ids_mannheim.korap.interfaces.ValidatorIface;
@@ -74,6 +73,7 @@
public KustvaktAuthenticationManager(EntityHandlerIface userdb, EncryptionIface crypto,
FullConfiguration config, AuditingIface auditer, Collection<UserDataDbIface> userdatadaos) {
+ super("id_tokens");
this.entHandler = userdb;
this.config = config;
this.crypto = crypto;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
index d203b51..a180921 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/OAuth2Authentication.java
@@ -9,10 +9,9 @@
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.oauth2.dao.AccessTokenDao;
import de.ids_mannheim.korap.oauth2.entity.AccessToken;
-import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
+import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeServiceImpl;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.user.User;
@@ -22,7 +21,7 @@
@Autowired
private AccessTokenDao accessDao;
@Autowired
- private OAuth2ScopeService scopeService;
+ private OAuth2ScopeServiceImpl scopeService;
@Override
public TokenContext getTokenContext (String authToken)
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java b/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java
index 1bb4c6d..af8e953 100644
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java
+++ b/full/src/main/java/de/ids_mannheim/korap/authentication/SessionAuthentication.java
@@ -4,7 +4,6 @@
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationIface;
import de.ids_mannheim.korap.interfaces.EncryptionIface;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.config.Attributes;
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java
deleted file mode 100644
index 236f26a..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/http/AuthorizationData.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package de.ids_mannheim.korap.authentication.http;
-
-import de.ids_mannheim.korap.constant.AuthenticationScheme;
-import lombok.Getter;
-import lombok.Setter;
-
-/** Describes the values stored in Authorization header of HTTP requests.
- *
- * @author margaretha
- *
- */
-@Getter
-@Setter
-public class AuthorizationData {
-
- private String token;
- private AuthenticationScheme authenticationScheme;
- private String username;
- private String password;
-
-}
-
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java
deleted file mode 100644
index 5eed64f..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/http/HttpAuthorizationHandler.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package de.ids_mannheim.korap.authentication.http;
-
-import org.springframework.stereotype.Component;
-
-import de.ids_mannheim.korap.constant.AuthenticationScheme;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.utils.ParameterChecker;
-
-/** Implementation of Basic HTTP authentication scheme (see RFC 7253
- * and 7617) for client asking for authorization and sending user
- * data.
- *
- * @author margaretha
- *
- */
-@Component
-public class HttpAuthorizationHandler {
-
- public static String createBasicAuthorizationHeaderValue (String username,
- String password) throws KustvaktException {
- ParameterChecker.checkStringValue(username, "username");
- ParameterChecker.checkStringValue(password, "password");
-
- String credentials = TransferEncoding.encodeBase64(username, password);
- return AuthenticationScheme.BASIC.displayName()+" " + credentials;
- }
-
- public AuthorizationData parseAuthorizationHeaderValue (
- String authorizationHeader) throws KustvaktException {
- ParameterChecker.checkStringValue(authorizationHeader,
- "authorization header");
-
- String[] values = authorizationHeader.split(" ");
- if (values.length != 2) {
- throw new KustvaktException(StatusCodes.AUTHENTICATION_FAILED,
- "Cannot parse authorization header value "
- + authorizationHeader
- + ". Use this format: [authentication "
- + "scheme] [Base64-encoded token]",
- authorizationHeader);
- }
-
- AuthorizationData data = new AuthorizationData();
- data.setAuthenticationScheme(
- AuthenticationScheme.valueOf(values[0].toUpperCase()));
- data.setToken(values[1]);
- return data;
- }
-
- public AuthorizationData parseBasicToken (AuthorizationData data)
- throws KustvaktException {
- String[] credentials = TransferEncoding.decodeBase64(data.getToken());
- data.setUsername(credentials[0]);
- data.setPassword(credentials[1]);
- return data;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java b/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java
deleted file mode 100644
index 52d1a90..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/authentication/http/TransferEncoding.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package de.ids_mannheim.korap.authentication.http;
-
-import org.apache.commons.codec.binary.Base64;
-import org.springframework.stereotype.Component;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.utils.ParameterChecker;
-
-/** TransferEncoding contains encoding and decoding methods for data transfer,
- * e.g. transfering credentials using basic Http authentication.
- *
- * @author margaretha
- *
- */
-@Component
-public class TransferEncoding {
-
- /** Encodes username and password using Base64.
- *
- * @param username username
- * @param password password
- * @return
- */
- public static String encodeBase64 (String username, String password) {
- String s = username + ":" + password;
- return new String(Base64.encodeBase64(s.getBytes()));
- }
-
- /** Decodes the given string using Base64.
- *
- * @param encodedStr
- * @return username and password as an array of strings.
- * @throws KustvaktException
- */
- public static String[] decodeBase64 (String encodedStr)
- throws KustvaktException {
-
- ParameterChecker.checkStringValue(encodedStr, "encoded string");
- String decodedStr = new String(Base64.decodeBase64(encodedStr));
-
- if (decodedStr.contains(":") && decodedStr.split(":").length == 2) {
- String[] strArr = decodedStr.split(":");
- if ((strArr[0] != null && !strArr[0].isEmpty())
- && (strArr[1] != null && !strArr[1].isEmpty())) {
- return decodedStr.split(":");
- }
-
- }
-
- throw new IllegalArgumentException(
- "Unknown Base64 encoding format: " + decodedStr);
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/AnnotationType.java b/full/src/main/java/de/ids_mannheim/korap/constant/AnnotationType.java
deleted file mode 100644
index 560d401..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/constant/AnnotationType.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package de.ids_mannheim.korap.constant;
-
-public class AnnotationType {
- public static String FOUNDRY = "foundry";
- public static String LAYER = "layer";
- public static String KEY = "key";
- public static String VALUE = "value";
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/AuthenticationMethod.java b/full/src/main/java/de/ids_mannheim/korap/constant/AuthenticationMethod.java
deleted file mode 100644
index 7c7dbae..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/constant/AuthenticationMethod.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package de.ids_mannheim.korap.constant;
-
-/** Lists possible actual authentication methods. Multiple
- * {@link AuthenticationScheme} may use an identical
- * authentication method.
- *
- * @author margaretha
- *
- * @see AuthenticationScheme
- *
- */
-public enum AuthenticationMethod {
- LDAP, SHIBBOLETH, DATABASE, TEST;
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/AuthenticationScheme.java b/full/src/main/java/de/ids_mannheim/korap/constant/AuthenticationScheme.java
deleted file mode 100644
index 3db6a3e..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/constant/AuthenticationScheme.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package de.ids_mannheim.korap.constant;
-
-import org.apache.commons.lang.WordUtils;
-
-/** Lists possible authentication schemes used in the Authorization header
- * of HTTP requests.
- *
- * @author margaretha
- *
- */
-public enum AuthenticationScheme {
- // standard http
- BASIC, BEARER,
- // custom
- // SESSION, has not been supported yet
- API;
-
- public String displayName () {
- return WordUtils.capitalizeFully(name());
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/TokenType.java b/full/src/main/java/de/ids_mannheim/korap/constant/TokenType.java
deleted file mode 100644
index 418be0b..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/constant/TokenType.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package de.ids_mannheim.korap.constant;
-
-import org.apache.commons.lang.StringUtils;
-
-public enum TokenType {
- BASIC, API, SESSION,
- // openid token, e.g. within oauth2 response (json body)
- ID_TOKEN,
- // OAuth2 access_token
- BEARER,
- // OAuth2 client
- CLIENT;
-
- public String displayName () {
- return StringUtils.capitalize(name().toLowerCase());
- }
-}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java
deleted file mode 100644
index fcf32d0..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dao/AdminDao.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package de.ids_mannheim.korap.dao;
-
-import de.ids_mannheim.korap.user.User;
-
-public interface AdminDao {
-
- void addAccount (User user);
-
- boolean isAdmin (String userId);
-
-}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
deleted file mode 100644
index ef54fda..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package de.ids_mannheim.korap.dao;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import de.ids_mannheim.korap.constant.AnnotationType;
-import de.ids_mannheim.korap.entity.Annotation;
-import de.ids_mannheim.korap.entity.AnnotationKey;
-import de.ids_mannheim.korap.entity.AnnotationKey_;
-import de.ids_mannheim.korap.entity.AnnotationLayer;
-import de.ids_mannheim.korap.entity.AnnotationLayer_;
-import de.ids_mannheim.korap.entity.Annotation_;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.utils.ParameterChecker;
-
-/**
- * AnnotationDao manages SQL queries regarding annotations including
- * foundry and layer pairs.
- *
- * @author margaretha
- *
- */
-@Repository
-@Transactional
-public class AnnotationDao {
-
- @PersistenceContext
- private EntityManager entityManager;
-
- /**
- * Retrieves all foundry-layer pairs.
- *
- * @return a list of foundry-layer pairs.
- */
- @SuppressWarnings("unchecked")
- public List<AnnotationLayer> getAllFoundryLayerPairs () {
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<AnnotationLayer> query =
- criteriaBuilder.createQuery(AnnotationLayer.class);
- Root<AnnotationLayer> layer = query.from(AnnotationLayer.class);
- layer.fetch(AnnotationLayer_.foundry);
- layer.fetch(AnnotationLayer_.layer);
- query.select(layer);
- Query q = entityManager.createQuery(query);
- return q.getResultList();
- }
-
- /**
- * Retrieves foundry-layer pairs and their values for the given
- * foundry and layer. If layer is empty, retrieves data for all
- * layer in the given foundry. If foundry is empty, retrieves data
- * for all foundry and layer pairs.
- *
- * @param foundry
- * a foundry code
- * @param layer
- * a layer code
- * @return a list of foundry-layer pairs.
- */
- @SuppressWarnings("unchecked")
- public List<AnnotationLayer> getAnnotationDescriptions (String foundry,
- String layer) {
-
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Object> query = criteriaBuilder.createQuery();
- Root<AnnotationLayer> annotationPair =
- query.from(AnnotationLayer.class);
- annotationPair.fetch(AnnotationLayer_.foundry);
- annotationPair.fetch(AnnotationLayer_.layer);
- annotationPair.fetch(AnnotationLayer_.keys);
-
- // EM: Hibernate bug in join n:m (see AnnotationPair.values).
- // There should not be any redundant AnnotationPair.
- // The redundancy can be also avoided with
- // fetch=FetchType.EAGER
- // because Hibernate does 2 selects.
- query.distinct(true);
- query = query.select(annotationPair);
-
- if (!foundry.isEmpty()) {
- Predicate foundryPredicate = criteriaBuilder.equal(annotationPair
- .get(AnnotationLayer_.foundry).get(Annotation_.code),
- foundry);
- if (layer.isEmpty() || layer.equals("*")) {
- query.where(foundryPredicate);
- }
- else {
- Predicate layerPredicate = criteriaBuilder.equal(annotationPair
- .get(AnnotationLayer_.layer).get(Annotation_.code),
- layer);
- Predicate andPredicate =
- criteriaBuilder.and(foundryPredicate, layerPredicate);
- query.where(andPredicate);
- }
- }
-
- Query q = entityManager.createQuery(query);
- return q.getResultList();
- }
-
- public Annotation retrieveAnnotation (String code, String type) {
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Annotation> query =
- criteriaBuilder.createQuery(Annotation.class);
-
- Root<Annotation> annotation = query.from(Annotation.class);
- Predicate predicates = criteriaBuilder.and(
- criteriaBuilder.equal(annotation.get(Annotation_.code), code),
- criteriaBuilder.equal(annotation.get(Annotation_.type), type));
- query.select(annotation).where(predicates);
- Query q = entityManager.createQuery(query);
- try {
- return (Annotation) q.getSingleResult();
- }
- catch (NoResultException e) {
- return null;
- }
- }
-
- public AnnotationLayer retrieveAnnotationLayer (String foundry,
- String layer) {
- Annotation ann1 = retrieveAnnotation(foundry, AnnotationType.FOUNDRY);
- Annotation ann2 = retrieveAnnotation(layer, AnnotationType.LAYER);
-
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<AnnotationLayer> query =
- criteriaBuilder.createQuery(AnnotationLayer.class);
-
- Root<AnnotationLayer> annotation = query.from(AnnotationLayer.class);
- Predicate predicates = criteriaBuilder.and(
- criteriaBuilder.equal(annotation.get(AnnotationLayer_.foundry),
- ann1),
- criteriaBuilder.equal(annotation.get(AnnotationLayer_.layer),
- ann2));
- query.select(annotation).where(predicates);
- Query q = entityManager.createQuery(query);
- try {
- return (AnnotationLayer) q.getSingleResult();
- }
- catch (NoResultException e) {
- return null;
- }
-
- }
-
- public Annotation createAnnotation (String code, String type, String text,
- String description) {
- Annotation ann = new Annotation(code, type, text, description);
- entityManager.persist(ann);
- return ann;
- }
-
- public AnnotationLayer createAnnotationLayer (Annotation foundry,
- Annotation layer) throws KustvaktException {
- ParameterChecker.checkObjectValue(foundry, "foundry");
- ParameterChecker.checkObjectValue(layer, "layer");
-
- AnnotationLayer annotationLayer = new AnnotationLayer();
- annotationLayer.setFoundryId(foundry.getId());
- annotationLayer.setLayerId(layer.getId());
- annotationLayer.setDescription(
- foundry.getDescription() + " " + layer.getDescription());
- entityManager.persist(annotationLayer);
- return annotationLayer;
- }
-
- public void updateAnnotationLayer (AnnotationLayer layer) {
- entityManager.merge(layer);
- }
-
- public void updateAnnotationKey (AnnotationKey key) {
- entityManager.merge(key);
- }
-
- public AnnotationKey createAnnotationKey (AnnotationLayer layer,
- Annotation key) {
- AnnotationKey annotation =
- new AnnotationKey(layer.getId(), key.getId());
- entityManager.persist(annotation);
- return annotation;
- }
-
- public AnnotationKey retrieveAnnotationKey (AnnotationLayer layer,
- Annotation key) {
-
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<AnnotationKey> query =
- criteriaBuilder.createQuery(AnnotationKey.class);
-
- Root<AnnotationKey> annotation = query.from(AnnotationKey.class);
- Predicate predicates = criteriaBuilder.and(
- criteriaBuilder.equal(annotation.get(AnnotationKey_.layer),
- layer),
- criteriaBuilder.equal(annotation.get(AnnotationKey_.key), key));
- query.select(annotation).where(predicates);
- Query q = entityManager.createQuery(query);
- try {
- return (AnnotationKey) q.getSingleResult();
- }
- catch (NoResultException e) {
- return null;
- }
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/DummyAdminDaoImpl.java b/full/src/main/java/de/ids_mannheim/korap/dao/DummyAdminDaoImpl.java
deleted file mode 100644
index 0d31885..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dao/DummyAdminDaoImpl.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package de.ids_mannheim.korap.dao;
-
-import de.ids_mannheim.korap.user.User;
-
-public class DummyAdminDaoImpl implements AdminDao {
-
- @Override
- public void addAccount (User user) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public boolean isAdmin (String userId) {
- return false;
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
deleted file mode 100644
index d12ff3f..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package de.ids_mannheim.korap.dao;
-
-import java.util.List;
-import java.util.Set;
-
-import javax.persistence.EntityManager;
-import javax.persistence.NoResultException;
-import javax.persistence.PersistenceContext;
-import javax.persistence.Query;
-import javax.persistence.TypedQuery;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Root;
-
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import de.ids_mannheim.korap.entity.AnnotationLayer;
-import de.ids_mannheim.korap.entity.Resource;
-import de.ids_mannheim.korap.entity.Resource_;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.utils.ParameterChecker;
-
-/**
- * ResourceDao manages SQL queries regarding resource info and layers.
- *
- * @author margaretha
- *
- */
-@Transactional
-@Repository
-public class ResourceDao {
-
- @PersistenceContext
- private EntityManager entityManager;
-
- /**
- * Select all from the resource table
- *
- * @return a list of resources
- */
- public List<Resource> getAllResources () {
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Resource> query =
- criteriaBuilder.createQuery(Resource.class);
- Root<Resource> resource = query.from(Resource.class);
- query.select(resource);
-
- TypedQuery<Resource> q = entityManager.createQuery(query);
- return q.getResultList();
- }
-
- public Resource retrieveResource (String id) {
- CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
- CriteriaQuery<Resource> query =
- criteriaBuilder.createQuery(Resource.class);
- Root<Resource> resource = query.from(Resource.class);
- query.select(resource);
- query.where(criteriaBuilder.equal(resource.get(Resource_.id), id));
-
- Query q = entityManager.createQuery(query);
- try {
- return (Resource) q.getSingleResult();
- }
- catch (NoResultException e) {
- return null;
- }
- }
-
- public void createResource (String id, String germanTitle,
- String englishTitle, String englishDescription,
- Set<AnnotationLayer> layers) throws KustvaktException {
- ParameterChecker.checkStringValue(id, "id");
- ParameterChecker.checkStringValue(englishTitle, "en_title");
- ParameterChecker.checkStringValue(germanTitle, "de_title");
-
- Resource r = new Resource(id, germanTitle, englishTitle,
- englishDescription, layers);
- entityManager.persist(r);
-
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/FoundryDto.java b/full/src/main/java/de/ids_mannheim/korap/dto/FoundryDto.java
deleted file mode 100644
index 26cf383..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dto/FoundryDto.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package de.ids_mannheim.korap.dto;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.codehaus.jackson.map.annotate.JsonSerialize;
-import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonInclude.Include;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * Data transfer object for annotation descriptions (e.g. for
- * Kalamar).
- *
- * @author margaretha
- *
- */
-@Getter
-@Setter
-@JsonInclude(Include.NON_EMPTY) // new fasterxml annotation, not used by current jersey version
-@JsonSerialize(include=Inclusion.NON_EMPTY) // old codehouse annotation, used by jersey
-public class FoundryDto {
-
- private String code;
- private String description;
- private List<Layer> layers;
-
- @Getter
- @Setter
- @JsonInclude(Include.NON_EMPTY)
- @JsonSerialize(include=Inclusion.NON_EMPTY) // old codehouse annotation used by jersey
- public class Layer {
- private String code;
- private String description;
- private Set<Key> keys;
- }
-
- @Getter
- @Setter
- @JsonInclude(Include.NON_EMPTY)
- @JsonSerialize(include=Inclusion.NON_EMPTY) // old codehouse annotation used by jersey
- public class Key implements Comparable<Key>{
-
- private String code;
- private String description;
- private Map<String, String> values;
-
- public Key (String code) {
- this.code = code;
- }
-
- @Override
- public int compareTo (Key k) {
- return this.code.compareTo(k.code);
- }
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/LayerDto.java b/full/src/main/java/de/ids_mannheim/korap/dto/LayerDto.java
deleted file mode 100644
index b9884d8..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dto/LayerDto.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package de.ids_mannheim.korap.dto;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * Data transfer object for layer description (e.g. for KorapSRU).
- *
- * @author margaretha
- *
- */
-@Getter
-@Setter
-public class LayerDto {
-
- private int id;
- private String code;
- private String layer;
- private String foundry;
- private String description;
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/converter/AnnotationConverter.java b/full/src/main/java/de/ids_mannheim/korap/dto/converter/AnnotationConverter.java
deleted file mode 100644
index efe1c43..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/dto/converter/AnnotationConverter.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package de.ids_mannheim.korap.dto.converter;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.springframework.stereotype.Component;
-
-import de.ids_mannheim.korap.dto.FoundryDto;
-import de.ids_mannheim.korap.dto.FoundryDto.Key;
-import de.ids_mannheim.korap.dto.FoundryDto.Layer;
-import de.ids_mannheim.korap.dto.LayerDto;
-import de.ids_mannheim.korap.entity.Annotation;
-import de.ids_mannheim.korap.entity.AnnotationKey;
-import de.ids_mannheim.korap.entity.AnnotationLayer;
-
-/**
- * AnnotationConverter prepares data transfer objects (DTOs) from
- * entities. The DTOs, for instance, are serialized into JSON in the
- * controller classes and then sent as the response entity.
- *
- * @author margaretha
- *
- */
-@Component
-public class AnnotationConverter {
-
- /**
- * Returns layer descriptions in a list of {@link LayerDto}s.
- *
- * @param pairs
- * a list of {@link AnnotationLayer}s
- * @return a list of {@link LayerDto}s
- */
- public List<LayerDto> convertToLayerDto (List<AnnotationLayer> pairs) {
- List<LayerDto> layerDtos = new ArrayList<LayerDto>(pairs.size());
- LayerDto dto;
- String foundry, layer;
- for (AnnotationLayer p : pairs) {
- dto = new LayerDto();
- dto.setId(p.getId());
- dto.setDescription(p.getDescription());
-
- foundry = p.getFoundry().getCode();
- dto.setFoundry(foundry);
-
- layer = p.getLayer().getCode();
- dto.setLayer(layer);
- dto.setCode(foundry + "/" + layer);
- layerDtos.add(dto);
- }
-
- return layerDtos;
- }
-
- /**
- * Returns foundry description in {@link FoundryDto}s
- *
- * @param pairs
- * a list of {@link AnnotationLayer}s
- * @param language
- * @return a list of {@link FoundryDto}s
- */
- public List<FoundryDto> convertToFoundryDto (List<AnnotationLayer> pairs,
- String language) {
- List<FoundryDto> foundryDtos = new ArrayList<FoundryDto>(pairs.size());
- Map<String, List<AnnotationLayer>> foundryMap = createFoundryMap(pairs);
-
- for (String foundryCode : foundryMap.keySet()) {
- List<AnnotationLayer> foundries = foundryMap.get(foundryCode);
- List<Layer> layers = new ArrayList<Layer>(foundries.size());
- FoundryDto dto = null;
-
- for (AnnotationLayer f : foundries) {
- if (dto == null) {
- Annotation foundry = f.getFoundry();
- dto = new FoundryDto();
- if (language.equals("de")) {
- dto.setDescription(foundry.getGermanDescription());
- }
- else {
- dto.setDescription(foundry.getDescription());
- }
- dto.setCode(foundry.getCode());
- }
-
- Annotation layer = f.getLayer();
- Set<Key> keys = new TreeSet<>();
-
- for (AnnotationKey ak : f.getKeys()) {
- Annotation a = ak.getKey();
- Map<String, String> values = new TreeMap<>();
-
- Key key = dto.new Key(a.getCode());
- if (language.equals("de")) {
- key.setDescription(a.getGermanDescription());
- for (Annotation v : ak.getValues()) {
- values.put(v.getCode(), v.getGermanDescription());
- }
-
- }
- else {
- key.setDescription(a.getDescription());
- for (Annotation v : ak.getValues()) {
- values.put(v.getCode(), v.getDescription());
- }
- }
- key.setValues(values);
- keys.add(key);
- }
-
- Layer l = dto.new Layer();
- l.setCode(layer.getCode());
-
- if (language.equals("de")) {
- l.setDescription(layer.getGermanDescription());
- }
- else {
- l.setDescription(layer.getDescription());
- }
-
- l.setKeys(keys);
- layers.add(l);
- }
-
- dto.setLayers(layers);
- foundryDtos.add(dto);
- }
-
- return foundryDtos;
- }
-
- private Map<String, List<AnnotationLayer>> createFoundryMap (
- List<AnnotationLayer> pairs) {
- Map<String, List<AnnotationLayer>> foundries =
- new HashMap<String, List<AnnotationLayer>>();
- for (AnnotationLayer p : pairs) {
- String foundryCode = p.getFoundry().getCode();
- if (foundries.containsKey(foundryCode)) {
- foundries.get(foundryCode).add(p);
- }
- else {
- List<AnnotationLayer> foundryList =
- new ArrayList<AnnotationLayer>();
- foundryList.add(p);
- foundries.put(foundryCode, foundryList);
- }
- }
-
- return foundries;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/encryption/RandomCodeGenerator.java b/full/src/main/java/de/ids_mannheim/korap/encryption/RandomCodeGenerator.java
deleted file mode 100644
index ea451aa..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/encryption/RandomCodeGenerator.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package de.ids_mannheim.korap.encryption;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.util.UUID;
-
-import javax.annotation.PostConstruct;
-
-import org.apache.commons.codec.binary.Base64;
-import org.apache.commons.lang.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-
-/**
- * Generates a random string that can be used for tokens, client id,
- * client secret, etc.
- *
- * @author margaretha
- *
- */
-@Component
-public class RandomCodeGenerator {
-
- @Autowired
- public KustvaktConfiguration config;
-
- public static SecureRandom secureRandom;
-
- @PostConstruct
- public void init () throws NoSuchAlgorithmException {
- secureRandom =
- SecureRandom.getInstance(config.getSecureRandomAlgorithm());
- }
-
- public String createRandomCode (KustvaktConfiguration c)
- throws KustvaktException, NoSuchAlgorithmException {
- config = c;
- init();
- return createRandomCode();
- }
-
- public String createRandomCode () throws KustvaktException {
- UUID randomUUID = UUID.randomUUID();
- byte[] uuidBytes = randomUUID.toString().getBytes();
- byte[] secureBytes = new byte[3];
- secureRandom.nextBytes(secureBytes);
-
- byte[] bytes = ArrayUtils.addAll(uuidBytes, secureBytes);
-
- try {
- MessageDigest md = MessageDigest
- .getInstance(config.getMessageDigestAlgorithm());
- md.update(bytes);
- byte[] digest = md.digest();
- String code = Base64.encodeBase64URLSafeString(digest);
- md.reset();
- return code;
- }
- catch (NoSuchAlgorithmException e) {
- throw new KustvaktException(StatusCodes.INVALID_ALGORITHM,
- config.getMessageDigestAlgorithm()
- + "is not a valid MessageDigest algorithm");
- }
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/Annotation.java b/full/src/main/java/de/ids_mannheim/korap/entity/Annotation.java
deleted file mode 100644
index 35ee11d..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/entity/Annotation.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package de.ids_mannheim.korap.entity;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * Describes annotation tags available in the system / used in
- * annotating corpus data.
- *
- * @author margaretha
- *
- */
-@Setter
-@Getter
-@Entity
-@Table(name = "annotation")
-public class Annotation {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private int id;
- private String code;
- private String type;
- private String text;
- private String description;
- @Column(name = "de_description")
- private String germanDescription;
-
- public Annotation () {}
-
- public Annotation (String code, String type, String text,
- String description) {
- this.code = code;
- this.type = type;
- this.text = text;
- this.description = description;
- }
-
- @Override
- public String toString () {
- return "id=" + id + ", code= " + code + ", type= " + type
- + ", description=" + description + ", germanDescription="
- + germanDescription;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/AnnotationKey.java b/full/src/main/java/de/ids_mannheim/korap/entity/AnnotationKey.java
deleted file mode 100644
index d65ffb2..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/entity/AnnotationKey.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package de.ids_mannheim.korap.entity;
-
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Setter
-@Getter
-@Entity
-@Table(name = "annotation_key", uniqueConstraints = @UniqueConstraint(
- columnNames = { "layer_id", "key_id" }))
-public class AnnotationKey {
-
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private int id;
- @Column(name = "key_id")
- private int keyId;
- @Column(name = "layer_id")
- private int layerId;
-
- @ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "layer_id", insertable = false, updatable = false)
- private AnnotationLayer layer;
-
- @ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "key_id", insertable = false, updatable = false)
- private Annotation key;
-
- @ManyToMany(fetch = FetchType.EAGER)
- @JoinTable(name = "annotation_value",
- joinColumns = @JoinColumn(name = "key_id",
- referencedColumnName = "id"),
- inverseJoinColumns = @JoinColumn(name = "value_id",
- referencedColumnName = "id"),
- uniqueConstraints = @UniqueConstraint(
- columnNames = { "key_id", "value_id" }))
- private Set<Annotation> values;
-
- public AnnotationKey () {}
-
- public AnnotationKey (int layerId, int keyId) {
- this.layerId = layerId;
- this.keyId = keyId;
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/AnnotationLayer.java b/full/src/main/java/de/ids_mannheim/korap/entity/AnnotationLayer.java
deleted file mode 100644
index c16abec..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/entity/AnnotationLayer.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package de.ids_mannheim.korap.entity;
-
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.UniqueConstraint;
-
-import org.hibernate.annotations.Fetch;
-import org.hibernate.annotations.FetchMode;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * Describes annotations as a pair, e.g. foundry and layer where
- * foundry denotes where the annotation comes from e.g. Tree tagger
- * parser, and layer denotes the annotation layer e.g. part of speech.
- *
- * @author margaretha
- * @see Annotation
- */
-@Setter
-@Getter
-@Entity
-@Table(name = "annotation_layer", uniqueConstraints = @UniqueConstraint(
- columnNames = { "foundry_id", "layer_id" }))
-public class AnnotationLayer {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private int id;
- @Column(name = "foundry_id")
- private int foundryId;
- @Column(name = "layer_id")
- private int layerId;
- @Column(name = "description")
- private String description;
-
- @Fetch(FetchMode.SELECT)
- @ManyToOne // (fetch=FetchType.LAZY)
- @JoinColumn(name = "foundry_id", insertable = false, updatable = false)
- private Annotation foundry;
-
- @Fetch(FetchMode.SELECT)
- @ManyToOne // (fetch=FetchType.LAZY)
- @JoinColumn(name = "layer_id", insertable = false, updatable = false)
- private Annotation layer;
-
- @OneToMany(mappedBy = "layer", fetch = FetchType.EAGER,
- cascade = CascadeType.REMOVE)
- private Set<AnnotationKey> keys;
-
- @Override
- public String toString () {
- return "id=" + id + ", foundry=" + foundry + ", layer=" + layer
- + ", description=" + description + ", keys= " + keys;
-
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java b/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java
deleted file mode 100644
index 813adc5..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package de.ids_mannheim.korap.entity;
-
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.Table;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * Describes resources having free licenses. Primarily for
- * accommodating
- * clients in providing data without login such as KorapSRU.
- *
- * @author margaretha
- *
- */
-@Getter
-@Setter
-@Entity
-@Table(name = "resource")
-public class Resource {
-
- @Id
- private String id;
-
- @Column(name = "de_title")
- private String germanTitle;
-
- @Column(name = "en_title")
- private String englishTitle;
-
- @Column(name = "en_description")
- private String englishDescription;
-
- @ManyToMany(fetch = FetchType.EAGER)
- @JoinTable(name = "resource_layer",
- joinColumns = @JoinColumn(name = "resource_id",
- referencedColumnName = "id"),
- inverseJoinColumns = @JoinColumn(name = "layer_id",
- referencedColumnName = "id"))
- private Set<AnnotationLayer> layers;
-
- public Resource () {}
-
- public Resource (String id, String germanTitle, String englishTitle,
- String englishDescription, Set<AnnotationLayer> layers) {
- this.id = id;
- this.germanTitle = germanTitle;
- this.englishTitle = englishTitle;
- this.englishDescription = englishDescription;
- this.layers = layers;
- }
-
- @Override
- public String toString () {
- return "id=" + id + ", germanTitle=" + germanTitle + ", englishTitle="
- + englishTitle + ", description=" + englishDescription
- + ", layers= " + layers;
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationIface.java b/full/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationIface.java
deleted file mode 100644
index 140ef6b..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/interfaces/AuthenticationIface.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package de.ids_mannheim.korap.interfaces;
-
-import java.util.Map;
-
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.user.User;
-
-public interface AuthenticationIface {
-
- public TokenContext getTokenContext(String authToken) throws KustvaktException;
-
-
- public TokenContext createTokenContext(User user, Map<String, Object> attr)
- throws KustvaktException;
-
-
- void removeUserSession (String token) throws KustvaktException;
-
-
- public TokenContext refresh (TokenContext context) throws KustvaktException;
-
-
- public TokenType getTokenType ();
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/interfaces/EncryptionIface.java b/full/src/main/java/de/ids_mannheim/korap/interfaces/EncryptionIface.java
deleted file mode 100644
index 134ebdb..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/interfaces/EncryptionIface.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package de.ids_mannheim.korap.interfaces;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.user.User;
-
-import java.io.UnsupportedEncodingException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Map;
-
-public interface EncryptionIface {
-
- public enum Encryption {
- @Deprecated
- SIMPLE, ESAPICYPHER, BCRYPT
- }
-
-
- /**
- * One-way hashing of String input. Used to canonicalize
- *
- * @param input
- * @param salt
- * @return
- */
- public String secureHash (String input, String salt)
- throws KustvaktException;
-
-
- public String secureHash (String input) throws NoSuchAlgorithmException,
- UnsupportedEncodingException, KustvaktException;
-
-
- /**
- * @param plain
- * @param hash
- * @param salt
- * @return
- */
- public boolean checkHash (String plain, String hash, String salt);
-
-
- public boolean checkHash (String plain, String hash);
-
-
- /**
- * create random String to be used as authentication token
- *
- * @return
- */
- public String createToken (boolean hash, Object ... obj);
-
-
- public String createToken ();
-
-
- /**
- * create a random Integer to be used as ID for databases
- *
- * @return
- */
- public String createRandomNumber (Object ... obj);
-
-
- public String encodeBase ();
-
-
- // @Deprecated
- //public Map<String, Object> validateMap (Map<String, Object> map)
- // throws KustvaktException;
-
-
- //@Deprecated
- //public String validateEntry (String input, String type)
- // throws KustvaktException;
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/interfaces/EntityHandlerIface.java b/full/src/main/java/de/ids_mannheim/korap/interfaces/EntityHandlerIface.java
deleted file mode 100644
index 9bcf614..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/interfaces/EntityHandlerIface.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package de.ids_mannheim.korap.interfaces;
-
-import de.ids_mannheim.korap.exceptions.EmptyResultException;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.user.User;
-
-/**
- * User: hanl
- * Date: 8/19/13
- * Time: 11:04 AM
- */
-public interface EntityHandlerIface {
-
- User getAccount (String username) throws EmptyResultException,
- KustvaktException;
-
-
- int updateAccount (User user) throws KustvaktException;
-
-
- int createAccount (User user) throws KustvaktException;
-
-
- int deleteAccount (Integer userid) throws KustvaktException;
-
-
- int truncate () throws KustvaktException;
-
-
- int resetPassphrase (String username, String uriToken, String passphrase)
- throws KustvaktException;
-
-
- int activateAccount (String username, String uriToken)
- throws KustvaktException;
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Scope.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Scope.java
deleted file mode 100644
index 0dc20d5..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/constant/OAuth2Scope.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package de.ids_mannheim.korap.oauth2.constant;
-
-public enum OAuth2Scope {
-
- ALL,
- ADMIN,
-
- OPENID,
- AUTHORIZE,
-
- CLIENT_INFO,
- REGISTER_CLIENT,
- DEREGISTER_CLIENT,
- RESET_CLIENT_SECRET,
-
- SEARCH,
- SERIALIZE_QUERY,
- MATCH_INFO,
-
- USER_GROUP_INFO,
- CREATE_USER_GROUP,
- DELETE_USER_GROUP,
-
- DELETE_USER_GROUP_MEMBER,
- ADD_USER_GROUP_MEMBER,
-
- EDIT_USER_GROUP_MEMBER_ROLE,
- ADD_USER_GROUP_MEMBER_ROLE,
- DELETE_USER_GROUP_MEMBER_ROLE,
-
- CREATE_VC,
- VC_INFO,
- EDIT_VC,
- DELETE_VC,
-
- SHARE_VC,
- DELETE_VC_ACCESS,
- VC_ACCESS_INFO;
-
- @Override
- public String toString () {
- return super.toString().toLowerCase();
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
index aa158a3..de0cfac 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/dao/AccessScopeDao.java
@@ -13,7 +13,8 @@
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
@Repository
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
index 8fb2e0d..15d9da5 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/entity/AccessScope.java
@@ -11,7 +11,7 @@
import javax.persistence.ManyToMany;
import javax.persistence.Table;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import lombok.Getter;
import lombok.Setter;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
index 591e41d..e73421b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/oltu/service/OltuTokenService.java
@@ -25,6 +25,7 @@
import de.ids_mannheim.korap.oauth2.dao.AccessTokenDao;
import de.ids_mannheim.korap.oauth2.dao.RefreshTokenDao;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.oauth2.entity.AccessToken;
import de.ids_mannheim.korap.oauth2.entity.Authorization;
import de.ids_mannheim.korap.oauth2.entity.OAuth2Client;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/DummyOAuth2ScopeServiceImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/DummyOAuth2ScopeServiceImpl.java
deleted file mode 100644
index 4cafce0..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/DummyOAuth2ScopeServiceImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package de.ids_mannheim.korap.oauth2.service;
-
-import java.util.Collection;
-import java.util.Set;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
-import de.ids_mannheim.korap.oauth2.entity.AccessScope;
-import de.ids_mannheim.korap.security.context.TokenContext;
-
-public class DummyOAuth2ScopeServiceImpl implements OAuth2ScopeService {
-
- @Override
- public Set<AccessScope> convertToAccessScope (Collection<String> scopes)
- throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String convertAccessScopesToString (Set<AccessScope> scopes) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<String> convertAccessScopesToStringSet (
- Set<AccessScope> scopes) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Set<String> filterScopes (Set<String> scopes,
- Set<String> defaultScopes) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public void verifyScope (TokenContext context, OAuth2Scope requiredScope)
- throws KustvaktException {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
- Set<AccessScope> originalScopes) throws KustvaktException {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
index 37e89ef..227cf0e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2AuthorizationService.java
@@ -28,7 +28,7 @@
@Autowired
protected OAuth2ClientService clientService;
@Autowired
- protected OAuth2ScopeService scopeService;
+ protected OAuth2ScopeServiceImpl scopeService;
@Autowired
private AuthorizationDao authorizationDao;
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java
deleted file mode 100644
index 46d21eb..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package de.ids_mannheim.korap.oauth2.service;
-
-import java.util.Collection;
-import java.util.Set;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
-import de.ids_mannheim.korap.oauth2.entity.AccessScope;
-import de.ids_mannheim.korap.security.context.TokenContext;
-
-public interface OAuth2ScopeService {
-
- /**
- * Converts a set of scope strings to a set of {@link AccessScope}
- *
- * @param scopes
- * @return
- * @throws KustvaktException
- */
- Set<AccessScope> convertToAccessScope (Collection<String> scopes)
- throws KustvaktException;
-
- String convertAccessScopesToString (Set<AccessScope> scopes);
-
- Set<String> convertAccessScopesToStringSet (Set<AccessScope> scopes);
-
- /**
- * Simple reduction of requested scopes, i.e. excluding any scopes
- * that are not default scopes for a specific authorization grant.
- *
- * @param scopes
- * @param defaultScopes
- * @return accepted scopes
- */
- Set<String> filterScopes (Set<String> scopes, Set<String> defaultScopes);
-
- void verifyScope (TokenContext context, OAuth2Scope requiredScope)
- throws KustvaktException;
-
- /**
- * Verify scopes given in a refresh request. The scopes must not
- * include other scopes than those authorized in the original
- * access token issued together with the refresh token.
- *
- * @param requestScopes
- * requested scopes
- * @param originalScopes
- * authorized scopes
- * @return a set of requested {@link AccessScope}
- * @throws KustvaktException
- */
- Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
- Set<AccessScope> originalScopes) throws KustvaktException;
-
-}
\ No newline at end of file
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
index 387bf6d..7632032 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2ScopeServiceImpl.java
@@ -11,14 +11,15 @@
import org.springframework.beans.factory.annotation.Autowired;
import de.ids_mannheim.korap.config.Attributes;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.constant.TokenType;
import de.ids_mannheim.korap.dao.AdminDao;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.oauth2.constant.OAuth2Error;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.dao.AccessScopeDao;
import de.ids_mannheim.korap.oauth2.entity.AccessScope;
+import de.ids_mannheim.korap.oauth2.entity.AccessScope;
import de.ids_mannheim.korap.security.context.TokenContext;
public class OAuth2ScopeServiceImpl implements OAuth2ScopeService {
@@ -29,10 +30,13 @@
@Autowired
private AdminDao adminDao;
- /* (non-Javadoc)
- * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#convertToAccessScope(java.util.Collection)
+ /**
+ * Converts a set of scope strings to a set of {@link AccessScope}
+ *
+ * @param scopes
+ * @return
+ * @throws KustvaktException
*/
- @Override
public Set<AccessScope> convertToAccessScope (Collection<String> scopes)
throws KustvaktException {
@@ -64,19 +68,11 @@
return requestedScopes;
}
- /* (non-Javadoc)
- * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#convertAccessScopesToString(java.util.Set)
- */
- @Override
public String convertAccessScopesToString (Set<AccessScope> scopes) {
Set<String> set = convertAccessScopesToStringSet(scopes);
return String.join(" ", set);
}
- /* (non-Javadoc)
- * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#convertAccessScopesToStringSet(java.util.Set)
- */
- @Override
public Set<String> convertAccessScopesToStringSet (
Set<AccessScope> scopes) {
Set<String> set = scopes.stream().map(scope -> scope.toString())
@@ -84,10 +80,14 @@
return set;
}
- /* (non-Javadoc)
- * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#filterScopes(java.util.Set, java.util.Set)
+ /**
+ * Simple reduction of requested scopes, i.e. excluding any scopes
+ * that are not default scopes for a specific authorization grant.
+ *
+ * @param scopes
+ * @param defaultScopes
+ * @return accepted scopes
*/
- @Override
public Set<String> filterScopes (Set<String> scopes,
Set<String> defaultScopes) {
Stream<String> stream = scopes.stream();
@@ -115,10 +115,18 @@
}
}
- /* (non-Javadoc)
- * @see de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService#verifyRefreshScope(java.util.Set, java.util.Set)
+ /**
+ * Verify scopes given in a refresh request. The scopes must not
+ * include other scopes than those authorized in the original
+ * access token issued together with the refresh token.
+ *
+ * @param requestScopes
+ * requested scopes
+ * @param originalScopes
+ * authorized scopes
+ * @return a set of requested {@link AccessScope}
+ * @throws KustvaktException
*/
- @Override
public Set<AccessScope> verifyRefreshScope (Set<String> requestScopes,
Set<AccessScope> originalScopes) throws KustvaktException {
Set<AccessScope> requestedScopes = convertToAccessScope(requestScopes);
diff --git a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
index c18e96f..9647748 100644
--- a/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/oauth2/service/OAuth2TokenService.java
@@ -35,7 +35,7 @@
private OAuth2AuthorizationService authorizationService;
@Autowired
- protected OAuth2ScopeService scopeService;
+ protected OAuth2ScopeServiceImpl scopeService;
@Autowired
protected FullConfiguration config;
diff --git a/full/src/main/java/de/ids_mannheim/korap/security/context/KustvaktContext.java b/full/src/main/java/de/ids_mannheim/korap/security/context/KustvaktContext.java
deleted file mode 100644
index 6d36199..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/security/context/KustvaktContext.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package de.ids_mannheim.korap.security.context;
-
-import javax.ws.rs.core.SecurityContext;
-
-import java.security.Principal;
-
-/**
- * @author hanl
- * @date 13/05/2014
- *
- * wrapper for REST security context
- *
- */
-public class KustvaktContext implements SecurityContext {
-
- private TokenContext user;
-
-
- public KustvaktContext (final TokenContext user) {
- this.user = user;
- }
-
-
- @Override
- public Principal getUserPrincipal () {
- return this.user;
- }
-
-
- @Override
- public boolean isUserInRole (String role) {
- throw new UnsupportedOperationException();
- }
-
-
- @Override
- public boolean isSecure () {
- return false;
- }
-
-
- @Override
- public String getAuthenticationScheme () {
- return SecurityContext.BASIC_AUTH;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/security/context/TokenContext.java b/full/src/main/java/de/ids_mannheim/korap/security/context/TokenContext.java
deleted file mode 100644
index b31c643..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/security/context/TokenContext.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package de.ids_mannheim.korap.security.context;
-
-import java.io.Serializable;
-import java.time.ZonedDateTime;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.utils.JsonUtils;
-import de.ids_mannheim.korap.utils.TimeUtils;
-import lombok.AccessLevel;
-import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * EM:
- * - change datatype of tokenType from string to enum
- * - added authenticationTime
- *
- * @author hanl
- * @date 27/01/2014
- */
-@Data
-public class TokenContext implements java.security.Principal, Serializable {
-
- private ZonedDateTime authenticationTime;
- /**
- * session relevant data. Are never persisted into a database
- */
- private String username;
- private long expirationTime;
- // either "session_token " / "api_token
- private TokenType tokenType;
- private String token;
- private boolean secureRequired;
-
-// @Getter(AccessLevel.PRIVATE)
- @Setter(AccessLevel.PRIVATE)
- private Map<String, Object> parameters;
- private String hostAddress;
- private String userAgent;
-
-
- public TokenContext () {
- this.parameters = new HashMap<>();
- this.setUsername("");
- this.setToken("");
- this.setSecureRequired(false);
- this.setExpirationTime(-1);
- }
-
-
- private Map statusMap () {
- Map m = new HashMap();
- if (username != null && !username.isEmpty())
- m.put(Attributes.USERNAME, username);
- m.put(Attributes.TOKEN_EXPIRATION,
- TimeUtils.format(this.expirationTime));
- m.put(Attributes.TOKEN, this.token);
- m.put(Attributes.TOKEN_TYPE, this.tokenType);
- return m;
- }
-
-
- public Map<String, Object> params () {
- return new HashMap<>(parameters);
- }
-
- public boolean match (TokenContext other) {
- if (other.getToken().equals(this.token))
- if (this.getHostAddress().equals(this.hostAddress))
- // user agent should be irrelvant -- what about os
- // system version?
- // if (other.getUserAgent().equals(this.userAgent))
- return true;
- return false;
- }
-
-
- public void addContextParameter (String key, String value) {
- this.parameters.put(key, value);
- }
-
-
- public void addParams (Map<String, Object> map) {
- for (Map.Entry<String, Object> e : map.entrySet())
- this.parameters.put(e.getKey(), String.valueOf(e.getValue()));
- }
-
-
- public void removeContextParameter (String key) {
- this.parameters.remove(key);
- }
-
-
- public void setExpirationTime (long date) {
- this.expirationTime = date;
- }
-
-
- // todo: complete
- public static TokenContext fromJSON (String s) throws KustvaktException {
- JsonNode node = JsonUtils.readTree(s);
- TokenContext c = new TokenContext();
- if (node != null) {
- c.setUsername(node.path(Attributes.USERNAME).asText());
- c.setToken(node.path(Attributes.TOKEN).asText());
- }
- return c;
- }
-
-
- public static TokenContext fromOAuth2 (String s) throws KustvaktException {
- JsonNode node = JsonUtils.readTree(s);
- TokenContext c = new TokenContext();
- if (node != null) {
- c.setToken(node.path("token").asText());
- c.setTokenType(TokenType.valueOf(node.path("token_type").asText()));
- c.setExpirationTime(node.path("expires_in").asLong());
- c.addContextParameter("refresh_token",
- node.path("refresh_token").asText());
-
- }
- return c;
- }
-
-
- public boolean isValid () {
- return (this.username != null && !this.username.isEmpty())
- && (this.token != null && !this.token.isEmpty())
- && (this.tokenType != null);
- }
-
-
- public String getToken () {
- return token;
- }
-
-
- public String toJson () throws KustvaktException {
- return JsonUtils.toJSON(this.statusMap());
- }
-
-
- public boolean isDemo () {
- return User.UserFactory.isDemo(this.username);
- }
-
-
-
- @Override
- public String getName () {
- return this.getUsername();
- }
-
-
- public ZonedDateTime getAuthenticationTime () {
- return authenticationTime;
- }
-
-
- public void setAuthenticationTime (ZonedDateTime authTime) {
- this.authenticationTime = authTime;
- }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java b/full/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
deleted file mode 100644
index 2af1912..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/server/KustvaktBaseServer.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package de.ids_mannheim.korap.server;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.nio.charset.StandardCharsets;
-import java.security.NoSuchAlgorithmException;
-
-import javax.servlet.ServletContextListener;
-
-import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.server.handler.ShutdownHandler;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.springframework.web.context.ContextLoaderListener;
-
-import com.sun.jersey.spi.spring.container.servlet.SpringServlet;
-
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.encryption.RandomCodeGenerator;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author hanl
- * @date 01/06/2015
- */
-public abstract class KustvaktBaseServer {
-
- protected static KustvaktConfiguration config;
-
- protected static String rootPackages;
- protected static KustvaktArgs kargs;
-
- public KustvaktBaseServer () {}
-
- protected KustvaktArgs readAttributes (String[] args) {
- KustvaktArgs kargs = new KustvaktArgs();
- for (int i = 0; i < args.length; i++) {
- switch ((args[i])) {
- case "--spring-config":
- kargs.setSpringConfig(args[i + 1]);
- break;
- case "--port":
- kargs.setPort(Integer.valueOf(args[i + 1]));
- break;
- case "--help":
- StringBuffer b = new StringBuffer();
-
- b.append("Parameter description: \n")
- .append("--spring-config <Spring XML configuration filename in classpath>\n")
- .append("--port <Server port number>\n")
- .append("--help : This help menu\n");
- System.out.println(b.toString());
- System.out.println();
- return (KustvaktArgs) null;
- }
- }
- return kargs;
- }
-
- protected void start ()
- throws KustvaktException, IOException, NoSuchAlgorithmException {
-
- if (kargs.port == -1) {
- kargs.setPort(config.getPort());
- }
-
- Server server = new Server();
-
- ServletContextHandler contextHandler =
- new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
- contextHandler.setContextPath("/");
- contextHandler.setInitParameter("contextConfigLocation",
- "classpath:" + kargs.getSpringConfig());
-
- ServletContextListener listener = new ContextLoaderListener();
- contextHandler.addEventListener(listener);
-
- ServletHolder servletHolder = new ServletHolder(new SpringServlet());
- servletHolder.setInitParameter(
- "com.sun.jersey.config.property.packages", rootPackages);
- servletHolder.setInitParameter(
- "com.sun.jersey.api.json.POJOMappingFeature", "true");
- servletHolder.setInitOrder(1);
- contextHandler.addServlet(servletHolder, config.getBaseURL());
-
- ServerConnector connector = new ServerConnector(server);
- connector.setPort(kargs.port);
- connector.setIdleTimeout(60000);
-
- RandomCodeGenerator random = new RandomCodeGenerator();
- String shutdownToken = random.createRandomCode(config);
- ShutdownHandler shutdownHandler = new ShutdownHandler(shutdownToken,true,true);
-
- FileOutputStream fos = new FileOutputStream(new File("shutdownToken"));
- OutputStreamWriter writer =
- new OutputStreamWriter(fos, StandardCharsets.UTF_8.name());
- writer.write(shutdownToken);
- writer.flush();
- writer.close();
-
- HandlerList handlers = new HandlerList();
- handlers.addHandler(shutdownHandler);
- handlers.addHandler(contextHandler);
-
- server.setHandler(handlers);
-
- server.setConnectors(new Connector[] { connector });
- try {
- server.start();
- server.join();
- }
- catch (Exception e) {
- System.out.println("Server could not be started!");
- System.out.println(e.getMessage());
- e.printStackTrace();
- System.exit(-1);
- }
- }
-
- @Setter
- public static class KustvaktArgs {
-
- @Getter
- private String springConfig;
- private int port;
-
- public KustvaktArgs () {
- this.port = -1;
- this.springConfig = null;
- }
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java b/full/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java
deleted file mode 100644
index 3e384ec..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/service/AnnotationService.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package de.ids_mannheim.korap.service;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import de.ids_mannheim.korap.dao.AnnotationDao;
-import de.ids_mannheim.korap.dto.FoundryDto;
-import de.ids_mannheim.korap.dto.LayerDto;
-import de.ids_mannheim.korap.dto.converter.AnnotationConverter;
-import de.ids_mannheim.korap.entity.AnnotationLayer;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.web.controller.AnnotationController;
-
-/** AnnotationService defines the logic behind {@link AnnotationController}.
- *
- * @author margaretha
- *
- */
-@Service
-public class AnnotationService {
-
- private static Logger jlog =
- LogManager.getLogger(AnnotationService.class);
-
- @Autowired
- private AnnotationDao annotationDao;
-
- @Autowired
- private AnnotationConverter annotationConverter;
-
- public List<LayerDto> getLayerDtos () {
- List<AnnotationLayer> layers = annotationDao.getAllFoundryLayerPairs();
- jlog.debug("/layers " + layers.toString());
- List<LayerDto> layerDto = annotationConverter.convertToLayerDto(layers);
- return layerDto;
- }
-
- public List<FoundryDto> getFoundryDtos (List<String> codes, String language)
- throws KustvaktException {
- List<AnnotationLayer> annotationPairs = null;
- String foundry = "", layer = "";
- if (codes.contains("*")) {
- annotationPairs =
- annotationDao.getAnnotationDescriptions(foundry, layer);
- }
- else {
- String[] annotationCode;
- annotationPairs = new ArrayList<AnnotationLayer>();
- for (String code : codes) {
- jlog.debug("code " + code);
- annotationCode = code.split("/");
- if (annotationCode.length == 1) {
- foundry = annotationCode[0];
- }
- else if (annotationCode.length == 2) {
- foundry = annotationCode[0];
- layer = annotationCode[1];
- }
- else {
- jlog.error("Annotation code is wrong: " + annotationCode);
- throw new KustvaktException(StatusCodes.INVALID_ATTRIBUTE,
- "Bad attribute:", code);
- }
-
- annotationPairs.addAll(annotationDao
- .getAnnotationDescriptions(foundry, layer));
- }
- }
-
- if (annotationPairs != null && !annotationPairs.isEmpty()) {
- List<FoundryDto> foundryDtos = annotationConverter
- .convertToFoundryDto(annotationPairs, language);
- jlog.debug("/description " + annotationPairs.toString());
- return foundryDtos;
- }
- else {
- throw new KustvaktException(StatusCodes.NO_RESULT_FOUND,
- "No result found.", "");
- }
-
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java b/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java
deleted file mode 100644
index 6e7c17e..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/service/SearchService.java
+++ /dev/null
@@ -1,243 +0,0 @@
-package de.ids_mannheim.korap.service;
-
-import java.util.ArrayList;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import javax.annotation.PostConstruct;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriBuilder;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.sun.jersey.core.util.MultivaluedMapImpl;
-
-import de.ids_mannheim.korap.authentication.AuthenticationManager;
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.query.serialize.MetaQueryBuilder;
-import de.ids_mannheim.korap.query.serialize.QuerySerializer;
-import de.ids_mannheim.korap.resource.rewrite.RewriteHandler;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.user.User.CorpusAccess;
-import de.ids_mannheim.korap.web.ClientsHandler;
-import de.ids_mannheim.korap.web.SearchKrill;
-
-@Service
-public class SearchService {
-
- private static Logger jlog = LogManager.getLogger(SearchService.class);
-
- @Autowired
- private KustvaktConfiguration config;
-
- @Autowired
- private AuthenticationManager authenticationManager;
-
- @Autowired
- private RewriteHandler rewriteHandler;
-
- @Autowired
- private SearchKrill searchKrill;
-
- private ClientsHandler graphDBhandler;
-
- @PostConstruct
- private void doPostConstruct () {
- this.rewriteHandler.defaultRewriteConstraints();
-
- UriBuilder builder = UriBuilder.fromUri("http://10.0.10.13").port(9997);
- this.graphDBhandler = new ClientsHandler(builder.build());
- }
-
- @SuppressWarnings("unchecked")
- public String serializeQuery (String q, String ql, String v, String cq,
- Integer pageIndex, Integer startPage, Integer pageLength,
- String context, Boolean cutoff) throws KustvaktException {
- QuerySerializer ss = new QuerySerializer().setQuery(q, ql, v);
- if (cq != null) ss.setCollection(cq);
-
- MetaQueryBuilder meta = new MetaQueryBuilder();
- if (pageIndex != null) meta.addEntry("startIndex", pageIndex);
- if (pageIndex == null && startPage != null)
- meta.addEntry("startPage", startPage);
- if (pageLength != null) meta.addEntry("count", pageLength);
- if (context != null) meta.setSpanContext(context);
- meta.addEntry("cutOff", cutoff);
-
- ss.setMeta(meta.raw());
- // return ss.toJSON();
-
- String query = ss.toJSON();
- query = rewriteHandler.processQuery(ss.toJSON(), null);
- return query;
- }
-
- private User createUser (String username, HttpHeaders headers)
- throws KustvaktException {
- User user = authenticationManager.getUser(username);
- authenticationManager.setAccessAndLocation(user, headers);
- if (user != null) {
- jlog.debug(
- "Debug: /getMatchInfo/: location=" + user.locationtoString()
- + ", access=" + user.accesstoString());
- }
- return user;
- }
-
- public String search (String jsonld) {
- // MH: todo: should be possible to add the meta part to
- // the query serialization
- // User user = controller.getUser(ctx.getUsername());
- // jsonld = this.processor.processQuery(jsonld, user);
- return searchKrill.search(jsonld);
- }
-
- @SuppressWarnings("unchecked")
- public String search (String engine, String username, HttpHeaders headers,
- String q, String ql, String v, String cq, Set<String> fields,
- Integer pageIndex, Integer pageInteger, String ctx,
- Integer pageLength, Boolean cutoff) throws KustvaktException {
-
- KustvaktConfiguration.BACKENDS eng = this.config.chooseBackend(engine);
- User user = createUser(username, headers);
-
- QuerySerializer serializer = new QuerySerializer();
- serializer.setQuery(q, ql, v);
- if (cq != null) serializer.setCollection(cq);
-
- MetaQueryBuilder meta = createMetaQuery(pageIndex, pageInteger, ctx,
- pageLength, cutoff);
- if (fields != null && !fields.isEmpty())
- meta.addEntry("fields", fields);
- serializer.setMeta(meta.raw());
-
- // There is an error in query processing
- // - either query, corpus or meta
- if (serializer.hasErrors()) {
- throw new KustvaktException(serializer.toJSON());
- }
-
- String query =
- this.rewriteHandler.processQuery(serializer.toJSON(), user);
- jlog.info("the serialized query " + query);
-
- String result;
- if (eng.equals(KustvaktConfiguration.BACKENDS.NEO4J)) {
- result = searchNeo4J(query, pageLength, meta, false);
- }
- else {
- result = searchKrill.search(query);
- }
- // jlog.debug("Query result: " + result);
- return result;
-
- }
-
- private MetaQueryBuilder createMetaQuery (Integer pageIndex,
- Integer pageInteger, String ctx, Integer pageLength,
- Boolean cutoff) {
- MetaQueryBuilder meta = new MetaQueryBuilder();
- meta.addEntry("startIndex", pageIndex);
- meta.addEntry("startPage", pageInteger);
- meta.setSpanContext(ctx);
- meta.addEntry("count", pageLength);
- // todo: what happened to cutoff?
- meta.addEntry("cutOff", cutoff);
- // meta.addMeta(pageIndex, pageInteger, pageLength, ctx,
- // cutoff);
- // fixme: should only apply to CQL queries per default!
- // meta.addEntry("itemsPerResource", 1);
- return meta;
- }
-
- private String searchNeo4J (String query, int pageLength,
- MetaQueryBuilder meta, boolean raw) throws KustvaktException {
-
- if (raw) {
- throw new KustvaktException(StatusCodes.ILLEGAL_ARGUMENT,
- "raw not supported!");
- }
-
- MultivaluedMap<String, String> map = new MultivaluedMapImpl();
- map.add("q", query);
- map.add("count", String.valueOf(pageLength));
- map.add("lctxs", String.valueOf(meta.getSpanContext().getLeftSize()));
- map.add("rctxs", String.valueOf(meta.getSpanContext().getRightSize()));
- return this.graphDBhandler.getResponse(map, "distKwic");
-
- }
-
- public String retrieveMatchInfo (String corpusId, String docId,
- String textId, String matchId, Set<String> foundries,
- String username, HttpHeaders headers, Set<String> layers,
- boolean spans, boolean highlights) throws KustvaktException {
- String matchid =
- searchKrill.getMatchId(corpusId, docId, textId, matchId);
-
- User user = createUser(username, headers);
- Pattern p = null;
- if (user != null) {
- CorpusAccess corpusAccess = user.getCorpusAccess();
- switch (corpusAccess) {
- case PUB:
- p = config.getPublicLicensePattern();
- break;
- case ALL:
- p = config.getAllLicensePattern();
- break;
- default: // FREE
- p = config.getFreeLicensePattern();
- break;
- }
- }
- boolean match_only = foundries == null || foundries.isEmpty();
- String results;
- try {
- if (!match_only) {
-
- ArrayList<String> foundryList = new ArrayList<String>();
- ArrayList<String> layerList = new ArrayList<String>();
-
- // EM: now without user, just list all foundries and
- // layers
- if (foundries.contains("*")) {
- foundryList = config.getFoundries();
- layerList = config.getLayers();
- }
- else {
- foundryList.addAll(foundries);
- layerList.addAll(layers);
- }
-
- results = searchKrill.getMatch(matchid, foundryList, layerList,
- spans, highlights, true, p);
- }
- else {
- results = searchKrill.getMatch(matchid, p);
- }
- }
- catch (Exception e) {
- jlog.error("Exception in the MatchInfo service encountered!", e);
- throw new KustvaktException(StatusCodes.ILLEGAL_ARGUMENT,
- e.getMessage());
- }
- jlog.debug("MatchInfo results: " + results);
- return results;
- }
-
- public String retrieveDocMetadata (String corpusId, String docId,
- String textId) {
- String textSigle = searchKrill.getTextSigle(corpusId, docId, textId);
- return searchKrill.getFields(textSigle);
- }
-
- public String getCollocationBase (String query) throws KustvaktException {
- return graphDBhandler.getResponse("distCollo", "q", query);
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java b/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java
index a9a1fb4..8ed6c09 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java
@@ -56,7 +56,7 @@
private static Logger jlog =
LogManager.getLogger(VirtualCorpusService.class);
- public static Pattern wordPattern = Pattern.compile("[-\\w ]+");
+ public static Pattern wordPattern = Pattern.compile("[-\\w. ]+");
@Autowired
private VirtualCorpusDao vcDao;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/KustvaktResponseHandler.java b/full/src/main/java/de/ids_mannheim/korap/web/KustvaktResponseHandler.java
deleted file mode 100644
index bce194c..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/KustvaktResponseHandler.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package de.ids_mannheim.korap.web;
-
-import java.util.EnumSet;
-
-import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.ResponseBuilder;
-
-import de.ids_mannheim.korap.constant.AuthenticationScheme;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.db.AuditingIface;
-
-/**
- * KustvaktResponseHandler includes exceptions regarding
- * authorization.
- *
- * @author margaretha
- *
- */
-public class KustvaktResponseHandler extends CoreResponseHandler {
-
- public KustvaktResponseHandler (AuditingIface iface) {
- super(iface);
- }
-
- @Override
- public WebApplicationException throwit (KustvaktException e) {
- Response r;
-
- // KustvaktException just wraps another exception
- if (e.getStatusCode() == null && e.hasNotification()) {
- r = Response.status(Response.Status.BAD_REQUEST)
- .entity(e.getNotification()).build();
- }
- else if (e.getStatusCode() == StatusCodes.USER_REAUTHENTICATION_REQUIRED
- || e.getStatusCode() == StatusCodes.AUTHORIZATION_FAILED
- || e.getStatusCode() >= StatusCodes.AUTHENTICATION_FAILED) {
- String notification = buildNotification(e.getStatusCode(),
- e.getMessage(), e.getEntity());
- r = createUnauthenticatedResponse(notification);
- }
- else if (e.hasNotification()) {
- r = Response.status(getStatus(e.getStatusCode()))
- .entity(e.getNotification()).build();
- }
- else {
- String notification = buildNotification(e.getStatusCode(),
- e.getMessage(), e.getEntity());
- r = Response.status(getStatus(e.getStatusCode()))
- .entity(notification).build();
- }
- return new WebApplicationException(r);
- }
-
- public Response createUnauthenticatedResponse (String notification) {
- ResponseBuilder builder = Response.status(Response.Status.UNAUTHORIZED);
-
- for (AuthenticationScheme s : EnumSet
- .allOf(AuthenticationScheme.class)) {
- builder = builder.header(HttpHeaders.WWW_AUTHENTICATE,
- s.displayName() + " realm=\"Kustvakt\"");
- }
-
- return builder.entity(notification).build();
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java
deleted file mode 100644
index 06b9957..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package de.ids_mannheim.korap.web.controller;
-
-import java.io.IOException;
-import java.util.List;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.sun.jersey.spi.container.ResourceFilters;
-
-import de.ids_mannheim.korap.dto.FoundryDto;
-import de.ids_mannheim.korap.dto.LayerDto;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.service.AnnotationService;
-import de.ids_mannheim.korap.utils.JsonUtils;
-import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
-import de.ids_mannheim.korap.web.filter.DemoUserFilter;
-import de.ids_mannheim.korap.web.filter.PiwikFilter;
-
-/**
- * Provides services regarding annotation related information.
- *
- * @author margaretha
- *
- */
-@Controller
-@Path("/{version}/annotation/")
-@ResourceFilters({APIVersionFilter.class, DemoUserFilter.class, PiwikFilter.class })
-@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
-public class AnnotationController {
-
- @Autowired
- private KustvaktResponseHandler kustvaktResponseHandler;
-
- @Autowired
- private AnnotationService annotationService;
-
- /**
- * Returns information about all supported layers
- *
- * @return a json serialization of all supported layers
- */
- @GET
- @Path("layers")
- public List<LayerDto> getLayers () {
- return annotationService.getLayerDtos();
- }
-
-
- /**
- * Returns a list of foundry descriptions.
- *
- * @param codes
- * foundry-layer code or a Kleene-star
- * @param language
- * 2-letter language code (description language)
- * @return a list of foundry, layer, value information in json
- */
- @SuppressWarnings("unchecked")
- @POST
- @Path("description")
- @Consumes(MediaType.APPLICATION_JSON)
- public List<FoundryDto> getFoundryDescriptions (String json) {
- if (json == null || json.isEmpty()) {
- throw kustvaktResponseHandler
- .throwit(new KustvaktException(StatusCodes.MISSING_PARAMETER,
- "Missing a json string.", ""));
- }
-
- JsonNode node;
- try {
- node = JsonUtils.readTree(json);
- }
- catch (KustvaktException e1) {
- throw kustvaktResponseHandler.throwit(e1);
- }
-
- String language;
- if (!node.has("language")) {
- language = "en";
- }
- else {
- language = node.get("language").asText();
- if (language == null || language.isEmpty()) {
- language = "en";
- }
- else if (!(language.equals("en") || language.equals("de"))) {
- throw kustvaktResponseHandler.throwit(
- new KustvaktException(StatusCodes.UNSUPPORTED_VALUE,
- "Unsupported value:", language));
- }
- }
-
- List<String> codes;
- try {
- codes = JsonUtils.convert(node.get("codes"), List.class);
- }
- catch (IOException | NullPointerException e) {
- throw kustvaktResponseHandler.throwit(new KustvaktException(
- StatusCodes.INVALID_ARGUMENT, "Bad argument:", json));
- }
- if (codes == null) {
- throw kustvaktResponseHandler.throwit(
- new KustvaktException(StatusCodes.MISSING_ATTRIBUTE,
- "Missing attribute:", "codes"));
- }
- else if (codes.isEmpty()) {
- throw kustvaktResponseHandler
- .throwit(new KustvaktException(StatusCodes.NO_RESULT_FOUND,
- "No result found.", "codes:[]"));
- }
-
- try {
- return annotationService.getFoundryDtos(codes, language);
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
- }
-}
-
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
index e8047c2..d86a2b1 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2Controller.java
@@ -26,8 +26,8 @@
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.oltu.OAuth2AuthorizationRequest;
import de.ids_mannheim.korap.oauth2.oltu.OAuth2RevokeTokenRequest;
import de.ids_mannheim.korap.oauth2.oltu.service.OltuAuthorizationService;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java
index 761c3f6..6eae61c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuth2WithOpenIdController.java
@@ -31,8 +31,8 @@
import com.nimbusds.oauth2.sdk.id.State;
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.openid.OpenIdConfiguration;
import de.ids_mannheim.korap.oauth2.openid.OpenIdHttpRequestWrapper;
import de.ids_mannheim.korap.oauth2.openid.service.JWKService;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
index ebcfd51..ca7e168 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthClientController.java
@@ -18,8 +18,8 @@
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.dto.OAuth2ClientDto;
import de.ids_mannheim.korap.oauth2.dto.OAuth2ClientInfoDto;
import de.ids_mannheim.korap.oauth2.service.OAuth2ClientService;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
deleted file mode 100644
index e65ae07..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
+++ /dev/null
@@ -1,327 +0,0 @@
-package de.ids_mannheim.korap.web.controller;// package
- // de.ids_mannheim.korap.ext.web;
-
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-
-import com.sun.jersey.spi.container.ResourceFilters;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
-import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.service.SearchService;
-import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-import de.ids_mannheim.korap.web.APIVersionFilter;
-import de.ids_mannheim.korap.web.filter.AuthenticationFilter;
-import de.ids_mannheim.korap.web.filter.DemoUserFilter;
-import de.ids_mannheim.korap.web.filter.PiwikFilter;
-
-/**
- *
- * @author hanl, margaretha, diewald
- * @date 29/01/2014
- * @lastUpdate 09/07/2018
- *
- */
-@Controller
-@Path("/")
-@ResourceFilters({ APIVersionFilter.class, AuthenticationFilter.class,
- DemoUserFilter.class, PiwikFilter.class })
-@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
-public class SearchController {
-
- private static Logger jlog = LogManager.getLogger(SearchController.class);
-
- @Autowired
- private KustvaktResponseHandler kustvaktResponseHandler;
-
- @Autowired
- private SearchService searchService;
- @Autowired
- private OAuth2ScopeService scopeService;
-
- /**
- * Builds a json query serialization from the given parameters.
- *
- * @param locale
- * @param securityContext
- * @param q
- * query string
- * @param ql
- * query language
- * @param v
- * version
- * @param context
- * @param cutoff
- * true if the number of results should be limited
- * @param pageLength
- * number of results per page
- * @param pageIndex
- * @param startPage
- * @param cq
- * corpus query
- * @return
- */
- // ref query parameter removed!
- @GET
- @Path("{version}/query")
- public Response serializeQuery (@Context Locale locale,
- @Context SecurityContext securityContext, @QueryParam("q") String q,
- @QueryParam("ql") String ql, @QueryParam("v") String v,
- @QueryParam("context") String context,
- @QueryParam("cutoff") Boolean cutoff,
- @QueryParam("count") Integer pageLength,
- @QueryParam("offset") Integer pageIndex,
- @QueryParam("page") Integer startPage,
- @QueryParam("cq") String cq) {
- TokenContext ctx = (TokenContext) securityContext.getUserPrincipal();
- try {
- scopeService.verifyScope(ctx, OAuth2Scope.SERIALIZE_QUERY);
- String result = searchService.serializeQuery(q, ql, v, cq,
- pageIndex, startPage, pageLength, context, cutoff);
- jlog.debug("Query: " + result);
- return Response.ok(result).build();
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
- }
-
- @POST
- @Path("{version}/search")
- public Response searchPost (@Context SecurityContext context,
- @Context Locale locale, @QueryParam("engine") String engine,
- String jsonld) {
- TokenContext ctx = (TokenContext) context.getUserPrincipal();
- try {
- scopeService.verifyScope(ctx, OAuth2Scope.SEARCH);
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
-
- jlog.debug("Serialized search: " + jsonld);
- String result = searchService.search(jsonld);
- jlog.debug("The result set: " + result);
- return Response.ok(result).build();
- }
-
- @GET
- @Path("{version}/search")
- public Response searchGet (@Context SecurityContext securityContext,
- @Context HttpHeaders headers, @Context Locale locale,
- @QueryParam("q") String q, @QueryParam("ql") String ql,
- @QueryParam("v") String v, @QueryParam("context") String ctx,
- @QueryParam("cutoff") Boolean cutoff,
- @QueryParam("count") Integer pageLength,
- @QueryParam("offset") Integer pageIndex,
- @QueryParam("page") Integer pageInteger,
- @QueryParam("fields") Set<String> fields,
- @QueryParam("cq") String cq, @QueryParam("engine") String engine) {
-
- TokenContext context =
- (TokenContext) securityContext.getUserPrincipal();
-
- String result;
- try {
- scopeService.verifyScope(context, OAuth2Scope.SEARCH);
- result = searchService.search(engine, context.getUsername(),
- headers, q, ql, v, cq, fields, pageIndex, pageInteger, ctx,
- pageLength, cutoff);
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
-
- return Response.ok(result).build();
- }
-
- @GET
- @Path("{version}/corpus/{corpusId}/{docId}/{textId}/{matchId}/matchInfo")
- public Response getMatchInfo (@Context SecurityContext ctx,
- @Context HttpHeaders headers, @Context Locale locale,
- @PathParam("corpusId") String corpusId,
- @PathParam("docId") String docId,
- @PathParam("textId") String textId,
- @PathParam("matchId") String matchId,
- @QueryParam("foundry") Set<String> foundries,
- @QueryParam("layer") Set<String> layers,
- @QueryParam("spans") Boolean spans,
- // Highlights may also be a list of valid highlight classes
- @QueryParam("hls") Boolean highlights) throws KustvaktException {
-
- TokenContext tokenContext = (TokenContext) ctx.getUserPrincipal();
- scopeService.verifyScope(tokenContext, OAuth2Scope.MATCH_INFO);
- spans = spans != null ? spans : false;
- highlights = highlights != null ? highlights : false;
- if (layers == null || layers.isEmpty()) layers = new HashSet<>();
-
- String results = searchService.retrieveMatchInfo(corpusId, docId,
- textId, matchId, foundries, tokenContext.getUsername(), headers,
- layers, spans, highlights);
- return Response.ok(results).build();
- }
-
- /*
- * Returns the meta data fields of a certain document
- */
- // This is currently identical to LiteService#getMeta(),
- // but may need auth code to work following policies
- @GET
- @Path("{version}/corpus/{corpusId}/{docId}/{textId}")
- public Response getMetadata (@PathParam("corpusId") String corpusId,
- @PathParam("docId") String docId, @PathParam("textId") String textId
- // @QueryParam("fields") Set<String> fields
- ) throws KustvaktException {
- String results =
- searchService.retrieveDocMetadata(corpusId, docId, textId);
- return Response.ok(results).build();
- }
-
- @POST
- @Path("{version}/colloc")
- public Response getCollocationBase (@QueryParam("q") String query) {
- String result;
- try {
- result = searchService.getCollocationBase(query);
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
- return Response.ok(result).build();
- }
-
- // @GET
- // @Path("colloc")
- // public Response getCollocationsAll(@Context SecurityContext
- // ctx,
- // @Context Locale locale, @QueryParam("props") String properties,
- // @QueryParam("sfskip") Integer sfs,
- // @QueryParam("sflimit") Integer limit, @QueryParam("q") String
- // query,
- // @QueryParam("ql") String ql, @QueryParam("context") Integer
- // context,
- // @QueryParam("foundry") String foundry,
- // @QueryParam("paths") Boolean wPaths) {
- // TokenContext tokenContext = (TokenContext)
- // ctx.getUserPrincipal();
- // ColloQuery.ColloQueryBuilder builder;
- // KoralCollectionQueryBuilder cquery = new
- // KoralCollectionQueryBuilder();
- // String result;
- // try {
- // User user = controller.getUser(tokenContext.getUsername());
- // Set<VirtualCollection> resources = ResourceFinder
- // .search(user, VirtualCollection.class);
- // for (KustvaktResource c : resources)
- // cquery.addResource(((VirtualCollection) c).getQuery());
- //
- // builder = functions
- // .buildCollocations(query, ql, properties, context, limit,
- // sfs, foundry, new ArrayList<Dependency>(), wPaths,
- // cquery);
- //
- // result = graphDBhandler
- // .getResponse("distCollo", "q", builder.build().toJSON());
- // }catch (KustvaktException e) {
- // throw KustvaktResponseHandler.throwit(e);
- // }catch (JsonProcessingException e) {
- // throw
- // KustvaktResponseHandler.throwit(StatusCodes.ILLEGAL_ARGUMENT);
- // }
- // return Response.ok(result).build();
- // }
-
- // /**
- // * @param locale
- // * @param properties a json object string containing field, op
- // and value
- // for the query
- // * @param query
- // * @param context
- // * @return
- // */
- // @GET
- // @Path("{type}/{id}/colloc")
- // public Response getCollocations(@Context SecurityContext ctx,
- // @Context Locale locale, @QueryParam("props") String properties,
- // @QueryParam("sfskip") Integer sfs,
- // @QueryParam("sflimit") Integer limit, @QueryParam("q") String
- // query,
- // @QueryParam("ql") String ql, @QueryParam("context") Integer
- // context,
- // @QueryParam("foundry") String foundry,
- // @QueryParam("paths") Boolean wPaths, @PathParam("id") String
- // id,
- // @PathParam("type") String type) {
- // ColloQuery.ColloQueryBuilder builder;
- // type = StringUtils.normalize(type);
- // id = StringUtils.decodeHTML(id);
- // TokenContext tokenContext = (TokenContext)
- // ctx.getUserPrincipal();
- // String result;
- // try {
- // KoralCollectionQueryBuilder cquery = new
- // KoralCollectionQueryBuilder();
- // try {
- // User user = controller.getUser(tokenContext.getUsername());
- //
- // KustvaktResource resource = this.resourceHandler
- // .findbyStrId(id, user, type);
- //
- // if (resource instanceof VirtualCollection)
- // cquery.addResource(
- // ((VirtualCollection) resource).getQuery());
- // else if (resource instanceof Corpus)
- // cquery.addMetaFilter("corpusID",
- // resource.getPersistentID());
- // else
- // throw KustvaktResponseHandler
- // .throwit(StatusCodes.ILLEGAL_ARGUMENT,
- // "Type parameter not supported", type);
- //
- // }catch (KustvaktException e) {
- // throw KustvaktResponseHandler.throwit(e);
- // }catch (NumberFormatException ex) {
- // throw KustvaktResponseHandler
- // .throwit(StatusCodes.ILLEGAL_ARGUMENT);
- // }
- //
- // builder = functions
- // .buildCollocations(query, ql, properties, context, limit,
- // sfs, foundry, new ArrayList<Dependency>(), wPaths,
- // cquery);
- //
- // result = graphDBhandler
- // .getResponse("distCollo", "q", builder.build().toJSON());
- //
- // }catch (JsonProcessingException e) {
- // throw
- // KustvaktResponseHandler.throwit(StatusCodes.ILLEGAL_ARGUMENT);
- // }catch (KustvaktException e) {
- // throw KustvaktResponseHandler.throwit(e);
- // }
- //
- // return Response.ok(result).build();
- // }
-
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
deleted file mode 100644
index 43970be..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/StatisticController.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package de.ids_mannheim.korap.web.controller;
-
-import java.util.Locale;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.SecurityContext;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-
-import com.sun.jersey.spi.container.ResourceFilters;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.utils.KoralCollectionQueryBuilder;
-import de.ids_mannheim.korap.web.CoreResponseHandler;
-import de.ids_mannheim.korap.web.SearchKrill;
-import de.ids_mannheim.korap.web.APIVersionFilter;
-import de.ids_mannheim.korap.web.filter.PiwikFilter;
-
-/**
- * Web services related to statistics
- *
- * @author hanl
- * @author margaretha
- *
- * @date 08/11/2017
- *
- */
-@Controller
-@Path("{version}/statistics/")
-@ResourceFilters({APIVersionFilter.class, PiwikFilter.class })
-@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
-public class StatisticController {
-
-
- private static Logger jlog =
- LogManager.getLogger(StatisticController.class);
- @Autowired
- private CoreResponseHandler kustvaktResponseHandler;
- @Autowired
- private SearchKrill searchKrill;
-
-
- /**
- * Returns statistics of the virtual corpus defined by the given
- * corpusQuery parameter.
- *
- * @param context
- * SecurityContext
- * @param locale
- * Locale
- * @param corpusQuery
- * a collection query specifying a virtual corpus
- * @return statistics of the virtual corpus defined by the given
- * corpusQuery parameter.
- */
- @GET
- public Response getStatistics (@Context SecurityContext context,
- @Context Locale locale,
- @QueryParam("corpusQuery") String corpusQuery) {
-
- KoralCollectionQueryBuilder builder = new KoralCollectionQueryBuilder();
-
- String stats;
- if (corpusQuery != null && !corpusQuery.isEmpty()) {
- builder.with(corpusQuery);
- String json = null;
- try {
- json = builder.toJSON();
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
- stats = searchKrill.getStatistics(json);
- }
- else {
- stats = searchKrill.getStatistics(null);
- };
-
- if (stats.contains("-1"))
- throw kustvaktResponseHandler.throwit(StatusCodes.NO_RESULT_FOUND);
- jlog.debug("Stats: " + stats);
- return Response.ok(stats).build();
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
index 6c9427d..c356d78 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
@@ -21,11 +21,11 @@
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.constant.UserGroupStatus;
import de.ids_mannheim.korap.dto.UserGroupDto;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.service.UserGroupService;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
index 553bfb3..12ce7bf 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
@@ -21,12 +21,12 @@
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.constant.OAuth2Scope;
import de.ids_mannheim.korap.constant.VirtualCorpusAccessStatus;
import de.ids_mannheim.korap.constant.VirtualCorpusType;
import de.ids_mannheim.korap.dto.VirtualCorpusAccessDto;
import de.ids_mannheim.korap.dto.VirtualCorpusDto;
import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.oauth2.constant.OAuth2Scope;
import de.ids_mannheim.korap.oauth2.service.OAuth2ScopeService;
import de.ids_mannheim.korap.security.context.TokenContext;
import de.ids_mannheim.korap.service.VirtualCorpusService;
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
deleted file mode 100644
index d0e4562..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/AuthenticationFilter.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import javax.ws.rs.ext.Provider;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-import de.ids_mannheim.korap.authentication.AuthenticationManager;
-import de.ids_mannheim.korap.authentication.http.AuthorizationData;
-import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.security.context.KustvaktContext;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.utils.TimeUtils;
-import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-
-/**
- * @author hanl, margaretha
- * @date 28/01/2014
- * @last update 12/2017
- */
-@Component
-@Provider
-public class AuthenticationFilter
- implements ContainerRequestFilter, ResourceFilter {
-
- @Autowired
- private HttpAuthorizationHandler authorizationHandler;
-
- @Autowired
- private AuthenticationManager authenticationManager;
-
- @Autowired
- private KustvaktResponseHandler kustvaktResponseHandler;
-
- @Override
- public ContainerRequest filter (ContainerRequest request) {
- String host = request.getHeaderValue(ContainerRequest.HOST);
- String ua = request.getHeaderValue(ContainerRequest.USER_AGENT);
-
- String authorization =
- request.getHeaderValue(ContainerRequest.AUTHORIZATION);
-
- if (authorization != null && !authorization.isEmpty()) {
- TokenContext context = null;
- AuthorizationData authData;
- try {
- authData = authorizationHandler
- .parseAuthorizationHeaderValue(authorization);
-
- switch (authData.getAuthenticationScheme()) {
- // EM: For testing only, must be disabled for
- // production
- case BASIC:
- context = authenticationManager.getTokenContext(
- TokenType.BASIC, authData.getToken(), host, ua);
- break;
- // EM: has not been tested yet
- // case SESSION:
- // context =
- // authenticationManager.getTokenContext(
- // TokenType.SESSION, authData.getToken(), host,
- // ua);
- // break;
-
- // OAuth2 authentication scheme
- case BEARER:
- context = authenticationManager.getTokenContext(
- TokenType.BEARER, authData.getToken(), host,
- ua);
- break;
- // EM: JWT token-based authentication scheme
- case API:
- context = authenticationManager.getTokenContext(
- TokenType.API, authData.getToken(), host, ua);
- break;
- default:
- throw new KustvaktException(
- StatusCodes.AUTHENTICATION_FAILED,
- "Authentication scheme is not supported.");
- }
- checkContext(context, request);
- request.setSecurityContext(new KustvaktContext(context));
- }
- catch (KustvaktException e) {
- throw kustvaktResponseHandler.throwit(e);
- }
- }
- return request;
- }
-
-
- private void checkContext (TokenContext context, ContainerRequest request)
- throws KustvaktException {
- if (context == null) {
- throw new KustvaktException(StatusCodes.AUTHENTICATION_FAILED,
- "Context is null.");
- }
- else if (!context.isValid()) {
- throw new KustvaktException(StatusCodes.AUTHENTICATION_FAILED,
- "Context is not valid: "
- + "missing username, password or authentication scheme.");
- }
- else if (context.isSecureRequired() && !request.isSecure()) {
- throw new KustvaktException(StatusCodes.AUTHENTICATION_FAILED,
- "Request is not secure.");
- }
- else if (TimeUtils.isExpired(context.getExpirationTime())) {
- throw new KustvaktException(StatusCodes.EXPIRED,
- "Access token is expired");
- }
- }
-
-
- @Override
- public ContainerRequestFilter getRequestFilter () {
- return this;
- }
-
-
- @Override
- public ContainerResponseFilter getResponseFilter () {
- return null;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/BlockingFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/BlockingFilter.java
deleted file mode 100644
index 8375b62..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/BlockingFilter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import javax.ws.rs.ext.Provider;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-
-/**
- * @author hanl
- * @date 11/12/2014
- * <p/>
- * endpoint filter to block access to an endpoint, in case no
- * anonymous access should be allowed!
- */
-@Component
-@Provider
-public class BlockingFilter implements ContainerRequestFilter, ResourceFilter {
-
- @Autowired
- private KustvaktResponseHandler kustvaktResponseHandler;
-
- @Override
- public ContainerRequest filter (ContainerRequest request) {
- TokenContext context;
-
- try {
- context = (TokenContext) request.getUserPrincipal();
- }
- catch (UnsupportedOperationException e) {
- throw kustvaktResponseHandler.throwit(new KustvaktException(
- StatusCodes.UNSUPPORTED_OPERATION, e.getMessage(), e));
- }
-
- if (context == null || context.isDemo()) {
- throw kustvaktResponseHandler.throwit(new KustvaktException(
- StatusCodes.AUTHORIZATION_FAILED,
- "Unauthorized operation for user: guest", "guest"));
- }
-
-
- return request;
- }
-
-
- @Override
- public ContainerRequestFilter getRequestFilter () {
- return this;
- }
-
-
- @Override
- public ContainerResponseFilter getResponseFilter () {
- return null;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoFilter.java
deleted file mode 100644
index b15f5e3..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoFilter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import javax.ws.rs.core.SecurityContext;
-import javax.ws.rs.ext.Provider;
-
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-import de.ids_mannheim.korap.authentication.http.HttpAuthorizationHandler;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.security.context.KustvaktContext;
-import de.ids_mannheim.korap.security.context.TokenContext;
-
-/**
- * @author hanl
- * @date 08/02/2016
- */
-@Provider
-public class DemoFilter implements ContainerRequestFilter, ResourceFilter {
-
- @Override
- public ContainerRequest filter (ContainerRequest request) {
- String authentication =
- request.getHeaderValue(ContainerRequest.AUTHORIZATION);
- if (authentication == null || authentication.isEmpty()) {
- try {
- request.getUserPrincipal();
- }
- catch (UnsupportedOperationException e) {
- request.setSecurityContext(createContext());
- }
- }
- return request;
- }
-
-
- private SecurityContext createContext () {
- TokenContext context = new TokenContext();
- String token = null;
- try {
- token = HttpAuthorizationHandler
- .createBasicAuthorizationHeaderValue("demo", "demo2015");
- }
- catch (KustvaktException e) {
- e.printStackTrace();
- }
- context.setToken(token);
- context.setTokenType(TokenType.BASIC);
- context.setUsername("demo");
- return new KustvaktContext(context);
- }
-
-
- @Override
- public ContainerRequestFilter getRequestFilter () {
- return this;
- }
-
-
- @Override
- public ContainerResponseFilter getResponseFilter () {
- return null;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java
deleted file mode 100644
index e546c12..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/DemoUserFilter.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import java.security.Principal;
-
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.UriInfo;
-import javax.ws.rs.ext.Provider;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-import de.ids_mannheim.korap.config.KustvaktConfiguration;
-import de.ids_mannheim.korap.constant.TokenType;
-import de.ids_mannheim.korap.security.context.KustvaktContext;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.utils.TimeUtils;
-
-/**
- * Created by hanl on 7/15/14.
- */
-@Provider
-@Component
-public class DemoUserFilter implements ContainerRequestFilter, ResourceFilter {
-
- @Context
- UriInfo info;
- @Autowired
- private KustvaktConfiguration config;
-
-
- @Override
- public ContainerRequest filter (ContainerRequest request) {
- String host = request.getHeaderValue(ContainerRequest.HOST);
- String ua = request.getHeaderValue(ContainerRequest.USER_AGENT);
- String authentication = request
- .getHeaderValue(ContainerRequest.AUTHORIZATION);
-
- // means that this is the public service
- if (authentication == null || authentication.isEmpty()) {
- Principal pr = null;
- try {
- pr = request.getUserPrincipal();
- }
- catch (UnsupportedOperationException e) {
- // do nothing
- }
- if (pr == null)
- request.setSecurityContext(new KustvaktContext(
- createShorterToken(host, ua)));
-
- }
- return request;
- }
-
-
- private TokenContext createShorterToken (String host, String agent) {
- User demo = User.UserFactory.getDemoUser();
- TokenContext c = new TokenContext();
- c.setUsername(demo.getUsername());
- c.setHostAddress(host);
- c.setUserAgent(agent);
- c.setExpirationTime(TimeUtils.plusSeconds(
- config
- .getShortTokenTTL()).getMillis());
- c.setTokenType(TokenType.BASIC);
- return c;
- }
-
-
- @Override
- public ContainerRequestFilter getRequestFilter () {
- return this;
- }
-
-
- @Override
- public ContainerResponseFilter getResponseFilter () {
- return null;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/NonDemoBlockingFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/NonDemoBlockingFilter.java
deleted file mode 100644
index 47cd086..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/NonDemoBlockingFilter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import javax.ws.rs.ext.Provider;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.web.KustvaktResponseHandler;
-
-/**
- * EM: pretty much identical to {@link BlockingFilter}, should be deleted?
- *
- * @author hanl
- * @date 11/12/2014
- * <p/>
- * endpoint filter to block access to an endpoint, in case no
- * anonymous access should be allowed!
- */
-@Component
-@Provider
-public class NonDemoBlockingFilter
- implements ContainerRequestFilter, ResourceFilter {
-
- @Autowired
- private KustvaktResponseHandler kustvaktResponseHandler;
-
- @Override
- public ContainerRequest filter (ContainerRequest request) {
- TokenContext context;
- try {
- context = (TokenContext) request.getUserPrincipal();
- }
- catch (UnsupportedOperationException e) {
- throw kustvaktResponseHandler.throwit(new KustvaktException(
- StatusCodes.UNSUPPORTED_OPERATION, e.getMessage(), e));
- }
-
- if (context == null || context.isDemo()) {
- throw kustvaktResponseHandler.throwit(
- new KustvaktException(StatusCodes.AUTHORIZATION_FAILED,
- "Operation is not permitted for guest users"));
- }
- return request;
- }
-
-
- @Override
- public ContainerRequestFilter getRequestFilter () {
- return this;
- }
-
-
- @Override
- public ContainerResponseFilter getResponseFilter () {
- return null;
- }
-}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java b/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java
deleted file mode 100644
index 122f717..0000000
--- a/full/src/main/java/de/ids_mannheim/korap/web/filter/PiwikFilter.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package de.ids_mannheim.korap.web.filter;
-
-import java.security.SecureRandom;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-
-import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.UriBuilder;
-import javax.ws.rs.ext.Provider;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.sun.jersey.api.client.Client;
-import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
-import com.sun.jersey.api.client.config.DefaultClientConfig;
-import com.sun.jersey.api.client.filter.LoggingFilter;
-import com.sun.jersey.core.util.MultivaluedMapImpl;
-import com.sun.jersey.spi.container.ContainerRequest;
-import com.sun.jersey.spi.container.ContainerRequestFilter;
-import com.sun.jersey.spi.container.ContainerResponseFilter;
-import com.sun.jersey.spi.container.ResourceFilter;
-
-import de.ids_mannheim.korap.authentication.AuthenticationManager;
-import de.ids_mannheim.korap.config.Attributes;
-import de.ids_mannheim.korap.exceptions.KustvaktException;
-import de.ids_mannheim.korap.security.context.TokenContext;
-import de.ids_mannheim.korap.user.User;
-import de.ids_mannheim.korap.user.UserSettings;
-import de.ids_mannheim.korap.user.Userdata;
-import net.minidev.json.JSONArray;
-
-/**
- * @author hanl
- * @date 13/05/2014
- */
-@Component
-@Provider
-public class PiwikFilter implements ContainerRequestFilter, ResourceFilter {
-
- private WebResource service;
- // private static final String SERVICE = "http://localhost:8888";
- private static final String SERVICE = "http://10.0.10.13";
- private static Logger jlog = LogManager.getLogger(PiwikFilter.class);
- public static boolean ENABLED = false;
- private Map<String, String> customVars;
- @Autowired
- private AuthenticationManager authenticationManager;
-
-
- public PiwikFilter () {
-// controller = BeansFactory.getKustvaktContext()
-// .getAuthenticationManager();
- ClientConfig config = new DefaultClientConfig();
- Client client = Client.create(config);
- if (jlog.isDebugEnabled())
- client.addFilter(new LoggingFilter());
- UriBuilder b = UriBuilder.fromUri(SERVICE);
- service = client.resource(b.build());
- this.customVars = new HashMap<>();
- }
-
-
- private void send (ContainerRequest request) {
- Random random = new SecureRandom();
- MultivaluedMap<String, String> params = new MultivaluedMapImpl();
- params.add("idsite", "2");
- params.add("rec", "1");
- if (!customVars.isEmpty())
- params.add("_cvar", translateCustomData());
- params.add("cip", request.getHeaderValue("Host"));
- params.add("cookie", "false");
- params.add("r", String.valueOf(random.nextDouble()));
- params.add("action_name", request.getRequestUri().toASCIIString());
-
- Locale l = null;
- if (request.getAcceptableLanguages() != null)
- l = request.getAcceptableLanguages().get(0);
- try {
- service.path("piwik/piwik.php")
- .queryParam("idsite", "2")
- .queryParam("rec", "1")
- //todo check for empty container
- .queryParam("_cvar", translateCustomData())
- .queryParam("cip", request.getHeaderValue("Host"))
- .queryParam("cookie", "false")
- .queryParam("r", String.valueOf(random.nextDouble()))
- .queryParam("action_name",
- request.getRequestUri().toASCIIString())
- .queryParams(params).accept("text/html")
- .header("Host", request.getHeaderValue("Host"))
- .header("User-Agent", request.getHeaderValue("User-Agent"))
- .acceptLanguage(l).method("GET");
- }
- catch (Exception e) {
- // do nothing if piwik not available!
- }
- }
-
-
- private String translateCustomData () {
- final Map<String, List<String>> customVariables = new HashMap<String, List<String>>();
- int i = 0;
- for (final Map.Entry<String, String> entry : this.customVars.entrySet()) {
- i++;
- final List<String> list = new ArrayList<String>();
- list.add(entry.getKey());
- list.add(entry.getValue());
- customVariables.put(Integer.toString(i), list);
- }
-
- final JSONArray json = new JSONArray();
- json.add(customVariables);
-
- // remove unnecessary parent square brackets from JSON-string
- String jsonString = json.toString().substring(1,
- json.toString().length() - 1);
- customVars.clear();
- return jsonString;
- }
-
-
- @Override
- public ContainerRequest filter (ContainerRequest request) {
- if (ENABLED) {
- try {
- TokenContext context = (TokenContext) request
- .getUserPrincipal();
- if (context.getUsername() != null){
- // since this is cached, not very expensive!
- User user = authenticationManager.getUser(context.getUsername());
- Userdata data = authenticationManager
- .getUserData(user, UserSettings.class);
- if ((Boolean) data.get(Attributes.COLLECT_AUDITING_DATA))
- customVars.put("username", context.getUsername());
- }
- }
- catch (KustvaktException | UnsupportedOperationException e) {
- //do nothing
- }
- send(request);
- }
- return request;
- }
-
-
- @Override
- public ContainerRequestFilter getRequestFilter () {
- return this;
- }
-
-
- @Override
- public ContainerResponseFilter getResponseFilter () {
- return null;
- }
-}