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 2013/03/07 08:32:39 UTC
svn commit: r1453716 -
/stanbol/trunk/enhancement-engines/entityhublinking/src/main/java/org/apache/stanbol/enhancer/engines/entityhublinking/EntityhubLinkingEngine.java
Author: rwesten
Date: Thu Mar 7 07:32:39 2013
New Revision: 1453716
URL: http://svn.apache.org/r1453716
Log:
STANBOL-975: Fixes this by (1) catching NoSuchElementException for SortedSet#last() and (2) optaining a local reference to the ServiceTracker for the labelTokenizer and checking it for NOT beeing NULL
Modified:
stanbol/trunk/enhancement-engines/entityhublinking/src/main/java/org/apache/stanbol/enhancer/engines/entityhublinking/EntityhubLinkingEngine.java
Modified: stanbol/trunk/enhancement-engines/entityhublinking/src/main/java/org/apache/stanbol/enhancer/engines/entityhublinking/EntityhubLinkingEngine.java
URL: http://svn.apache.org/viewvc/stanbol/trunk/enhancement-engines/entityhublinking/src/main/java/org/apache/stanbol/enhancer/engines/entityhublinking/EntityhubLinkingEngine.java?rev=1453716&r1=1453715&r2=1453716&view=diff
==============================================================================
--- stanbol/trunk/enhancement-engines/entityhublinking/src/main/java/org/apache/stanbol/enhancer/engines/entityhublinking/EntityhubLinkingEngine.java (original)
+++ stanbol/trunk/enhancement-engines/entityhublinking/src/main/java/org/apache/stanbol/enhancer/engines/entityhublinking/EntityhubLinkingEngine.java Thu Mar 7 07:32:39 2013
@@ -42,6 +42,7 @@ import static org.osgi.framework.Constan
import java.util.Dictionary;
import java.util.Hashtable;
import java.util.NavigableSet;
+import java.util.NoSuchElementException;
import java.util.SortedSet;
import java.util.TreeSet;
@@ -212,74 +213,87 @@ public class EntityhubLinkingEngine impl
entitySearcher = new ReferencedSiteSearcher(bundleContext,siteName,10,this);
}
labelTokenizerTracker = new ServiceTracker(bundleContext, LabelTokenizer.class.getName(),
- new ServiceTrackerCustomizer() {
-
- @Override
- public Object addingService(ServiceReference reference) {
- Object service = bundleContext.getService(reference);
- synchronized (labelTokenizersRefs) {
- labelTokenizersRefs.add(reference);
- ServiceReference higest = labelTokenizersRefs.last();
- EntityLinkingEngine engine = entityLinkingEngine;
- if(engine != null){
- LabelTokenizer lt = (LabelTokenizer)
- (higest.equals(reference) ? service :
- labelTokenizerTracker.getService(higest));
- if(!lt.equals(engine.getLabelTokenizer())){
- log.info(" ... setting LabelTokenizer of Engine '{}' to {}",
- engine.getName(),lt);
- engine.setLabelTokenizer(lt);
+ new ServiceTrackerCustomizer() {
+
+ @Override
+ public Object addingService(ServiceReference reference) {
+ Object service = bundleContext.getService(reference);
+ synchronized (labelTokenizersRefs) {
+ labelTokenizersRefs.add(reference);
+ ServiceReference higest;
+ try {
+ higest = labelTokenizersRefs.last();
+ } catch (NoSuchElementException e) {
+ higest = null;
}
- }
- }
- return service;
- }
-
- @Override
- public void removedService(ServiceReference reference, Object service) {
- synchronized (labelTokenizersRefs) {
- labelTokenizersRefs.remove(reference); //override
- EntityLinkingEngine engine = entityLinkingEngine;
- if(engine != null){
- if(labelTokenizersRefs.isEmpty()){
- log.info(" ... setting LabelTokenizer of Engine '{}' to null",
- engine.getName());
- engine.setLabelTokenizer(null);
- } else {
- LabelTokenizer lt = (LabelTokenizer)labelTokenizerTracker.getService(
- labelTokenizersRefs.last());
+ EntityLinkingEngine engine = entityLinkingEngine;
+ ServiceTracker tracker = labelTokenizerTracker;
+ if(engine != null && tracker != null){
+ LabelTokenizer lt = (LabelTokenizer)
+ (reference.equals(higest) || higest == null ? service :
+ tracker.getService(higest));
if(!lt.equals(engine.getLabelTokenizer())){
log.info(" ... setting LabelTokenizer of Engine '{}' to {}",
engine.getName(),lt);
engine.setLabelTokenizer(lt);
}
- }
+ }//if engine or tracker is null deactivate was already called
}
+ return service;
}
- bundleContext.ungetService(reference);
- }
-
- @Override
- public void modifiedService(ServiceReference reference, Object service) {
- synchronized (labelTokenizersRefs) {
- labelTokenizersRefs.remove(reference); //override
- labelTokenizersRefs.add(reference);
- ServiceReference higest = labelTokenizersRefs.last();
- EntityLinkingEngine engine = entityLinkingEngine;
- if(engine != null){
- LabelTokenizer lt = (LabelTokenizer)
- (higest.equals(reference) ? service :
- labelTokenizerTracker.getService(higest));
- if(!lt.equals(engine.getLabelTokenizer())){
- log.info(" ... setting LabelTokenizer of Engine '{}' to {}",
- engine.getName(),lt);
- engine.setLabelTokenizer(lt);
+
+ @Override
+ public void removedService(ServiceReference reference, Object service) {
+ synchronized (labelTokenizersRefs) {
+ labelTokenizersRefs.remove(reference); //override
+ EntityLinkingEngine engine = entityLinkingEngine;
+ ServiceTracker tracker = labelTokenizerTracker;
+ if(engine != null && tracker != null){
+ if(labelTokenizersRefs.isEmpty()){
+ log.info(" ... setting LabelTokenizer of Engine '{}' to null",
+ engine.getName());
+ engine.setLabelTokenizer(null);
+ } else {
+ LabelTokenizer lt = (LabelTokenizer)tracker.getService(
+ labelTokenizersRefs.last());
+ if(!lt.equals(engine.getLabelTokenizer())){
+ log.info(" ... setting LabelTokenizer of Engine '{}' to {}",
+ engine.getName(),lt);
+ engine.setLabelTokenizer(lt);
+ }
+ }
+ } //if engine or tracker is null deactivate was already called
+ }
+ bundleContext.ungetService(reference);
+ }
+
+ @Override
+ public void modifiedService(ServiceReference reference, Object service) {
+ synchronized (labelTokenizersRefs) {
+ labelTokenizersRefs.remove(reference); //override
+ labelTokenizersRefs.add(reference);
+ ServiceReference higest;
+ try {
+ higest = labelTokenizersRefs.last();
+ } catch (NoSuchElementException e) {
+ higest = null;
}
+ EntityLinkingEngine engine = entityLinkingEngine;
+ ServiceTracker tracker = labelTokenizerTracker;
+ if(engine != null && tracker != null){
+ LabelTokenizer lt = (LabelTokenizer)
+ (reference.equals(higest) || higest == null ? service :
+ tracker.getService(higest));
+ if(!lt.equals(engine.getLabelTokenizer())){
+ log.info(" ... setting LabelTokenizer of Engine '{}' to {}",
+ engine.getName(),lt);
+ engine.setLabelTokenizer(lt);
+ }
+ } //if engine or tracker is null deactivate was already called
}
}
- }
-
- });
+
+ });
//create the engine
entityLinkingEngine = new EntityLinkingEngine(engineName,
entitySearcher, //the searcher might not be available