# HG changeset patch
# User casties
# Date 1394196530 -3600
# Node ID 326369d4bc4d2ddb7ba7befe94f983c2527d1637
# Parent 2b1e6df5e21aeff50c5d2eb41c193875b545ac4c
trying restlet 2.1. doesn't work yet.
diff -r 2b1e6df5e21a -r 326369d4bc4d LICENSE.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE.txt Fri Mar 07 13:48:50 2014 +0100
@@ -0,0 +1,166 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
diff -r 2b1e6df5e21a -r 326369d4bc4d pom.xml
--- a/pom.xml Thu Mar 06 15:09:04 2014 +0100
+++ b/pom.xml Fri Mar 07 13:48:50 2014 +0100
@@ -7,8 +7,8 @@
UTF-8
2.0.1
- 2.0.15
-
+
+ 2.1.7
diff -r 2b1e6df5e21a -r 326369d4bc4d src/main/java/de/mpiwg/itgroup/annotations/restlet/BaseRestlet.java
--- a/src/main/java/de/mpiwg/itgroup/annotations/restlet/BaseRestlet.java Thu Mar 06 15:09:04 2014 +0100
+++ b/src/main/java/de/mpiwg/itgroup/annotations/restlet/BaseRestlet.java Fri Mar 07 13:48:50 2014 +0100
@@ -30,6 +30,7 @@
import java.io.InputStream;
import java.util.Hashtable;
import java.util.Properties;
+import java.util.concurrent.ConcurrentMap;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -50,6 +51,8 @@
import org.neo4j.server.WrappingNeoServerBootstrapper;
import org.restlet.Application;
import org.restlet.Context;
+import org.restlet.Restlet;
+import org.restlet.data.LocalReference;
import de.mpiwg.itgroup.annotations.neo4j.AnnotationStore;
@@ -61,14 +64,14 @@
* Properties holding consumer keys and secrets.
*/
protected Properties consumerKeys;
- public String CONSUMER_KEYS_PATH = "WEB-INF/consumerkeys.property";
+ public String CONSUMER_KEYS_PATH = "consumerkeys.property";
public static final String CONSUMERKEYS_KEY = "annotationmanager.consumerkeys";
/**
* Properties holding server config.
*/
protected Properties serverConfig;
- public String CONFIG_PROPS_PATH = "WEB-INF/serverconfig.property";
+ public String CONFIG_PROPS_PATH = "serverconfig.property";
public static final String SERVERCONFIG_KEY = "annotationmanager.serverconfig";
/**
@@ -77,7 +80,7 @@
protected GraphDatabaseService graphDb;
public static final String GRAPHDB_KEY = "annotationmanager.graphdb";
public static final String GRAPHDB_PATH_KEY = "annotationmanager.graphdb.path";
- public String graphdbPath = "WEB-INF/neo4j-annotation-db";
+ public String graphdbPath = "neo4j-annotation-db";
/**
* database interface server instance.
@@ -133,29 +136,38 @@
*/
public BaseRestlet(Context context) {
super(context);
- configure();
+ configure(context);
}
/**
* Configures the restlet.
* Reads serverConfig, consumerKeys and graphDb config from config files and starts graphDb.
* Uses config from webapp context if already initialized.
+ * @param context
*/
- protected void configure() {
- ServletContext sc = (ServletContext) getContext().getServerDispatcher().getContext().getAttributes()
+ protected void configure(Context context) {
+ Context ctx = Context.getCurrent();
+ ConcurrentMap attrs = ctx.getAttributes();
+ ServletContext sc = null;
+ if (context != null) {
+ Restlet a = context.getServerDispatcher();
+ Context b = a.getContext();
+ ConcurrentMap c = b.getAttributes();
+ sc = (ServletContext) context.getServerDispatcher().getContext().getAttributes()
.get("org.restlet.ext.servlet.ServletContext");
- if (sc != null) {
- if (sc.getAttribute("annotationserver.log4j.configured") == null) {
+ }
+ if (attrs != null) {
+ if (attrs.get("annotationserver.log4j.configured") == null) {
// TODO: is this the right place to run the log4j configurator?
BasicConfigurator.configure();
- sc.setAttribute("annotationserver.log4j.configured", "done");
+ attrs.put("annotationserver.log4j.configured", "done");
}
logger.info(getVersion() + " starting...");
/*
* read config from webapp
*/
- serverConfig = (Properties) sc.getAttribute(SERVERCONFIG_KEY);
+ serverConfig = (Properties) attrs.get(SERVERCONFIG_KEY);
if (serverConfig == null) {
serverConfig = new Properties();
InputStream ps = getResourceAsStream(sc, CONFIG_PROPS_PATH);
@@ -191,10 +203,10 @@
logger.error("Unable to get resource " + CONFIG_PROPS_PATH);
}
// store config
- sc.setAttribute(SERVERCONFIG_KEY, serverConfig);
+ attrs.put(SERVERCONFIG_KEY, serverConfig);
}
// look for database service in context
- graphDb = (GraphDatabaseService) sc.getAttribute(GRAPHDB_KEY);
+ graphDb = (GraphDatabaseService) attrs.get(GRAPHDB_KEY);
if (graphDb == null) {
/*
* open database
@@ -207,27 +219,27 @@
graphDb = graphDbBuilder.newGraphDatabase();
registerShutdownHook(graphDb);
// store in context
- sc.setAttribute(GRAPHDB_KEY, graphDb);
+ attrs.put(GRAPHDB_KEY, graphDb);
// AnnotationStore
store = new AnnotationStore(graphDb);
- sc.setAttribute(ANNSTORE_KEY, store);
+ attrs.put(ANNSTORE_KEY, store);
// admin server
srv = new WrappingNeoServerBootstrapper((GraphDatabaseAPI) graphDb);
logger.debug("Starting DB admin server...");
// store in context
- sc.setAttribute(GRAPHDBSRV_KEY, srv);
+ attrs.put(GRAPHDBSRV_KEY, srv);
srv.start();
} else {
logger.error("Unable to get resource " + dbFn);
}
} else {
// get existing AnnotationStore
- store = (AnnotationStore) sc.getAttribute(ANNSTORE_KEY);
+ store = (AnnotationStore) attrs.get(ANNSTORE_KEY);
}
/*
* read consumerKeys from webapp
*/
- consumerKeys = (Properties) sc.getAttribute(CONSUMERKEYS_KEY);
+ consumerKeys = (Properties) attrs.get(CONSUMERKEYS_KEY);
if (consumerKeys == null) {
consumerKeys = new Properties();
InputStream ps = getResourceAsStream(sc, CONSUMER_KEYS_PATH);
@@ -244,7 +256,7 @@
logger.error("Unable to get resource " + CONSUMER_KEYS_PATH);
}
// store config
- sc.setAttribute(CONSUMERKEYS_KEY, consumerKeys);
+ attrs.put(CONSUMERKEYS_KEY, consumerKeys);
}
} else {
logger.error("Unable to get ServletContext!");
@@ -341,16 +353,21 @@
* @return
*/
protected InputStream getResourceAsStream(ServletContext sc, String path) {
- InputStream ps = sc.getResourceAsStream(path);
- if (ps == null) {
- // try as file
- File pf = new File(sc.getRealPath(path));
- if (pf != null) {
- logger.debug("trying file for: " + pf);
- try {
- ps = new FileInputStream(pf);
- } catch (FileNotFoundException e) {
- logger.error(e);
+ InputStream ps = null;
+ if (sc == null) {
+ ps = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
+ } else {
+ ps = sc.getResourceAsStream(path);
+ if (ps == null) {
+ // try as file
+ File pf = new File(sc.getRealPath(path));
+ if (pf != null) {
+ logger.debug("trying file for: " + pf);
+ try {
+ ps = new FileInputStream(pf);
+ } catch (FileNotFoundException e) {
+ logger.error(e);
+ }
}
}
}
@@ -370,7 +387,7 @@
public static String getResourcePath(ServletContext sc, String filename) {
File f = new File(filename);
// is the filename absolute?
- if (!f.isAbsolute()) {
+ if (!f.isAbsolute() && sc != null) {
// relative path -> use getRealPath to resolve in webapp
filename = sc.getRealPath(filename);
}