You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ay...@apache.org on 2012/04/20 11:06:16 UTC

svn commit: r1328266 - in /cxf/branches/2.5.x-fixes: ./ rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/ rt/ws/rm/src/main/resources/schemas/configuration/ rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/

Author: ay
Date: Fri Apr 20 09:06:16 2012
New Revision: 1328266

URL: http://svn.apache.org/viewvc?rev=1328266&view=rev
Log:
Merged revisions 1327984 via  svn merge from
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1327984 | ay | 2012-04-19 17:13:29 +0200 (Thu, 19 Apr 2012) | 1 line
  
  [CXF-4249] Make RMTxStore's current schema name to be configurable
........

Added:
    cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java
      - copied, changed from r1327984, cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java
Modified:
    cxf/branches/2.5.x-fixes/   (props changed)
    cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
    cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd
    cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java

Propchange: cxf/branches/2.5.x-fixes/
            ('svn:mergeinfo' removed)

Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java?rev=1328266&r1=1328265&r2=1328266&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java (original)
+++ cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStore.java Fri Apr 20 09:06:16 2012
@@ -37,6 +37,7 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import java.util.regex.Pattern;
 
 import javax.annotation.PostConstruct;
 
@@ -117,6 +118,9 @@ public class RMTxStore implements RMStor
     private static final String SELECT_MESSAGES_STMT_STR =
         "SELECT MSG_NO, SEND_TO, CONTENT FROM {0} WHERE SEQ_ID = ?";
     
+    private static final String CREATE_SCHEMA_STMT_STR = "CREATE SCHEMA {0}";
+    private static final String SET_CURRENT_SCHEMA_STMT_STR = "SET CURRENT SCHEMA {0}";
+    
     private static final String DERBY_TABLE_EXISTS_STATE = "X0Y32";
     private static final int ORACLE_TABLE_EXISTS_CODE = 955;
     
@@ -146,6 +150,7 @@ public class RMTxStore implements RMStor
     private String url = MessageFormat.format("jdbc:derby:{0};create=true", DEFAULT_DATABASE_NAME);
     private String userName;
     private String password;
+    private String schemaName;
     
     private String tableExistsState = DERBY_TABLE_EXISTS_STATE;
     private int tableExistsCode = ORACLE_TABLE_EXISTS_CODE;
@@ -184,6 +189,18 @@ public class RMTxStore implements RMStor
         return userName;
     }
     
+    public String getSchemaName() {
+        return schemaName;
+    }
+
+    public void setSchemaName(String sn) {
+        if (sn == null || Pattern.matches("[a-zA-Z\\d]{1,32}", sn)) {
+            schemaName = sn;
+        } else {
+            throw new IllegalArgumentException("Invalid schema name: " + sn);
+        }
+    }
+
     public String getTableExistsState() {
         return tableExistsState;
     }
@@ -666,6 +683,30 @@ public class RMTxStore implements RMStor
         }
     }
     
