You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by jo...@apache.org on 2012/03/19 18:21:34 UTC
svn commit: r1302545 - in /opennlp/sandbox/corpus-server: ./
src/main/java/org/apache/opennlp/corpus_server/
src/main/java/org/apache/opennlp/corpus_server/search/
src/main/java/org/apache/opennlp/corpus_server/store/
src/main/java/org/apache/opennlp/c...
Author: joern
Date: Mon Mar 19 17:21:33 2012
New Revision: 1302545
URL: http://svn.apache.org/viewvc?rev=1302545&view=rev
Log:
OPENNLP-472 Moved implementation over to corpus-server-impl and changed build to produce an OSGi bundle.
Removed:
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/UimaUtil.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/search/LuceneIndexer.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/search/LuceneSearchService.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/DerbyCorporaStore.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/DerbyCorpusStore.java
Modified:
opennlp/sandbox/corpus-server/pom.xml
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorporaResource.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorpusServer.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/TaskQueuesResource.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/AbstractCorporaStore.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/MemoryCorpusStore.java
opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/taskqueue/MemoryTaskQueueService.java
opennlp/sandbox/corpus-server/src/main/webapp/WEB-INF/web.xml
opennlp/sandbox/corpus-server/src/test/java/org/apache/opennlp/corpus_server/util/TestCorpusServer.java
Modified: opennlp/sandbox/corpus-server/pom.xml
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/pom.xml?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/pom.xml (original)
+++ opennlp/sandbox/corpus-server/pom.xml Mon Mar 19 17:21:33 2012
@@ -31,8 +31,8 @@
<groupId>org.apache.opennlp</groupId>
<artifactId>corpus-server</artifactId>
- <version>0.0.1-incubating-SNAPSHOT</version>
- <packaging>war</packaging>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>bundle</packaging>
<name>OpenNLP Corpus Server</name>
@@ -54,46 +54,42 @@
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
- <version>2.4</version>
+ <version>2.5</version>
<scope>provided</scope>
</dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-server</artifactId>
- <version>1.8</version>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-servlet</artifactId>
+ <version>1.12</version>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
- <version>1.8</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- <version>10.8.1.2</version>
+ <version>1.12</version>
+ <scope>provided</scope>
</dependency>
<dependency>
- <groupId>org.apache.uima</groupId>
- <artifactId>uimaj-core</artifactId>
- <version>2.3.1</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.uima</groupId>
- <artifactId>Lucas</artifactId>
- <version>2.3.1</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
- <version>1.8</version>
+ <version>1.12</version>
<scope>test</scope>
</dependency>
@@ -116,6 +112,63 @@
<compilerArgument>-Xlint</compilerArgument>
</configuration>
</plugin>
+
+ <!-- to generate the MANIFEST-FILE required by the bundle -->
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <version>2.3.7</version>
+ <extensions>true</extensions>
+ <executions>
+ <execution>
+ <id>bundle-manifest</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <manifestLocation>${project.build.directory}/META-INF</manifestLocation>
+ <instructions>
+ <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+ <Import-Package>
+ !javax.persistence.*,
+ !javax.servlet.annotation,
+ !javax.servlet.jsp.*,
+ !javax.microedition.*,
+ !javax.mail.*,
+ !javax.transaction.xa,
+ !javax.jms,
+ !javax.interceptor,!javax.inject,
+ !javax.enterprise.*,
+ !javax.annotation.security,
+ !javax.ejb,
+ !com.sun.xml.fastinfoset.*,
+ !org.jvnet.*,
+ !org.apache.derby.impl.drda,
+ !com.ibm.jvm,
+ !com.sun.jdmk.comm,
+ !com.sun.net.httpserver,
+ !sun.misc,
+ javax.servlet,
+ *,
+ com.sun.jersey.json.impl.provider.entity.*,
+ com.sun.jersey.json.*,
+ org.codehaus.jackson.*,
+ org.codehaus.jackson.xc,
+ org.apache.opennlp.corpus_server,
+ org.apache.derby.jdbc,
+ com.sun.jersey.api.core,
+ com.sun.jersey.spi.container.servlet</Import-Package>
+ <!-- Import-Package>!com.ibm.jvm,!com.sun.jdmk.comm,!com.sun.net.httpserver,*,com.sun.jersey.api.core,com.sun.jersey.spi.container.servlet</Import-Package-->
+ <Export-Package>org.apache.opennlp.corpus_server.*, org.apache.opennlp.corpus_server.search</Export-Package>
+ <Webapp-Context>rest</Webapp-Context>
+ <Web-ContextPath>rest</Web-ContextPath>
+ <Bundle-Activator>org.apache.opennlp.corpus_server.CorpusServerBundle</Bundle-Activator>
+ </instructions>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
\ No newline at end of file
Modified: opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorporaResource.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorporaResource.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorporaResource.java (original)
+++ opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorporaResource.java Mon Mar 19 17:21:33 2012
@@ -50,7 +50,8 @@ public class CorporaResource {
// TODO: throw exception
}
- CorpusServer corpusServer = CorpusServer.getInstance();
+ CorpusServer corpusServer = CorpusServerBundle.getInstance().getCorpusServer();
+
CorporaStore store = corpusServer.getStore();
store.createCorpus(corpusName, resources[0], resources[1]);
@@ -60,7 +61,7 @@ public class CorporaResource {
public CorpusResource getCorpus(
@PathParam("corpus") String corpusId) throws IOException {
- CorpusServer corpusServer = CorpusServer.getInstance();
+ CorpusServer corpusServer = CorpusServerBundle.getInstance().getCorpusServer();
CorporaStore store = corpusServer.getStore();
CorpusStore corpus = store.getCorpus(corpusId);
Modified: opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorpusServer.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorpusServer.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorpusServer.java (original)
+++ opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/CorpusServer.java Mon Mar 19 17:21:33 2012
@@ -17,151 +17,15 @@
package org.apache.opennlp.corpus_server;
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-import org.apache.opennlp.corpus_server.search.LuceneSearchService;
import org.apache.opennlp.corpus_server.search.SearchService;
-import org.apache.opennlp.corpus_server.store.CorporaChangeListener;
import org.apache.opennlp.corpus_server.store.CorporaStore;
-import org.apache.opennlp.corpus_server.store.CorpusStore;
-import org.apache.opennlp.corpus_server.store.DerbyCorporaStore;
-import org.apache.opennlp.corpus_server.taskqueue.MemoryTaskQueueService;
import org.apache.opennlp.corpus_server.taskqueue.TaskQueueService;
-public class CorpusServer implements ServletContextListener {
-
- static class IndexListener implements CorporaChangeListener {
-
- private final SearchService searchService;
-
- IndexListener(SearchService searchService) {
- this.searchService = searchService;
- }
-
- @Override
- public void addedCAS(CorpusStore store, String casId) {
- try {
- searchService.index(store, casId);
- } catch (IOException e) {
- // TODO: Also log store name!
- LOGGER.log(Level.WARNING,"Failed to index cas: " + casId, e);
- }
- }
-
- @Override
- public void updatedCAS(CorpusStore store, String casId) {
- addedCAS(store, casId);
- }
-
- @Override
- public void addedCorpus(CorpusStore store) {
- try {
- searchService.createIndex(store);
- } catch (IOException e) {
- LOGGER.log(Level.WARNING, "Failed to create index: " + store.getCorpusId(), e);
- }
- }
-
- @Override
- public void removedCAS(CorpusStore store, String casId) {
- try {
- searchService.removeFromIndex(store, casId);
- } catch (IOException e) {
- LOGGER.log(Level.WARNING, "Failed to remove cas " + casId +
- "from index " + store.getCorpusId(), e);
- }
- }
- }
-
- private final static Logger LOGGER = Logger.getLogger(
- CorpusServer.class .getName());
-
- private static CorpusServer instance;
-
- private CorporaStore store;
- private SearchService searchService;
- private TaskQueueService taskQueueService;
-
- private CorporaChangeListener indexListener;
-
- @Override
- public void contextInitialized(ServletContextEvent sce) {
-
- instance = this;
-
- store = new DerbyCorporaStore();
- try {
- store.initialize();
- } catch (IOException e) {
- LOGGER.log(Level.SEVERE, "Failed to start corpora store!", e);
- return;
- }
-
- LOGGER.info("Successfully loaded database.");
-
- searchService = new LuceneSearchService();
-
- try {
- searchService.initialize(store);
- } catch (IOException e) {
- LOGGER.log(Level.SEVERE, "Failed to start search service!", e);
- return;
- }
-
- LOGGER.info("Successfully started search service.");
-
- indexListener = new IndexListener(searchService);
- store.addCorpusChangeListener(indexListener);
-
- taskQueueService = new MemoryTaskQueueService();
- }
-
- @Override
- public void contextDestroyed(ServletContextEvent sce) {
-
- // Note:
- // Everything should be shutdown in the opposite
- // order than the startup.
-
- taskQueueService = null;
-
- store.removeCorpusChangeListener(indexListener);
-
- if (searchService != null) {
- try {
- searchService.shutdown();
- } catch (IOException e) {
- LOGGER.log(Level.SEVERE, "Failed to shutdown search service!", e);
- }
- }
-
- if (store != null) {
- try {
- store.shutdown();
- } catch (IOException e) {
- LOGGER.log(Level.SEVERE, "Failed to shutdown corpora store!", e);
- }
- }
- }
+public interface CorpusServer {
- public CorporaStore getStore() {
- return store;
- }
-
- public SearchService getSearchService() {
- return searchService;
- }
+ public CorporaStore getStore();
- public TaskQueueService getTaskQueueService() {
- return taskQueueService;
- }
+ public SearchService getSearchService();
- public static CorpusServer getInstance() {
- return instance;
- }
+ public TaskQueueService getTaskQueueService();
}
Modified: opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/TaskQueuesResource.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/TaskQueuesResource.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/TaskQueuesResource.java (original)
+++ opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/TaskQueuesResource.java Mon Mar 19 17:21:33 2012
@@ -33,14 +33,14 @@ public class TaskQueuesResource {
@Consumes(MediaType.TEXT_XML)
@Path("_createTaskQueue")
public void createTaskQueue(@QueryParam("queueId") String queueId, @QueryParam("corpusId")String corpusId, @QueryParam("q") String q) {
- TaskQueueService taskQueueService = CorpusServer.getInstance().getTaskQueueService();
+ TaskQueueService taskQueueService = CorpusServerBundle.getInstance().getCorpusServer().getTaskQueueService();
taskQueueService.createTaskQueue(queueId, corpusId, q);
}
@Path("{queue}")
public TaskQueueResource getTaskQueue(@PathParam("queue") String queueId) {
- TaskQueueService taskQueueService = CorpusServer.getInstance().getTaskQueueService();
+ TaskQueueService taskQueueService = CorpusServerBundle.getInstance().getCorpusServer().getTaskQueueService();
return new TaskQueueResource(taskQueueService.getTaskQeue(queueId));
}
Modified: opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/AbstractCorporaStore.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/AbstractCorporaStore.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/AbstractCorporaStore.java (original)
+++ opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/AbstractCorporaStore.java Mon Mar 19 17:21:33 2012
@@ -21,7 +21,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
-abstract class AbstractCorporaStore implements CorporaStore {
+public abstract class AbstractCorporaStore implements CorporaStore {
private Set<CorporaChangeListener> listeners = new HashSet<CorporaChangeListener>();
@@ -41,7 +41,7 @@ abstract class AbstractCorporaStore impl
listeners.remove(listener);
}
- Set<CorporaChangeListener> getListeners() {
+ public Set<CorporaChangeListener> getListeners() {
return Collections.unmodifiableSet(listeners);
}
}
Modified: opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/MemoryCorpusStore.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/MemoryCorpusStore.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/MemoryCorpusStore.java (original)
+++ opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/store/MemoryCorpusStore.java Mon Mar 19 17:21:33 2012
@@ -17,15 +17,10 @@
package org.apache.opennlp.corpus_server.store;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import org.apache.opennlp.corpus_server.UimaUtil;
-import org.apache.uima.cas.CAS;
-import org.apache.uima.resource.metadata.TypeSystemDescription;
-
/**
* Dummy in memory corpus store.
*/
@@ -60,17 +55,17 @@ public class MemoryCorpusStore implement
// Directly store data as xmi, but deserialization is needed to index and
// validate it!
- TypeSystemDescription tsDescription = UimaUtil.createTypeSystemDescription(
- new ByteArrayInputStream(typeSystemBytes));
-
- CAS cas = UimaUtil.createEmptyCAS(tsDescription);
-
- try {
- UimaUtil.deserializeXmiCAS(cas, new ByteArrayInputStream(content));
- } catch (IOException e) {
- // TODO: Send error back to client ...
- e.printStackTrace();
- }
+// TypeSystemDescription tsDescription = UimaUtil.createTypeSystemDescription(
+// new ByteArrayInputStream(typeSystemBytes));
+//
+// CAS cas = UimaUtil.createEmptyCAS(tsDescription);
+//
+// try {
+// UimaUtil.deserializeXmiCAS(cas, new ByteArrayInputStream(content));
+// } catch (IOException e) {
+// // TODO: Send error back to client ...
+// e.printStackTrace();
+// }
casStore.put(casID, content);
}
Modified: opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/taskqueue/MemoryTaskQueueService.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/taskqueue/MemoryTaskQueueService.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/taskqueue/MemoryTaskQueueService.java (original)
+++ opennlp/sandbox/corpus-server/src/main/java/org/apache/opennlp/corpus_server/taskqueue/MemoryTaskQueueService.java Mon Mar 19 17:21:33 2012
@@ -41,19 +41,19 @@ public class MemoryTaskQueueService impl
@Override
public void createTaskQueue(String queueId, String corpusId, String query) {
- try {
- CorpusStore store = CorpusServer.getInstance().getStore().getCorpus(corpusId);
- List<String> hits = CorpusServer.getInstance().getSearchService().search(store, query);
-
- queues.put(queueId, new MemoryTaskQueue(hits));
-
- if (LOGGER.isLoggable(Level.INFO)) {
- LOGGER.log(Level.INFO, "Created queue " + queueId +
- " with " + hits.size() + "CASes.");
- }
- } catch (IOException e) {
- LOGGER.log(Level.SEVERE, "Failed to create task queue: " + queueId, e);
- }
+// try {
+// CorpusStore store = CorpusServer.getInstance().getStore().getCorpus(corpusId);
+// List<String> hits = CorpusServer.getInstance().getSearchService().search(store, query);
+//
+// queues.put(queueId, new MemoryTaskQueue(hits));
+//
+// if (LOGGER.isLoggable(Level.INFO)) {
+// LOGGER.log(Level.INFO, "Created queue " + queueId +
+// " with " + hits.size() + "CASes.");
+// }
+// } catch (IOException e) {
+// LOGGER.log(Level.SEVERE, "Failed to create task queue: " + queueId, e);
+// }
}
@Override
Modified: opennlp/sandbox/corpus-server/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/main/webapp/WEB-INF/web.xml?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/main/webapp/WEB-INF/web.xml (original)
+++ opennlp/sandbox/corpus-server/src/main/webapp/WEB-INF/web.xml Mon Mar 19 17:21:33 2012
@@ -33,10 +33,18 @@
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
- <init-param>
+ <!-- init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
- </init-param>
+ </init-param-->
+ <init-param>
+ <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
+ <param-value>com.sun.jersey.api.core.ClassNamesResourceConfig</param-value>
+ </init-param>
+ <init-param>
+ <param-name>com.sun.jersey.config.property.classnames</param-name>
+ <param-value>org.apache.opennlp.corpus_server.CorporaResource;org.apache.opennlp.corpus_server.CorpusResource;org.apache.opennlp.corpus_server.TaskQueueResource;org.apache.opennlp.corpus_server.TaskQueuesResource</param-value>
+ </init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
Modified: opennlp/sandbox/corpus-server/src/test/java/org/apache/opennlp/corpus_server/util/TestCorpusServer.java
URL: http://svn.apache.org/viewvc/opennlp/sandbox/corpus-server/src/test/java/org/apache/opennlp/corpus_server/util/TestCorpusServer.java?rev=1302545&r1=1302544&r2=1302545&view=diff
==============================================================================
--- opennlp/sandbox/corpus-server/src/test/java/org/apache/opennlp/corpus_server/util/TestCorpusServer.java (original)
+++ opennlp/sandbox/corpus-server/src/test/java/org/apache/opennlp/corpus_server/util/TestCorpusServer.java Mon Mar 19 17:21:33 2012
@@ -22,8 +22,8 @@ import org.apache.opennlp.corpus_server.
/**
* Utility CorpusServer extension class that can be used for test purposes.
*/
-public class TestCorpusServer extends CorpusServer {
+public class TestCorpusServer {
public TestCorpusServer() {
- super.contextInitialized(null);
+// super.contextInitialized(null);
}
}