Author: mir
Date: Wed Oct 6 10:10:51 2010
New Revision: 1004966
URL: http://svn.apache.org/viewvc?rev=1004966&view=rev
Log:
CLEREZZA-316: replaced service injected graph with graph retrieved over
TcManager
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageService.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageService.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageService.java?rev=1004966&r1=1004965&r2=1004966&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageService.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageService.java
Wed Oct 6 10:10:51 2010
@@ -27,21 +27,22 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import org.apache.clerezza.platform.config.PlatformConfig;
+import java.util.concurrent.locks.Lock;
+import org.apache.clerezza.platform.Constants;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
-import org.apache.clerezza.platform.config.SystemConfig;
import org.apache.clerezza.rdf.core.BNode;
import org.apache.clerezza.rdf.core.Graph;
import org.apache.clerezza.rdf.core.Language;
import org.osgi.service.component.ComponentContext;
-import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.NonLiteral;
import org.apache.clerezza.rdf.core.PlainLiteral;
import org.apache.clerezza.rdf.core.Resource;
import org.apache.clerezza.rdf.core.Triple;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
+import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
import org.apache.clerezza.rdf.core.serializedform.ParsingProvider;
import org.apache.clerezza.rdf.core.serializedform.SupportedFormat;
@@ -62,11 +63,8 @@ import org.apache.clerezza.rdf.utils.Rdf
@Service(LanguageService.class)
public class LanguageService {
- @Reference(target = SystemConfig.SYSTEM_GRAPH_FILTER)
- private MGraph systemGraph;
-
- @Reference(target = PlatformConfig.CONFIG_GRAPH_FILTER)
- private MGraph configGraph;
+ @Reference
+ private TcManager tcManager;
/**
* this is linked to the system-graph, accessing requires respective
@@ -86,6 +84,15 @@ public class LanguageService {
private SoftReference<Graph> softLingvojGraph = new
SoftReference<Graph>(null);
+
+ private LockableMGraph getSystemGraph() {
+ return tcManager.getMGraph(Constants.SYSTEM_GRAPH_URI);
+ }
+
+ private LockableMGraph getConfigGraph() {
+ return tcManager.getMGraph(Constants.CONFIG_GRAPH_URI);
+ }
+
/**
* Returns a <code>List</code> of <code>LanguageDescription</code>s
which
* describe the languages which are supported by the platform. The first
@@ -99,7 +106,7 @@ public class LanguageService {
UriRef language = (UriRef) languages.next();
langList.add(
new LanguageDescription(new
GraphNode(language,
- configGraph)));
+ getConfigGraph())));
}
return langList;
}
@@ -111,7 +118,7 @@ public class LanguageService {
*/
public LanguageDescription getDefaultLanguage() {
return new LanguageDescription(
- new GraphNode(languageListCache.get(0),
configGraph));
+ new GraphNode(languageListCache.get(0),
getConfigGraph()));
}
/**
@@ -192,8 +199,15 @@ public class LanguageService {
* @param languageUri
*/
private void addToConfigGraph(NonLiteral languageUri) {
- if (!configGraph.filter(languageUri, LINGVOJ.iso1,
null).hasNext()) {
- configGraph.addAll(getLanguageContext(languageUri));
+ LockableMGraph configGraph = getConfigGraph();
+ Lock writeLock = configGraph.getLock().writeLock();
+ writeLock.lock();
+ try {
+ if (!configGraph.filter(languageUri, LINGVOJ.iso1,
null).hasNext()) {
+
configGraph.addAll(getLanguageContext(languageUri));
+ }
+ } finally {
+ writeLock.unlock();
}
}
@@ -228,7 +242,7 @@ public class LanguageService {
* @param componentContext
*/
protected void activate(ComponentContext componentContext) {
- final RdfList rdfList = new RdfList(getListNode(), systemGraph);
+ final RdfList rdfList = new RdfList(getListNode(),
getSystemGraph());
languageList = Collections.synchronizedList(rdfList);
//access to languages should not require access to system graph,
//so copying the resources to an ArrayList
@@ -242,19 +256,32 @@ public class LanguageService {
}
private NonLiteral getListNode() {
- Iterator<Triple> instances = systemGraph.filter(null, RDF.type,
PLATFORM.Instance);
- if (!instances.hasNext()) {
- throw new RuntimeException("No Platform:Instance in
system graph.");
- }
- NonLiteral instance = instances.next().getSubject();
- Iterator<Triple> langListIter = systemGraph.filter(instance,
- PLATFORM.languages, null);
- if (langListIter.hasNext()) {
- return (NonLiteral) langListIter.next().getObject();
+ NonLiteral instance = null;
+ LockableMGraph systemGraph = getSystemGraph();
+ Lock readLock = systemGraph.getLock().readLock();
+ readLock.lock();
+ try {
+ Iterator<Triple> instances = systemGraph.filter(null,
RDF.type, PLATFORM.Instance);
+ if (!instances.hasNext()) {
+ throw new RuntimeException("No
Platform:Instance in system graph.");
+ }
+ instance = instances.next().getSubject();
+ Iterator<Triple> langListIter =
systemGraph.filter(instance,
+ PLATFORM.languages, null);
+ if (langListIter.hasNext()) {
+ return (NonLiteral)
langListIter.next().getObject();
+ }
+ } finally {
+ readLock.unlock();
}
BNode listNode = new BNode();
- systemGraph.add(new TripleImpl(instance, PLATFORM.languages,
- listNode));
+ Lock writeLock = systemGraph.getLock().writeLock();
+ writeLock.lock();
+ try {
+ systemGraph.add(new TripleImpl(instance,
PLATFORM.languages, listNode));
+ } finally {
+ writeLock.unlock();
+ }
return listNode;
}
}
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java?rev=1004966&r1=1004965&r2=1004966&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
Wed Oct 6 10:10:51 2010
@@ -30,7 +30,7 @@ import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
-import org.apache.clerezza.platform.config.PlatformConfig;
+import org.apache.clerezza.platform.Constants;
import org.apache.clerezza.rdf.utils.GraphNode;
import org.apache.felix.scr.annotations.Component;
@@ -47,6 +47,8 @@ import org.apache.clerezza.rdf.core.MGra
import org.apache.clerezza.rdf.core.NonLiteral;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.UriRef;
+import org.apache.clerezza.rdf.core.access.LockableMGraph;
+import org.apache.clerezza.rdf.core.access.TcManager;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
import org.apache.clerezza.rdf.ontologies.PLATFORM;
import org.apache.clerezza.rdf.ontologies.RDF;
@@ -78,8 +80,8 @@ public class LanguageWidget implements U
private FileServer fileServer;
- @Reference(target = PlatformConfig.CONFIG_GRAPH_FILTER)
- private MGraph configGraph;
+ @Reference
+ private TcManager TcManager;
@Reference
private RenderletManager renderletManager;
@@ -104,6 +106,10 @@ public class LanguageWidget implements U
}
+ private LockableMGraph getConfigGraph() {
+ return TcManager.getMGraph(Constants.CONFIG_GRAPH_URI);
+ }
+
@Override
public GraphNode addUserContext(final GraphNode node) {
try {
@@ -124,6 +130,7 @@ public class LanguageWidget implements U
TripleCollection graph = node.getGraph();
BNode listNode = new BNode();
RdfList list = new RdfList(listNode, graph);
+ MGraph configGraph = getConfigGraph();
for (LanguageDescription languageDescription : languages) {
NonLiteral languageUri = (NonLiteral)
languageDescription.getResource().getNode();
list.add(languageUri);