From: <tho...@us...> - 2014-07-09 15:22:26
|
Revision: 8527 http://sourceforge.net/p/bigdata/code/8527 Author: thompsonbry Date: 2014-07-09 15:22:24 +0000 (Wed, 09 Jul 2014) Log Message: ----------- Potential fix for #983 (Concurrent insert data with boolean object causes IllegalArgumentException). This fix always sets the IV on TRUE and FALSE constants used by the BigdataValueFactoryImpl rather than having them be set dynamically during evaluate. Modified Paths: -------------- branches/BIGDATA_RELEASE_1_3_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueFactoryImpl.java Modified: branches/BIGDATA_RELEASE_1_3_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueFactoryImpl.java =================================================================== --- branches/BIGDATA_RELEASE_1_3_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueFactoryImpl.java 2014-07-09 14:07:47 UTC (rev 8526) +++ branches/BIGDATA_RELEASE_1_3_0/bigdata-rdf/src/java/com/bigdata/rdf/model/BigdataValueFactoryImpl.java 2014-07-09 15:22:24 UTC (rev 8527) @@ -36,7 +36,6 @@ import org.openrdf.model.BNode; import org.openrdf.model.Literal; import org.openrdf.model.Resource; -import org.openrdf.model.Statement; import org.openrdf.model.URI; import org.openrdf.model.Value; import org.openrdf.model.datatypes.XMLDatatypeUtil; @@ -44,6 +43,7 @@ import com.bigdata.cache.WeakValueCache; import com.bigdata.rdf.internal.IV; +import com.bigdata.rdf.internal.impl.literal.XSDBooleanIV; import com.bigdata.rdf.internal.impl.literal.XSDUnsignedByteIV; import com.bigdata.rdf.internal.impl.literal.XSDUnsignedIntIV; import com.bigdata.rdf.internal.impl.literal.XSDUnsignedLongIV; @@ -64,12 +64,12 @@ * @todo Consider a {@link WeakValueCache} to shortcut recently used statements? * * @author <a href="mailto:tho...@us...">Bryan Thompson</a> - * @version $Id$ */ public class BigdataValueFactoryImpl implements BigdataValueFactory { private final String namespace; + @Override public String getNamespace() { return namespace; @@ -81,10 +81,18 @@ */ private BigdataValueFactoryImpl(final String namespace) { - this.namespace = namespace; - - xsdMap = getXSDMap(); + this.namespace = namespace; + + xsdMap = getXSDMap(); + /** + * Cache the IV on the BigdataValue for these boolean constants. + * + * @see <a href="http://trac.bigdata.com/ticket/983"> Concurrent insert + * data with boolean object causes IllegalArgumentException </a> + */ + TRUE.setIV(XSDBooleanIV.TRUE); + FALSE.setIV(XSDBooleanIV.FALSE); } /** @@ -182,6 +190,7 @@ */ // * @param namespace // * The namespace of the {@link LexiconRelation}. + @Override public void remove(/*final String namespace*/) { // if (namespace == null) @@ -197,6 +206,7 @@ } + @Override public BNodeContextFactory newBNodeContext() { return new BNodeContextFactory(this); @@ -215,6 +225,7 @@ * * @see #newBNodeContext() */ + @Override public BigdataBNodeImpl createBNode() { return createBNode(nextID()); @@ -230,18 +241,21 @@ } + @Override public BigdataBNodeImpl createBNode(final String id) { return new BigdataBNodeImpl(this, id); } + @Override public BigdataBNodeImpl createBNode(final BigdataStatement stmt) { return new BigdataBNodeImpl(this, nextID(), stmt); } + @Override public BigdataLiteralImpl createLiteral(final String label) { return new BigdataLiteralImpl(this, label, null, null); @@ -331,72 +345,84 @@ } + @Override public BigdataLiteralImpl createLiteral(boolean arg0) { return (arg0 ? TRUE : FALSE); } + @Override public BigdataLiteralImpl createLiteral(byte arg0) { return new BigdataLiteralImpl(this, "" + arg0, null, xsd_byte); } + @Override public BigdataLiteralImpl createLiteral(byte arg0, final boolean unsigned) { return new BigdataLiteralImpl(this, "" + (unsigned ? XSDUnsignedByteIV.promote(arg0) : arg0), null, unsigned ? xsd_ubyte : xsd_byte); } + @Override public BigdataLiteralImpl createLiteral(short arg0) { return new BigdataLiteralImpl(this, "" + arg0, null, xsd_short); } + @Override public BigdataLiteralImpl createLiteral(short arg0, final boolean unsigned) { return new BigdataLiteralImpl(this, "" + (unsigned ? XSDUnsignedShortIV.promote(arg0) : arg0), null, unsigned ? xsd_ushort :xsd_short); } + @Override public BigdataLiteralImpl createLiteral(int arg0) { return new BigdataLiteralImpl(this, "" + arg0, null, xsd_int); } + @Override public BigdataLiteralImpl createLiteral(int arg0, final boolean unsigned) { return new BigdataLiteralImpl(this, "" + (unsigned ? XSDUnsignedIntIV.promote(arg0) : arg0), null, unsigned ? xsd_uint :xsd_int); } + @Override public BigdataLiteralImpl createLiteral(long arg0) { return new BigdataLiteralImpl(this, "" + arg0, null, xsd_long); } + @Override public BigdataLiteralImpl createLiteral(long arg0, final boolean unsigned) { return new BigdataLiteralImpl(this, "" + (unsigned ? XSDUnsignedLongIV.promote(arg0) : arg0), null, unsigned ? xsd_ulong : xsd_long); } + @Override public BigdataLiteralImpl createLiteral(float arg0) { return new BigdataLiteralImpl(this, "" + arg0, null, xsd_float); } + @Override public BigdataLiteralImpl createLiteral(double arg0) { return new BigdataLiteralImpl(this, "" + arg0, null, xsd_double); } + @Override public BigdataLiteralImpl createLiteral(final XMLGregorianCalendar arg0) { /* @@ -411,12 +437,14 @@ } + @Override public BigdataLiteralImpl createLiteral(final String label, final String language) { return new BigdataLiteralImpl(this, label, language, null/* datatype */); } + @Override public BigdataLiteralImpl createLiteral(final String label, URI datatype) { /* @@ -435,6 +463,7 @@ } + @Override public BigdataURIImpl createURI(final String uriString) { final String str = uriString; @@ -456,18 +485,21 @@ } + @Override public BigdataURIImpl createURI(final String namespace, final String localName) { return new BigdataURIImpl(this, namespace + localName); } + @Override public BigdataStatementImpl createStatement(Resource s, URI p, Value o) { return createStatement(s, p, o, null/* c */, null/* type */); } + @Override public BigdataStatementImpl createStatement(Resource s, URI p, Value o, Resource c) { @@ -475,6 +507,7 @@ } + @Override public BigdataStatementImpl createStatement(Resource s, URI p, Value o, Resource c, StatementEnum type) { @@ -482,6 +515,7 @@ } + @Override public BigdataStatementImpl createStatement(Resource s, URI p, Value o, Resource c, StatementEnum type, final boolean userFlag) { @@ -496,6 +530,7 @@ } + @Override final public BigdataValue asValue(final Value v) { if (v == null) @@ -566,30 +601,35 @@ private final transient BigdataValueSerializer<BigdataValue> valueSer = new BigdataValueSerializer<BigdataValue>( this); + @Override public BigdataValueSerializer<BigdataValue> getValueSerializer() { return valueSer; } + @Override public BigdataResource asValue(Resource v) { return (BigdataResource) asValue((Value) v); } + @Override public BigdataURI asValue(URI v) { return (BigdataURI)asValue((Value)v); } + @Override public BigdataLiteral asValue(Literal v) { return (BigdataLiteral)asValue((Value)v); } + @Override public BigdataBNode asValue(BNode v) { return (BigdataBNode)asValue((Value)v); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |