From salaboy at gmail.com Fri Oct 23 19:18:16 2009 Content-Type: multipart/mixed; boundary="===============4841932626883365770==" MIME-Version: 1.0 From: Mauricio Salatino To: rules-users at lists.jboss.org Subject: Re: [rules-users] [droolsflow] - one way to use Hibernate mapping with JPAVariablePersister Date: Fri, 23 Oct 2009 16:18:16 -0700 Message-ID: In-Reply-To: 635409.3225.qm@web45911.mail.sp1.yahoo.com --===============4841932626883365770== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable nice.. do you mind if I commit it to the trunk? can you create some unit testing too? On Fri, Oct 23, 2009 at 3:27 PM, Bill Tarr wrote: > Here is an alternate version of JPAVariablePersister for people who are > already using Hibernate xml mapping files. > > This implementation has some downsides, but it seems to be working for no= w. > > I am going to keep using JPA to manage all the Drools Flow tables. > > My domain object persistence will be managed by Hibernate Session. > > We are also currently using automatic flush (so no code to persist domain > objects in this class) > > Obviously you need to use your own version of HibUtil. > > import java.util.logging.Level; > import java.util.logging.Logger; > import > org.drools.persistence.processinstance.variabletypes.JPAPersistedVariable; > import > org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo; > import org.drools.persistence.processinstance.persisters.VariablePersiste= r; > import org.drools.runtime.Environment; > import org.hibernate.Session; > import HibUtil; > /** > * Variation on Drools JPA Variable Persister. > * org.drools.persistence.processinstance.persisters.JPAVariablePersister > * for using variables persisted by Hibernate, while still using JPA to > * persist DroolsFlow data. > * > * @author Kris Verlaenen= > * @author salaboy > */ > public class JPAVariablePersisterHibernate implements VariablePersister { > public VariableInstanceInfo persistExternalVariable(String name, Object = o, > VariableInstanceInfo oldValue, Environment env) { > if(o =3D=3D null || (oldValue !=3D null && > oldValue.getPersister().equals(""))){ > return null; > } > try { > JPAPersistedVariable result =3D null; > if (oldValue instanceof JPAPersistedVariable) { > result =3D (JPAPersistedVariable) oldValue; > } > if (result =3D=3D null) { > result =3D new JPAPersistedVariable(); > } > Long idValue =3D geHibIdValue(o); > result.setPersister(this.getClass().getName()); > result.setName(name); > result.setEntityId(idValue); > result.setEntity(o); > result.setEntityClass(o.getClass().getCanonicalName()); > return result; > } catch (Throwable t) { > Logger.getLogger(JPAVariablePersisterHibernate.class.getName()) > .log(Level.SEVERE, null, t); > throw new RuntimeException("Could not persist external variable", t); > } > } > public Object getExternalPersistedVariable( > VariableInstanceInfo variableInstanceInfo, Environment env) { > if(((JPAPersistedVariable) variableInstanceInfo) =3D=3D null || > ((JPAPersistedVariable) variableInstanceInfo).getEntityId() =3D=3D null){ > return null; > } > System.out.println("Restoring JPAPersistedVariable id=3D" + > ((JPAPersistedVariable) variableInstanceInfo).getId() + " entityId=3D" + > ((JPAPersistedVariable) variableInstanceInfo).getEntityId() + " class=3D"= + > ((JPAPersistedVariable) variableInstanceInfo).getEntityClass() + " value= =3D" + > ((JPAPersistedVariable) variableInstanceInfo).getEntity()); > String varType =3D ((JPAPersistedVariable) > variableInstanceInfo).getEntityClass(); > > Object obj =3D HibUtil.getCurrentSession().get(varType, > ((JPAPersistedVariable) variableInstanceInfo).getEntityId()); > HibUtil.closeCurrentSession(); > return obj; > } > /** > * Hibernate lookup to get ID column. > * @param o Dto to look up. > * @return Long id. > */ > private Long geHibIdValue(Object o) { > Session session =3D HibUtil.getCurrentSession(); > return (Long) session.getIdentifier(o); > } > } > > > > > _______________________________________________ > rules-users mailing list > rules-users(a)lists.jboss.org > https://lists.jboss.org/mailman/listinfo/rules-users > -- = - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino "Salaboy" Mauricio - --===============4841932626883365770== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" bmljZS4uIGRvIHlvdSBtaW5kIGlmIEkgY29tbWl0IGl0IHRvIHRoZSB0cnVuaz88YnI+Y2FuIHlv dSBjcmVhdGUgc29tZSB1bml0IHRlc3RpbmcgdG9vPzxicj48YnI+PGJyPjxkaXYgY2xhc3M9Imdt YWlsX3F1b3RlIj5PbiBGcmksIE9jdCAyMywgMjAwOSBhdCAzOjI3IFBNLCBCaWxsIFRhcnIgPHNw YW4gZGlyPSJsdHIiPiZsdDs8YSBocmVmPSJtYWlsdG86amF2YXRlc3RjYXNlQHlhaG9vLmNvbSI+ amF2YXRlc3RjYXNlQHlhaG9vLmNvbTwvYT4mZ3Q7PC9zcGFuPiB3cm90ZTo8YnI+CjxibG9ja3F1 b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9ImJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdi KDIwNCwgMjA0LCAyMDQpOyBtYXJnaW46IDBwdCAwcHQgMHB0IDAuOGV4OyBwYWRkaW5nLWxlZnQ6 IDFleDsiPkhlcmUgaXMgYW4gYWx0ZXJuYXRlIHZlcnNpb24gb2YgSlBBVmFyaWFibGVQZXJzaXN0 ZXIgZm9yIHBlb3BsZSB3aG8gYXJlIGFscmVhZHkgdXNpbmcgSGliZXJuYXRlIHhtbKBtYXBwaW5n IGZpbGVzLqA8YnI+Cgo8YnI+ClRoaXMgaW1wbGVtZW50YXRpb24gaGFzIHNvbWUgZG93bnNpZGVz LCBidXQgaXQgc2VlbXMgdG8gYmUgd29ya2luZyBmb3Igbm93Ljxicj4KPGJyPgpJIGFtIGdvaW5n IHRvIGtlZXAgdXNpbmcgSlBBIHRvIG1hbmFnZSBhbGwgdGhlIERyb29scyBGbG93IHRhYmxlcy48 YnI+Cjxicj4KTXkgZG9tYWluIG9iamVjdCBwZXJzaXN0ZW5jZSB3aWxsIGJlIG1hbmFnZWQgYnkg SGliZXJuYXRlIFNlc3Npb24uoDxicj4KPGJyPgpXZSBhcmUgYWxzbyBjdXJyZW50bHkgdXNpbmcg YXV0b21hdGljIGZsdXNoIChzbyBubyBjb2RlIHRvIHBlcnNpc3QgZG9tYWluIG9iamVjdHMgaW4g dGhpcyBjbGFzcyk8YnI+Cjxicj4KT2J2aW91c2x5IHlvdSBuZWVkIHRvIHVzZSB5b3VyIG93biB2 ZXJzaW9uIG9mIEhpYlV0aWwuPGJyPgo8YnI+CmltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5MZXZl bDs8YnI+CmltcG9ydCBqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXI7PGJyPgppbXBvcnQgb3JnLmRy b29scy5wZXJzaXN0ZW5jZS5wcm9jZXNzaW5zdGFuY2UudmFyaWFibGV0eXBlcy5KUEFQZXJzaXN0 ZWRWYXJpYWJsZTs8YnI+CmltcG9ydCBvcmcuZHJvb2xzLnBlcnNpc3RlbmNlLnByb2Nlc3NpbnN0 YW5jZS52YXJpYWJsZXR5cGVzLlZhcmlhYmxlSW5zdGFuY2VJbmZvOzxicj4KaW1wb3J0IG9yZy5k cm9vbHMucGVyc2lzdGVuY2UucHJvY2Vzc2luc3RhbmNlLnBlcnNpc3RlcnMuVmFyaWFibGVQZXJz aXN0ZXI7PGJyPgppbXBvcnQgb3JnLmRyb29scy5ydW50aW1lLkVudmlyb25tZW50Ozxicj4KaW1w b3J0IG9yZy5oaWJlcm5hdGUuU2Vzc2lvbjs8YnI+CmltcG9ydCBIaWJVdGlsOzxicj4KLyoqPGJy PgqgKiBWYXJpYXRpb24gb24gRHJvb2xzIEpQQSBWYXJpYWJsZSBQZXJzaXN0ZXIuPGJyPgqgKiBv cmcuZHJvb2xzLnBlcnNpc3RlbmNlLnByb2Nlc3NpbnN0YW5jZS5wZXJzaXN0ZXJzLkpQQVZhcmlh YmxlUGVyc2lzdGVyPGJyPgqgKiBmb3IgdXNpbmcgdmFyaWFibGVzIHBlcnNpc3RlZCBieSBIaWJl cm5hdGUsIHdoaWxlIHN0aWxsIHVzaW5nIEpQQSB0bzxicj4KoCogcGVyc2lzdCBEcm9vbHNGbG93 IGRhdGEuPGJyPgqgKjxicj4KoCogQGF1dGhvciAmbHQ7YSBocmVmPSZxdW90O21haWx0bzo8YSBo cmVmPSJtYWlsdG86a3Jpc192ZXJsYWVuZW5AaG90bWFpbC5jb20iPmtyaXNfdmVybGFlbmVuQGhv dG1haWwuY29tPC9hPiZxdW90OyZndDtLcmlzIFZlcmxhZW5lbiZsdDsvYSZndDs8YnI+CqAqIEBh dXRob3Igc2FsYWJveTxicj4KoCovPGJyPgpwdWJsaWMgY2xhc3MgSlBBVmFyaWFibGVQZXJzaXN0 ZXJIaWJlcm5hdGUgaW1wbGVtZW50cyBWYXJpYWJsZVBlcnNpc3RlciB7PGJyPgqgcHVibGljIFZh cmlhYmxlSW5zdGFuY2VJbmZvIHBlcnNpc3RFeHRlcm5hbFZhcmlhYmxlKFN0cmluZyBuYW1lLCBP YmplY3Qgbyw8YnI+CqCgoFZhcmlhYmxlSW5zdGFuY2VJbmZvIG9sZFZhbHVlLCBFbnZpcm9ubWVu dCBlbnYpIHs8YnI+CqCgoKCgoKCgoKCgoKCgoCBpZihvID09IG51bGwgfHwgKG9sZFZhbHVlICE9 IG51bGwgJmFtcDsmYW1wOyBvbGRWYWx1ZS5nZXRQZXJzaXN0ZXIoKS5lcXVhbHMoJnF1b3Q7JnF1 b3Q7KSkpezxicj4KoKCgoKCgoKCgoKCgoKCgoKCgoCByZXR1cm4gbnVsbDs8YnI+CqCgoKCgoKCg oKCgoKCgoCB9PGJyPgqgoHRyeSB7PGJyPgqgoKBKUEFQZXJzaXN0ZWRWYXJpYWJsZSByZXN1bHQg PSBudWxsOzxicj4KoKCgaWYgKG9sZFZhbHVlIGluc3RhbmNlb2YgSlBBUGVyc2lzdGVkVmFyaWFi bGUpIHs8YnI+CqCgoKByZXN1bHQgPSAoSlBBUGVyc2lzdGVkVmFyaWFibGUpIG9sZFZhbHVlOzxi cj4KoKCgfTxicj4KoKCgaWYgKHJlc3VsdCA9PSBudWxsKSB7PGJyPgqgoKCgcmVzdWx0ID0gbmV3 IEpQQVBlcnNpc3RlZFZhcmlhYmxlKCk7PGJyPgqgoKB9PGJyPgqgoKBMb25nIGlkVmFsdWUgPSBn ZUhpYklkVmFsdWUobyk7PGJyPgqgoKByZXN1bHQuc2V0UGVyc2lzdGVyKHRoaXMuZ2V0Q2xhc3Mo KS5nZXROYW1lKCkpOzxicj4KoKCgoKCgoKCgoKAgcmVzdWx0LnNldE5hbWUobmFtZSk7PGJyPgqg oKByZXN1bHQuc2V0RW50aXR5SWQoaWRWYWx1ZSk7PGJyPgqgoKByZXN1bHQuc2V0RW50aXR5KG8p Ozxicj4KoKCgcmVzdWx0LnNldEVudGl0eUNsYXNzKG8uZ2V0Q2xhc3MoKS5nZXRDYW5vbmljYWxO YW1lKCkpOzxicj4KoKCgoKCgoKCgoKAgcmV0dXJuIHJlc3VsdDs8YnI+CqCgfSBjYXRjaCAoVGhy b3dhYmxlIHQpIHs8YnI+CqCgoExvZ2dlci5nZXRMb2dnZXIoSlBBVmFyaWFibGVQZXJzaXN0ZXJI aWJlcm5hdGUuY2xhc3MuZ2V0TmFtZSgpKTxicj4KoKCgoC5sb2coTGV2ZWwuU0VWRVJFLCBudWxs LCB0KTs8YnI+CqCgoHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCZxdW90O0NvdWxkIG5vdCBw ZXJzaXN0IGV4dGVybmFsIHZhcmlhYmxlJnF1b3Q7LCB0KTs8YnI+CqCgfTxicj4KoH08YnI+CqBw dWJsaWMgT2JqZWN0IGdldEV4dGVybmFsUGVyc2lzdGVkVmFyaWFibGUoPGJyPgqgoKBWYXJpYWJs ZUluc3RhbmNlSW5mbyB2YXJpYWJsZUluc3RhbmNlSW5mbywgRW52aXJvbm1lbnQgZW52KSB7PGJy PgqgoKCgoKCgIGlmKCgoSlBBUGVyc2lzdGVkVmFyaWFibGUpIHZhcmlhYmxlSW5zdGFuY2VJbmZv KSA9PSBudWxsIHx8ICgoSlBBUGVyc2lzdGVkVmFyaWFibGUpIHZhcmlhYmxlSW5zdGFuY2VJbmZv KS5nZXRFbnRpdHlJZCgpID09IG51bGwpezxicj4KoKCgoKCgoKCgoKAgcmV0dXJuIG51bGw7PGJy PgqgoKCgoKCgIH08YnI+CqCgoKCgoKAgU3lzdGVtLm91dC5wcmludGxuKCZxdW90O1Jlc3Rvcmlu ZyBKUEFQZXJzaXN0ZWRWYXJpYWJsZSBpZD0mcXVvdDsgKyAoKEpQQVBlcnNpc3RlZFZhcmlhYmxl KSB2YXJpYWJsZUluc3RhbmNlSW5mbykuZ2V0SWQoKSArICZxdW90OyBlbnRpdHlJZD0mcXVvdDsg KyAoKEpQQVBlcnNpc3RlZFZhcmlhYmxlKSB2YXJpYWJsZUluc3RhbmNlSW5mbykuZ2V0RW50aXR5 SWQoKSArICZxdW90OyBjbGFzcz0mcXVvdDsgKyAoKEpQQVBlcnNpc3RlZFZhcmlhYmxlKSB2YXJp YWJsZUluc3RhbmNlSW5mbykuZ2V0RW50aXR5Q2xhc3MoKSArICZxdW90OyB2YWx1ZT0mcXVvdDsg KyAoKEpQQVBlcnNpc3RlZFZhcmlhYmxlKSB2YXJpYWJsZUluc3RhbmNlSW5mbykuZ2V0RW50aXR5 KCkpOzxicj4KCqCgU3RyaW5nIHZhclR5cGUgPSAoKEpQQVBlcnNpc3RlZFZhcmlhYmxlKSB2YXJp YWJsZUluc3RhbmNlSW5mbykuZ2V0RW50aXR5Q2xhc3MoKTs8YnI+CqCgoKCgoKA8YnI+CqCgoKCg oKAgT2JqZWN0IG9iaiA9IEhpYlV0aWwuZ2V0Q3VycmVudFNlc3Npb24oKS5nZXQodmFyVHlwZSwg KChKUEFQZXJzaXN0ZWRWYXJpYWJsZSkgdmFyaWFibGVJbnN0YW5jZUluZm8pLmdldEVudGl0eUlk KCkpOzxicj4KoKCgoKCgoCBIaWJVdGlsLmNsb3NlQ3VycmVudFNlc3Npb24oKTs8YnI+CqCgoKCg oKAgcmV0dXJuIG9iajs8YnI+CqB9PGJyPgovKio8YnI+CqAqIEhpYmVybmF0ZSBsb29rdXAgdG8g Z2V0IElEIGNvbHVtbi48YnI+CqAqIEBwYXJhbSBvIER0byB0byBsb29rIHVwLjxicj4KoCogQHJl dHVybiBMb25nIGlkLjxicj4KoCovPGJyPgqgcHJpdmF0ZSBMb25nIGdlSGliSWRWYWx1ZShPYmpl Y3QgbymgIHs8YnI+CqCgoKCgoKAgU2Vzc2lvbiBzZXNzaW9uID0gSGliVXRpbC5nZXRDdXJyZW50 U2Vzc2lvbigpOzxicj4KoKCgoKCgoCByZXR1cm4gKExvbmcpIHNlc3Npb24uZ2V0SWRlbnRpZmll cihvKTs8YnI+CqB9PGJyPgp9oDxicj4KPGJyPgo8YnI+Cjxicj4KPGJyPgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj4KcnVsZXMtdXNlcnMgbWFpbGlu ZyBsaXN0PGJyPgo8YSBocmVmPSJtYWlsdG86cnVsZXMtdXNlcnNAbGlzdHMuamJvc3Mub3JnIj5y dWxlcy11c2Vyc0BsaXN0cy5qYm9zcy5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRwczovL2xpc3Rz Lmpib3NzLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3J1bGVzLXVzZXJzIiB0YXJnZXQ9Il9ibGFuayI+ aHR0cHM6Ly9saXN0cy5qYm9zcy5vcmcvbWFpbG1hbi9saXN0aW5mby9ydWxlcy11c2VyczwvYT48 YnI+CjwvYmxvY2txdW90ZT48L2Rpdj48YnI+PGJyIGNsZWFyPSJhbGwiPjxicj4tLSA8YnI+IC0g PGEgaHJlZj0iaHR0cDovL3NhbGFib3kud29yZHByZXNzLmNvbSI+aHR0cDovL3NhbGFib3kud29y ZHByZXNzLmNvbTwvYT48YnI+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5qYnVnLmNvbS5hciI+aHR0 cDovL3d3dy5qYnVnLmNvbS5hcjwvYT48YnI+IC0gU2FsYXRpbm8gJnF1b3Q7U2FsYWJveSZxdW90 OyBNYXVyaWNpbyAtPGJyPgoK --===============4841932626883365770==--