tests and bean loader hot fix
diff --git a/src/main/java/de/ids_mannheim/korap/config/AdminSetup.java b/src/main/java/de/ids_mannheim/korap/config/AdminSetup.java
index 5c0a276..378e015 100644
--- a/src/main/java/de/ids_mannheim/korap/config/AdminSetup.java
+++ b/src/main/java/de/ids_mannheim/korap/config/AdminSetup.java
@@ -49,12 +49,14 @@
store.setReadable(true, true);
store.setWritable(true, true);
store.setExecutable(false);
+ System.out.println();
System.out
.println("_______________________________________________");
System.out.println("Token created. Please make note of it!");
System.out.println("Token: " + token);
System.out
.println("_______________________________________________");
+ System.out.println();
return setup;
}
catch (Exception e) {
diff --git a/src/main/java/de/ids_mannheim/korap/config/BeanConfiguration.java b/src/main/java/de/ids_mannheim/korap/config/BeanConfiguration.java
index b09140e..8081e5d 100644
--- a/src/main/java/de/ids_mannheim/korap/config/BeanConfiguration.java
+++ b/src/main/java/de/ids_mannheim/korap/config/BeanConfiguration.java
@@ -51,27 +51,6 @@
}
- @Deprecated
- public static void loadAuthenticationProviders () {
- Set<Class<? extends AuthenticationIface>> set = KustvaktClassLoader
- .loadSubTypes(AuthenticationIface.class);
- Set<AuthenticationIface> set2 = new HashSet<>();
- for (Class<? extends AuthenticationIface> i : set) {
- try {
- set2.add(i.newInstance());
- }
- catch (InstantiationException | IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- try {
- getBeans().getAuthenticationManager().setProviders(set2);
- }
- catch (RuntimeException e) {
- // do nothing
- }
- }
-
public static boolean hasContext () {
return beans != null && beans.context != null;
diff --git a/src/main/java/de/ids_mannheim/korap/config/BeansFactory.java b/src/main/java/de/ids_mannheim/korap/config/BeansFactory.java
index 6e79890..84fcde1 100644
--- a/src/main/java/de/ids_mannheim/korap/config/BeansFactory.java
+++ b/src/main/java/de/ids_mannheim/korap/config/BeansFactory.java
@@ -1,8 +1,6 @@
package de.ids_mannheim.korap.config;
-import de.ids_mannheim.korap.interfaces.db.ResourceOperationIface;
import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
-import de.ids_mannheim.korap.resources.KustvaktResource;
import de.ids_mannheim.korap.user.Userdata;
import de.ids_mannheim.korap.web.utils.KustvaktResponseHandler;
import org.springframework.context.ApplicationContext;
@@ -11,6 +9,7 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
+import java.util.Arrays;
import java.util.Collection;
/**
@@ -43,7 +42,7 @@
public static synchronized TypeBeanFactory getTypeFactory () {
- return new TypeBeanFactory(beanHolder);
+ return new TypeBeanFactory();
}
@@ -107,21 +106,11 @@
public static class TypeBeanFactory {
- private ContextHolder holder;
-
-
- private TypeBeanFactory (ContextHolder holder) {
- this.holder = holder;
- }
-
-
- public <T> T getTypedBean (Collection objs, Class type) {
+ public <T> T getTypeInterfaceBean (Collection objs, Class type) {
for (Object o : objs) {
- Type gtype = o.getClass().getGenericInterfaces()[0];
- if (gtype instanceof ParameterizedType) {
- ParameterizedType ptype = (ParameterizedType) gtype;
- Object ctype = ptype.getActualTypeArguments()[0];
- if (ctype.equals(type))
+ if (o instanceof KustvaktTypeInterface) {
+ Class t = ((KustvaktTypeInterface) o).type();
+ if (type.equals(t))
return (T) o;
}
}
@@ -132,9 +121,19 @@
@Deprecated
- public UserDataDbIface getUserDaoInstance (
- Class<? extends Userdata> type) {
- return getTypedBean(this.holder.getUserDataDaos(), type);
+ public <T> T getTypedBean (Collection objs, Class type) {
+ for (Object o : objs) {
+ Type gtype = o.getClass().getGenericSuperclass();
+ if (gtype instanceof ParameterizedType) {
+ ParameterizedType ptype = (ParameterizedType) gtype;
+ Object ctype = ptype.getActualTypeArguments()[0];
+ if (ctype.equals(type))
+ return (T) o;
+ }
+ }
+ throw new RuntimeException(
+ "Could not find typed bean in context for class '" + type
+ + "'");
}
}
}
diff --git a/src/main/java/de/ids_mannheim/korap/config/ContextHolder.java b/src/main/java/de/ids_mannheim/korap/config/ContextHolder.java
index b652a19..f3f256c 100644
--- a/src/main/java/de/ids_mannheim/korap/config/ContextHolder.java
+++ b/src/main/java/de/ids_mannheim/korap/config/ContextHolder.java
@@ -84,7 +84,7 @@
}
- public Collection<UserDataDbIface> getUserDataDaos () {
+ public Collection<UserDataDbIface> getUserDataProviders () {
return getBean(KUSTVAKT_USERDATA);
}
@@ -115,9 +115,7 @@
}
- // todo: !!!!!!!!!!!!!!!!!!!!!!!!!!
- // todo: more specific --> collection provider, document provider, etc.
- public Collection<ResourceOperationIface> getResourceProvider () {
+ public Collection<ResourceOperationIface> getResourceProviders () {
return getBean(KUSTVAKT_RESOURCES);
}
diff --git a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
index 49b204e..abc4d22 100644
--- a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
+++ b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
@@ -47,10 +47,8 @@
public static final int CLIENT_REMOVAL_FAILURE = 215;
public static final int CLIENT_AUTHORIZATION_FAILURE = 216;
- /**
- * 500 status codes for access control related components (also
- * policy rewrite)
- */
+
+
public static final int PERMISSION_DENIED = 401;
public static final int UNSUPPORTED_RESOURCE = 402;
public static final int UNSUPPORTED_FOUNDRY = 403;
@@ -67,7 +65,13 @@
public static final int MISSING_POLICY_CONDITIONS = 413;
public static final int MISSING_POLICY_PERMISSION = 414;
public static final int RESOURCE_NOT_FOUND = 415;
+ public static final int ACCESS_DENIED_NO_RESOURCES = 416;
+
+ /**
+ * 500 status codes for access control related components (also
+ * policy rewrite)
+ */
// todo: extend according to policy rewrite possible!
// policy errors
public static final int POLICY_ERROR_DEFAULT = 500;
diff --git a/src/main/java/de/ids_mannheim/korap/handlers/DocumentDao.java b/src/main/java/de/ids_mannheim/korap/handlers/DocumentDao.java
index 3de9412..5520ffc 100644
--- a/src/main/java/de/ids_mannheim/korap/handlers/DocumentDao.java
+++ b/src/main/java/de/ids_mannheim/korap/handlers/DocumentDao.java
@@ -16,6 +16,7 @@
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import javax.print.Doc;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
@@ -290,4 +291,5 @@
public Class<Document> type () {
return Document.class;
}
+
}
diff --git a/src/main/java/de/ids_mannheim/korap/handlers/ResourceDao.java b/src/main/java/de/ids_mannheim/korap/handlers/ResourceDao.java
index 41b1c72..cf5701b 100644
--- a/src/main/java/de/ids_mannheim/korap/handlers/ResourceDao.java
+++ b/src/main/java/de/ids_mannheim/korap/handlers/ResourceDao.java
@@ -245,4 +245,5 @@
return -1;
}
}
+
}
diff --git a/src/main/java/de/ids_mannheim/korap/handlers/UserDetailsDao.java b/src/main/java/de/ids_mannheim/korap/handlers/UserDetailsDao.java
index 4714ca8..74a6f4a 100644
--- a/src/main/java/de/ids_mannheim/korap/handlers/UserDetailsDao.java
+++ b/src/main/java/de/ids_mannheim/korap/handlers/UserDetailsDao.java
@@ -157,4 +157,10 @@
return -1;
}
}
+
+
+ @Override
+ public Class<UserDetails> type () {
+ return UserDetails.class;
+ }
}
diff --git a/src/main/java/de/ids_mannheim/korap/handlers/UserSettingsDao.java b/src/main/java/de/ids_mannheim/korap/handlers/UserSettingsDao.java
index 2dfebdf..7d02a60 100644
--- a/src/main/java/de/ids_mannheim/korap/handlers/UserSettingsDao.java
+++ b/src/main/java/de/ids_mannheim/korap/handlers/UserSettingsDao.java
@@ -164,4 +164,10 @@
return -1;
}
}
+
+
+ @Override
+ public Class<UserSettings> type () {
+ return UserSettings.class;
+ }
}
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/db/ResourceOperationIface.java b/src/main/java/de/ids_mannheim/korap/interfaces/db/ResourceOperationIface.java
index 43124a0..565ceec 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/db/ResourceOperationIface.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/db/ResourceOperationIface.java
@@ -8,7 +8,6 @@
import java.util.Collection;
import java.util.List;
-import java.util.Set;
// todo: for transaction to work this should go into core module!?!
// todo: user instance only required for auditing pointcut operations
diff --git a/src/main/java/de/ids_mannheim/korap/interfaces/db/UserDataDbIface.java b/src/main/java/de/ids_mannheim/korap/interfaces/db/UserDataDbIface.java
index 5b0cf0e..a475dae 100644
--- a/src/main/java/de/ids_mannheim/korap/interfaces/db/UserDataDbIface.java
+++ b/src/main/java/de/ids_mannheim/korap/interfaces/db/UserDataDbIface.java
@@ -1,5 +1,6 @@
package de.ids_mannheim.korap.interfaces.db;
+import de.ids_mannheim.korap.config.KustvaktTypeInterface;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.user.Userdata;
@@ -8,7 +9,8 @@
* @author hanl
* @date 27/01/2016
*/
-public interface UserDataDbIface<T extends Userdata> {
+public interface UserDataDbIface<T extends Userdata> extends
+ KustvaktTypeInterface<T> {
public int store (T data) throws KustvaktException;
diff --git a/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java b/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java
index 649f58d..5c8e568 100644
--- a/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java
+++ b/src/main/java/de/ids_mannheim/korap/resource/rewrite/DocMatchRewrite.java
@@ -4,12 +4,12 @@
import de.ids_mannheim.korap.config.*;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.handlers.DocumentDao;
+import de.ids_mannheim.korap.interfaces.db.ResourceOperationIface;
import de.ids_mannheim.korap.resources.Document;
import de.ids_mannheim.korap.user.User;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
-import org.w3c.dom.Attr;
/**
* @author hanl
@@ -19,7 +19,7 @@
public class DocMatchRewrite implements RewriteTask.IterableRewritePath,
BeanInjectable {
- private DocumentDao docDao;
+ private ResourceOperationIface<Document> docDao;
private Cache cache;
@@ -30,8 +30,8 @@
@Override
public void insertBeans (ContextHolder beans) {
- this.docDao = BeansFactory.getTypeFactory().getTypedBean(
- beans.getResourceProvider(), Document.class);
+ this.docDao = BeansFactory.getTypeFactory().getTypeInterfaceBean(
+ beans.getResourceProviders(), Document.class);
}
diff --git a/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java b/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java
index 9c3762b..923e7a2 100644
--- a/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java
+++ b/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java
@@ -35,8 +35,8 @@
LayerMapper mapper;
if (user != null && !userdaos.isEmpty()) {
- UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
- userdaos, UserSettings.class);
+ UserDataDbIface dao = BeansFactory.getTypeFactory()
+ .getTypeInterfaceBean(userdaos, UserSettings.class);
mapper = new LayerMapper(config, dao.get(user));
}
else
@@ -69,6 +69,6 @@
@Override
public <T extends ContextHolder> void insertBeans (T beans) {
- this.userdaos = beans.getUserDataDaos();
+ this.userdaos = beans.getUserDataProviders();
}
}
diff --git a/src/main/java/de/ids_mannheim/korap/resource/rewrite/PublicCollection.java b/src/main/java/de/ids_mannheim/korap/resource/rewrite/PublicCollection.java
index 6bd59a5..d7e32ee 100644
--- a/src/main/java/de/ids_mannheim/korap/resource/rewrite/PublicCollection.java
+++ b/src/main/java/de/ids_mannheim/korap/resource/rewrite/PublicCollection.java
@@ -29,7 +29,7 @@
@Override
public JsonNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
- User user) {
+ User user) throws KustvaktException {
JsonNode subnode = node.rawNode();
if (!subnode.at("/collection").findValuesAsText("key")
@@ -38,32 +38,28 @@
if (subnode.has("collection"))
b.setBaseQuery(JsonUtils.toJSON(subnode));
- try {
- Set resources = ResourceFinder.search(user, Corpus.class);
- ArrayList<KustvaktResource> list = new ArrayList(resources);
+ Set resources = ResourceFinder.search(user, Corpus.class);
+ ArrayList<KustvaktResource> list = new ArrayList(resources);
- if (list.isEmpty())
- throw new KustvaktException(StatusCodes.PERMISSION_DENIED,
- "No resources found for user", user.getUsername());
+ if (list.isEmpty())
+ throw new KustvaktException(
+ StatusCodes.ACCESS_DENIED_NO_RESOURCES,
+ "Resources could not be loaded for user ",
+ user.getUsername());
- Set ids = new HashSet(resources.size());
- for (int i = 0; i < list.size(); i++) {
- if (i > 0)
- b.or();
- b.with(Attributes.CORPUS_SIGLE + "="
- + list.get(i).getPersistentID());
- ids.add(list.get(i).getPersistentID());
- }
- JsonNode rewritten = JsonUtils.readTree(b.toJSON());
- node.set("collection", rewritten.at("/collection"),
- new KoralNode.RewriteIdentifier(
- Attributes.CORPUS_SIGLE, ids));
- node.at("/collection");
+ Set ids = new HashSet(resources.size());
+ for (int i = 0; i < list.size(); i++) {
+ if (i > 0)
+ b.or();
+ b.with(Attributes.CORPUS_SIGLE + "="
+ + list.get(i).getPersistentID());
+ ids.add(list.get(i).getPersistentID());
}
- catch (KustvaktException e) {
- e.printStackTrace();
- // todo:
- }
+ JsonNode rewritten = JsonUtils.readTree(b.toJSON());
+ node.set("collection", rewritten.at("/collection"),
+ new KoralNode.RewriteIdentifier(Attributes.CORPUS_SIGLE,
+ ids));
+ node.at("/collection");
}
return node.rawNode();
diff --git a/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java b/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
index 468fa9e..94875f4 100644
--- a/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
+++ b/src/main/java/de/ids_mannheim/korap/resource/rewrite/RewriteHandler.java
@@ -115,24 +115,28 @@
- public String processQuery (JsonNode root, User user) {
+ public String processQuery (JsonNode root, User user)
+ throws KustvaktException {
RewriteProcess process = new RewriteProcess(root, user);
JsonNode pre = process.start(false);
return JsonUtils.toJSON(pre);
}
- public String processQuery (String json, User user) {
+ public String processQuery (String json, User user)
+ throws KustvaktException {
return processQuery(JsonUtils.readTree(json), user);
}
- public String processResult (String json, User user) {
+ public String processResult (String json, User user)
+ throws KustvaktException {
return processResult(JsonUtils.readTree(json), user);
}
- public String processResult (JsonNode node, User user) {
+ public String processResult (JsonNode node, User user)
+ throws KustvaktException {
RewriteProcess process = new RewriteProcess(node, user);
JsonNode pre = process.start(true);
return JsonUtils.toJSON(pre);
@@ -167,7 +171,7 @@
private KoralNode processNode (String key, JsonNode value,
- boolean result) {
+ boolean result) throws KustvaktException {
KoralNode kroot = KoralNode.wrapNode(value);
if (value.isObject()) {
if (value.has("operands")) {
@@ -204,7 +208,7 @@
}
- private JsonNode start (boolean result) {
+ private JsonNode start (boolean result) throws KustvaktException {
jlog.debug("Running rewrite process on query {}", root);
if (root != null) {
Iterator<Map.Entry<String, JsonNode>> it = root.fields();
@@ -227,7 +231,8 @@
* applies if parent is an array node
*/
private KoralNode rewrite (String rootNode, KoralNode node,
- Collection<? extends RewriteTask> tasks, boolean result) {
+ Collection<? extends RewriteTask> tasks, boolean result)
+ throws KustvaktException {
if (RewriteHandler.this.config == null)
throw new RuntimeException("KustvaktConfiguration must be set!");
@@ -247,21 +252,14 @@
continue;
}
}
- try {
- if (!result && task instanceof RewriteTask.RewriteQuery) {
- ((RewriteTask.RewriteQuery) task).rewriteQuery(node,
- RewriteHandler.this.config, this.user);
- }
- else if (task instanceof RewriteTask.RewriteResult) {
- ((RewriteTask.RewriteResult) task).rewriteResult(node);
- }
+ if (!result && task instanceof RewriteTask.RewriteQuery) {
+ ((RewriteTask.RewriteQuery) task).rewriteQuery(node,
+ RewriteHandler.this.config, this.user);
}
- catch (KustvaktException e) {
- jlog.error("Error in rewrite processor {} for node {}",
- task.getClass().getSimpleName(), node.rawNode()
- .toString());
- e.printStackTrace();
+ else if (task instanceof RewriteTask.RewriteResult) {
+ ((RewriteTask.RewriteResult) task).rewriteResult(node);
}
+
if (node.isRemove()) {
node.buildRewrites(this.root.at("/" + rootNode));
break;
@@ -275,7 +273,8 @@
// fixme: merge with processNode!
private void processFixedNode (JsonNode node,
- Collection<RewriteTask> tasks, boolean post) {
+ Collection<RewriteTask> tasks, boolean post)
+ throws KustvaktException {
for (RewriteTask task : tasks) {
KoralNode next = KoralNode.wrapNode(node);
if (task instanceof RewriteTask.RewriteNodeAt) {
@@ -284,19 +283,13 @@
next = next.at(rwa.at());
}
- try {
- if (!post & task instanceof RewriteTask.RewriteQuery)
- ((RewriteTask.RewriteQuery) task).rewriteQuery(next,
- RewriteHandler.this.config, user);
- else if (task instanceof RewriteTask.RewriteResult)
- ((RewriteTask.RewriteResult) task).rewriteResult(next);
- next.buildRewrites();
- }
- catch (KustvaktException e) {
- jlog.error("Error in rewrite processor {} for node {}",
- task.getClass().getSimpleName(), next.toString());
- e.printStackTrace();
- }
+ if (!post & task instanceof RewriteTask.RewriteQuery)
+ ((RewriteTask.RewriteQuery) task).rewriteQuery(next,
+ RewriteHandler.this.config, user);
+ else if (task instanceof RewriteTask.RewriteResult)
+ ((RewriteTask.RewriteResult) task).rewriteResult(next);
+ next.buildRewrites();
+
}
}
diff --git a/src/main/java/de/ids_mannheim/korap/security/ac/ResourceFinder.java b/src/main/java/de/ids_mannheim/korap/security/ac/ResourceFinder.java
index d31a2f7..33cde6d 100644
--- a/src/main/java/de/ids_mannheim/korap/security/ac/ResourceFinder.java
+++ b/src/main/java/de/ids_mannheim/korap/security/ac/ResourceFinder.java
@@ -51,7 +51,7 @@
beans = BeansFactory.getKustvaktContext();
if (policydao == null | resourcedaos == null) {
ResourceFinder.policydao = beans.getPolicyDbProvider();
- for (ResourceOperationIface iface : beans.getResourceProvider())
+ for (ResourceOperationIface iface : beans.getResourceProviders())
resourcedaos.put(iface.type(), iface);
}
if (policydao == null | resourcedaos.isEmpty())
diff --git a/src/main/java/de/ids_mannheim/korap/security/ac/SecurityManager.java b/src/main/java/de/ids_mannheim/korap/security/ac/SecurityManager.java
index 0bf367c..059d33b 100644
--- a/src/main/java/de/ids_mannheim/korap/security/ac/SecurityManager.java
+++ b/src/main/java/de/ids_mannheim/korap/security/ac/SecurityManager.java
@@ -70,7 +70,7 @@
SecurityManager.crypto = beans.getEncryption();
SecurityManager.handlers = new HashMap<>();
Collection<ResourceOperationIface> providers = beans
- .getResourceProvider();
+ .getResourceProviders();
for (ResourceOperationIface op : providers)
SecurityManager.handlers.put(op.type(), op);
}
diff --git a/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java b/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java
index f7387c4..918650a 100644
--- a/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java
+++ b/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java
@@ -13,7 +13,6 @@
import de.ids_mannheim.korap.interfaces.db.EntityHandlerIface;
import de.ids_mannheim.korap.interfaces.db.UserDataDbIface;
import de.ids_mannheim.korap.user.*;
-import de.ids_mannheim.korap.utils.NamingUtils;
import de.ids_mannheim.korap.utils.StringUtils;
import de.ids_mannheim.korap.utils.TimeUtils;
import net.sf.ehcache.Cache;
@@ -546,12 +545,12 @@
settings.readDefaults(safeMap);
settings.checkRequired();
- UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
- userdatadaos, UserDetails.class);
+ UserDataDbIface dao = BeansFactory.getTypeFactory()
+ .getTypeInterfaceBean(userdatadaos, UserDetails.class);
assert dao != null;
dao.store(details);
- dao = BeansFactory.getTypeFactory().getTypedBean(userdatadaos,
- UserSettings.class);
+ dao = BeansFactory.getTypeFactory().getTypeInterfaceBean(
+ userdatadaos, UserSettings.class);
assert dao != null;
dao.store(settings);
}
@@ -586,8 +585,8 @@
d.readDefaults(attributes);
d.checkRequired();
- UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
- userdatadaos, UserDetails.class);
+ UserDataDbIface dao = BeansFactory.getTypeFactory()
+ .getTypeInterfaceBean(userdatadaos, UserDetails.class);
assert dao != null;
dao.store(d);
@@ -595,7 +594,7 @@
s.readDefaults(attributes);
s.checkRequired();
- dao = BeansFactory.getTypeFactory().getTypedBean(userdatadaos,
+ dao = BeansFactory.getTypeFactory().getTypeInterfaceBean(userdatadaos,
UserSettings.class);
assert dao != null;
dao.store(d);
@@ -747,11 +746,10 @@
throws WrappedException {
try {
- UserDataDbIface<T> dao = BeansFactory
- .getTypeFactory()
- .getTypedBean(
- BeansFactory.getKustvaktContext().getUserDataDaos(),
- clazz);
+ UserDataDbIface<T> dao = BeansFactory.getTypeFactory()
+ .getTypeInterfaceBean(
+ BeansFactory.getKustvaktContext()
+ .getUserDataProviders(), clazz);
T data = null;
if (dao != null)
data = dao.get(user);
@@ -775,9 +773,10 @@
try {
data.validate(this.crypto);
- UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
- BeansFactory.getKustvaktContext().getUserDataDaos(),
- data.getClass());
+ UserDataDbIface dao = BeansFactory.getTypeFactory()
+ .getTypeInterfaceBean(
+ BeansFactory.getKustvaktContext()
+ .getUserDataProviders(), data.getClass());
if (dao != null)
dao.update(data);
}
diff --git a/src/main/java/de/ids_mannheim/korap/user/UserdataFactory.java b/src/main/java/de/ids_mannheim/korap/user/UserdataFactory.java
index cae83af..c2768b4 100644
--- a/src/main/java/de/ids_mannheim/korap/user/UserdataFactory.java
+++ b/src/main/java/de/ids_mannheim/korap/user/UserdataFactory.java
@@ -32,7 +32,7 @@
public static UserDataDbIface getDaoInstanceFromBean (
Class<? extends Userdata> type) {
Collection<UserDataDbIface> daos = BeansFactory.getKustvaktContext()
- .getUserDataDaos();
+ .getUserDataProviders();
for (UserDataDbIface o : daos) {
Type gtype = o.getClass().getGenericInterfaces()[0];
if (gtype instanceof ParameterizedType) {
diff --git a/src/main/java/de/ids_mannheim/korap/utils/UserPropertyReader.java b/src/main/java/de/ids_mannheim/korap/utils/UserPropertyReader.java
index 70207fe..8c94ee9 100644
--- a/src/main/java/de/ids_mannheim/korap/utils/UserPropertyReader.java
+++ b/src/main/java/de/ids_mannheim/korap/utils/UserPropertyReader.java
@@ -115,13 +115,14 @@
set.readDefaults(vals);
set.validate(crypto);
- UserDataDbIface dao = BeansFactory.getTypeFactory().getTypedBean(
- BeansFactory.getKustvaktContext().getUserDataDaos(),
- UserDetails.class);
+ UserDataDbIface dao = BeansFactory.getTypeFactory()
+ .getTypeInterfaceBean(
+ BeansFactory.getKustvaktContext()
+ .getUserDataProviders(), UserDetails.class);
dao.store(det);
- dao = BeansFactory.getTypeFactory().getTypedBean(
- BeansFactory.getKustvaktContext().getUserDataDaos(),
+ dao = BeansFactory.getTypeFactory().getTypeInterfaceBean(
+ BeansFactory.getKustvaktContext().getUserDataProviders(),
UserSettings.class);
dao.store(set);
}
diff --git a/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java b/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
index 7b3ec6a..03f051a 100644
--- a/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
@@ -17,6 +17,7 @@
import org.eclipse.jetty.util.ssl.SslContextFactory;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -48,9 +49,6 @@
KustvaktArgs kargs = new KustvaktArgs();
for (int i = 0; i < args.length; i++) {
switch ((args[i])) {
- case "--debug":
- kargs.setDebug(true);
- break;
case "--config":
kargs.setConfig(args[i + 1]);
break;
@@ -93,32 +91,36 @@
}
}
System.out.println("Found boot loading interfaces: " + list);
+
while (!list.isEmpty()) {
- for (BootableBeanInterface iface : new ArrayList<>(list)) {
+ loop: for (BootableBeanInterface iface : new ArrayList<>(list)) {
try {
+ for (Class dep : iface.getDependencies()) {
+ if (set.contains(dep))
+ continue loop;
+ }
iface.load(BeansFactory.getKustvaktContext());
+ list.remove(iface);
+ set.remove(iface.getClass());
+ System.out.println("Done with interface "
+ + iface.getClass().getSimpleName());
}
catch (KustvaktException e) {
// don't do anything!
System.out.println("An error occurred in class "
- + iface.getClass().getSimpleName() + "!\n" + e);
- continue;
+ + iface.getClass().getSimpleName() + "!\n");
+ System.exit(-1);
}
- list.remove(iface);
- }
- if (!list.isEmpty()) {
- System.out.println("Following bootup classes raised errors: "
- + list);
- break;
}
}
- AdminSetup.getInstance();
}
protected void startServer (KustvaktArgs kargs) {
- if (kargs.init)
+ if (kargs.init) {
runPreStart();
+ AdminSetup.getInstance();
+ }
if (kargs.port == -1)
kargs.setPort(BeansFactory.getKustvaktContext().getConfiguration()
@@ -162,6 +164,7 @@
}
catch (Exception e) {
e.printStackTrace();
+ System.exit(-1);
}
}
@@ -169,7 +172,6 @@
@Setter
public static class KustvaktArgs {
- private boolean debug;
@Getter
private String config;
private int port;
@@ -181,7 +183,6 @@
public KustvaktArgs () {
this.port = -1;
this.sslContext = null;
- this.debug = false;
this.config = null;
this.init = false;
}
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
index dd29b09..e1a5278 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
@@ -462,8 +462,13 @@
// fixme: should only apply to CQL queries per default!
// meta.addEntry("itemsPerResource", 1);
serializer.setMeta(meta.raw());
-
- String query = this.processor.processQuery(serializer.toJSON(), user);
+ String query;
+ try {
+ query = this.processor.processQuery(serializer.toJSON(), user);
+ }
+ catch (KustvaktException e) {
+ throw KustvaktResponseHandler.throwit(e);
+ }
jlog.info("the serialized query {}", query);
@@ -696,7 +701,13 @@
VirtualCollection tmp = resourceHandler.getCache(cache.getId(),
VirtualCollection.class);
if (tmp == null) {
- String query = this.processor.processQuery(cache.getData(), user);
+ String query;
+ try {
+ query = this.processor.processQuery(cache.getData(), user);
+ }
+ catch (KustvaktException e) {
+ throw KustvaktResponseHandler.throwit(e);
+ }
String stats = searchKrill.getStatistics(query);
cache.setStats(JsonUtils.readSimple(stats, Map.class));
resourceHandler.cache(cache);
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/light/LightService.java b/src/main/java/de/ids_mannheim/korap/web/service/light/LightService.java
index 7c3b346..8bd7c88 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/light/LightService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/light/LightService.java
@@ -101,14 +101,27 @@
ss.setMeta(meta.raw());
if (cq != null)
ss.setCollection(cq);
- return Response.ok(processor.processQuery(ss.toJSON(), null)).build();
+
+ String query;
+ try {
+ query = this.processor.processQuery(ss.toJSON(), null);
+ }
+ catch (KustvaktException e) {
+ throw KustvaktResponseHandler.throwit(e);
+ }
+ return Response.ok(query).build();
}
@POST
@Path("search")
public Response queryRaw (@QueryParam("engine") String engine, String jsonld) {
- jsonld = processor.processQuery(jsonld, null);
+ try {
+ jsonld = processor.processQuery(jsonld, null);
+ }
+ catch (KustvaktException e) {
+ throw KustvaktResponseHandler.throwit(e);
+ }
// todo: should be possible to add the meta part to the query serialization
jlog.info("Serialized search: {}", jsonld);
@@ -142,7 +155,13 @@
if (cq != null)
serializer.setCollection(cq);
- String query = processor.processQuery(serializer.toJSON(), null);
+ String query;
+ try {
+ query = this.processor.processQuery(serializer.toJSON(), null);
+ }
+ catch (KustvaktException e) {
+ throw KustvaktResponseHandler.throwit(e);
+ }
jlog.info("the serialized query {}", query);
// This may not work with the the KoralQuery
@@ -213,7 +232,12 @@
// meta.addEntry("itemsPerResource", 1);
QuerySerializer s = new QuerySerializer().setQuery(query, ql, v)
.setMeta(meta.raw());
- query = processor.processQuery(s.toJSON(), null);
+ try {
+ query = this.processor.processQuery(s.toJSON(), null);
+ }
+ catch (KustvaktException e) {
+ throw KustvaktResponseHandler.throwit(e);
+ }
}
String result;
try {
diff --git a/src/main/resources/default-config.xml b/src/main/resources/default-config.xml
index 1b0c72c..62d5997 100644
--- a/src/main/resources/default-config.xml
+++ b/src/main/resources/default-config.xml
@@ -1,9 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns="http://www.springframework.org/schema/beans"
+ xmlns:cache="http://www.springframework.org/schema/cache"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/tx
@@ -15,8 +17,6 @@
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd">
- <!--<cache:annotation-driven/>-->
-
<bean id="props"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="ignoreResourceNotFound" value="true"/>
@@ -39,14 +39,14 @@
</property>
</bean>
- <!--<bean id='cacheManager'-->
- <!--class='org.springframework.cache.ehcache.EhCacheCacheManager'-->
- <!--p:cacheManager-ref='ehcache'/>-->
+ <bean id='cacheManager'
+ class='org.springframework.cache.ehcache.EhCacheCacheManager'
+ p:cacheManager-ref='ehcache'/>
- <!--<bean id='ehcache'-->
- <!--class='org.springframework.cache.ehcache.EhCacheManagerFactoryBean'-->
- <!--p:configLocation='classpath:ehcache.xml'-->
- <!--p:shared='true'/>-->
+ <bean id='ehcache'
+ class='org.springframework.cache.ehcache.EhCacheManagerFactoryBean'
+ p:configLocation='classpath:ehcache.xml'
+ p:shared='true'/>
<!-- props are injected from default-config.xml -->
<bean id="kustvakt_config"
@@ -87,16 +87,6 @@
<property name="database" value="${jdbc.database}"/>
</bean>
- <bean id="kustvakt_userdetails"
- class="de.ids_mannheim.korap.handlers.UserDetailsDao">
- <constructor-arg ref="kustvakt_db"/>
- </bean>
-
- <bean id="kustvakt_usersettings"
- class="de.ids_mannheim.korap.handlers.UserSettingsDao">
- <constructor-arg ref="kustvakt_db"/>
- </bean>
-
<bean id="kustvakt_auditing"
class="de.ids_mannheim.korap.handlers.JDBCAuditing">
<constructor-arg ref="kustvakt_db"/>
@@ -107,18 +97,16 @@
<constructor-arg ref="kustvakt_db"/>
</bean>
- <!--fixme: change name according to convention -->
- <!--<bean id="collectionProvider"-->
- <!--class="de.ids_mannheim.korap.handlers.CollectionDao">-->
- <!--<constructor-arg ref="kustvakt_db"/>-->
- <!--</bean>-->
-
- <!--fixme: change name according to convention -->
- <bean id="resourceProvider"
+ <bean id="resource_provider"
class="de.ids_mannheim.korap.handlers.ResourceDao">
<constructor-arg ref="kustvakt_db"/>
</bean>
+ <bean id="document_provider"
+ class="de.ids_mannheim.korap.handlers.DocumentDao">
+ <constructor-arg ref="kustvakt_db"/>
+ </bean>
+
<bean id="kustvakt_policies"
class="de.ids_mannheim.korap.security.ac.PolicyDao">
<constructor-arg ref="kustvakt_db"/>
@@ -173,13 +161,12 @@
<bean id="userdata_details"
class="de.ids_mannheim.korap.handlers.UserDetailsDao">
<constructor-arg
- type="de.ids_mannheim.korap.interfaces.db.PersistenceClient"
ref="kustvakt_db"/>
</bean>
+
<bean id="userdata_settings"
- class="de.ids_mannheim.korap.handlers.UserDetailsDao">
+ class="de.ids_mannheim.korap.handlers.UserSettingsDao">
<constructor-arg
- type="de.ids_mannheim.korap.interfaces.db.PersistenceClient"
ref="kustvakt_db"/>
</bean>
@@ -189,6 +176,13 @@
<ref bean="userdata_settings"/>
</util:list>
+
+ <util:list id="kustvakt_resources"
+ value-type="de.ids_mannheim.korap.interfaces.db.ResourceOperationIface">
+ <ref bean="document_provider"/>
+ <ref bean="resource_provider"/>
+ </util:list>
+
<!-- specify type for constructor argument -->
<bean id="kustvakt_authenticationmanager"
class="de.ids_mannheim.korap.security.auth.KustvaktAuthenticationManager">