X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.services%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fservices%2Fadaption%2FAdaptionService2.java;fp=bundles%2Forg.simantics.db.services%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fservices%2Fadaption%2FAdaptionService2.java;h=ccc64fe9c487599e6c50fa8e89a32f773b412734;hb=6326b65c5c6a785aadcb615cb95ceadd8f53964a;hp=859481727bfe9f701f53cbe462dc5ecb6219b83b;hpb=6d56f5ff3422fd5200d396d325422a4ccaf19f94;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.services/src/org/simantics/db/services/adaption/AdaptionService2.java b/bundles/org.simantics.db.services/src/org/simantics/db/services/adaption/AdaptionService2.java index 859481727..ccc64fe9c 100644 --- a/bundles/org.simantics.db.services/src/org/simantics/db/services/adaption/AdaptionService2.java +++ b/bundles/org.simantics.db.services/src/org/simantics/db/services/adaption/AdaptionService2.java @@ -11,21 +11,16 @@ *******************************************************************************/ 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; @@ -38,9 +33,11 @@ import org.simantics.db.request.Read; 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,Class>, AdapterDeclaration> adapters = new THashMap,Class>, AdapterDeclaration>(); @@ -588,14 +585,14 @@ public class AdaptionService2 implements AdaptionService { Adapter adapter = getAdapter(g, r, context, contextClass, targetClass, possible); if(adapter == null) return null; - BlockingAsyncProcedure ap = new BlockingAsyncProcedure(g, null, adapter); - -// SyncReadProcedure procedure = new SyncReadProcedure(); - adapter.adapt(g, r, context, ap); - - return ap.get(); -// procedure.checkAndThrow(); -// return procedure.result; + return g.syncRequest(new UniqueAsyncRead() { + + @Override + public void perform(AsyncReadGraph graph, AsyncProcedure procedure) { + adapter.adapt(graph, r, context, procedure); + } + + }); } @@ -873,23 +870,23 @@ public class AdaptionService2 implements AdaptionService { 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)); } }