+    protected void setCurrentSchema() throws SQLException {
+        if (schemaName == null || connection == null) {
+            return;
+        }
+        
+        Statement stmt = connection.createStatement();
+        // schemaName has been verified at setSchemaName(String)
+        try {
+            stmt.executeUpdate(MessageFormat.format(CREATE_SCHEMA_STMT_STR, 
+                                                    schemaName));
+        } catch (SQLException ex) {
+            // pass through to assume it is already created
+        }
+        stmt.close();
+        stmt = connection.createStatement();
+        try {
+            stmt.executeUpdate(MessageFormat.format(SET_CURRENT_SCHEMA_STMT_STR, 
+                                                    schemaName));
+        } catch (SQLException ex) {
+            throw ex;
+        }
+        stmt.close();
+    }
+
     @PostConstruct     
     public synchronized void init() {
         
@@ -684,7 +725,6 @@ public class RMTxStore implements RMStor
             try {
                 LOG.log(Level.FINE, "Using url: " + url);
                 connection = DriverManager.getConnection(url, userName, password);
-    
             } catch (SQLException ex) {
                 LogUtils.log(LOG, Level.SEVERE, "CONNECT_EXC", ex);
                 return;
@@ -693,6 +733,7 @@ public class RMTxStore implements RMStor
         
         try {
             connection.setAutoCommit(true);
+            setCurrentSchema();
             createTables();
         } catch (SQLException ex) {
             LogUtils.log(LOG, Level.SEVERE, "CONNECT_EXC", ex);

Modified: cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd?rev=1328266&r1=1328265&r2=1328266&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd (original)
+++ cxf/branches/2.5.x-fixes/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd Fri Apr 20 09:06:16 2012
@@ -168,6 +168,13 @@
               </xs:documentation>
             </xs:annotation>
           </xs:attribute>
+           <xs:attribute name="schemaName" type="xs:string">
+            <xs:annotation>
+              <xs:documentation>
+                  The default schema name.          
+              </xs:documentation>
+            </xs:annotation>
+          </xs:attribute>
         </xs:extension>
       </xs:complexContent>
     </xs:complexType>

Modified: cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java?rev=1328266&r1=1328265&r2=1328266&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java (original)
+++ cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java Fri Apr 20 09:06:16 2012
@@ -46,6 +46,7 @@ public class RMTxStoreConfigurationTest 
         assertEquals("scott", store.getUserName());
         assertEquals("tiger", store.getPassword());
         assertEquals("jdbc:derby://localhost:1527/rmdb;create=true", store.getUrl());
+        assertNull("schema should be unset", store.getSchemaName());
     }
    
     @Test

Copied: cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java (from r1327984, cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java)
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java?p2=cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java&p1=cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java&r1=1327984&r2=1328266&rev=1328266&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java (original)
+++ cxf/branches/2.5.x-fixes/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreTwoSchemasTest.java Fri Apr 20 09:06:16 2012
@@ -95,16 +95,17 @@ public class RMTxStoreTwoSchemasTest ext
         EasyMock.expect(seq.getExpires()).andReturn(null);
         EasyMock.expect(seq.getOfferingSequenceIdentifier()).andReturn(null);
         EasyMock.expect(seq.getEndpointIdentifier()).andReturn(CLIENT_ENDPOINT_ID);
-        EasyMock.expect(seq.getProtocol()).andReturn(ProtocolVariation.RM10WSA200408);
+        // for 2.5.x, this is not called
+//        EasyMock.expect(seq.getProtocol()).andReturn(ProtocolVariation.RM10WSA200408);
         
         control.replay();
         store1.createSourceSequence(seq);   
         control.verify();        
         
-        SourceSequence rseq = store1.getSourceSequence(sid1);
+        SourceSequence rseq = store1.getSourceSequence(sid1, ProtocolVariation.RM10WSA200408);
         assertNotNull(rseq);
         
-        rseq = store2.getSourceSequence(sid1);
+        rseq = store2.getSourceSequence(sid1, ProtocolVariation.RM10WSA200408);
         assertNull(rseq);
         
         control.reset();
@@ -112,27 +113,28 @@ public class RMTxStoreTwoSchemasTest ext
         EasyMock.expect(seq.getExpires()).andReturn(null);
         EasyMock.expect(seq.getOfferingSequenceIdentifier()).andReturn(null);
         EasyMock.expect(seq.getEndpointIdentifier()).andReturn(CLIENT_ENDPOINT_ID);
-        EasyMock.expect(seq.getProtocol()).andReturn(ProtocolVariation.RM10WSA200408);
+        // for 2.5.x, this is not called
+//        EasyMock.expect(seq.getProtocol()).andReturn(ProtocolVariation.RM10WSA200408);
         
         control.replay();
         store2.createSourceSequence(seq);   
         control.verify();
         
-        rseq = store2.getSourceSequence(sid1);
+        rseq = store2.getSourceSequence(sid1, ProtocolVariation.RM10WSA200408);
         assertNotNull(rseq);
  
         // create another store
         RMTxStore store3 = createStore(null);
         store3.init();
 
-        rseq = store3.getSourceSequence(sid1);
+        rseq = store3.getSourceSequence(sid1, ProtocolVariation.RM10WSA200408);
         assertNull(rseq);
 
         // switch to the store1's schema
         store3.setSchemaName(store1.getSchemaName());
         store3.init();
         
-        rseq = store3.getSourceSequence(sid1);
+        rseq = store3.getSourceSequence(sid1, ProtocolVariation.RM10WSA200408);
         assertNotNull(rseq);
     }
 }
\ No newline at end of file