import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
+import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
}
}
+
+ @Override
+ public Map<String, Resource> getChildren(Resource resource) throws ValidationException, ServiceException {
+
+ assert (resource != null);
+
+ try {
+
+ int rId = processor.querySupport.getId(resource);
+ return QueryCache.resultChildMap(this, rId, parent, null);
+
+ } catch (ValidationException e) {
+
+ throw new ValidationException(e);
+
+ } catch (ServiceException e) {
+
+ throw new ServiceException(e);
+
+ } catch (DatabaseException e) {
+
+ throw new ServiceException(INTERNAL_ERROR_STRING, e);
+
+ }
+
+ }
final public Resource getRootLibrary() {
return processor.getRootLibraryResource();
assert (request != null);
// AsyncReadProcedure<T> procedure = new AsyncReadProcedure<T>();
- BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<>(null, request);
+ BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<>(this, null, request);
syncRequest(request, ap);
return ap.get();
// procedure.checkAndThrow();
ListenerBase listener = getListenerBase(procedure);
- BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<>(procedure, request);
+ BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<>(this, procedure, request);
// final ResultCallWrappedSingleQueryProcedure4<T> wrapper = new ResultCallWrappedSingleQueryProcedure4<T>(
// procedure, request);
ListenerBase listener = getListenerBase(procedure);
assert(listener == null);
- BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<>(procedure, request);
+ BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<>(this, procedure, request);
// final ResultCallWrappedSingleQueryProcedure4<T> wrapper = new ResultCallWrappedSingleQueryProcedure4<T>(
// procedure, request);
assert (request != null);
assert (procedure != null);
- processor.schedule(Integer.MIN_VALUE, new SessionTask(request, processor.THREAD_MASK+1, -1) {
+ processor.schedule(new SessionTask(false) {
@Override
public void run(int thread) {
});
-
-// quer
-//
-// final ListenerBase listener = getListenerBase(procedure);
-//
-// if (parent != null || listener != null) {
-//
-// try {
-// QueryCache.runnerReadEntry(this, request, parent, listener, procedure);
-// //processor.query(this, request, parent, procedure,listener);
-// } catch (DatabaseException e) {
-// Logger.defaultLogError(e);
-// // This throwable has already been transferred to procedure at this point - do nothing about it
-// //
-// }
-//
-// } else {
-//
-//// final ReadGraphImpl newGraph = newSync();
-//
-// try {
-//
-// T result = request.perform(this);
-//
-// try {
-// procedure.execute(this, result);
-// } catch (Throwable t) {
-// Logger.defaultLogError(t);
-// }
-//
-// } catch (Throwable t) {
-//
-// try {
-// procedure.exception(this, t);
-// } catch (Throwable t2) {
-// Logger.defaultLogError(t2);
-// }
-//
-// } finally {
-//
-// }
-//
-// }
-
}
public static ReadGraphImpl createAsync(QueryProcessor support) {
assert (request != null);
assert (procedure != null);
- //final ListenerBase listener = getListenerBase(procedure);
-
- processor.schedule(Integer.MIN_VALUE, new SessionTask(request, processor.THREAD_MASK+1, -1) {
+ processor.schedule(new SessionTask(false) {
@Override
public void run(int thread) {
});
-
-
-
-// if (parent != null || listener != null) {
-//
-// try {
-// QueryCache.runnerAsyncReadEntry(this, request, parent, listener, procedure);
-// //processor.query(this, request, parent, procedure, listener);
-// } catch (DatabaseException e) {
-// Logger.defaultLogError(e);
-// }
-//
-// } else {
-//
-// try {
-//
-// request.perform(this, new CallWrappedSingleQueryProcedure4<T>(procedure, request));
-//
-// } catch (Throwable t) {
-//
-// if (t instanceof DatabaseException)
-// procedure.exception(this, t);
-// else
-// procedure
-// .exception(
-// this,
-// new DatabaseException(
-// "Unexpected exception in ReadGraph.asyncRequest(SingleAsyncRead, SingleProcedure)",
-// t));
-//
-// }
-//
-// }
-
}
@Override
public Object getModificationCounter() {
return processor.getSession().getModificationCounter();
}
+
+ @Override
+ public boolean performPending() {
+ return processor.performPending(processor.thread.get());
+ }
}