X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.services%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fservices%2Fadaption%2FAdaptionService2.java;h=879eec03410e3737d4b2e8561e8110d184dca843;hp=47a14ddbcbccc7424bec9fe1ea059c588dffc24d;hb=0d9b90834ce56b292c00b1a39850ed842c3e4d42;hpb=e5db6157fd8722c946613d4e46d7aaf6bfa92609 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 47a14ddbc..879eec034 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * Copyright (c) 2007, 2018 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -11,17 +11,12 @@ *******************************************************************************/ 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.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; @@ -37,6 +32,10 @@ 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 { THashMap,Class>, AdapterDeclaration> adapters = @@ -366,24 +365,9 @@ public class AdaptionService2 implements AdaptionService { final Adapter adapter = (Adapter)findAdapter(resource, g); if(adapter == null) return null; - else return g.syncRequest(new AsyncRead() { - - @Override - public void perform(AsyncReadGraph graph, AsyncProcedure procedure) { -// System.out.println("adapter=" + adapter); - adapter.adapt(graph, resource, context, procedure); - } - - @Override - public int threadHash() { - return hashCode(); - } - - @Override - public int getFlags() { - return 0; - } - + else return g.syncRequest((AsyncRead)(graph, procedure) -> { + //System.out.println("adapter=" + adapter); + adapter.adapt(graph, resource, context, procedure); }); } @@ -583,11 +567,9 @@ public class AdaptionService2 implements AdaptionService { public T adapt(ReadGraph g, Resource r, C context, Class contextClass, Class targetClass, boolean possible) throws DatabaseException { Adapter adapter = getAdapter(g, r, context, contextClass, targetClass, possible); + if(adapter == null) return null; - SyncReadProcedure procedure = new SyncReadProcedure(); - adapter.adapt(g, r, context, procedure); - procedure.checkAndThrow(); - return procedure.result; + return g.syncRequest((AsyncRead)(graph, procedure) -> adapter.adapt(graph, r, context, procedure)); } @@ -865,23 +847,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)); } }