You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/10/26 21:43:32 UTC
[5/8] jena git commit: JENA-1249 - Don't touch prefixes unless
non-empty to be merged.
JENA-1249 - Don't touch prefixes unless non-empty to be merged.
Cope with initialization ordering effects.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/d865a839
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/d865a839
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/d865a839
Branch: refs/heads/master
Commit: d865a839c9268b5f2e23c223c193f409b887a28c
Parents: 4573a43
Author: Andy Seaborne <an...@apache.org>
Authored: Tue Oct 25 12:50:33 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Tue Oct 25 12:50:33 2016 +0100
----------------------------------------------------------------------
.../org/apache/jena/rdf/model/ModelFactory.java | 4 ++
.../apache/jena/rdf/model/impl/ModelCom.java | 42 +++++++++++++++++---
.../jena/rdf/model/test/TestModelFactory.java | 4 +-
.../rdf/model/test/TestModelPrefixMapping.java | 3 ++
4 files changed, 46 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/d865a839/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java b/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
index b1243dc..6c0bac5 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/ModelFactory.java
@@ -66,13 +66,17 @@ public class ModelFactory extends ModelFactoryBase
@param pm the default prefixes to use
@return the previous default prefix mapping
+ @deprecated This feature wil be removed from ModelFactory
*/
+ @Deprecated
public static PrefixMapping setDefaultModelPrefixes( PrefixMapping pm )
{ return ModelCom.setDefaultModelPrefixes( pm ); }
/**
Answer the current default model prefixes PrefixMapping object.
+ @deprecated This feature wil be removed from ModelFactory
*/
+ @Deprecated
public static PrefixMapping getDefaultModelPrefixes()
{ return ModelCom.getDefaultModelPrefixes(); }
http://git-wip-us.apache.org/repos/asf/jena/blob/d865a839/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
----------------------------------------------------------------------
diff --git a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
index 0efb3b0..331934c 100644
--- a/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
+++ b/jena-core/src/main/java/org/apache/jena/rdf/model/impl/ModelCom.java
@@ -52,10 +52,12 @@ import org.apache.jena.vocabulary.RDF ;
public class ModelCom extends EnhGraph
implements Model, PrefixMapping, Lock
{
- private static final RDFReaderF readerFactory = new RDFReaderFImpl();
- private static final RDFWriterF writerFactory = new RDFWriterFImpl();
+ private static RDFReaderF readerFactory = new RDFReaderFImpl();
+ private static RDFWriterF writerFactory = new RDFWriterFImpl();
private Lock modelLock = null ;
- private static PrefixMapping defaultPrefixMapping = PrefixMapping.Factory.create();
+ /** @deprecated Remove when setDefaultModelPrefixes etc removed. */
+ @Deprecated
+ private static PrefixMapping defaultPrefixMapping = null; // Should be the default value in Java.
static {
// This forces RIOT (in ARQ) to initialize but after Jena readers/writers
@@ -64,19 +66,39 @@ implements Model, PrefixMapping, Lock
JenaSystem.init() ;
}
+ /* Internal.
+ * During intialization, all sorts of class loading orders can happen.
+ * Many places create Models, calling into a ModelCom constructor.
+ * so this helps the runtime ensure that ModelCom is
+ * initialized before a ModelCom is created.
+ */
+
+ static {
+ if ( defaultPrefixMapping == null )
+ defaultPrefixMapping = PrefixMapping.Factory.create();
+ }
+
/**
make a model based on the specified graph
*/
public ModelCom( Graph base )
{ this( base, BuiltinPersonalities.model ); }
- public ModelCom( Graph base, Personality<RDFNode> personality )
- { super( base, personality );
- withDefaultMappings( defaultPrefixMapping ); }
+ public ModelCom( Graph base, Personality<RDFNode> personality ) {
+ super( base, personality );
+ // JENA-1249. Touching the prefix mappings can incur initialization costs.
+ // Also, must protect against defaultPrefixMapping being null due to initialization effects.
+ if ( defaultPrefixMapping != null && ! defaultPrefixMapping.hasNoMappings() )
+ withDefaultMappings( defaultPrefixMapping );
+ }
+ /** @deprecated This feature will be removed */
+ @Deprecated
public static PrefixMapping getDefaultModelPrefixes()
{ return defaultPrefixMapping; }
+ /** @deprecated This feature will be removed */
+ @Deprecated
public static PrefixMapping setDefaultModelPrefixes(PrefixMapping pm)
{
PrefixMapping result = defaultPrefixMapping ;
@@ -1052,7 +1074,15 @@ implements Model, PrefixMapping, Lock
@Override
public String shortForm( String uri )
{ return getPrefixMapping().shortForm( uri ); }
+
+ @Override
+ public boolean hasNoMappings()
+ { return getPrefixMapping().hasNoMappings(); }
+ @Override
+ public int numPrefixes()
+ { return getPrefixMapping().numPrefixes() ; }
+
/**
Service method to update the namespaces of a Model given the
mappings from prefix names to sets of URIs.
http://git-wip-us.apache.org/repos/asf/jena/blob/d865a839/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelFactory.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelFactory.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelFactory.java
index d1b6f6f..d5ea1a9 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelFactory.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelFactory.java
@@ -98,12 +98,14 @@ public class TestModelFactory extends TestCase
// TODO Set ModelFactory.findAssemblerRoots( Model model )
}
- public void testGetDefaultPrefixMapping()
+ @SuppressWarnings("deprecation")
+ public void testGetDefaultPrefixMapping()
{
Assert.assertSame(ModelCom.getDefaultModelPrefixes(),
ModelFactory.getDefaultModelPrefixes());
}
+ @SuppressWarnings("deprecation")
public void testSetDefaultPrefixMapping()
{
final PrefixMapping original = ModelCom.getDefaultModelPrefixes();
http://git-wip-us.apache.org/repos/asf/jena/blob/d865a839/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelPrefixMapping.java
----------------------------------------------------------------------
diff --git a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelPrefixMapping.java b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelPrefixMapping.java
index 706c381..2e4e456 100644
--- a/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelPrefixMapping.java
+++ b/jena-core/src/test/java/org/apache/jena/rdf/model/test/TestModelPrefixMapping.java
@@ -78,11 +78,13 @@ public class TestModelPrefixMapping extends AbstractTestPrefixMapping
return modelFactory.getPrefixMapping();
}
+ @SuppressWarnings("deprecation")
public void restorePrefixes()
{
ModelCom.setDefaultModelPrefixes(prevMap);
}
+ @SuppressWarnings("deprecation")
public void setPrefixes()
{
prevMap = ModelCom.setDefaultModelPrefixes(baseMap);
@@ -100,6 +102,7 @@ public class TestModelPrefixMapping extends AbstractTestPrefixMapping
restorePrefixes();
}
+ @SuppressWarnings("deprecation")
public void testGetDefault()
{
setPrefixes();