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/05/02 10:47:15 UTC
svn commit: r1332956 - in /cxf/trunk/rt/ws/rm/src:
main/java/org/apache/cxf/ws/rm/blueprint/
main/java/org/apache/cxf/ws/rm/spring/ main/resources/schemas/configuration/
test/java/org/apache/cxf/ws/rm/persistence/jdbc/
Author: ay
Date: Wed May 2 08:47:14 2012
New Revision: 1332956
URL: http://svn.apache.org/viewvc?rev=1332956&view=rev
Log:
[CXF-4282] Make additional properties of WS-RM's RMTxStore configurable using spring and bluepring handlers
Added:
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPTxStoreBeanDefinitionParser.java (with props)
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-custom-error-bean2.xml (with props)
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean2.xml (with props)
Modified:
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPHandler.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMTxStoreBeanDefinitionParser.java
cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd
cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPHandler.java?rev=1332956&r1=1332955&r2=1332956&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPHandler.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPHandler.java Wed May 2 08:47:14 2012
@@ -25,10 +25,8 @@ import org.w3c.dom.Node;
import org.apache.aries.blueprint.NamespaceHandler;
import org.apache.aries.blueprint.ParserContext;
-import org.apache.cxf.configuration.blueprint.SimpleBPBeanDefinitionParser;
import org.apache.cxf.ws.rm.RMManager;
import org.apache.cxf.ws.rm.feature.RMFeature;
-import org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore;
import org.osgi.service.blueprint.reflect.ComponentMetadata;
import org.osgi.service.blueprint.reflect.Metadata;
@@ -60,7 +58,7 @@ public class RMBPHandler implements Name
} else if ("rmManager".equals(s)) {
return new RMBPBeanDefinitionParser(RMManager.class).parse(element, context);
} else if ("jdbcStore".equals(s)) {
- return new SimpleBPBeanDefinitionParser(RMTxStore.class).parse(element, context);
+ return new RMBPTxStoreBeanDefinitionParser().parse(element, context);
}
return null;
Added: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPTxStoreBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPTxStoreBeanDefinitionParser.java?rev=1332956&view=auto
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPTxStoreBeanDefinitionParser.java (added)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPTxStoreBeanDefinitionParser.java Wed May 2 08:47:14 2012
@@ -0,0 +1,52 @@
+/**
+ * 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.cxf.ws.rm.blueprint;
+
+import org.w3c.dom.Element;
+
+import org.apache.aries.blueprint.ParserContext;
+import org.apache.aries.blueprint.mutable.MutableBeanMetadata;
+import org.apache.cxf.configuration.blueprint.SimpleBPBeanDefinitionParser;
+import org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore;
+
+/**
+ * This class provides some common functions used by the two BP TxStore bean definition parsers
+ * in this package.
+ *
+ */
+public class RMBPTxStoreBeanDefinitionParser extends SimpleBPBeanDefinitionParser {
+
+ public RMBPTxStoreBeanDefinitionParser() {
+ super(RMTxStore.class);
+ }
+
+ @Override
+ protected void mapAttribute(MutableBeanMetadata bean, Element e, String name, String val,
+ ParserContext context) {
+ if ("dataSource".equals(name)) {
+ if (val != null && val.trim().length() > 0) {
+ bean.addProperty("dataSource", createRef(context, val));
+ }
+ } else {
+ super.mapAttribute(bean, e, name, val, context);
+ }
+ }
+
+}
Propchange: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/blueprint/RMBPTxStoreBeanDefinitionParser.java
------------------------------------------------------------------------------
svn:executable = *
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMTxStoreBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMTxStoreBeanDefinitionParser.java?rev=1332956&r1=1332955&r2=1332956&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMTxStoreBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/spring/RMTxStoreBeanDefinitionParser.java Wed May 2 08:47:14 2012
@@ -22,10 +22,22 @@ import org.w3c.dom.Element;
import org.apache.cxf.configuration.spring.AbstractBeanDefinitionParser;
import org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
public class RMTxStoreBeanDefinitionParser extends AbstractBeanDefinitionParser {
@Override
+ protected void mapAttribute(BeanDefinitionBuilder bean, Element e, String name, String val) {
+ if ("dataSource".equals(name)) {
+ if (val != null && val.trim().length() > 0) {
+ bean.addPropertyReference("dataSource", val);
+ }
+ } else {
+ super.mapAttribute(bean, e, name, val);
+ }
+ }
+
+ @Override
protected Class<?> getBeanClass(Element element) {
return RMTxStore.class;
}
Modified: cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd?rev=1332956&r1=1332955&r2=1332956&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd (original)
+++ cxf/trunk/rt/ws/rm/src/main/resources/schemas/configuration/wsrm-manager.xsd Wed May 2 08:47:14 2012
@@ -147,6 +147,13 @@
</xs:documentation>
</xs:annotation>
</xs:attribute>
+ <xs:attribute name="dataSource" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ The optional datasource reference to be used.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
<xs:attribute name="url" type="xs:string" default="jdbc:derby:rmdb;create=true">
<xs:annotation>
<xs:documentation>
@@ -154,24 +161,38 @@
</xs:documentation>
</xs:annotation>
</xs:attribute>
- <xs:attribute name="userName" type="xs:string">
+ <xs:attribute name="userName" type="xs:string">
<xs:annotation>
<xs:documentation>
- The username.
+ The username.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="password" type="xs:string">
<xs:annotation>
<xs:documentation>
- The password.
+ The password.
+ </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:attribute name="tableExistsState" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ The SQL state to verify a vendor specific table-exists condition.
</xs:documentation>
</xs:annotation>
</xs:attribute>
- <xs:attribute name="schemaName" type="xs:string">
+ <xs:attribute name="tableExistsCode" type="xs:int">
<xs:annotation>
<xs:documentation>
- The default schema name.
+ The SQL error code to verify a vendor specific table-exists condition.
</xs:documentation>
</xs:annotation>
</xs:attribute>
Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java?rev=1332956&r1=1332955&r2=1332956&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/RMTxStoreConfigurationTest.java Wed May 2 08:47:14 2012
@@ -68,6 +68,19 @@ public class RMTxStoreConfigurationTest
}
@Test
+ public void testSetCustomTableExistsState2() {
+ SpringBusFactory factory = new SpringBusFactory();
+ Bus bus = factory.createBus("org/apache/cxf/ws/rm/persistence/jdbc/txstore-custom-error-bean2.xml");
+ RMManager manager = bus.getExtension(RMManager.class);
+ assertNotNull(manager);
+ RMTxStore store = (RMTxStore)manager.getStore();
+
+ assertTrue(store.isTableExistsError(new SQLException("Table exists", "I6000", 288)));
+
+ assertFalse(store.isTableExistsError(new SQLException("Unknown error", "00000", -1)));
+ }
+
+ @Test
public void testTxStoreWithDataSource() {
SpringBusFactory factory = new SpringBusFactory();
Bus bus = factory.createBus("org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean.xml");
@@ -80,6 +93,19 @@ public class RMTxStoreConfigurationTest
assertNull(store.getConnection());
}
+ @Test
+ public void testTxStoreWithDataSource2() {
+ SpringBusFactory factory = new SpringBusFactory();
+ Bus bus = factory.createBus("org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean2.xml");
+ RMManager manager = bus.getExtension(RMManager.class);
+ assertNotNull(manager);
+ RMTxStore store = (RMTxStore)manager.getStore();
+
+ assertNotNull(store.getDataSource());
+
+ assertNull(store.getConnection());
+ }
+
static class TestDataSource implements DataSource {
public PrintWriter getLogWriter() throws SQLException {
return null;
Added: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-custom-error-bean2.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-custom-error-bean2.xml?rev=1332956&view=auto
==============================================================================
Binary file - no diff available.
Propchange: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-custom-error-bean2.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-custom-error-bean2.xml
------------------------------------------------------------------------------
svn:mime-type = application/xml
Added: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean2.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean2.xml?rev=1332956&view=auto
==============================================================================
Binary file - no diff available.
Propchange: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean2.xml
------------------------------------------------------------------------------
svn:executable = *
Propchange: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/persistence/jdbc/txstore-ds-bean2.xml
------------------------------------------------------------------------------
svn:mime-type = application/xml