@Override public Graph createGraph(IRI name) throws UnsupportedOperationException { tcAccessController.checkReadWritePermission(name); return super.createGraph(name); }
@Override public ImmutableGraph createImmutableGraph(IRI name, Graph triples) { tcAccessController.checkReadWritePermission(name); return super.createImmutableGraph(name, triples); }
@Override public void deleteGraph(IRI name) { tcAccessController.checkReadWritePermission(name); super.deleteGraph(name); }
@Override public Graph getMGraph(IRI name) throws NoSuchEntityException { Graph result = getMGraphFromCache(name); if (result == null) { synchronized (this) { result = getMGraphFromCache(name); if (result == null) { result = getUnsecuredMGraphAndAddToCache(name); } } } return result; }
private void weightedProviderAdded(WeightedTcProvider newProvider, Set<IRI> newProvidedUris) { Set<WeightedTcProvider> lowerWeightedProviderList = getLowerWeightedProvider(newProvider); if (isCachingEnabled()) { for (IRI name : newProvidedUris) { final MGraphHolder holder = mGraphCache.get(name); if ((holder != null) && (holder.getWeightedTcProvider() != null)) { if (lowerWeightedProviderList.contains(holder.getWeightedTcProvider())) { tcDisappears(name); mGraphCache.remove(name); } else { continue; } } Graph triples = newProvider.getGraph(name); if (triples instanceof Graph) { mGraphCache.put(name, new MGraphHolder(newProvider, ensureLockable((Graph)triples))); mGraphAppears(name); } else { graphAppears(name); } } } }
private Graph getUnsecuredMGraphAndAddToCache(IRI name) throws NoSuchEntityException { for (WeightedTcProvider provider : providerList) { try { Graph providedMGraph = provider.getMGraph(name); Graph result = ensureLockable(providedMGraph); if (isCachingEnabled()) { mGraphCache.put(name, new MGraphHolder( provider, result)); } return result; } catch (NoSuchEntityException e) { //we do nothing and try our luck with the next provider } catch (IllegalArgumentException e) { //we do nothing and try our luck with the next provider } } throw new NoSuchEntityException(name); }
@Override public void deleteGraph(IRI name) { for (TcProvider provider : providerList) { try { provider.deleteGraph(name); final MGraphHolder holder = mGraphCache.get(name); if ((holder != null) && (holder.getWeightedTcProvider() != null) && holder.getWeightedTcProvider().equals(provider)) { tcDisappears(name); mGraphCache.remove(name); } return; } catch (UnsupportedOperationException e) { // we do nothing and try our luck with the next provider } catch (NoSuchEntityException e) { //we do nothing and try our luck with the next provider } catch (IllegalArgumentException e) { //we do nothing and try our luck with the next provider } } // this throws a NoSuchEntityException if the ImmutableGraph doesn't exist getGraph(name); // the entity exists but cannot be deleted throw new UnsupportedOperationException( "No provider could delete the entity."); }
@Override public ImmutableGraph getImmutableGraph(IRI name) throws NoSuchEntityException { tcAccessController.checkReadPermission(name); return super.getImmutableGraph(name); }
@Override public Set<IRI> getNames(ImmutableGraph ImmutableGraph) { return super.getNames(ImmutableGraph); }
private void weightedProviderAdded(WeightedTcProvider newProvider, Set<IRI> newProvidedUris) { Set<WeightedTcProvider> lowerWeightedProviderList = getLowerWeightedProvider(newProvider); if (isCachingEnabled()) { for (IRI name : newProvidedUris) { final MGraphHolder holder = mGraphCache.get(name); if ((holder != null) && (holder.getWeightedTcProvider() != null)) { if (lowerWeightedProviderList.contains(holder.getWeightedTcProvider())) { tcDisappears(name); mGraphCache.remove(name); } else { continue; } } Graph triples = newProvider.getGraph(name); if (triples instanceof Graph) { mGraphCache.put(name, new MGraphHolder(newProvider, ensureLockable((Graph)triples))); mGraphAppears(name); } else { graphAppears(name); } } } }
@Override public Graph getMGraph(IRI name) throws NoSuchEntityException { Graph result = getMGraphFromCache(name); if (result == null) { synchronized (this) { result = getMGraphFromCache(name); if (result == null) { result = getUnsecuredMGraphAndAddToCache(name); } } } return result; }
private Graph getUnsecuredMGraphAndAddToCache(IRI name) throws NoSuchEntityException { for (WeightedTcProvider provider : providerList) { try { Graph providedMGraph = provider.getMGraph(name); Graph result = ensureLockable(providedMGraph); if (isCachingEnabled()) { mGraphCache.put(name, new MGraphHolder( provider, result)); } return result; } catch (NoSuchEntityException e) { //we do nothing and try our luck with the next provider } catch (IllegalArgumentException e) { //we do nothing and try our luck with the next provider } } throw new NoSuchEntityException(name); }
@Override public void deleteGraph(IRI name) { for (TcProvider provider : providerList) { try { provider.deleteGraph(name); final MGraphHolder holder = mGraphCache.get(name); if ((holder != null) && (holder.getWeightedTcProvider() != null) && holder.getWeightedTcProvider().equals(provider)) { tcDisappears(name); mGraphCache.remove(name); } return; } catch (UnsupportedOperationException e) { // we do nothing and try our luck with the next provider } catch (NoSuchEntityException e) { //we do nothing and try our luck with the next provider } catch (IllegalArgumentException e) { //we do nothing and try our luck with the next provider } } // this throws a NoSuchEntityException if the ImmutableGraph doesn't exist getGraph(name); // the entity exists but cannot be deleted throw new UnsupportedOperationException( "No provider could delete the entity."); }
@Override public ImmutableGraph getImmutableGraph(IRI name) throws NoSuchEntityException { tcAccessController.checkReadPermission(name); return super.getImmutableGraph(name); }
@Override public Set<IRI> getNames(ImmutableGraph ImmutableGraph) { return super.getNames(ImmutableGraph); }
private void weightedProviderRemoved(WeightedTcProvider oldProvider, Set<IRI> oldProvidedUris) { for (IRI name : oldProvidedUris) { final MGraphHolder holder = mGraphCache.get(name); if ((holder != null) && (holder.getWeightedTcProvider() != null) && holder.getWeightedTcProvider().equals(oldProvider)) { tcDisappears(name); mGraphCache.remove(name); if (isCachingEnabled()) { // check if another WeightedTcProvider has the Graph. // And if so register as service. for (WeightedTcProvider provider : providerList) { try { Graph triples = provider.getGraph(name); if (triples instanceof Graph) { mGraphCache.put(name, new MGraphHolder(provider, ensureLockable((Graph)triples))); mGraphAppears(name); } else { graphAppears(name); } break; } catch (NoSuchEntityException e) { // continue; } } } } } }