*******************************************************************************/
package org.simantics.db.services.adaption;
-import gnu.trove.map.hash.THashMap;
-import gnu.trove.procedure.TObjectObjectProcedure;
-import gnu.trove.set.hash.THashSet;
-
import org.simantics.db.AsyncReadGraph;
import org.simantics.db.ReadGraph;
import org.simantics.db.Resource;
import org.simantics.db.adaption.Adapter;
import org.simantics.db.adaption.AdaptionService;
-import org.simantics.db.common.procedure.BlockingAsyncProcedure;
import org.simantics.db.common.procedure.adapter.TransientCacheAsyncListener;
-import org.simantics.db.common.procedure.single.SyncReadProcedure;
import org.simantics.db.common.request.BinaryRead;
import org.simantics.db.common.request.ReadRequest;
import org.simantics.db.common.request.TernaryRead;
+import org.simantics.db.common.request.UniqueAsyncRead;
import org.simantics.db.common.uri.ResourceToURI;
import org.simantics.db.common.utils.NameUtils;
import org.simantics.db.exception.AdaptionException;
import org.simantics.layer0.Layer0;
import org.simantics.utils.datastructures.Pair;
+import gnu.trove.map.hash.THashMap;
+import gnu.trove.procedure.TObjectObjectProcedure;
+import gnu.trove.set.hash.THashSet;
+
public class AdaptionService2 implements AdaptionService {
-
- int foobaz;
THashMap<Pair<Class<?>,Class<?>>, AdapterDeclaration<?>> adapters =
new THashMap<Pair<Class<?>,Class<?>>, AdapterDeclaration<?>>();
Adapter<T,C> adapter = getAdapter(g, r, context, contextClass, targetClass, possible);
if(adapter == null) return null;
- BlockingAsyncProcedure<T> ap = new BlockingAsyncProcedure<T>(g, null, adapter);
-
-// SyncReadProcedure<T> procedure = new SyncReadProcedure<T>();
- adapter.adapt(g, r, context, ap);
-
- return ap.get();
-// procedure.checkAndThrow();
-// return procedure.result;
+ return g.syncRequest(new UniqueAsyncRead<T>() {
+
+ @Override
+ public void perform(AsyncReadGraph graph, AsyncProcedure<T> procedure) {
+ adapter.adapt(graph, r, context, procedure);
+ }
+
+ });
}
if(decl == null) {
if(possible) {
- procedure.execute(graph, null);
+ procedure.execute(g, null);
} else {
- procedure.exception(graph, new AdaptionException("There are no adapters declared or defined for class " + clazz + "."));
+ procedure.exception(g, new AdaptionException("There are no adapters declared or defined for class " + clazz + "."));
}
} else {
try {
- procedure.execute(graph, decl.adaptNew(graph, r, possible));
+ procedure.execute(g, decl.adaptNew(graph, r, possible));
} catch (AdaptionException e) {
if(possible) {
- procedure.execute(graph, null);
+ procedure.execute(g, null);
} else {
- procedure.exception(graph, e);
+ procedure.exception(g, e);
}
} catch (ValidationException e) {
- procedure.exception(graph, e);
+ procedure.exception(g, e);
} catch (DatabaseException e2) {
- procedure.exception(graph, new ServiceException(e2));
+ procedure.exception(g, new ServiceException(e2));
}
}