hmm I will take a look at it.. during the weekend.. 2009/10/23 Bill Tarr <[email protected]>
> I'm not sure this should be comitted to the trunk. > > Users can't use this code as is, because: > > 1. Manual/Automatic flush > - they'd need to implement flush() and persist() if they have manual > flush set up. > 2. HibUtil > - is a system specific implementation used to manage SessionFactory and > Sessions > - systems using Hibernate will already have some version of this they > will need to leverage > > so this is more of a template. > > In fact, it won't compile without a HibUtil, so that's another problem for > adding it to the trunk... > > A test case in examples would let us create a simple HibUtil and > hibernate.cfg.xml. > > The test case could create a H2 DB and the tables needed... > > > ------------------------------ > *From:* Mauricio Salatino <[email protected]> > *To:* Rules Users List <[email protected]> > *Sent:* Fri, October 23, 2009 4:18:16 PM > *Subject:* Re: [rules-users] [droolsflow] - one way to use Hibernate > mapping with JPAVariablePersister > > 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 <[email protected]> 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 >> now. >> >> 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.VariablePersister; >> 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 <a href="mailto:[email protected]">Kris Verlaenen</a> >> * @author salaboy >> */ >> public class JPAVariablePersisterHibernate implements VariablePersister { >> public VariableInstanceInfo persistExternalVariable(String name, Object >> o, >> VariableInstanceInfo oldValue, Environment env) { >> if(o == null || (oldValue != null && >> oldValue.getPersister().equals(""))){ >> return null; >> } >> try { >> JPAPersistedVariable result = null; >> if (oldValue instanceof JPAPersistedVariable) { >> result = (JPAPersistedVariable) oldValue; >> } >> if (result == null) { >> result = new JPAPersistedVariable(); >> } >> Long idValue = 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) == null || >> ((JPAPersistedVariable) variableInstanceInfo).getEntityId() == null){ >> return null; >> } >> System.out.println("Restoring JPAPersistedVariable id=" + >> ((JPAPersistedVariable) variableInstanceInfo).getId() + " entityId=" + >> ((JPAPersistedVariable) variableInstanceInfo).getEntityId() + " class=" + >> ((JPAPersistedVariable) variableInstanceInfo).getEntityClass() + " value=" + >> ((JPAPersistedVariable) variableInstanceInfo).getEntity()); >> String varType = ((JPAPersistedVariable) >> variableInstanceInfo).getEntityClass(); >> >> Object obj = 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 = HibUtil.getCurrentSession(); >> return (Long) session.getIdentifier(o); >> } >> } >> >> >> >> >> _______________________________________________ >> rules-users mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-users >> > > > > -- > - http://salaboy.wordpress.com > - http://www.jbug.com.ar > - Salatino "Salaboy" Mauricio - > > > _______________________________________________ > rules-users mailing list > [email protected] > https://lists.jboss.org/mailman/listinfo/rules-users > > -- - http://salaboy.wordpress.com - http://www.jbug.com.ar - Salatino "Salaboy" Mauricio -
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
