Repository: camel Updated Branches: refs/heads/camel-2.18.x 7b8fcccfa -> 1bb5a07d9
CAMEL-10644 - Camel-MongoDB: component should not store state Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/1bb5a07d Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/1bb5a07d Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/1bb5a07d Branch: refs/heads/camel-2.18.x Commit: 1bb5a07d9ebe486b765362224d956fae791e5110 Parents: 7b8fccc Author: Andrea Cosentino <[email protected]> Authored: Thu Dec 22 15:26:35 2016 +0100 Committer: Andrea Cosentino <[email protected]> Committed: Thu Dec 22 16:02:11 2016 +0100 ---------------------------------------------------------------------- .../component/mongodb/MongoDbComponent.java | 20 ------------------- .../component/mongodb/MongoDbEndpoint.java | 21 +++++++++++++------- 2 files changed, 14 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/1bb5a07d/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbComponent.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbComponent.java index 0315890..e2e8fee 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbComponent.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbComponent.java @@ -21,12 +21,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import com.mongodb.Mongo; -import com.mongodb.MongoClient; - import org.apache.camel.Endpoint; import org.apache.camel.impl.UriEndpointComponent; -import org.apache.camel.util.CamelContextHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,25 +35,15 @@ public class MongoDbComponent extends UriEndpointComponent { new HashSet<MongoDbOperation>(Arrays.asList(MongoDbOperation.insert, MongoDbOperation.save, MongoDbOperation.update, MongoDbOperation.remove)); private static final Logger LOG = LoggerFactory.getLogger(MongoDbComponent.class); - private volatile MongoClient db; public MongoDbComponent() { super(MongoDbEndpoint.class); } - /** - * Should access a singleton of type Mongo - */ protected Endpoint createEndpoint(String uri, String remaining, Map<String, Object> parameters) throws Exception { - // TODO: this only supports one mongodb - if (db == null) { - db = CamelContextHelper.mandatoryLookup(getCamelContext(), remaining, MongoClient.class); - LOG.debug("Resolved the connection with the name {} as {}", remaining, db); - } MongoDbEndpoint endpoint = new MongoDbEndpoint(uri, this); endpoint.setConnectionBean(remaining); - endpoint.setMongoConnection(db); setProperties(endpoint, parameters); return endpoint; @@ -65,12 +51,6 @@ public class MongoDbComponent extends UriEndpointComponent { @Override protected void doShutdown() throws Exception { - if (db != null) { - // properly close the underlying physical connection to MongoDB - LOG.debug("Closing the connection {} on {}", db, this); - db.close(); - } - super.doShutdown(); } http://git-wip-us.apache.org/repos/asf/camel/blob/1bb5a07d/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java index db56afe..c2f94bd 100644 --- a/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java +++ b/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbEndpoint.java @@ -38,11 +38,13 @@ import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.component.ResourceEndpoint; import org.apache.camel.impl.DefaultEndpoint; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; +import org.apache.camel.util.CamelContextHelper; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -56,7 +58,7 @@ public class MongoDbEndpoint extends DefaultEndpoint { private static final Logger LOG = LoggerFactory.getLogger(MongoDbEndpoint.class); private MongoClient mongoConnection; - + @UriPath @Metadata(required = "true") private String connectionBean; @UriParam @@ -113,11 +115,6 @@ public class MongoDbEndpoint extends DefaultEndpoint { super(uri, component); } - @SuppressWarnings("deprecation") - public MongoDbEndpoint(String endpointUri) { - super(endpointUri); - } - // ======= Implementation methods ===================================== public Producer createProducer() throws Exception { @@ -288,10 +285,20 @@ public class MongoDbEndpoint extends DefaultEndpoint { + ", " + writeConcernRef + ". Aborting initialization."; throw new IllegalArgumentException(msg); } - + mongoConnection = CamelContextHelper.mandatoryLookup(getCamelContext(), connectionBean, MongoClient.class); + LOG.debug("Resolved the connection with the name {} as {}", connectionBean, mongoConnection); setWriteReadOptionsOnConnection(); super.doStart(); } + + @Override + protected void doStop() throws Exception { + super.doStop(); + if (mongoConnection != null) { + LOG.debug("Closing connection"); + mongoConnection.close(); + } + } public Exchange createMongoDbExchange(DBObject dbObj) { Exchange exchange = super.createExchange();
