You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/11/07 11:04:08 UTC

git commit: minor performance improvements

Updated Branches:
  refs/heads/develop 01e65fbc6 -> 1d40d1333


minor performance improvements


Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/1d40d133
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/1d40d133
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/1d40d133

Branch: refs/heads/develop
Commit: 1d40d1333be90d359bff01e591e25352aaa4da40
Parents: 01e65fb
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Thu Nov 7 11:04:03 2013 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Thu Nov 7 11:04:03 2013 +0100

----------------------------------------------------------------------
 .../marmotta/kiwi/loader/KiWiHandler.java       | 45 +++++++++++++++-----
 1 file changed, 34 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/1d40d133/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiHandler.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiHandler.java b/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiHandler.java
index c2ecc7a..19c9bd6 100644
--- a/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiHandler.java
+++ b/libraries/kiwi/kiwi-loader/src/main/java/org/apache/marmotta/kiwi/loader/KiWiHandler.java
@@ -50,6 +50,10 @@ public class KiWiHandler implements RDFHandler {
     private LoadingCache<Literal, KiWiLiteral> literalCache;
     private LoadingCache<URI, KiWiUriResource> uriCache;
     private LoadingCache<BNode, KiWiAnonResource> bnodeCache;
+    private LoadingCache<String,Locale> localeCache;
+
+    // if non-null, all imported statements will have this context (regardless whether they specified a different context)
+    private KiWiResource overrideContext;
 
     public KiWiHandler(KiWiStore store, KiWiLoaderConfiguration config) {
         this.config     = config;
@@ -85,6 +89,22 @@ public class KiWiHandler implements RDFHandler {
                     }
                 });
 
+        this.localeCache = CacheBuilder.newBuilder()
+                .maximumSize(100)
+                .build(new CacheLoader<String, Locale>() {
+                    @Override
+                    public Locale load(String lang) throws Exception {
+                        try {
+                            Locale.Builder builder = new Locale.Builder();
+                            builder.setLanguageTag(lang);
+                            return builder.build();
+                        } catch (IllformedLocaleException ex) {
+                            log.warn("malformed language literal (language: {})", lang);
+                            return null;
+                        }
+                    }
+                });
+
     }
 
     /**
@@ -124,6 +144,14 @@ public class KiWiHandler implements RDFHandler {
 
         this.start = System.currentTimeMillis();
         this.previous = System.currentTimeMillis();
+
+        if(config.getContext() != null) {
+            try {
+                this.overrideContext = (KiWiResource)convertNode(new URIImpl(config.getContext()));
+            } catch (ExecutionException e) {
+                log.error("could not create/load resource",e);
+            }
+        }
     }
 
     /**
@@ -162,8 +190,8 @@ public class KiWiHandler implements RDFHandler {
             KiWiNode object = convertNode(st.getObject());
             KiWiResource context;
 
-            if(config.getContext() != null) {
-                context = (KiWiResource)convertNode(new URIImpl(config.getContext()));
+            if(this.overrideContext != null) {
+                context = this.overrideContext;
             } else {
                 context = (KiWiResource)convertNode(st.getContext());
             }
@@ -215,18 +243,13 @@ public class KiWiHandler implements RDFHandler {
 
         Locale locale;
         if(lang != null) {
-            try {
-                Locale.Builder builder = new Locale.Builder();
-                builder.setLanguageTag(lang);
-                locale = builder.build();
-            } catch (IllformedLocaleException ex) {
-                log.warn("malformed language literal (language: {})", lang);
-                locale = null;
-                lang = null;
-            }
+            locale = localeCache.get(lang);
         } else {
             locale = null;
         }
+        if(locale == null) {
+            lang = null;
+        }
 
 
         KiWiLiteral result;