001 package com.mockrunner.mock.connector.cci; 002 003 import java.util.ArrayList; 004 import java.util.Collections; 005 import java.util.List; 006 007 import javax.resource.ResourceException; 008 import javax.resource.cci.Connection; 009 import javax.resource.cci.ConnectionMetaData; 010 import javax.resource.cci.Interaction; 011 import javax.resource.cci.LocalTransaction; 012 import javax.resource.cci.ResultSetInfo; 013 014 import com.mockrunner.connector.InteractionHandler; 015 016 /** 017 * Mock implementation of <code>Connection</code>. 018 */ 019 public class MockConnection implements Connection 020 { 021 private boolean closed; 022 private InteractionHandler interactionHandler; 023 private ConnectionMetaData metaData; 024 private LocalTransaction localTransaction; 025 private ResultSetInfo resultSetInfo; 026 private List interactions; 027 028 public MockConnection() 029 { 030 closed = false; 031 metaData = new MockConnectionMetaData(); 032 localTransaction = new MockLocalTransaction(); 033 resultSetInfo = new MockResultSetInfo(); 034 interactions = new ArrayList(); 035 } 036 037 /** 038 * Returns the {@link MockLocalTransaction}. If the underlying 039 * <code>LocalTransaction</code> is not an instance of 040 * {@link MockLocalTransaction}, this method returns <code>null</code>. 041 * Otherwise it returns the same object as {@link #getLocalTransaction}. 042 * @return the {@link MockLocalTransaction} 043 */ 044 public MockLocalTransaction getMockLocalTransaction() 045 { 046 if(localTransaction instanceof MockLocalTransaction) 047 { 048 return (MockLocalTransaction) localTransaction; 049 } 050 return null; 051 } 052 053 /** 054 * Returns the list of all created <code>Interaction</code> objects. 055 * 056 * @return the list <code>Interaction</code> objects 057 */ 058 public List getInteractionList() 059 { 060 return Collections.unmodifiableList(interactions); 061 } 062 063 public void close() throws ResourceException 064 { 065 for(int ii = 0; ii < interactions.size(); ii++) 066 { 067 ((Interaction)interactions.get(ii)).close(); 068 } 069 closed = true; 070 } 071 072 public Interaction createInteraction() throws ResourceException 073 { 074 Interaction interaction = new MockInteraction(this); 075 interactions.add(interaction); 076 return interaction; 077 } 078 079 public LocalTransaction getLocalTransaction() throws ResourceException 080 { 081 return localTransaction; 082 } 083 084 public ConnectionMetaData getMetaData() throws ResourceException 085 { 086 return metaData; 087 } 088 089 public ResultSetInfo getResultSetInfo() throws ResourceException 090 { 091 return resultSetInfo; 092 } 093 094 /** 095 * Returns if this <code>Connection</code> is closed. 096 * @return <code>true</code> if this <code>Interaction</code> is closed, 097 * <code>false</code> otherwise 098 */ 099 public boolean isClosed() 100 { 101 return closed; 102 } 103 104 public InteractionHandler getInteractionHandler() 105 { 106 return interactionHandler; 107 } 108 109 /** 110 * Sets this connections <code>ResultSetInfo</code> 111 * @param resultSetInfo the <code>ResultSetInfo</code> 112 */ 113 public void setResultSetInfo(ResultSetInfo resultSetInfo) 114 { 115 this.resultSetInfo = resultSetInfo; 116 } 117 118 /** 119 * Sets this connections <code>InteractionHandler</code> 120 * @param interactionHandler the <code>InteractionHandler</code> 121 */ 122 public void setInteractionHandler(InteractionHandler interactionHandler) 123 { 124 this.interactionHandler = interactionHandler; 125 } 126 127 /** 128 * Sets this connections meta data 129 * @param metaData the meta data 130 */ 131 public void setMetaData(ConnectionMetaData metaData) 132 { 133 this.metaData = metaData; 134 } 135 136 /** 137 * Sets the <code>LocalTransaction</code> 138 * @param localTransaction the <code>LocalTransaction</code> 139 */ 140 public void setLocalTransaction(LocalTransaction localTransaction) 141 { 142 this.localTransaction = localTransaction; 143 } 144 }