/** * Construct a new node provider. * @param readOnly the read-only status * @param providers the node providers to wrap: the earlier providers are tried first and at least one provider must support * write operations according to {@link ome.services.util.ReadOnlyStatus.IsAware#isReadOnly(ReadOnlyStatus)} */ public NodeProviderWrapper(ReadOnlyStatus readOnly, List<P> providers) { read = providers; write = new ArrayList<P>(read.size()); for (final P provider : read) { if (!provider.isReadOnly(readOnly)) { write.add(provider); } } if (write.isEmpty()) { throw new BeanCreationException("must be given a read-write node provider"); } }
/** * Construct a new event provider. * @param readOnly the read-only status * @param providers the event providers to wrap: the earlier providers are tried first and at least one provider must support * write operations according to {@link ome.services.util.ReadOnlyStatus.IsAware#isReadOnly(ReadOnlyStatus)} */ public EventProviderWrapper(ReadOnlyStatus readOnly, List<P> providers) { write = new ArrayList<P>(providers.size()); for (final P provider : providers) { if (!provider.isReadOnly(readOnly)) { write.add(provider); } } if (write.isEmpty()) { throw new BeanCreationException("must be given a read-write event provider"); } }
/** * Construct a new Session provider. * @param readOnly the read-only status * @param providers the Session providers to wrap: the earlier providers are tried first and at least one provider must support * write operations according to {@link ome.services.util.ReadOnlyStatus.IsAware#isReadOnly(ReadOnlyStatus)} */ public SessionProviderWrapper(ReadOnlyStatus readOnly, List<P> providers) { read = providers; write = new ArrayList<P>(read.size()); for (final P provider : read) { if (!provider.isReadOnly(readOnly)) { write.add(provider); } } if (write.isEmpty()) { throw new BeanCreationException("must be given a read-write session provider"); } }
Map<String, String> merged = mergeContexts(); final List<Object> rv; if (req instanceof ReadOnlyStatus.IsAware && ((ReadOnlyStatus.IsAware) req).isReadOnly(readOnly)) { rv = (List<Object>) executor.execute(merged, principal, new RunSteps(this, "run (ro)", Ice.Util.identityToString(id), req) {
@Override public boolean isReadOnly(ReadOnlyStatus readOnly) { if (request instanceof ReadOnlyStatus.IsAware) { return ((ReadOnlyStatus.IsAware) request).isReadOnly(readOnly); } else { return false; } } }
@Override public boolean isReadOnly(ReadOnlyStatus readOnly) { for (final Request request : requests) { if (!(request instanceof ReadOnlyStatus.IsAware && ((ReadOnlyStatus.IsAware) request).isReadOnly(readOnly))) { return false; } } return true; } }