Author: mir
Date: Thu Feb 18 13:11:48 2010
New Revision: 911383
URL: http://svn.apache.org/viewvc?rev=911383&view=rev
Log:
CLEREZZA-130: resolved
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.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.webapp.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.webapp.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java?rev=911383&r1=911382&r2=911383&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.webapp.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.webapp.parent/org.apache.clerezza.platform.language/org.apache.clerezza.platform.language.core/src/main/java/org/apache/clerezza/platform/language/LanguageWidget.java
Thu Feb 18 13:11:48 2010
@@ -21,6 +21,9 @@
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
+import java.security.AccessControlException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.util.List;
import javax.ws.rs.GET;
@@ -40,6 +43,8 @@
import org.apache.clerezza.platform.typerendering.UserContextProvider;
import
org.apache.clerezza.platform.typerendering.scalaserverpages.ScalaServerPagesRenderlet;
import org.apache.clerezza.rdf.core.BNode;
+import org.apache.clerezza.rdf.core.MGraph;
+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.impl.TripleImpl;
@@ -99,26 +104,43 @@
}
@Override
- public GraphNode addUserContext(GraphNode node) {
- BNode instance = new BNode();
- node.addProperty(PLATFORM.instance, instance);
- node.getGraph().add(new TripleImpl(instance, RDF.type,
PLATFORM.Instance));
- BNode lang = getLanguagesList(node.getGraph());
- node.getGraph().add(new TripleImpl(instance,
PLATFORM.languages, lang));
- node = new GraphNode(node.getNode(), new
UnionMGraph(node.getGraph(),
- cgProvider.getContentGraph()));
- return node;
+ public GraphNode addUserContext(final GraphNode node) {
+ try {
+ return addLanguages(node,
languageService.getLanguages(), false);
+
+ } catch (AccessControlException ex) {
+ return AccessController.doPrivileged(
+ new PrivilegedAction<GraphNode>() {
+ @Override
+ public GraphNode run() {
+ return addLanguages(node,
languageService.getLanguages(), true);
+ }
+ });
+ }
}
- private BNode getLanguagesList(TripleCollection graph) {
- BNode listNode = new BNode();
+ private GraphNode addLanguages(GraphNode node,
List<LanguageDescription> languages, boolean copyToNode) {
+ TripleCollection graph = node.getGraph();
+ BNode listNode = new BNode();
RdfList list = new RdfList(listNode, graph);
- List<LanguageDescription> languages =
languageService.getLanguages();
+ MGraph contentGraph = cgProvider.getContentGraph();
for (LanguageDescription languageDescription : languages) {
- list.add(languageDescription.getResource().getNode());
+ NonLiteral languageUri = (NonLiteral)
languageDescription.getResource().getNode();
+ list.add(languageUri);
+ if (copyToNode) {
+ graph.addAll(new GraphNode(languageUri, contentGraph).
+ getNodeContext());
+ }
}
+ BNode instance = new BNode();
+ node.addProperty(PLATFORM.instance, instance);
+ graph.add(new TripleImpl(instance, RDF.type,
PLATFORM.Instance));
+ graph.add(new TripleImpl(instance, PLATFORM.languages,
listNode));
graph.add(new TripleImpl(listNode, RDF.type,
LANGUAGE.LanguageList));
- return listNode;
+ if (!copyToNode) {
+ node = new GraphNode(node.getNode(), new
UnionMGraph(graph, contentGraph));
+ }
+ return node;
}
/**