1 45 46 package org.openejb.resource.jdbc; 47 48 import org.openejb.loader.SystemInstance; 49 50 import javax.resource.spi.ManagedConnectionFactory ; 51 import javax.resource.spi.ConnectionManager ; 52 import javax.resource.spi.ManagedConnection ; 53 import javax.resource.spi.ConnectionRequestInfo ; 54 import javax.resource.spi.EISSystemException ; 55 import javax.resource.ResourceException ; 56 import javax.security.auth.Subject ; 57 import java.util.Set ; 58 import java.util.Properties ; 59 import java.io.PrintWriter ; 60 import java.io.File ; 61 import java.sql.DriverManager ; 62 63 66 public class ManagedConnectionFactoryPathHack implements javax.resource.spi.ManagedConnectionFactory , java.io.Serializable { 67 private final ManagedConnectionFactory factory; 68 69 public ManagedConnectionFactoryPathHack(ManagedConnectionFactory factory) { 70 this.factory = factory; 71 } 72 73 public Object createConnectionFactory(ConnectionManager connectionManager) throws ResourceException { 74 return factory.createConnectionFactory(connectionManager); 75 } 76 77 public Object createConnectionFactory() throws ResourceException { 78 return factory.createConnectionFactory(); 79 } 80 81 public ManagedConnection createManagedConnection(Subject subject, ConnectionRequestInfo connectionRequestInfo) throws ResourceException { 82 Properties systemProperties = System.getProperties(); 86 synchronized(systemProperties){ 87 String userDir = systemProperties.getProperty("user.dir"); 88 try{ 89 File base = SystemInstance.get().getBase().getDirectory(); 90 systemProperties.setProperty("user.dir", base.getAbsolutePath()); 91 return factory.createManagedConnection(subject, connectionRequestInfo); 92 } finally { 93 systemProperties.setProperty("user.dir",userDir); 94 } 95 } 96 } 97 98 public ManagedConnection matchManagedConnections(Set set, Subject subject, ConnectionRequestInfo connectionRequestInfo) throws ResourceException { 99 return factory.matchManagedConnections(set, subject, connectionRequestInfo); 100 } 101 102 public void setLogWriter(PrintWriter printWriter) throws ResourceException { 103 factory.setLogWriter(printWriter); 104 } 105 106 public PrintWriter getLogWriter() throws ResourceException { 107 return factory.getLogWriter(); 108 } 109 110 public int hashCode() { 111 return factory.hashCode(); 112 } 113 114 public boolean equals(Object o) { 115 return factory.equals(o); 116 } 117 } 118 | Popular Tags |