private TcProvider getSingleTargetTcProvider(final Set<IRI> referencedGraphs) { TcProvider singleTargetTcProvider = null; for (WeightedTcProvider provider : providerList) { final Set<IRI> providerGraphs = provider.listGraphs(); if (providerGraphs.containsAll(referencedGraphs)) { singleTargetTcProvider = provider; break; //success } for (IRI graphName : referencedGraphs) { if (providerGraphs.contains(graphName)) { break; //failure } } } return singleTargetTcProvider; }
@Override public Graph getGraph(IRI name) throws NoSuchEntityException { Graph result; for (WeightedTcProvider provider : providerList) { try { result = provider.getGraph(name); if (result instanceof ImmutableGraph) { return result; } else { // This is to ensure the Graph gets added to the cache return getMGraph(name); } } 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); }
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 Graph createGraph(IRI name) throws UnsupportedOperationException { for (WeightedTcProvider provider : providerList) { try { Graph result = provider.createGraph(name); // unregisters a possible ImmutableGraph or Graph service under this name // provided by a WeightedTcProvider with a lower weight. tcDisappears(name); if (isCachingEnabled()) { mGraphCache.put(name, new MGraphHolder(provider, null)); } mGraphAppears(name); return result; } catch (UnsupportedOperationException 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 UnsupportedOperationException( "No provider could create Graph."); }
@Override public ImmutableGraph createImmutableGraph(IRI name, Graph triples) { for (WeightedTcProvider provider : providerList) { try { ImmutableGraph result = provider.createImmutableGraph(name, triples); // unregisters a possible ImmutableGraph or Graph service under this name // provided by a WeightedTcProvider with a lower weight. tcDisappears(name); if (isCachingEnabled()) { mGraphCache.put(name, new MGraphHolder(provider, null)); } graphAppears(name); return result; } catch (UnsupportedOperationException 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 UnsupportedOperationException( "No provider could create ImmutableGraph."); }
@Override public Graph getGraph(IRI name) throws NoSuchEntityException { Graph result; for (WeightedTcProvider provider : providerList) { try { result = provider.getGraph(name); if (result instanceof ImmutableGraph) { return result; } else { // This is to ensure the Graph gets added to the cache return getMGraph(name); } } 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); }
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 Graph createGraph(IRI name) throws UnsupportedOperationException { for (WeightedTcProvider provider : providerList) { try { Graph result = provider.createGraph(name); // unregisters a possible ImmutableGraph or Graph service under this name // provided by a WeightedTcProvider with a lower weight. tcDisappears(name); if (isCachingEnabled()) { mGraphCache.put(name, new MGraphHolder(provider, null)); } mGraphAppears(name); return result; } catch (UnsupportedOperationException 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 UnsupportedOperationException( "No provider could create Graph."); }
@Override public ImmutableGraph createImmutableGraph(IRI name, Graph triples) { for (WeightedTcProvider provider : providerList) { try { ImmutableGraph result = provider.createImmutableGraph(name, triples); // unregisters a possible ImmutableGraph or Graph service under this name // provided by a WeightedTcProvider with a lower weight. tcDisappears(name); if (isCachingEnabled()) { mGraphCache.put(name, new MGraphHolder(provider, null)); } graphAppears(name); return result; } catch (UnsupportedOperationException 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 UnsupportedOperationException( "No provider could create 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; } } } } } }
private TcProvider getSingleTargetTcProvider(final Set<IRI> referencedGraphs) { TcProvider singleTargetTcProvider = null; for (WeightedTcProvider provider : providerList) { final Set<IRI> providerGraphs = provider.listGraphs(); if (providerGraphs.containsAll(referencedGraphs)) { singleTargetTcProvider = provider; break; //success } for (IRI graphName : referencedGraphs) { if (providerGraphs.contains(graphName)) { break; //failure } } } return singleTargetTcProvider; }
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); } } } }
/** * Updates the lockableMGraphCache AFTER a new <code>provider</code> was * bound or unbound. * This method also takes care of registering and unregistering * provided triple collections as services based on the weight of * all affected providers. * * @param provider * the provider that was added or removed * @param providerAdded * <code>boolean</code> that should be set as <code>true</code> * if <code>provider</code> was added to * <code>org.apache.clerezza.rdf.core.TcManager.providerList</code> * otherwise <code>false</code> */ private void updateGraphCache(WeightedTcProvider provider, boolean providerAdded) { Set<IRI> uriSet = provider.listGraphs(); if (!(uriSet == null || uriSet.isEmpty())) { if (providerAdded) { weightedProviderAdded(provider, uriSet); } else { weightedProviderRemoved(provider, uriSet); } } }
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); } } } }
/** * Updates the lockableMGraphCache AFTER a new <code>provider</code> was * bound or unbound. * This method also takes care of registering and unregistering * provided triple collections as services based on the weight of * all affected providers. * * @param provider * the provider that was added or removed * @param providerAdded * <code>boolean</code> that should be set as <code>true</code> * if <code>provider</code> was added to * <code>org.apache.clerezza.rdf.core.TcManager.providerList</code> * otherwise <code>false</code> */ private void updateGraphCache(WeightedTcProvider provider, boolean providerAdded) { Set<IRI> uriSet = provider.listGraphs(); if (!(uriSet == null || uriSet.isEmpty())) { if (providerAdded) { weightedProviderAdded(provider, uriSet); } else { weightedProviderRemoved(provider, uriSet); } } }
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; } } } } } }