From: erik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0> Date: Tue, 12 Feb 2008 21:00:03 +0000 (+0000) Subject: now using JPA annotations. X-Git-Tag: wamblee-utils-0.2@603~251 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=e2d85ef4598dd1f83cb7822c64601047325ecdb0;p=utils now using JPA annotations. --- diff --git a/trunk/mythtv/ear/pom.xml b/trunk/mythtv/ear/pom.xml index 81746141..a1e1aa80 100644 --- a/trunk/mythtv/ear/pom.xml +++ b/trunk/mythtv/ear/pom.xml @@ -33,6 +33,10 @@ <version>${project.version}</version> <type>ejb</type> </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + </dependency> </dependencies> <build> diff --git a/trunk/mythtv/monitor/pom.xml b/trunk/mythtv/monitor/pom.xml index 52333044..9c031a2f 100644 --- a/trunk/mythtv/monitor/pom.xml +++ b/trunk/mythtv/monitor/pom.xml @@ -24,6 +24,10 @@ <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </dependency> + <dependency> + <groupId>javax.persistence</groupId> + <artifactId>persistence-api</artifactId> + </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> diff --git a/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Channel.java b/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Channel.java index 104e3aac..e5ef7047 100644 --- a/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Channel.java +++ b/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Channel.java @@ -16,13 +16,23 @@ package org.wamblee.mythtv; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + /** * */ +@Entity +@Table(name="channel") public class Channel { + @Id + @Column(name="chanid") private int _id; + @Column(name="name") private String _name; protected Channel() { diff --git a/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Recording.java b/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Recording.java index cab43a6b..ca0ab1cb 100644 --- a/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Recording.java +++ b/trunk/mythtv/monitor/src/main/java/org/wamblee/mythtv/Recording.java @@ -19,23 +19,44 @@ package org.wamblee.mythtv; import java.io.Serializable; import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.JoinColumns; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + /** * */ +@Entity +@Table(name="recorded") +//@IdClass(RecordingPk.class) public class Recording implements Serializable { + //@Id + @ManyToOne(targetEntity=Channel.class) + @JoinColumn(name="chanid") private Channel _channel; + @Id + @Column(name="starttime") private Date _starttime; - + @Column(name="basename") private String _basename; + @Column(name="progstart") private Date _progstart; - + + @Column(name="title") private String _title; + @Column(name="subtitle") private String _subtitle; + @Column(name="filesize") private long _filesize; protected Recording() { diff --git a/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java b/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java index 45e6e220..ca910301 100644 --- a/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java +++ b/trunk/mythtv/timer/src/main/java/org/wamblee/timer/TimerBean.java @@ -21,6 +21,10 @@ import javax.ejb.MessageDriven; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerService; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.ejb.TransactionManagement; +import javax.ejb.TransactionManagementType; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; @@ -36,6 +40,9 @@ import org.wamblee.io.DirectoryMonitor; * */ @MessageDriven(name = "MythtvTimer") +// Spring's JTA transaction manager does not work with container managed transactions +// because it uses the UserTransaction object which glassfish forbids. +@TransactionManagement(TransactionManagementType.BEAN) public class TimerBean implements MessageListener { private static final Log LOG = LogFactory.getLog(TimerBean.class); diff --git a/trunk/mythtv/war/src/main/resources/beanRefContext.xml b/trunk/mythtv/war/src/main/resources/beanRefContext.xml index fff0f4c3..5288aba3 100644 --- a/trunk/mythtv/war/src/main/resources/beanRefContext.xml +++ b/trunk/mythtv/war/src/main/resources/beanRefContext.xml @@ -9,7 +9,6 @@ <list> <value>org.wamblee.mythtv.properties.xml</value> <value>org.wamblee.mythtv.datasource.xml</value> - <value>org.wamblee.mythtv.hibernatemappings.xml</value> <value>org.wamblee.mythtv.hibernate.xml</value> <value>org.wamblee.mythtv.application.xml</value> </list> diff --git a/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.application.xml b/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.application.xml index 1017fffa..1a8d0106 100644 --- a/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.application.xml +++ b/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.application.xml @@ -2,39 +2,66 @@ <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> - + <bean id="linkDir" class="java.io.File"> - <constructor-arg><value>${org.wamblee.mythtv.linkdir}</value></constructor-arg> + <constructor-arg> + <value>${org.wamblee.mythtv.linkdir}</value> + </constructor-arg> </bean> - + <bean id="monitorDir" class="java.io.File"> - <constructor-arg><value>${org.wamblee.mythtv.monitordir}</value></constructor-arg> + <constructor-arg> + <value>${org.wamblee.mythtv.monitordir}</value> + </constructor-arg> </bean> - + <bean id="fileFilter" class="org.apache.oro.io.AwkFilenameFilter"> - <constructor-arg><value>^[a-zA-Z0-9-_]*.mpg$</value></constructor-arg> + <constructor-arg> + <value>^[a-zA-Z0-9-_]*.mpg$</value> + </constructor-arg> </bean> - - + + <bean id="org.wamblee.mythtv.RecordingDatabase" class="org.wamblee.mythtv.RecordingDatabase" - init-method="init"> - <property name="hibernateTemplate"><ref bean="hibernateTemplate"/></property> + init-method="init"> + <property name="hibernateTemplate"> + <ref bean="hibernateTemplate"/> + </property> </bean> - - <bean id="org.wamblee.mythtv.LinkStructure" class="org.wamblee.mythtv.LinkStructure"> - <constructor-arg><value>${org.wamblee.mythtv.monitordir}</value></constructor-arg> - <constructor-arg><ref local="linkDir"/></constructor-arg> - <constructor-arg><ref local="org.wamblee.mythtv.RecordingDatabase"/></constructor-arg> + + <bean id="org.wamblee.mythtv.LinkStructure" + parent="transactionRequiredTemplate"> + <property name="target"> + <bean class="org.wamblee.mythtv.LinkStructure"> + <constructor-arg> + <value>${org.wamblee.mythtv.monitordir}</value> + </constructor-arg> + <constructor-arg> + <ref local="linkDir"/> + </constructor-arg> + <constructor-arg> + <ref local="org.wamblee.mythtv.RecordingDatabase"/> + </constructor-arg> + </bean> + </property> </bean> - + <bean id="org.wamblee.io.DirectoryMonitor" class="org.wamblee.io.DirectoryMonitor"> - <constructor-arg><ref local="monitorDir"/></constructor-arg> - <constructor-arg><ref local="fileFilter"/></constructor-arg> - <constructor-arg><ref local="org.wamblee.mythtv.LinkStructure"/></constructor-arg> + <constructor-arg> + <ref local="monitorDir"/> + </constructor-arg> + <constructor-arg> + <ref local="fileFilter"/> + </constructor-arg> + <constructor-arg> + <ref local="org.wamblee.mythtv.LinkStructure"/> + </constructor-arg> </bean> - + <bean id="org.wamblee.mythtv.ScheduleConfig" class="org.wamblee.mythtv.ScheduleConfig"> - <constructor-arg><value>${org.wamblee.mythtv.pollinterval}</value></constructor-arg> + <constructor-arg> + <value>${org.wamblee.mythtv.pollinterval}</value> + </constructor-arg> </bean> -</beans> +</beans> diff --git a/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.hibernate.xml b/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.hibernate.xml index 4d34ac8d..03a664af 100644 --- a/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.hibernate.xml +++ b/trunk/mythtv/war/src/main/resources/org.wamblee.mythtv.hibernate.xml @@ -5,7 +5,7 @@ <!-- bean id="namingStrategy" class="nl.jmonks.system.hibernate.JMonksNamingStrategy"> </bean --> - <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> + <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> @@ -19,8 +19,11 @@ <!-- prop key="hibernate.connection.release_mode">after_statement</prop --> </props> </property> - <property name="mappingResources"> - <ref bean="hibernateMappingFiles"/> + <property name="annotatedClasses"> + <list> + <value>org.wamblee.mythtv.Channel</value> + <value>org.wamblee.mythtv.Recording</value> + </list> </property> <!-- property name="namingStrategy"> <ref local="namingStrategy"/> @@ -33,11 +36,16 @@ </property> </bean> - <bean id="transactionManager" + <!-- bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"/> </property> + </bean --> + + <bean id="transactionManager" + class="org.springframework.transaction.jta.JtaTransactionManager"> + </bean> <!-- Abstract bean. Subclass this bean and specify the target property to diff --git a/trunk/pom.xml b/trunk/pom.xml index 9654850b..1fb054a7 100644 --- a/trunk/pom.xml +++ b/trunk/pom.xml @@ -176,9 +176,9 @@ </exclusions> </dependency> <dependency> - <groupId>ehcache</groupId> + <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> - <version>1.1</version> + <version>1.2.3</version> </dependency> <dependency> <groupId>xerces</groupId> @@ -188,7 +188,18 @@ <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> - <version>3.0.5</version> + <version>3.2.5.ga</version> + </dependency> + <dependency> + <groupId>org.hibernate</groupId> + <artifactId>hibernate-entitymanager</artifactId> + <version>3.3.1.ga</version> + </dependency> + <dependency> + <groupId>javax.persistence</groupId> + <artifactId>persistence-api</artifactId> + <version>1.0</version> + <scope>provided</scope> </dependency> <dependency> <groupId>commons-email</groupId> diff --git a/trunk/support/pom.xml b/trunk/support/pom.xml index f5791a43..83977a67 100644 --- a/trunk/support/pom.xml +++ b/trunk/support/pom.xml @@ -45,7 +45,7 @@ <artifactId>dom4j</artifactId> </dependency> <dependency> - <groupId>ehcache</groupId> + <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> <dependency> diff --git a/trunk/support/src/main/java/org/wamblee/cache/EhCache.java b/trunk/support/src/main/java/org/wamblee/cache/EhCache.java index ca11ab3f..0dcb2b7a 100644 --- a/trunk/support/src/main/java/org/wamblee/cache/EhCache.java +++ b/trunk/support/src/main/java/org/wamblee/cache/EhCache.java @@ -117,10 +117,6 @@ public class EhCache<KeyType extends Serializable, ValueType extends Serializabl * @see org.wamblee.cache.Cache#clear() */ public void clear() { - try { - _cache.removeAll(); - } catch (IOException e) { - throw new RuntimeException("Problem removing items from cache", e); - } + _cache.removeAll(); } }