@Override protected byte[] getIdInternal(final String value, final boolean p) throws DataAccessLayerException { if (value.trim().length() == 0) { return EMPTY_VALUE; } byte[] id = null; synchronized (this) { id = _index.get(value); if (id[0] == NOT_SET[0]) { id = newId(value, _index); _index.putQuick(value, id); } } RUNTIME_CONTEXTS.get().isFirstLevelResult = true; return id; }
@Override protected byte[] getIdInternal(final String value, final boolean p) throws DataAccessLayerException { if (value.trim().length() == 0) { return EMPTY_VALUE; } byte[] id = null; synchronized (this) { id = _index.get(value); if (id[0] == NOT_SET[0]) { id = newId(value, _index); _index.putQuick(value, id); } } RUNTIME_CONTEXTS.get().isFirstLevelResult = true; return id; }
@Override protected byte[] getIdInternal(final Value value, final boolean p) throws DataAccessLayerException { final String n3 = NTriplesUtil.toNTriplesString(value); byte[] id = null; synchronized (this) { id = value != null ? getID(NTriplesUtil.toNTriplesString(value), p) : null; if (id[0] == NOT_SET[0]) { final BIndex index = p ? _pIndex : _soIndex; id = newId(value, n3, index); index.putQuick(n3, id); } } return id; }
@Override protected byte[] getIdInternal(final Value value, final boolean p) throws DataAccessLayerException { final String n3 = NTriplesUtil.toNTriplesString(value); byte[] id = null; synchronized (this) { id = value != null ? getID(NTriplesUtil.toNTriplesString(value), p) : null; if (id[0] == NOT_SET[0]) { final BIndex index = p ? _pIndex : _soIndex; id = newId(value, n3, index); index.putQuick(n3, id); } } return id; }
@Override protected byte[] getIdInternal(final Value value, final boolean p) throws DataAccessLayerException { if (value instanceof URI && contains(((URI) value).getNamespace())) { RUNTIME_CONTEXTS.get().isFirstLevelResult = true; _idKnownURIsHitsCount.incrementAndGet(); final String n3 = NTriplesUtil.toNTriplesString(value); byte[] id = null; synchronized (this) { id = getID(NTriplesUtil.toNTriplesString(value), p); if (id[0] == NOT_SET[0]) { id = newId(n3, _index); _index.putQuick(n3, id); } } return id; } else { RUNTIME_CONTEXTS.get().isFirstLevelResult = false; return _decoratee.getID(value, p); } }
@Override protected byte[] getIdInternal(final Value value, final boolean p) throws DataAccessLayerException { if (value instanceof URI && contains(((URI) value).getNamespace())) { RUNTIME_CONTEXTS.get().isFirstLevelResult = true; _idKnownURIsHitsCount.incrementAndGet(); final String n3 = NTriplesUtil.toNTriplesString(value); byte[] id = null; synchronized (this) { id = getID(NTriplesUtil.toNTriplesString(value), p); if (id[0] == NOT_SET[0]) { id = newId(n3, _index); _index.putQuick(n3, id); } } return id; } else { RUNTIME_CONTEXTS.get().isFirstLevelResult = false; return _decoratee.getID(value, p); } }
/** * Positive test for getID() method. * * @throws Exception never otherwise the test fails. */ @Test public void getIDNotPreviouslySet() throws Exception { when(_dummyIndex.contains(any(byte[].class))).thenReturn(false); final String aValue = randomString(); when(_dummyIndex.get(aValue)).thenReturn(IDictionary.NOT_SET); byte[] result = _cut.getID(aValue, RANDOMIZER.nextBoolean()); assertEquals(PersistentStringDictionary.ID_LENGTH, result.length); verify(_dummyIndex).get(aValue); verify(_dummyIndex).putQuick(aValue, result); }
/** * putQuick method should use the both indexes. * * @throws Exception never otherwise the test fails. */ @Test public void putQuick() throws Exception { final byte[] id = { 1, 2, 3, 4 }; final String value = randomString(); _cut.putQuick(value, id); verify(_byValue).putQuick(value, id); verify(_byId).putQuick(id, value); }
/** * A request is received for a URI with a namespace that belongs to managed domains. * * @throws Exception never otherwise the test fails. */ @Test public void getIdWithManagedURI() throws Exception { final String[] managedNamespaces = { FOAF.NAMESPACE, RDFS.NAMESPACE, OWL.NAMESPACE }; for (final String managedNamespace : managedNamespaces) { assertTrue(_cut.contains(managedNamespace)); final Value uri = buildResource(managedNamespace + randomString()); final String n3 = NTriplesUtil.toNTriplesString(uri); // Make sure the mock index returns "Sorry, we don't have such value". when(_dummyIndex.get(n3)).thenReturn(ValueDictionaryBase.NOT_SET); // 1. ask for uri. byte[] id = _cut.getID(uri, _isPredicate); // 2. make sure the identifier is well-formed. assertEquals(KnownURIsDictionary.ID_LENGTH, id.length); assertEquals(KnownURIsDictionary.KNOWN_URI_MARKER, id[0]); assertEquals(ValueDictionaryBase.RESOURCE_BYTE_FLAG, id[1]); // 3. make sure the decoratee wasn't involved in identifier creation. verify(_decoratee, times(0)).getID(uri, _isPredicate); verify(_dummyIndex).putQuick(n3, id); reset(_decoratee, _dummyIndex); } }