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();
     }
 }