You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by rw...@apache.org on 2012/10/30 23:46:41 UTC
svn commit: r1403907 [3/3] - in /stanbol/branches/disambiguation-engine: ./
benchmark/ bundlelist/ bundlelist/src/main/bundles/ chain/ chain/allactive/
chain/allactive/src/license/ chain/graph/ chain/graph/src/license/
chain/graph/src/main/java/org/apa...
Modified: stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java (original)
+++ stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItem.java Tue Oct 30 22:46:38 2012
@@ -17,10 +17,11 @@
package org.apache.stanbol.enhancer.servicesapi;
import java.io.InputStream;
+import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
+import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.clerezza.rdf.core.access.LockableMGraph;
/**
* A unit of content that Stanbol Enhancer can enhance.
@@ -51,12 +52,13 @@ public interface ContentItem {
/**
* Read/write lock used to synchronise access to the {@link #getMetadata()
* metadata} and the content parts of this content item.<p>
- * The lock used by the {@link LockableMGraph#getLock()} MUST BE the same
- * as the lock returned by this Instance. This is to avoid deadlocks when
- * using a lock while iterating over the {@link #getMetadata() metadata} and
- * simultaneously accessing the content parts. In other words
- * calling <code> contentItem.getLock() == contentItem.getMetadata().getLock()</code>
- * MUST BE <code>true</code>
+ * The lock needs to be used for reading and writing information from/to
+ * the ContentItem. In case the {@link MGraph} retured by {@link #getMetadata()}
+ * is an instanceof used by the {@link org.apache.clerezza.rdf.core.access.LockableMGraph}
+ * the {@link Lock} returned by this mehtod is the same as used by the
+ * metadata.This is to avoid deadlocks when using a lock while iterating over
+ * the {@link #getMetadata() metadata} and simultaneously accessing the content
+ * parts.
*
* @return the lock used for the content parts and the {@link LockableMGraph}
* containing the metadata of this content item.
@@ -64,7 +66,7 @@ public interface ContentItem {
ReadWriteLock getLock();
/** Optional metadata */
- LockableMGraph getMetadata();
+ MGraph getMetadata();
/**
* The main content of this content item
Modified: stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItemFactory.java
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItemFactory.java?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItemFactory.java (original)
+++ stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/ContentItemFactory.java Tue Oct 30 22:46:38 2012
@@ -23,7 +23,6 @@ import java.io.OutputStream;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.Triple;
import org.apache.clerezza.rdf.core.UriRef;
-import org.apache.stanbol.enhancer.servicesapi.helper.ContentItemHelper;
/**
* OSGI service to be used to create {@link ContentItem}s and Blobs.
@@ -54,7 +53,7 @@ public interface ContentItemFactory {
* Note the only a generated ID will be added to the passed prefix. So passed
* values should typically end with an separator char (e.g. '/', '#', ':').
* Implementors might want to use
- * {@link ContentItemHelper#streamDigest(InputStream, java.io.OutputStream, String)
+ * {@link org.apache.stanbol.enhancer.servicesapi.helper.ContentItemHelper#streamDigest(InputStream, java.io.OutputStream, String)
* for generating an ID while reading the data from the ContentSource.
* @param source The content source
* @return the {@link ContentItem} with a generated id and the passed
Modified: stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/helper/ExecutionPlanHelper.java
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/helper/ExecutionPlanHelper.java?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/helper/ExecutionPlanHelper.java (original)
+++ stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/java/org/apache/stanbol/enhancer/servicesapi/helper/ExecutionPlanHelper.java Tue Oct 30 22:46:38 2012
@@ -57,9 +57,13 @@ import org.apache.stanbol.enhancer.servi
import org.apache.stanbol.enhancer.servicesapi.ServiceProperties;
import org.apache.stanbol.enhancer.servicesapi.impl.EnginesTracker;
import org.apache.stanbol.enhancer.servicesapi.rdf.ExecutionPlan;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public final class ExecutionPlanHelper {
+ private final static Logger log = LoggerFactory.getLogger(ExecutionPlanHelper.class);
+
private static LiteralFactory lf = LiteralFactory.getInstance();
private ExecutionPlanHelper(){/* Do not allow instances of utility classes*/}
@@ -184,7 +188,14 @@ public final class ExecutionPlanHelper {
current = new HashSet<NonLiteral>();
prevOrder = order;
}
- current.add(writeExecutionNode(ep, epNode, name, optional.contains(name), prev));
+ try {
+ current.add(writeExecutionNode(ep, epNode, name, optional.contains(name), prev));
+ } catch (RuntimeException e){
+ //add the engine and class to ease debugging in such cases
+ log.error("Exception while writing ExecutionNode for Enhancement Eninge: "
+ + engine +"(class: "+engine.getClass()+")",e);
+ throw e; //rethrow it
+ }
}
return ep.getGraph();
}
Modified: stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/resources/fise.owl
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/resources/fise.owl?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/resources/fise.owl (original)
+++ stanbol/branches/disambiguation-engine/generic/servicesapi/src/main/resources/fise.owl Tue Oct 30 22:46:38 2012
@@ -1,4 +1,20 @@
<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:protege="http://protege.stanford.edu/plugins/owl/protege#"
Propchange: stanbol/branches/disambiguation-engine/generic/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Oct 30 22:46:38 2012
@@ -0,0 +1,2 @@
+/incubator/stanbol/trunk/enhancer/generic/test:1377975-1388016
+/stanbol/trunk/enhancer/generic/test:1388017-1403643
Modified: stanbol/branches/disambiguation-engine/generic/test/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/test/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/test/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/generic/test/pom.xml Tue Oct 30 22:46:38 2012
@@ -23,13 +23,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<relativePath>../../parent</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.test</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Apache Stanbol Enhancer Test framework</name>
@@ -40,12 +40,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/generic/test/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/generic/test/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/generic/test/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/generic/test/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
@@ -74,7 +74,7 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.servicesapi</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
</dependency>
<dependency>
Modified: stanbol/branches/disambiguation-engine/generic/test/src/license/THIRD-PARTY.properties
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/test/src/license/THIRD-PARTY.properties?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/test/src/license/THIRD-PARTY.properties (original)
+++ stanbol/branches/disambiguation-engine/generic/test/src/license/THIRD-PARTY.properties Tue Oct 30 22:46:38 2012
@@ -18,7 +18,7 @@
# Please fill the missing licenses for dependencies :
#
#
-#Mon Apr 09 10:44:04 CEST 2012
-javax.servlet--servlet-api--2.4=Common Development And Distribution License (CDDL), Version 1.0
+#Sun Oct 07 16:00:11 CEST 2012
+javax.servlet--servlet-api--2.5=Common Development And Distribution License (CDDL), Version 1.0
org.osgi--org.osgi.compendium--4.1.0=Apache Software License, Version 2.0
org.osgi--org.osgi.core--4.1.0=Apache Software License, Version 2.0
Modified: stanbol/branches/disambiguation-engine/generic/test/src/main/java/org/apache/stanbol/enhancer/test/helper/EnhancementStructureHelper.java
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/generic/test/src/main/java/org/apache/stanbol/enhancer/test/helper/EnhancementStructureHelper.java?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/generic/test/src/main/java/org/apache/stanbol/enhancer/test/helper/EnhancementStructureHelper.java (original)
+++ stanbol/branches/disambiguation-engine/generic/test/src/main/java/org/apache/stanbol/enhancer/test/helper/EnhancementStructureHelper.java Tue Oct 30 22:46:38 2012
@@ -1,3 +1,19 @@
+/*
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
package org.apache.stanbol.enhancer.test.helper;
import static org.apache.stanbol.enhancer.servicesapi.rdf.OntologicalClasses.DBPEDIA_ORGANISATION;
@@ -319,10 +335,16 @@ public class EnhancementStructureHelper
// check if the relation to the text annotation is set
assertTrue(relationToTextAnnotationIterator.hasNext());
while (relationToTextAnnotationIterator.hasNext()) {
- // test if the referred annotations are text annotations
+ // test if the referred annotations are text annotations or
+ // the referenced annotations is a fise:EntityAnnotation AND also a
+ // dc:requires link is defined (STANBOL-766)
UriRef referredTextAnnotation = (UriRef) relationToTextAnnotationIterator.next().getObject();
- assertTrue(enhancements.filter(referredTextAnnotation, RDF_TYPE,
- ENHANCER_TEXTANNOTATION).hasNext());
+ assertTrue("fise:EntityAnnotations MUST BE dc:related to a fise:TextAnnotation OR dc:requires and dc:related to the same fise:EntityAnnotation",
+ enhancements.filter(referredTextAnnotation, RDF_TYPE,
+ ENHANCER_TEXTANNOTATION).hasNext() || (
+ enhancements.filter(referredTextAnnotation, RDF_TYPE,
+ ENHANCER_ENTITYANNOTATION).hasNext() &&
+ enhancements.filter(entityAnnotation, Properties.DC_REQUIRES, referredTextAnnotation).hasNext()));
}
// test if an entity is referred
@@ -420,7 +442,8 @@ public class EnhancementStructureHelper
XSD.dateTime.equals(((TypedLiteral)createdResource).getDataType()));
Date creationDate = LiteralFactory.getInstance().createObject(Date.class, (TypedLiteral)createdResource);
assertNotNull("Unable to convert "+createdResource+" to a Java Date object",creationDate);
- assertTrue("CreationDate MUST NOT be in the Future",new Date().after(creationDate));
+ Date now = new Date();
+ assertTrue("CreationDate MUST NOT be in the Future",now.after(creationDate) || now.equals(creationDate));
assertFalse("Only a single createnDate MUST BE present", createdIterator.hasNext());
//validate optional modification date if present
Iterator<Triple> modDateIterator = enhancements.filter(enhancement, DCTERMS.modified, null);
Modified: stanbol/branches/disambiguation-engine/jersey/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jersey/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jersey/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/jersey/pom.xml Tue Oct 30 22:46:38 2012
@@ -22,13 +22,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.jersey</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Stanbol Enhancer Web (Jersey)</name>
@@ -36,12 +36,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jersey/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jersey/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jersey/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jersey/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
@@ -91,7 +91,7 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.servicesapi</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.stanbol</groupId>
@@ -202,7 +202,7 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.core</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
Propchange: stanbol/branches/disambiguation-engine/jobmanager/event/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue Oct 30 22:46:38 2012
@@ -0,0 +1,2 @@
+/incubator/stanbol/trunk/enhancer/jobmanager/event:1377975-1388016
+/stanbol/trunk/enhancer/jobmanager/event:1388017-1403643
Modified: stanbol/branches/disambiguation-engine/jobmanager/event/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jobmanager/event/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jobmanager/event/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/jobmanager/event/pom.xml Tue Oct 30 22:46:38 2012
@@ -23,13 +23,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<relativePath>../../parent</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.eventjobmanager</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Stanbol Enhancer Event Jobmanager</name>
@@ -43,12 +43,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jobmanager/event/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jobmanager/event/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jobmanager/event/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jobmanager/event/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
@@ -59,6 +59,10 @@
<extensions>true</extensions>
<configuration>
<instructions>
+ <Import-Package>
+ org.apache.stanbol.enhancer.servicesapi; provide:=true; version="[0.9.0,0.11)",
+ *
+ </Import-Package>
<Export-Package>
org.apache.stanbol.enhancer.jobmanager.event;version=${project.version}
</Export-Package>
Modified: stanbol/branches/disambiguation-engine/jobmanager/event/src/license/THIRD-PARTY.properties
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jobmanager/event/src/license/THIRD-PARTY.properties?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jobmanager/event/src/license/THIRD-PARTY.properties (original)
+++ stanbol/branches/disambiguation-engine/jobmanager/event/src/license/THIRD-PARTY.properties Tue Oct 30 22:46:38 2012
@@ -1,17 +1,24 @@
# Generated by org.codehaus.mojo.license.AddThirdPartyMojo
#-------------------------------------------------------------------------------
# Already used licenses in project :
-# - Apache License
-# - Common Development and Distribution License (CDDL) v1.0
-# - Common Public License Version 1.0
+# - Apache Software License
+# - Apache Software License, Version 2.0
+# - BSD License
+# - Common Development And Distribution License (CDDL), Version 1.0
+# - Common Development And Distribution License (CDDL), Version 1.1
+# - Common Public License, Version 1.0
+# - Eclipse Public License, Version 1.0
+# - GNU General Public License (GPL), Version 2 with classpath exception
+# - GNU Lesser General Public License (LGPL)
+# - GNU Lesser General Public License (LGPL), Version 2.1
# - ICU License
# - MIT License
-# - The Apache Software License, Version 2.0
+# - Public Domain License
#-------------------------------------------------------------------------------
# Please fill the missing licenses for dependencies :
#
#
-#Wed Feb 15 19:01:55 CET 2012
-javax.servlet--servlet-api--2.4=Common Development And Distribution License (CDDL), Version 1.0
+#Sun Oct 07 16:06:06 CEST 2012
+javax.servlet--servlet-api--2.5=Common Development And Distribution License (CDDL), Version 1.0
org.osgi--org.osgi.compendium--4.1.0=The Apache Software License, Version 2.0
org.osgi--org.osgi.core--4.1.0=The Apache Software License, Version 2.0
Modified: stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java (original)
+++ stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EnhancementJobHandler.java Tue Oct 30 22:46:38 2012
@@ -25,13 +25,11 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Dictionary;
-import java.util.HashMap;
import java.util.Hashtable;
import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
@@ -40,13 +38,14 @@ import org.apache.clerezza.rdf.core.NonL
import org.apache.stanbol.enhancer.servicesapi.EngineException;
import org.apache.stanbol.enhancer.servicesapi.EnhancementEngine;
import org.apache.stanbol.enhancer.servicesapi.EnhancementEngineManager;
-import org.apache.stanbol.enhancer.servicesapi.helper.ExecutionPlanHelper;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.ibm.icu.lang.UCharacter.SentenceBreak;
+
public class EnhancementJobHandler implements EventHandler {
private EnhancementEngineManager engineManager;
@@ -69,7 +68,7 @@ public class EnhancementJobHandler imple
* contentItems and the values are the objects used to interrupt the
* requesting thread as soon as the enhancement process has finished.
*/
- private Map<EnhancementJob,Object> processingJobs;
+ private Map<EnhancementJob,EnhancementJobObserver> processingJobs;
private final ReadWriteLock processingLock = new ReentrantReadWriteLock();
private Thread observerDaemon;
@@ -85,11 +84,11 @@ public class EnhancementJobHandler imple
this.engineManager = engineManager;
processingLock.writeLock().lock();
try {
- processingJobs = new LinkedHashMap<EnhancementJob,Object>();
+ processingJobs = new LinkedHashMap<EnhancementJob,EnhancementJobObserver>();
} finally{
processingLock.writeLock().unlock();
}
- observerDaemon = new Thread(new EnhancementJobObserver());
+ observerDaemon = new Thread(new EnhancementJobObserverDaemon());
observerDaemon.setName("Event Job Manager Observer Daemon");
observerDaemon.setDaemon(true);
observerDaemon.start();
@@ -134,19 +133,19 @@ public class EnhancementJobHandler imple
* @return An object that will get {@link Object#notifyAll()} as soon as
* {@link EnhancementJob#isFinished()} or this instance is deactivated
*/
- public Object register(EnhancementJob enhancementJob){
+ public EnhancementJobObserver register(EnhancementJob enhancementJob){
final boolean init;
- Object o;
+ EnhancementJobObserver observer;
processingLock.writeLock().lock();
try {
if(enhancementJob == null || processingJobs == null){
return null;
}
- o = processingJobs.get(enhancementJob);
- if(o == null){
- o = new Object();
- logJobInfo(enhancementJob, "Add EnhancementJob:");
- processingJobs.put(enhancementJob, o);
+ observer = processingJobs.get(enhancementJob);
+ if(observer == null){
+ observer = new EnhancementJobObserver(enhancementJob);
+ logJobInfo(log, enhancementJob, "Add EnhancementJob:",false);
+ processingJobs.put(enhancementJob, observer);
init = true;
} else {
init = false;
@@ -155,6 +154,7 @@ public class EnhancementJobHandler imple
processingLock.writeLock().unlock();
}
if(init){
+ observer.acquire();
enhancementJob.startProcessing();
log.debug("++ w: {}","init execution");
enhancementJob.getLock().writeLock().lock();
@@ -166,7 +166,7 @@ public class EnhancementJobHandler imple
enhancementJob.getLock().writeLock().unlock();
}
}
- return o;
+ return observer;
}
@Override
@@ -283,18 +283,21 @@ public class EnhancementJobHandler imple
*/
private void finish(EnhancementJob job){
processingLock.writeLock().lock();
- Object o;
+ EnhancementJobObserver observer;
try {
- o = processingJobs.remove(job);
+ observer = processingJobs.remove(job);
} finally {
processingLock.writeLock().unlock();
}
- if(o != null) {
- synchronized (o) {
- logJobInfo(job, "Finished EnhancementJob:");
+ if(observer != null) {
+ try {
+ logJobInfo(log, job, "Finished EnhancementJob:",false);
log.debug("++ n: finished processing ContentItem {} with Chain {}",
job.getContentItem().getUri(),job.getChainName());
- o.notifyAll();
+ } finally {
+ //release the semaphore to send signal to the EventJobManager waiting
+ //for the results
+ observer.release();
}
} else {
log.warn("EnhancementJob for ContentItem {} is not " +
@@ -335,15 +338,16 @@ public class EnhancementJobHandler imple
* Logs basic infos about the Job as INFO and detailed infos as DEBUG
* @param job
*/
- protected void logJobInfo(EnhancementJob job, String header) {
+ protected static void logJobInfo(Logger log, EnhancementJob job, String header, boolean logExecutions) {
if(header != null){
log.info(header);
}
- log.info(" state: {}",job.isFinished()?"finished":job.isFailed()?"failed":"processing");
- log.info(" chain: {}",job.getChainName());
+ log.info(" finished: {}",job.isFinished());
+ log.info(" state: {}",job.isFailed()?"failed":"processing");
+ log.info(" chain: {}",job.getChainName());
log.info(" content-item: {}", job.getContentItem().getUri());
- log.debug(" executions:");
- if(log.isDebugEnabled()){
+ if(logExecutions){
+ log.info(" executions:");
for(NonLiteral completedExec : job.getCompleted()){
log.info(" - {} completed",getEngine(job.getExecutionMetadata(),
job.getExecutionNode(completedExec)));
@@ -354,16 +358,87 @@ public class EnhancementJobHandler imple
}
}
}
+ public class EnhancementJobObserver{
+
+ private static final int MIN_WAIT_TIME = 500;
+ private final EnhancementJob enhancementJob;
+ private final Semaphore semaphore;
+
+ private EnhancementJobObserver(EnhancementJob job){
+ if(job == null){
+ throw new IllegalArgumentException("The parsed EnhancementJob MUST NOT be NULL!");
+ }
+ this.enhancementJob = job;
+ this.semaphore = new Semaphore(1);
+ }
+
+ protected void acquire() {
+ try {
+ semaphore.acquire();
+ } catch (InterruptedException e) {
+ log.warn("Interrupted while acquireing Semaphore for EnhancementJob "
+ + enhancementJob + "!",e);
+ }
+ }
+
+ protected void release() {
+ semaphore.release();
+ }
+
+ public boolean hasCompleted() {
+ enhancementJob.getLock().readLock().lock();
+ try {
+ return enhancementJob.isFinished();
+ } finally {
+ enhancementJob.getLock().readLock().unlock();
+ }
+ }
+
+ public void waitForCompletion(int maxEnhancementJobWaitTime) {
+ if(semaphore.availablePermits() < 1){
+ // The only permit is taken by the EnhancementJobHander
+ try {
+ semaphore.tryAcquire(1,
+ Math.max(MIN_WAIT_TIME, maxEnhancementJobWaitTime),TimeUnit.MILLISECONDS);
+ } catch (InterruptedException e) {
+ //interupted
+ }
+ } else if(!hasCompleted()){
+ int wait = Math.max(100, maxEnhancementJobWaitTime/10);
+ log.warn("Unexpected permit available for Semaphore of "
+ + "EnhancementJob of ContentItem {}. Fallback to wait({})"
+ + "for detecting if Job has finished. While the fallback "
+ + "should ensure correct Enhancement results this indicates a "
+ + "Bug in the EventHobManager. Please feel free to report "
+ + "This on dev@stanbol.apache.org or the Apache Stanbol "
+ + "Issue Tracker.",enhancementJob.getContentItem().getUri(),wait);
+ try {
+ Thread.currentThread().wait(wait);
+ } catch (InterruptedException e) {
+ //interupted
+ }
+ }// else completed
+ }
+
+ }
+
+
/**
* Currently only used to debug the number of currently registered
* Enhancements Jobs (if there are some)
* @author Rupert Westenthaler
*/
- private class EnhancementJobObserver implements Runnable {
+ private class EnhancementJobObserverDaemon implements Runnable {
+ /**
+ * The logger of the Observer. Can be used to configure Loglevel specificly
+ *
+ */
+ private Logger observerLog = LoggerFactory.getLogger(EnhancementJobObserverDaemon.class);
+
@Override
public void run() {
- log.debug(" ... init EnhancementJobObserver");
+ observerLog.debug(" ... init EnhancementJobObserver");
while(processingJobs != null){
try {
Thread.sleep(10000);
@@ -382,13 +457,13 @@ public class EnhancementJobHandler imple
readLock.unlock();
}
if(!jobs.isEmpty()){
- log.info(" -- {} active Enhancement Jobs",jobs.size());
- if(log.isDebugEnabled()){
+ observerLog.info(" -- {} active Enhancement Jobs",jobs.size());
+ if(observerLog.isDebugEnabled()){
for(EnhancementJob job : jobs){
Lock jobLock = job.getLock().readLock();
jobLock.lock();
try {
- logJobInfo(job,null);
+ logJobInfo(observerLog,job,null,true);
} finally {
jobLock.unlock();
}
Modified: stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java (original)
+++ stanbol/branches/disambiguation-engine/jobmanager/event/src/main/java/org/apache/stanbol/enhancer/jobmanager/event/impl/EventJobManagerImpl.java Tue Oct 30 22:46:38 2012
@@ -21,6 +21,7 @@ import static org.apache.stanbol.enhance
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.List;
+import java.util.concurrent.Semaphore;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.felix.scr.annotations.Activate;
@@ -30,6 +31,7 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
+import org.apache.stanbol.enhancer.jobmanager.event.impl.EnhancementJobHandler.EnhancementJobObserver;
import org.apache.stanbol.enhancer.servicesapi.Chain;
import org.apache.stanbol.enhancer.servicesapi.ChainException;
import org.apache.stanbol.enhancer.servicesapi.ChainManager;
@@ -58,6 +60,8 @@ public class EventJobManagerImpl impleme
private final Logger log = LoggerFactory.getLogger(EventJobManagerImpl.class);
public static final int DEFAULT_SERVICE_RANKING = 0;
+
+ private static final int MAX_ENHANCEMENT_JOB_WAIT_TIME = 10*1000;
@Reference
protected ChainManager chainManager;
@@ -127,16 +131,10 @@ public class EventJobManagerImpl impleme
EnhancementJob job = new EnhancementJob(ci, chain.getName(), chain.getExecutionPlan(),isDefaultChain);
//start the execution
//wait for the results
- Object object = jobHandler.register(job);
- while(!job.isFinished() & jobHandler != null){
- synchronized (object) {
- try {
- object.wait();
- } catch (InterruptedException e) {
- log.debug("Interupped for EnhancementJob if ContentItem {}",
- job.getContentItem().getUri());
- }
- }
+ EnhancementJobObserver observer = jobHandler.register(job);
+ //TODO: allow configuring a max completion time (e.g. 1min)
+ while(!observer.hasCompleted() & jobHandler != null){
+ observer.waitForCompletion(MAX_ENHANCEMENT_JOB_WAIT_TIME);
}
log.info("{} EnhancementJob for ContentItem {} after {}ms",
new Object[]{ job.isFailed() ? "Failed" : "Finished",
@@ -148,7 +146,12 @@ public class EventJobManagerImpl impleme
// RESTful interface of the Enhancer!
//ci.getMetadata().addAll(job.getExecutionMetadata());
if(job.isFailed()){
- throw new ChainException(job.getErrorMessage(), job.getError());
+ Exception e = job.getError();
+ if (e instanceof SecurityException) {
+ throw (SecurityException)e;
+ } else {
+ throw new ChainException(job.getErrorMessage(), e);
+ }
}
if(!job.isFinished()){
throw new ChainException("EnhancementJobManager was deactivated while" +
Modified: stanbol/branches/disambiguation-engine/jobmanager/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jobmanager/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jobmanager/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/jobmanager/pom.xml Tue Oct 30 22:46:38 2012
@@ -22,7 +22,7 @@
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.jobmanager.reactor</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache Stanbol Enhancer JobManager Reactor</name>
@@ -33,12 +33,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jobmanager
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jobmanager
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jobmanager
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jobmanager
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<modules>
Modified: stanbol/branches/disambiguation-engine/jobmanager/weightedjobmanager/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/jobmanager/weightedjobmanager/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/jobmanager/weightedjobmanager/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/jobmanager/weightedjobmanager/pom.xml Tue Oct 30 22:46:38 2012
@@ -23,13 +23,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<relativePath>../../parent</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.weightedjobmanager</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Stanbol Enhancer Weighted Job Manager</name>
@@ -42,12 +42,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jobmanager/weightedjobmanager/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jobmanager/weightedjobmanager/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/jobmanager/weightedjobmanager/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/jobmanager/weightedjobmanager/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
Modified: stanbol/branches/disambiguation-engine/ldpath/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/ldpath/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/ldpath/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/ldpath/pom.xml Tue Oct 30 22:46:38 2012
@@ -22,13 +22,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.ldpath</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Stanbol Enhancer LDPath</name>
@@ -36,12 +36,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/ldpath/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/ldpath/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/ldpath/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/ldpath/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
@@ -92,7 +92,7 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.servicesapi</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.stanbol</groupId>
@@ -130,7 +130,7 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.core</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
Modified: stanbol/branches/disambiguation-engine/parent/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/parent/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/parent/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/parent/pom.xml Tue Oct 30 22:46:38 2012
@@ -22,13 +22,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>stanbol-parent</artifactId>
- <version>2-incubating-SNAPSHOT</version>
+ <version>2-SNAPSHOT</version>
<relativePath>../../parent</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache Stanbol Enhancer Parent POM</name>
@@ -38,12 +38,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/parent/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/parent/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/parent/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/parent/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
Modified: stanbol/branches/disambiguation-engine/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/pom.xml Tue Oct 30 22:46:38 2012
@@ -29,7 +29,7 @@
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.reactor</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache Stanbol Enhancer Reactor</name>
@@ -40,12 +40,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<modules>
Modified: stanbol/branches/disambiguation-engine/topic-web/pom.xml
URL: http://svn.apache.org/viewvc/stanbol/branches/disambiguation-engine/topic-web/pom.xml?rev=1403907&r1=1403906&r2=1403907&view=diff
==============================================================================
--- stanbol/branches/disambiguation-engine/topic-web/pom.xml (original)
+++ stanbol/branches/disambiguation-engine/topic-web/pom.xml Tue Oct 30 22:46:38 2012
@@ -17,13 +17,13 @@
<parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.parent</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<relativePath>../parent</relativePath>
</parent>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.web.topic</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Stanbol Enhancer Topic Classification - Web API</name>
@@ -36,12 +36,12 @@
<scm>
<connection>
- scm:svn:http://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/topic-web/
+ scm:svn:http://svn.apache.org/repos/asf/stanbol/trunk/enhancer/topic-web/
</connection>
<developerConnection>
- scm:svn:https://svn.apache.org/repos/asf/incubator/stanbol/trunk/enhancer/topic-web/
+ scm:svn:https://svn.apache.org/repos/asf/stanbol/trunk/enhancer/topic-web/
</developerConnection>
- <url>http://incubator.apache.org/stanbol/</url>
+ <url>http://stanbol.apache.org/</url>
</scm>
<build>
@@ -80,17 +80,17 @@
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.commons.web.base</artifactId>
- <version>0.10.1-incubating-SNAPSHOT</version>
+ <version>0.10.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.servicesapi</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.stanbol</groupId>
<artifactId>org.apache.stanbol.enhancer.engine.topic</artifactId>
- <version>0.10.0-incubating-SNAPSHOT</version>
+ <version>0.10.0-SNAPSHOT</version>
</dependency>
<dependency>