This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit ffe0d1beec83dc8b4832eda509429fc65af4184c Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Aug 5 18:21:56 2020 +0200 CAMEL-15377: camel-jms - Add back transactedInOut option --- .../component/jms/JmsComponentConfigurer.java | 5 ++ .../camel/component/jms/JmsEndpointConfigurer.java | 5 ++ .../org/apache/camel/component/jms/jms.json | 2 + .../camel-jms/src/main/docs/jms-component.adoc | 6 +- .../apache/camel/component/jms/JmsComponent.java | 13 +++- .../camel/component/jms/JmsConfiguration.java | 54 +++++++++++--- .../apache/camel/component/jms/JmsEndpoint.java | 9 ++- .../component/dsl/JmsComponentBuilderFactory.java | 14 ++++ .../endpoint/dsl/JmsEndpointBuilderFactory.java | 82 ++++++++++++++++++++++ 9 files changed, 175 insertions(+), 15 deletions(-) diff --git a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java index 25317da..27b8c29 100644 --- a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java +++ b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsComponentConfigurer.java @@ -193,6 +193,8 @@ public class JmsComponentConfigurer extends PropertyConfigurerSupport implements case "timetolive": case "timeToLive": getOrCreateConfiguration(target).setTimeToLive(property(camelContext, long.class, value)); return true; case "transacted": getOrCreateConfiguration(target).setTransacted(property(camelContext, boolean.class, value)); return true; + case "transactedinout": + case "transactedInOut": getOrCreateConfiguration(target).setTransactedInOut(property(camelContext, boolean.class, value)); return true; case "transactionmanager": case "transactionManager": getOrCreateConfiguration(target).setTransactionManager(property(camelContext, org.springframework.transaction.PlatformTransactionManager.class, value)); return true; case "transactionname": @@ -303,6 +305,7 @@ public class JmsComponentConfigurer extends PropertyConfigurerSupport implements answer.put("testConnectionOnStartup", boolean.class); answer.put("timeToLive", long.class); answer.put("transacted", boolean.class); + answer.put("transactedInOut", boolean.class); answer.put("transactionManager", org.springframework.transaction.PlatformTransactionManager.class); answer.put("transactionName", java.lang.String.class); answer.put("transactionTimeout", int.class); @@ -486,6 +489,8 @@ public class JmsComponentConfigurer extends PropertyConfigurerSupport implements case "timetolive": case "timeToLive": return getOrCreateConfiguration(target).getTimeToLive(); case "transacted": return getOrCreateConfiguration(target).isTransacted(); + case "transactedinout": + case "transactedInOut": return getOrCreateConfiguration(target).isTransactedInOut(); case "transactionmanager": case "transactionManager": return getOrCreateConfiguration(target).getTransactionManager(); case "transactionname": diff --git a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java index f95346c..794ca50 100644 --- a/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java +++ b/components/camel-jms/src/generated/java/org/apache/camel/component/jms/JmsEndpointConfigurer.java @@ -184,6 +184,8 @@ public class JmsEndpointConfigurer extends PropertyConfigurerSupport implements case "timetolive": case "timeToLive": target.getConfiguration().setTimeToLive(property(camelContext, long.class, value)); return true; case "transacted": target.getConfiguration().setTransacted(property(camelContext, boolean.class, value)); return true; + case "transactedinout": + case "transactedInOut": target.getConfiguration().setTransactedInOut(property(camelContext, boolean.class, value)); return true; case "transactionmanager": case "transactionManager": target.getConfiguration().setTransactionManager(property(camelContext, org.springframework.transaction.PlatformTransactionManager.class, value)); return true; case "transactionname": @@ -293,6 +295,7 @@ public class JmsEndpointConfigurer extends PropertyConfigurerSupport implements answer.put("testConnectionOnStartup", boolean.class); answer.put("timeToLive", long.class); answer.put("transacted", boolean.class); + answer.put("transactedInOut", boolean.class); answer.put("transactionManager", org.springframework.transaction.PlatformTransactionManager.class); answer.put("transactionName", java.lang.String.class); answer.put("transactionTimeout", int.class); @@ -474,6 +477,8 @@ public class JmsEndpointConfigurer extends PropertyConfigurerSupport implements case "timetolive": case "timeToLive": return target.getConfiguration().getTimeToLive(); case "transacted": return target.getConfiguration().isTransacted(); + case "transactedinout": + case "transactedInOut": return target.getConfiguration().isTransactedInOut(); case "transactionmanager": case "transactionManager": return target.getConfiguration().getTransactionManager(); case "transactionname": diff --git a/components/camel-jms/src/generated/resources/org/apache/camel/component/jms/jms.json b/components/camel-jms/src/generated/resources/org/apache/camel/component/jms/jms.json index 1a125e1..4f2334d 100644 --- a/components/camel-jms/src/generated/resources/org/apache/camel/component/jms/jms.json +++ b/components/camel-jms/src/generated/resources/org/apache/camel/component/jms/jms.json @@ -113,6 +113,7 @@ "password": { "kind": "property", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, "username": { "kind": "property", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, "transacted": { "kind": "property", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "kind": "property", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode" }, "lazyCreateTransactionManager": { "kind": "property", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is n [...] "transactionManager": { "kind": "property", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, "transactionName": { "kind": "property", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, @@ -211,6 +212,7 @@ "password": { "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Password to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, "username": { "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": true, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Username to use with the ConnectionFactory. You can also configure username\/password directly on the ConnectionFactory." }, "transacted": { "kind": "parameter", "displayName": "Transacted", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether to use transacted mode" }, + "transactedInOut": { "kind": "parameter", "displayName": "Transacted In Out", "group": "transaction", "label": "transaction", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "Specifies whether InOut operations (request reply) default to using transacted mode" }, "lazyCreateTransactionManager": { "kind": "parameter", "displayName": "Lazy Create Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": "true", "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "If true, Camel will create a JmsTransactionManager, if there is [...] "transactionManager": { "kind": "parameter", "displayName": "Transaction Manager", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "object", "javaType": "org.springframework.transaction.PlatformTransactionManager", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The Spring transaction manager to use." }, "transactionName": { "kind": "parameter", "displayName": "Transaction Name", "group": "transaction (advanced)", "label": "transaction,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "secret": false, "configurationClass": "org.apache.camel.component.jms.JmsConfiguration", "configurationField": "configuration", "description": "The name of the transaction to use." }, diff --git a/components/camel-jms/src/main/docs/jms-component.adoc b/components/camel-jms/src/main/docs/jms-component.adoc index bb35dae..b852efb 100644 --- a/components/camel-jms/src/main/docs/jms-component.adoc +++ b/components/camel-jms/src/main/docs/jms-component.adoc @@ -186,7 +186,7 @@ about these properties by consulting the relevant Spring documentation. // component options: START -The JMS component supports 95 options, which are listed below. +The JMS component supports 96 options, which are listed below. @@ -284,6 +284,7 @@ The JMS component supports 95 options, which are listed below. | *password* (security) | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | | String | *username* (security) | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | | String | *transacted* (transaction) | Specifies whether to use transacted mode | false | boolean +| *transactedInOut* (transaction) | Specifies whether InOut operations (request reply) default to using transacted mode | false | boolean | *lazyCreateTransactionManager* (transaction) | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | boolean | *transactionManager* (transaction) | The Spring transaction manager to use. | | PlatformTransactionManager | *transactionName* (transaction) | The name of the transaction to use. | | String @@ -328,7 +329,7 @@ with the following path and query parameters: |=== -=== Query Parameters (94 parameters): +=== Query Parameters (95 parameters): [width="100%",cols="2,5,^1,2",options="header"] @@ -424,6 +425,7 @@ with the following path and query parameters: | *password* (security) | Password to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | | String | *username* (security) | Username to use with the ConnectionFactory. You can also configure username/password directly on the ConnectionFactory. | | String | *transacted* (transaction) | Specifies whether to use transacted mode | false | boolean +| *transactedInOut* (transaction) | Specifies whether InOut operations (request reply) default to using transacted mode | false | boolean | *lazyCreateTransactionManager* (transaction) | If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true. | true | boolean | *transactionManager* (transaction) | The Spring transaction manager to use. | | PlatformTransactionManager | *transactionName* (transaction) | The name of the transaction to use. | | String diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java index 3103a32..a09de14 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsComponent.java @@ -131,6 +131,7 @@ public class JmsComponent extends HeaderFilterStrategyComponent { JmsConfiguration configuration = new JmsConfiguration(connectionFactory); configuration.setTransactionManager(transactionManager); configuration.setTransacted(true); + configuration.setTransactedInOut(true); return jmsComponent(configuration); } @@ -609,8 +610,16 @@ public class JmsComponent extends HeaderFilterStrategyComponent { return configuration.isTransacted(); } - public void setTransacted(boolean consumerTransacted) { - configuration.setTransacted(consumerTransacted); + public void setTransacted(boolean transacted) { + configuration.setTransacted(transacted); + } + + public boolean isTransactedInOut() { + return configuration.isTransactedInOut(); + } + + public void setTransactedInOut(boolean transacted) { + configuration.setTransactedInOut(transacted); } public boolean isLazyCreateTransactionManager() { diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java index 04851e9..504e55b 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java @@ -248,6 +248,9 @@ public class JmsConfiguration implements Cloneable { @UriParam(label = "transaction", description = "Specifies whether to use transacted mode") private boolean transacted; + @UriParam(label = "transaction", + description = "Specifies whether InOut operations (request reply) default to using transacted mode") + private boolean transactedInOut; @UriParam(defaultValue = "true", label = "transaction,advanced", description = "If true, Camel will create a JmsTransactionManager, if there is no transactionManager injected when option transacted=true.") private boolean lazyCreateTransactionManager = true; @@ -644,13 +647,18 @@ public class JmsConfiguration implements Cloneable { jmsTemplate.setTimeToLive(ttl); } - if (acknowledgementMode >= 0) { - jmsTemplate.setSessionAcknowledgeMode(acknowledgementMode); - } else if (acknowledgementModeName != null) { - jmsTemplate.setSessionAcknowledgeModeName(acknowledgementModeName); + jmsTemplate.setSessionTransacted(transactedInOut); + if (transactedInOut) { + jmsTemplate.setSessionAcknowledgeMode(Session.SESSION_TRANSACTED); } else { - // default to AUTO - jmsTemplate.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); + if (acknowledgementMode >= 0) { + jmsTemplate.setSessionAcknowledgeMode(acknowledgementMode); + } else if (acknowledgementModeName != null) { + jmsTemplate.setSessionAcknowledgeModeName(acknowledgementModeName); + } else { + // default to AUTO + jmsTemplate.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE); + } } } return answer; @@ -1362,8 +1370,36 @@ public class JmsConfiguration implements Cloneable { /** * Specifies whether to use transacted mode */ - public void setTransacted(boolean consumerTransacted) { - this.transacted = consumerTransacted; + public void setTransacted(boolean transacted) { + this.transacted = transacted; + } + + /** + * Specifies whether InOut operations (request reply) default to using transacted mode. + * + * If this flag is set to true, then Spring JmsTemplate will have + * sessionTransacted set to true, and the acknowledgeMode as transacted + * on the JmsTemplate used for InOut operations. + * + * Note from Spring JMS: that within a JTA transaction, the parameters passed to + * createQueue, createTopic methods are not taken into account. Depending on the Java EE transaction context, + * the container makes its own decisions on these values. Analogously, these + * parameters are not taken into account within a locally managed transaction + * either, since Spring JMS operates on an existing JMS Session in this case. + * <p>Setting this flag to true will use a short local JMS transaction + * when running outside of a managed transaction, and a synchronized local + * JMS transaction in case of a managed transaction (other than an XA + * transaction) being present. This has the effect of a local JMS + * transaction being managed alongside the main transaction (which might + * be a native JDBC transaction), with the JMS transaction committing + * right after the main transaction. + */ + public boolean isTransactedInOut() { + return transactedInOut; + } + + public void setTransactedInOut(boolean transactedInOut) { + this.transactedInOut = transactedInOut; } public boolean isLazyCreateTransactionManager() { @@ -1382,7 +1418,7 @@ public class JmsConfiguration implements Cloneable { } /** - * If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) (cannot be read/mapped), + * If eagerLoadingOfProperties is enabled and the JMS message payload (JMS body or JMS properties) cannot be read/mapped, * then set this text as the message body instead so the message can be processed * (the cause of the poison are already stored as exception on the Exchange). * This can be turned off by setting eagerPoisonBody=false. diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java index 76e2c10..448d570 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java @@ -761,6 +761,11 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade } @ManagedAttribute + public boolean isTransactedInOut() { + return getConfiguration().isTransactedInOut(); + } + + @ManagedAttribute public boolean isLazyCreateTransactionManager() { return getConfiguration().isLazyCreateTransactionManager(); } @@ -1002,8 +1007,8 @@ public class JmsEndpoint extends DefaultEndpoint implements AsyncEndpoint, Heade } @ManagedAttribute - public void setTransacted(boolean consumerTransacted) { - getConfiguration().setTransacted(consumerTransacted); + public void setTransacted(boolean transacted) { + getConfiguration().setTransacted(transacted); } @ManagedAttribute diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java index c41437a..5ec686d 100644 --- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java +++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/JmsComponentBuilderFactory.java @@ -1499,6 +1499,19 @@ public interface JmsComponentBuilderFactory { return this; } /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsComponentBuilder transactedInOut(boolean transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } + /** * If true, Camel will create a JmsTransactionManager, if there is no * transactionManager injected when option transacted=true. * @@ -1665,6 +1678,7 @@ public interface JmsComponentBuilderFactory { case "password": getOrCreateConfiguration((JmsComponent) component).setPassword((java.lang.String) value); return true; case "username": getOrCreateConfiguration((JmsComponent) component).setUsername((java.lang.String) value); return true; case "transacted": getOrCreateConfiguration((JmsComponent) component).setTransacted((boolean) value); return true; + case "transactedInOut": getOrCreateConfiguration((JmsComponent) component).setTransactedInOut((boolean) value); return true; case "lazyCreateTransactionManager": getOrCreateConfiguration((JmsComponent) component).setLazyCreateTransactionManager((boolean) value); return true; case "transactionManager": getOrCreateConfiguration((JmsComponent) component).setTransactionManager((org.springframework.transaction.PlatformTransactionManager) value); return true; case "transactionName": getOrCreateConfiguration((JmsComponent) component).setTransactionName((java.lang.String) value); return true; diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java index 222fc25..8513812 100644 --- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java +++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/JmsEndpointBuilderFactory.java @@ -651,6 +651,34 @@ public interface JmsEndpointBuilderFactory { doSetProperty("transacted", transacted); return this; } + /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsEndpointConsumerBuilder transactedInOut( + boolean transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } + /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option will be converted to a <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsEndpointConsumerBuilder transactedInOut( + String transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } } /** @@ -2774,6 +2802,34 @@ public interface JmsEndpointBuilderFactory { doSetProperty("transacted", transacted); return this; } + /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsEndpointProducerBuilder transactedInOut( + boolean transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } + /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option will be converted to a <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsEndpointProducerBuilder transactedInOut( + String transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } } /** @@ -4347,6 +4403,32 @@ public interface JmsEndpointBuilderFactory { doSetProperty("transacted", transacted); return this; } + /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsEndpointBuilder transactedInOut(boolean transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } + /** + * Specifies whether InOut operations (request reply) default to using + * transacted mode. + * + * The option will be converted to a <code>boolean</code> type. + * + * Default: false + * Group: transaction + */ + default JmsEndpointBuilder transactedInOut(String transactedInOut) { + doSetProperty("transactedInOut", transactedInOut); + return this; + } } /**