You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@clerezza.apache.org by mi...@apache.org on 2014/08/12 18:13:50 UTC
[1/2] git commit: CLEREZZA-939: Caching and exposing as service made
optional
Repository: clerezza
Updated Branches:
refs/heads/master 70b63d940 -> 68a9b1ec6
CLEREZZA-939: Caching and exposing as service made optional
Project: http://git-wip-us.apache.org/repos/asf/clerezza/repo
Commit: http://git-wip-us.apache.org/repos/asf/clerezza/commit/ba3004ac
Tree: http://git-wip-us.apache.org/repos/asf/clerezza/tree/ba3004ac
Diff: http://git-wip-us.apache.org/repos/asf/clerezza/diff/ba3004ac
Branch: refs/heads/master
Commit: ba3004ac6c3a1a2e867a92448724d62b84852108
Parents: 70b63d9
Author: Minto van der Sluis <mi...@apache.org>
Authored: Tue Aug 12 18:11:53 2014 +0200
Committer: Minto van der Sluis <mi...@apache.org>
Committed: Tue Aug 12 18:11:53 2014 +0200
----------------------------------------------------------------------
rdf.core/pom.xml | 7 +-
.../clerezza/rdf/core/access/TcManager.java | 88 +++++++++++-----
.../rdf/core/access/TcProviderMultiplexer.java | 105 ++++++++++++-------
3 files changed, 132 insertions(+), 68 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/clerezza/blob/ba3004ac/rdf.core/pom.xml
----------------------------------------------------------------------
diff --git a/rdf.core/pom.xml b/rdf.core/pom.xml
index cd6fcae..6c43334 100644
--- a/rdf.core/pom.xml
+++ b/rdf.core/pom.xml
@@ -22,7 +22,7 @@
<parent>
<artifactId>clerezza</artifactId>
<groupId>org.apache.clerezza</groupId>
- <version>0.5</version>
+ <version>1.0.0-SNAPSHOT</version>
<relativePath>../parent</relativePath>
</parent>
<groupId>org.apache.clerezza</groupId>
@@ -40,11 +40,10 @@
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
</dependency>
- <!-- <dependency>
+ <dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
- <version>1.9.6</version>
- </dependency> -->
+ </dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.ds-annotations</artifactId>
http://git-wip-us.apache.org/repos/asf/clerezza/blob/ba3004ac/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
----------------------------------------------------------------------
diff --git a/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java b/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
index c59b048..48a5c9a 100644
--- a/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
+++ b/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcManager.java
@@ -24,11 +24,13 @@ import java.util.Collections;
import java.util.Dictionary;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
-import java.util.Properties;
import java.util.ServiceLoader;
import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.MGraph;
@@ -48,7 +50,11 @@ import org.apache.clerezza.rdf.core.sparql.query.ConstructQuery;
import org.apache.clerezza.rdf.core.sparql.query.DescribeQuery;
import org.apache.clerezza.rdf.core.sparql.query.Query;
import org.apache.clerezza.rdf.core.sparql.query.SelectQuery;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Component;
@@ -99,9 +105,15 @@ import org.osgi.service.component.annotations.ReferencePolicy;
*/
//immedia is set to true as this should register the graph services (even if manager service is not required)
@Component(service = TcManager.class, immediate = true)
+@Properties({
+ @Property(name = TcManager.MGRAPH_CACHE_ENABLED, boolValue = true, description = "Enable caching mgraphs."),
+ @Property(name = TcManager.TRIPLECOLLECTION_SERVICES_ENABLED, boolValue = true, description = "Register triple collections as services.") })
public class TcManager extends TcProviderMultiplexer {
public final static String GENERAL_PURPOSE_TC = "general.purpose.tc";
+ public final static String TRIPLECOLLECTION_SERVICES_ENABLED = "triplecollection.services.enabled";
+ public final static String MGRAPH_CACHE_ENABLED = "mgraph.cache.enabled";
+
private static volatile TcManager instance;
private TcAccessController tcAccessController = new TcAccessController() {
@@ -115,10 +127,12 @@ public class TcManager extends TcProviderMultiplexer {
.synchronizedMap(new HashMap<UriRef, ServiceRegistration>());
protected QueryEngine queryEngine;
+ private boolean isActivated = false;
+ private boolean isTcServicesEnabled = true;
private ComponentContext componentContext;
- private Collection<UriRef> mGraphsToRegisterOnActivation = new HashSet<UriRef>();
- private Collection<UriRef> graphsToRegisterOnActivation = new HashSet<UriRef>();
+ protected SortedSet<WeightedTcProvider> tempProviderList = new TreeSet<WeightedTcProvider>(
+ new WeightedProviderComparator());
/**
* the constructor sets the singleton instance to allow instantiation by
@@ -143,6 +157,7 @@ public class TcManager extends TcProviderMultiplexer {
synchronized (TcManager.class) {
if (instance == null) {
instance = new TcManager();
+ instance.isActivated = true;
Iterator<WeightedTcProvider> weightedProviders = ServiceLoader
.load(WeightedTcProvider.class).iterator();
while (weightedProviders.hasNext()) {
@@ -164,15 +179,26 @@ public class TcManager extends TcProviderMultiplexer {
}
return instance;
}
-
+
protected void activate(final ComponentContext componentContext) {
this.componentContext = componentContext;
- for (UriRef name : mGraphsToRegisterOnActivation) {
- registerTripleCollectionAsService(name, true);
- }
- for (UriRef name : graphsToRegisterOnActivation) {
- registerTripleCollectionAsService(name, false);
+
+ // Read configuration
+ isTcServicesEnabled = true;
+ Object configTcServicesEnabled = componentContext.getProperties().get(TRIPLECOLLECTION_SERVICES_ENABLED);
+ if ( configTcServicesEnabled != null && configTcServicesEnabled instanceof String ) {
+ isTcServicesEnabled = Boolean.valueOf((String)configTcServicesEnabled);
+ }
+ Object configCacheEnabled = componentContext.getProperties().get(MGRAPH_CACHE_ENABLED);
+ if ( configCacheEnabled != null && configCacheEnabled instanceof String ) {
+ setCachingEnabled(Boolean.valueOf((String)configCacheEnabled));
+ }
+ isActivated = true;
+
+ for (WeightedTcProvider provider : tempProviderList) {
+ addWeightedTcProvider(provider);
}
+ tempProviderList.clear();
}
protected void deactivate(final ComponentContext componentContext) {
@@ -181,6 +207,7 @@ public class TcManager extends TcProviderMultiplexer {
}
serviceRegistrations.clear();
this.componentContext = null;
+ isActivated = false;
}
@Override
@@ -476,7 +503,11 @@ public class TcManager extends TcProviderMultiplexer {
@Reference(policy = ReferencePolicy.DYNAMIC,
cardinality = ReferenceCardinality.MULTIPLE)
protected void bindWeightedTcProvider(WeightedTcProvider provider) {
- addWeightedTcProvider(provider);
+ if (isActivated) {
+ addWeightedTcProvider(provider);
+ } else {
+ tempProviderList.add(provider);
+ }
}
/**
@@ -498,7 +529,11 @@ public class TcManager extends TcProviderMultiplexer {
cardinality = ReferenceCardinality.AT_LEAST_ONE,
target = "("+TcManager.GENERAL_PURPOSE_TC+"=true)")
protected void bindGpWeightedTcProvider(WeightedTcProvider provider) {
- addWeightedTcProvider(provider);
+ if (isActivated) {
+ addWeightedTcProvider(provider);
+ } else {
+ tempProviderList.add(provider);
+ }
}
/**
@@ -523,24 +558,28 @@ public class TcManager extends TcProviderMultiplexer {
@Override
protected void mGraphAppears(UriRef name) {
- if (componentContext == null) {
- mGraphsToRegisterOnActivation.add(name);
- } else {
- registerTripleCollectionAsService(name, true);
- }
+ if (isTcServicesEnabled()) {
+ // Only create the service when activated. When not activated
+ // creating will be delayed till after activation.
+ if (componentContext != null) {
+ registerTripleCollectionAsService(name, true);
+ }
+ }
}
@Override
protected void graphAppears(UriRef name) {
- if (componentContext == null) {
- graphsToRegisterOnActivation.add(name);
- } else {
- registerTripleCollectionAsService(name, false);
- }
+ if (isTcServicesEnabled()) {
+ // Only create the service when activated. When not activated
+ // creating will be delayed till after activation.
+ if (componentContext != null) {
+ registerTripleCollectionAsService(name, false);
+ }
+ }
}
private void registerTripleCollectionAsService(UriRef name, boolean isMGraph) {
- Dictionary props = new Properties();
+ Dictionary<String,Object> props = new Hashtable<String, Object>();
props.put("name", name.getUnicodeString());
String[] interfaceNames;
Object service;
@@ -564,8 +603,6 @@ public class TcManager extends TcProviderMultiplexer {
@Override
protected void tcDisappears(UriRef name) {
- mGraphsToRegisterOnActivation.remove(name);
- graphsToRegisterOnActivation.remove(name);
ServiceRegistration reg = serviceRegistrations.get(name);
if (reg != null) {
reg.unregister();
@@ -590,4 +627,7 @@ public class TcManager extends TcProviderMultiplexer {
return singleTargetTcProvider;
}
+ public boolean isTcServicesEnabled() {
+ return isTcServicesEnabled;
+ }
}
http://git-wip-us.apache.org/repos/asf/clerezza/blob/ba3004ac/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcProviderMultiplexer.java
----------------------------------------------------------------------
diff --git a/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcProviderMultiplexer.java b/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcProviderMultiplexer.java
index 8c0f832..65f663e 100644
--- a/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcProviderMultiplexer.java
+++ b/rdf.core/src/main/java/org/apache/clerezza/rdf/core/access/TcProviderMultiplexer.java
@@ -54,6 +54,12 @@ public class TcProviderMultiplexer implements TcProvider {
*/
private Map<UriRef, MGraphHolder> mGraphCache = Collections.synchronizedMap(new HashMap<UriRef, MGraphHolder>());
+ /**
+ * Flag to indicate whether mgraphs should be cached for faster access. By
+ * default caching is enabled for backward compatibility.
+ */
+ private boolean isCachingEnabled = true;
+
/**
* Registers a provider
*
@@ -142,24 +148,25 @@ public class TcProviderMultiplexer implements TcProvider {
private void weightedProviderAdded(WeightedTcProvider newProvider,
Set<UriRef> newProvidedUris) {
Set<WeightedTcProvider> lowerWeightedProviderList = getLowerWeightedProvider(newProvider);
- for (UriRef name : newProvidedUris) {
- final MGraphHolder holder = mGraphCache.get(name);
- if ((holder != null) && (holder.getWeightedTcProvider() != null)) {
- if (lowerWeightedProviderList.contains(holder.getWeightedTcProvider())) {
- tcDisappears(name);
- mGraphCache.remove(name);
- } else {
- continue;
- }
- }
- TripleCollection triples = newProvider.getTriples(name);
- if (triples instanceof MGraph) {
- mGraphCache.put(name, new MGraphHolder(newProvider, ensureLockable((MGraph)triples)));
- mGraphAppears(name);
- } else {
- graphAppears(name);
- }
-
+ if (isCachingEnabled()) {
+ for (UriRef name : newProvidedUris) {
+ final MGraphHolder holder = mGraphCache.get(name);
+ if ((holder != null) && (holder.getWeightedTcProvider() != null)) {
+ if (lowerWeightedProviderList.contains(holder.getWeightedTcProvider())) {
+ tcDisappears(name);
+ mGraphCache.remove(name);
+ } else {
+ continue;
+ }
+ }
+ TripleCollection triples = newProvider.getTriples(name);
+ if (triples instanceof MGraph) {
+ mGraphCache.put(name, new MGraphHolder(newProvider, ensureLockable((MGraph)triples)));
+ mGraphAppears(name);
+ } else {
+ graphAppears(name);
+ }
+ }
}
}
@@ -188,23 +195,24 @@ public class TcProviderMultiplexer implements TcProvider {
tcDisappears(name);
mGraphCache.remove(name);
- // check if another WeightedTcProvider has the TripleCollection.
- // And if so register as service.
- for (WeightedTcProvider provider : providerList) {
- try {
- TripleCollection triples = provider.getTriples(name);
- if (triples instanceof MGraph) {
- mGraphCache.put(name, new MGraphHolder(provider, ensureLockable((MGraph)triples)));
- mGraphAppears(name);
- } else {
- graphAppears(name);
- }
- break;
- } catch (NoSuchEntityException e) {
- // continue;
- }
- }
-
+ if (isCachingEnabled()) {
+ // check if another WeightedTcProvider has the TripleCollection.
+ // And if so register as service.
+ for (WeightedTcProvider provider : providerList) {
+ try {
+ TripleCollection triples = provider.getTriples(name);
+ if (triples instanceof MGraph) {
+ mGraphCache.put(name, new MGraphHolder(provider, ensureLockable((MGraph)triples)));
+ mGraphAppears(name);
+ } else {
+ graphAppears(name);
+ }
+ break;
+ } catch (NoSuchEntityException e) {
+ // continue;
+ }
+ }
+ }
}
}
}
@@ -253,9 +261,10 @@ public class TcProviderMultiplexer implements TcProvider {
MGraph providedMGraph = provider.getMGraph(name);
LockableMGraph result = ensureLockable(providedMGraph);
- MGraphHolder holder = mGraphCache.get(name);
- mGraphCache.put(name, new MGraphHolder(
- provider, result));
+ if (isCachingEnabled()) {
+ mGraphCache.put(name, new MGraphHolder(
+ provider, result));
+ }
return result;
} catch (NoSuchEntityException e) {
//we do nothing and try our luck with the next provider
@@ -305,7 +314,9 @@ public class TcProviderMultiplexer implements TcProvider {
// unregisters a possible Graph or MGraph service under this name
// provided by a WeightedTcProvider with a lower weight.
tcDisappears(name);
- mGraphCache.put(name, new MGraphHolder(provider, null));
+ if (isCachingEnabled()) {
+ mGraphCache.put(name, new MGraphHolder(provider, null));
+ }
mGraphAppears(name);
return result;
} catch (UnsupportedOperationException e) {
@@ -327,7 +338,9 @@ public class TcProviderMultiplexer implements TcProvider {
// unregisters a possible Graph or MGraph service under this name
// provided by a WeightedTcProvider with a lower weight.
tcDisappears(name);
- mGraphCache.put(name, new MGraphHolder(provider, null));
+ if (isCachingEnabled()) {
+ mGraphCache.put(name, new MGraphHolder(provider, null));
+ }
graphAppears(name);
return result;
} catch (UnsupportedOperationException e) {
@@ -441,4 +454,16 @@ public class TcProviderMultiplexer implements TcProvider {
public SortedSet<WeightedTcProvider> getProviderList() {
return providerList;
}
+
+ public boolean isCachingEnabled() {
+ return isCachingEnabled;
+ }
+
+ public void setCachingEnabled(boolean isCachingEnabled) {
+ this.isCachingEnabled = isCachingEnabled;
+
+ if (!isCachingEnabled()) {
+ mGraphCache.clear();
+ }
+ }
}
[2/2] git commit: CLEREZZA-939: Required scr update
Posted by mi...@apache.org.
CLEREZZA-939: Required scr update
Project: http://git-wip-us.apache.org/repos/asf/clerezza/repo
Commit: http://git-wip-us.apache.org/repos/asf/clerezza/commit/68a9b1ec
Tree: http://git-wip-us.apache.org/repos/asf/clerezza/tree/68a9b1ec
Diff: http://git-wip-us.apache.org/repos/asf/clerezza/diff/68a9b1ec
Branch: refs/heads/master
Commit: 68a9b1ec67bf4cdd294554f3bb4da22bdf5bc601
Parents: ba3004a
Author: Minto van der Sluis <mi...@apache.org>
Authored: Tue Aug 12 18:13:37 2014 +0200
Committer: Minto van der Sluis <mi...@apache.org>
Committed: Tue Aug 12 18:13:37 2014 +0200
----------------------------------------------------------------------
parent/pom.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/clerezza/blob/68a9b1ec/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 0a91257..e430003 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -87,7 +87,7 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-scr-plugin</artifactId>
- <version>1.7.4</version>
+ <version>1.19.0</version>
<executions>
<execution>
<id>generate-scr-scrdescriptor</id>
@@ -239,7 +239,7 @@
maven-scr-plugin
</artifactId>
<versionRange>
- [1.7.0,)
+ [1.9.0,)
</versionRange>
<goals>
<goal>scr</goal>
@@ -464,7 +464,7 @@
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.scr.annotations</artifactId>
- <version>1.6.0</version>
+ <version>1.9.8</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>