Index: activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java =================================================================== --- activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java (revision 1491790) +++ activemq-jdbc-store/src/main/java/org/apache/activemq/store/jdbc/JDBCPersistenceAdapter.java (working copy) @@ -596,15 +615,20 @@ public void setStatements(Statements statements) { this.statements = statements; + if (adapter != null) { + this.adapter.setStatements(getStatements()); + } } Index: activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java =================================================================== --- activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java (revision 0) +++ activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java (working copy) @@ -0,0 +1,132 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.store.jdbc; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; + +import javax.jms.Destination; +import javax.jms.MessageProducer; +import javax.jms.Session; + +import org.apache.activemq.ActiveMQConnection; +import org.apache.activemq.ActiveMQConnectionFactory; +import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.command.Message; +import org.apache.activemq.openwire.OpenWireFormat; +import org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter; +import org.apache.activemq.util.ByteSequence; +import org.apache.activemq.wireformat.WireFormat; +import org.apache.derby.jdbc.EmbeddedDataSource; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class JDBCTablePrefixAssignedTest { + + private static final Logger LOG = LoggerFactory.getLogger(JDBCTablePrefixAssignedTest.class); + + private BrokerService service; + + @Before + public void setUp() throws Exception { + service = createBroker(); + service.start(); + service.waitUntilStarted(); + } + + @After + public void tearDown() throws Exception { + service.stop(); + service.waitUntilStopped(); + } + + @Test + public void testTablesHave() throws Exception { + + ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("vm://localhost?create=false"); + ActiveMQConnection connection = (ActiveMQConnection) cf.createConnection(); + + Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); + Destination destination = session.createQueue("TEST.FOO"); + MessageProducer producer = session.createProducer(destination); + + for (int i = 0; i < 10; ++i) { + producer.send(session.createTextMessage("test")); + } + producer.close(); + connection.close(); + + List queuedMessages = null; + try { + queuedMessages = dumpMessages(); + } catch (Exception ex) { + LOG.info("Caught ex: ", ex); + fail("Should not have thrown an exception"); + } + + assertNotNull(queuedMessages); + assertEquals("Should have found 10 messages", 10, queuedMessages.size()); + } + + protected List dumpMessages() throws Exception { + WireFormat wireFormat = new OpenWireFormat(); + java.sql.Connection conn = ((JDBCPersistenceAdapter) service.getPersistenceAdapter()).getDataSource().getConnection(); + PreparedStatement statement = conn.prepareStatement("SELECT ID, MSG FROM MYPREFIX_ACTIVEMQ_MSGS"); + ResultSet result = statement.executeQuery(); + ArrayList results = new ArrayList(); + while(result.next()) { + long id = result.getLong(1); + Message message = (Message)wireFormat.unmarshal(new ByteSequence(result.getBytes(2))); + LOG.info("id: " + id + ", message SeqId: " + message.getMessageId().getBrokerSequenceId() + ", MSG: " + message); + results.add(message); + } + statement.close(); + conn.close(); + + return results; + } + + protected BrokerService createBroker() throws Exception { + BrokerService broker = new BrokerService(); + JDBCPersistenceAdapter jdbc = new JDBCPersistenceAdapter(); + EmbeddedDataSource dataSource = new EmbeddedDataSource(); + dataSource.setDatabaseName("derbyDb"); + dataSource.setCreateDatabase("create"); + + DefaultJDBCAdapter adapter = new DefaultJDBCAdapter(); + jdbc.setAdapter(adapter); + + Statements statements = new Statements(); + statements.setTablePrefix("MYPREFIX_"); + jdbc.setStatements(statements); + + jdbc.setUseLock(false); + jdbc.setDataSource(dataSource); + jdbc.deleteAllMessages(); + broker.setPersistenceAdapter(jdbc); + return broker; + } +} Index: activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java =================================================================== --- activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java (revision 0) +++ activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java (working copy) Property changes on: activemq-unit-tests/src/test/java/org/apache/activemq/store/jdbc/JDBCTablePrefixAssignedTest.java ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property