Author: reto
Date: Thu Feb 11 13:59:49 2010
New Revision: 908976

URL: http://svn.apache.org/viewvc?rev=908976&view=rev
Log:
CLEREZZA-85: fixed according to manuels review comment

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/LanguageService.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/LanguageService.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/LanguageService.java?rev=908976&r1=908975&r2=908976&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/LanguageService.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/LanguageService.java
 Thu Feb 11 13:59:49 2010
@@ -56,7 +56,7 @@
  */
 @Component(immediate=true, enabled= true)
 @Service(LanguageService.class)
-public class LanguageService {
+public class LanguageService { 
 
        @Reference(target = SystemConfig.SYSTEM_GRAPH_FILTER)
        private MGraph systemGraph;
@@ -64,7 +64,14 @@
        @Reference
        private ContentGraphProvider cgProvider;
 
+       /** this is linked to the system-graph, accessing requires respective
+        * permission
+        */
        private List<Resource> languageList;
+       /**
+        * no permission on the system graph required to access this
+        */
+       private List<Resource> languageListCache;
 
        private static final String PARSER_FILTER =
                        "(supportedFormat=" + SupportedFormat.RDF_XML +")";
@@ -82,7 +89,7 @@
         */
        public List<LanguageDescription> getLanguages() {
                List<LanguageDescription> langList = new 
ArrayList<LanguageDescription>();
-               Iterator<Resource> languages = languageList.iterator();
+               Iterator<Resource> languages = languageListCache.iterator();
                while (languages.hasNext()) {
                        UriRef language = (UriRef) languages.next();
                        langList.add(
@@ -99,7 +106,7 @@
         */
        public LanguageDescription getDefaultLanguage() {
                return new LanguageDescription(
-                               new GraphNode(languageList.get(0), 
cgProvider.getContentGraph()));
+                               new GraphNode(languageListCache.get(0), 
cgProvider.getContentGraph()));
        }
 
        /**
@@ -130,11 +137,12 @@
         *              added to the platform.
         */
        public void addLanguage(UriRef languageUri) {
-               if (!languageList.contains(languageUri)) {
+               if (!languageListCache.contains(languageUri)) {
                        if(languageList.add(languageUri)) {
                                cgProvider.getContentGraph().
                                                
addAll(getLanguageContext(languageUri));
                        }
+                       languageListCache.add(languageUri);
                }
        }
 
@@ -169,11 +177,13 @@
         * @param componentContext
         */
        protected void activate(ComponentContext componentContext) {
+               final RdfList rdfList = new RdfList(getListNode(), systemGraph);
+               languageList = Collections.synchronizedList(rdfList);
                //access to languages should not require access to system graph,
                //so copying the resources to an ArrayList
-               languageList = Collections.synchronizedList(
-                               new ArrayList<Resource>(new 
RdfList(getListNode(), systemGraph)));
-               if (languageList.size() == 0) {
+               languageListCache = Collections.synchronizedList(
+                               new ArrayList<Resource>(rdfList));
+               if (languageListCache.size() == 0) {
                        addLanguage(new 
UriRef("http://www.lingvoj.org/lang/en";));
                }
        }


Reply via email to