001 package com.mockrunner.mock.connector.spi;
002
003 import java.io.PrintWriter;
004 import java.io.Serializable;
005 import java.util.Iterator;
006 import java.util.Set;
007
008 import javax.resource.ResourceException;
009 import javax.resource.spi.ConnectionManager;
010 import javax.resource.spi.ConnectionRequestInfo;
011 import javax.resource.spi.ManagedConnection;
012 import javax.resource.spi.ManagedConnectionFactory;
013 import javax.security.auth.Subject;
014
015 /**
016 * Mock implementation of <code>ManagedConnectionFactory</code>.
017 */
018 public class MockManagedConnectionFactory implements ManagedConnectionFactory, Serializable
019 {
020 private static final long serialVersionUID = 3257291348330558264L;
021
022 private PrintWriter logWriter;
023 private ConnectionManager connectionManager;
024
025 public Object createConnectionFactory() throws ResourceException
026 {
027 return createConnectionFactory(null);
028 }
029
030 public Object createConnectionFactory(ConnectionManager connectionManager) throws ResourceException
031 {
032 this.connectionManager = connectionManager;
033 return this;
034 }
035
036 public ManagedConnection createManagedConnection(Subject subject, ConnectionRequestInfo requestInfo) throws ResourceException
037 {
038 Object managedConnection = null;
039 if(connectionManager == null)
040 {
041 // TODO is this correct?
042 managedConnection = new MockManagedConnection().getConnection(subject, requestInfo);
043 }
044 else
045 {
046 managedConnection = connectionManager.allocateConnection(this, requestInfo);
047 }
048 return (MockManagedConnection)managedConnection;
049 }
050
051 public ManagedConnection matchManagedConnections(Set set, Subject subject, ConnectionRequestInfo connectionRequestInfo) throws ResourceException
052 {
053 ManagedConnection managedConnection = null;
054 Iterator iterator = set.iterator();
055 if(iterator.hasNext())
056 {
057 // TODO also process subject and connectionrequestinfo
058 managedConnection = (ManagedConnection)iterator.next();
059 }
060 return managedConnection;
061 }
062
063 public PrintWriter getLogWriter() throws ResourceException
064 {
065 return logWriter;
066 }
067
068 public void setLogWriter(PrintWriter logWriter) throws ResourceException
069 {
070 this.logWriter = logWriter;
071 }
072 }