/** * This implementation delegates to the {@code getConnection(ConnectionSpec)} * method of the target ConnectionFactory, passing in the specified user credentials. * If the specified username is empty, it will simply delegate to the standard * {@code getConnection()} method of the target ConnectionFactory. * @param spec the ConnectionSpec to apply * @return the Connection * @see javax.resource.cci.ConnectionFactory#getConnection(javax.resource.cci.ConnectionSpec) * @see javax.resource.cci.ConnectionFactory#getConnection() */ protected Connection doGetConnection(@Nullable ConnectionSpec spec) throws ResourceException { ConnectionFactory connectionFactory = getTargetConnectionFactory(); Assert.state(connectionFactory != null, "No 'targetConnectionFactory' set"); return (spec != null ? connectionFactory.getConnection(spec) : connectionFactory.getConnection()); }
/** * Create a CCI Connection via this template's ConnectionFactory. * @return the new CCI Connection * @throws javax.resource.ResourceException if thrown by CCI API methods */ protected Connection doCreateConnection() throws ResourceException { ConnectionFactory connectionFactory = getTargetConnectionFactory(); Assert.state(connectionFactory != null, "No 'targetConnectionFactory' set"); return connectionFactory.getConnection(); }
@Override public Connection getConnection() throws ResourceException { return obtainTargetConnectionFactory().getConnection(); }
@Override public Connection getConnection(ConnectionSpec connectionSpec) throws ResourceException { return obtainTargetConnectionFactory().getConnection(connectionSpec); }
@SuppressWarnings("unchecked") @Test public void testTemplateExecuteConnectionCallback() throws ResourceException, SQLException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); ConnectionCallback<Object> connectionCallback = mock(ConnectionCallback.class); given(connectionFactory.getConnection()).willReturn(connection); given(connectionCallback.doInConnection(connection, connectionFactory)).willReturn(new Object()); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(connectionCallback); verify(connectionCallback).doInConnection(connection, connectionFactory); verify(connection).close(); }
@SuppressWarnings("unchecked") @Test public void testTemplateExecuteInteractionCallback() throws ResourceException, SQLException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); InteractionCallback<Object> interactionCallback = mock(InteractionCallback.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interactionCallback.doInInteraction(interaction,connectionFactory)).willReturn(new Object()); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionCallback); verify(interactionCallback).doInInteraction(interaction,connectionFactory); verify(interaction).close(); verify(connection).close(); }
@SuppressWarnings("unchecked") @Test public void testTemplateExecuteInputExtractorFalse() throws ResourceException, SQLException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); RecordExtractor<Object> extractor = mock(RecordExtractor.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputRecord)).willReturn(outputRecord); given(extractor.extractData(outputRecord)).willReturn(new Object()); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionSpec, inputRecord, extractor); verify(extractor).extractData(outputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testSimpleRecordOperationWithInputOutputRecord() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputOutputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); SimpleRecordOperation query = new SimpleRecordOperation(connectionFactory, interactionSpec); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputOutputRecord, inputOutputRecord)).willReturn(true); query.execute(inputOutputRecord, inputOutputRecord); verify(interaction).execute(interactionSpec, inputOutputRecord, inputOutputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputTrueTrue() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputOutputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputOutputRecord, inputOutputRecord)).willReturn(true); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionSpec, inputOutputRecord, inputOutputRecord); verify(interaction).execute(interactionSpec, inputOutputRecord, inputOutputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputFalse() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputRecord)).willReturn(outputRecord); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionSpec, inputRecord); verify(interaction).execute(interactionSpec, inputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testSimpleRecordOperation() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); SimpleRecordOperation query = new SimpleRecordOperation(connectionFactory, interactionSpec); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputRecord)).willReturn(outputRecord); query.execute(inputRecord); verify(interaction).execute(interactionSpec, inputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputFalseTrue() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputOutputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputOutputRecord)).willReturn(null); CciTemplate ct = new CciTemplate(connectionFactory); Record tmpOutputRecord = ct.execute(interactionSpec, inputOutputRecord); assertNull(tmpOutputRecord); verify(interaction).execute(interactionSpec, inputOutputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testSimpleRecordOperationWithExplicitOutputRecord() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); SimpleRecordOperation operation = new SimpleRecordOperation(connectionFactory, interactionSpec); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true); operation.execute(inputRecord, outputRecord); verify(interaction).execute(interactionSpec, inputRecord, outputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputOutput() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionSpec, inputRecord, outputRecord); verify(interaction).execute(interactionSpec, inputRecord, outputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputTrueTrueWithCreator() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); RecordCreator creator = mock(RecordCreator.class); Record inputOutputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputOutputRecord, inputOutputRecord)).willReturn(true); CciTemplate ct = new CciTemplate(connectionFactory); ct.setOutputRecordCreator(creator); ct.execute(interactionSpec, inputOutputRecord, inputOutputRecord); verify(interaction).execute(interactionSpec, inputOutputRecord, inputOutputRecord); verify(interaction).close(); verify(connection).close(); }
@SuppressWarnings("unchecked") @Test public void testTemplateExecuteInputGeneratorExtractorFalse() throws ResourceException, SQLException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); RecordFactory recordFactory = mock(RecordFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); RecordCreator generator = mock(RecordCreator.class); RecordExtractor<Object> extractor = mock(RecordExtractor.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getRecordFactory()).willReturn(recordFactory); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(generator.createRecord(recordFactory)).willReturn(inputRecord); given(interaction.execute(interactionSpec, inputRecord)).willReturn(outputRecord); given(extractor.extractData(outputRecord)).willReturn(new Object()); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionSpec, generator, extractor); verify(extractor).extractData(outputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputOutputConnectionSpec() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); ConnectionSpec connectionSpec = mock(ConnectionSpec.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection(connectionSpec)).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true); ConnectionSpecConnectionFactoryAdapter adapter = new ConnectionSpecConnectionFactoryAdapter(); adapter.setTargetConnectionFactory(connectionFactory); adapter.setConnectionSpec(connectionSpec); CciTemplate ct = new CciTemplate(adapter); ct.execute(interactionSpec, inputRecord, outputRecord); verify(interaction).execute(interactionSpec, inputRecord, outputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputGeneratorFalse() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); RecordFactory recordFactory = mock(RecordFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); RecordCreator generator = mock(RecordCreator.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getRecordFactory()).willReturn(recordFactory); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(generator.createRecord(recordFactory)).willReturn(inputRecord); given(interaction.execute(interactionSpec, inputRecord)).willReturn(outputRecord); CciTemplate ct = new CciTemplate(connectionFactory); ct.execute(interactionSpec, generator); verify(interaction).execute(interactionSpec, inputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputTrueWithCreator2() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); RecordFactory recordFactory = mock(RecordFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); RecordCreator creator = mock(RecordCreator.class); Record inputRecord = mock(Record.class); final Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getConnection()).willReturn(connection); given(connectionFactory.getRecordFactory()).willReturn(recordFactory); given(connection.createInteraction()).willReturn(interaction); given(creator.createRecord(recordFactory)).willReturn(outputRecord); given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true); CciTemplate ct = new CciTemplate(connectionFactory); ct.setOutputRecordCreator(creator); ct.execute(interactionSpec, inputRecord); verify(interaction).execute(interactionSpec, inputRecord, outputRecord); verify(interaction).close(); verify(connection).close(); }
@Test public void testTemplateExecuteInputGeneratorTrueWithCreator() throws ResourceException { ConnectionFactory connectionFactory = mock(ConnectionFactory.class); RecordFactory recordFactory = mock(RecordFactory.class); Connection connection = mock(Connection.class); Interaction interaction = mock(Interaction.class); RecordCreator generator = mock(RecordCreator.class); RecordCreator creator = mock(RecordCreator.class); Record inputRecord = mock(Record.class); Record outputRecord = mock(Record.class); InteractionSpec interactionSpec = mock(InteractionSpec.class); given(connectionFactory.getRecordFactory()).willReturn(recordFactory); given(generator.createRecord(recordFactory)).willReturn(inputRecord); given(connectionFactory.getConnection()).willReturn(connection); given(connection.createInteraction()).willReturn(interaction); given(creator.createRecord(recordFactory)).willReturn(outputRecord); given(connectionFactory.getRecordFactory()).willReturn(recordFactory); given(interaction.execute(interactionSpec, inputRecord, outputRecord)).willReturn(true); CciTemplate ct = new CciTemplate(connectionFactory); ct.setOutputRecordCreator(creator); ct.execute(interactionSpec, generator); verify(interaction).execute(interactionSpec, inputRecord, outputRecord); verify(interaction).close(); verify(connection).close(); }