Fixes ##22217

bug_22369 r5.5.0
Fabio Sinibaldi 3 years ago
parent dd2c3c64cd
commit 86c1fed263

@ -5,6 +5,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
## [v1.0.6] 2021-09-20 ## [v1.0.6] 2021-09-20
Refactored repositories Refactored repositories
Fixes #22193 Fixes #22193
Fixes #22217
## [v1.0.5-SNAPSHOT] 2021-07-23 ## [v1.0.5-SNAPSHOT] 2021-07-23
Upgrade to gcube-smartgears-bom 2.1.0 Upgrade to gcube-smartgears-bom 2.1.0

@ -57,7 +57,11 @@ public class ConcessioniMongoManager extends MongoManager{
@Synchronized @Synchronized
protected MongoDatabase getDatabase() { protected MongoDatabase getDatabase() {
if(db==null) { if(db==null) {
db=client.getDatabase(DB_NAME); String toUseDB=super.client.getConnection().getDatabase();
log.info("Connecting to DB {} ",toUseDB);
// TODO MAP OF DATABASES?
db=client.getTheClient().getDatabase(toUseDB);
} }
return db; return db;
} }

@ -14,6 +14,7 @@ import org.bson.Document;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.gcube.application.geoportal.common.model.rest.QueryRequest; import org.gcube.application.geoportal.common.model.rest.QueryRequest;
import org.gcube.application.geoportal.service.engine.ImplementationProvider; import org.gcube.application.geoportal.service.engine.ImplementationProvider;
import org.gcube.application.geoportal.service.model.internal.db.Mongo;
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException; import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
import static com.mongodb.client.model.Filters.eq; import static com.mongodb.client.model.Filters.eq;
@ -23,7 +24,8 @@ import static com.mongodb.client.model.Sorts.descending;
@Slf4j @Slf4j
public abstract class MongoManager { public abstract class MongoManager {
protected MongoClient client=null;
protected Mongo client=null;
protected static final String ID="_id"; protected static final String ID="_id";
@ -36,13 +38,8 @@ public abstract class MongoManager {
public MongoManager() throws ConfigurationException { public MongoManager() throws ConfigurationException {
client=ImplementationProvider.get().getMongoClientProvider().getObject(); client=ImplementationProvider.get().getMongoClientProvider().getObject();
log.info("Got Mongo Client at "+client.getConnectPoint()); log.info("Got Mongo Client at "+client.getConnection());
log.debug("Mongo client is "+client); log.debug("Mongo client is "+client);
// NOT AUTHORIZED
// log.debug("Existing databases "+client.getDatabaseNames());
} }

@ -1,18 +1,14 @@
package org.gcube.application.geoportal.service.engine.providers; package org.gcube.application.geoportal.service.engine.providers;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.gcube.application.geoportal.service.ServiceConstants; import org.gcube.application.geoportal.service.ServiceConstants;
import org.gcube.application.geoportal.service.engine.ImplementationProvider; import org.gcube.application.geoportal.service.engine.ImplementationProvider;
import org.gcube.application.geoportal.service.model.internal.db.Mongo;
import org.gcube.application.geoportal.service.model.internal.db.MongoConnection; import org.gcube.application.geoportal.service.model.internal.db.MongoConnection;
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException; import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
import org.gcube.application.geoportal.service.utils.ISUtils;
@Slf4j @Slf4j
public class MongoClientProvider extends AbstractScopedMap<MongoClient>{ public class MongoClientProvider extends AbstractScopedMap<Mongo>{
public MongoClientProvider() { public MongoClientProvider() {
super("MongoClient cache"); super("MongoClient cache");
@ -21,32 +17,17 @@ public class MongoClientProvider extends AbstractScopedMap<MongoClient>{
} }
@Override @Override
protected MongoClient retrieveObject() throws ConfigurationException { protected Mongo retrieveObject() throws ConfigurationException {
MongoConnection conn=ImplementationProvider.get(). MongoConnection conn=ImplementationProvider.get().
getIsProvider().getIS().queryForMongoDB( getIsProvider().getIS().queryForMongoDB(
ServiceConstants.MONGO_SE_PLATFORM, ServiceConstants.MONGO_SE_GNA_FLAG); ServiceConstants.MONGO_SE_PLATFORM, ServiceConstants.MONGO_SE_GNA_FLAG);
log.debug("Connecting to "+conn); log.debug("Connecting to "+conn);
return new Mongo(conn);
MongoCredential credential = MongoCredential.createCredential(conn.getUser(), conn.getDatabase(),
conn.getPassword().toCharArray());
MongoClientOptions options = MongoClientOptions.builder().
threadsAllowedToBlockForConnectionMultiplier(10).
connectionsPerHost(20).
maxConnectionIdleTime(10000).
applicationName("geoportal-service").
sslEnabled(true).
connectTimeout(30000).
build();
return new MongoClient(new ServerAddress(conn.getHosts().get(0),conn.getPort()),
credential,
options);
} }
@Override @Override
protected void dispose(MongoClient toDispose) { protected void dispose(Mongo toDispose) {
toDispose.close(); toDispose.close();
} }

@ -0,0 +1,41 @@
package org.gcube.application.geoportal.service.model.internal.db;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import lombok.Getter;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@ToString
public class Mongo {
@Getter
private MongoClient theClient = null;
@Getter
private MongoConnection connection = null;
public Mongo(MongoConnection conn) {
connection = conn;
MongoCredential credential = MongoCredential.createCredential(conn.getUser(), conn.getDatabase(),
conn.getPassword().toCharArray());
MongoClientOptions options = MongoClientOptions.builder().
threadsAllowedToBlockForConnectionMultiplier(10).
connectionsPerHost(20).
maxConnectionIdleTime(10000).
applicationName("geoportal-service").
sslEnabled(true).
connectTimeout(30000).
build();
theClient = new MongoClient(new ServerAddress(conn.getHosts().get(0), conn.getPort()),
credential,
options);
}
public void close() {
theClient.close();
}
}

@ -11,6 +11,7 @@ import org.gcube.application.cms.tests.TokenSetter;
import org.gcube.application.geoportal.service.engine.ImplementationProvider; import org.gcube.application.geoportal.service.engine.ImplementationProvider;
import org.gcube.application.geoportal.service.engine.mongo.MongoManager; import org.gcube.application.geoportal.service.engine.mongo.MongoManager;
import org.gcube.application.geoportal.service.engine.providers.MongoClientProvider; import org.gcube.application.geoportal.service.engine.providers.MongoClientProvider;
import org.gcube.application.geoportal.service.model.internal.db.Mongo;
import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException; import org.gcube.application.geoportal.service.model.internal.faults.ConfigurationException;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
@ -28,7 +29,7 @@ public class MongoTests {
@Override @Override
protected MongoDatabase getDatabase() { protected MongoDatabase getDatabase() {
return client.getDatabase("gna_dev"); return client.getTheClient().getDatabase("gna_dev");
} }
} }
@ -37,7 +38,7 @@ public class MongoTests {
public static final void init() { public static final void init() {
ImplementationProvider.get().setMongoClientProvider(new MongoClientProvider() { ImplementationProvider.get().setMongoClientProvider(new MongoClientProvider() {
@Override @Override
public MongoClient getObject() throws ConfigurationException { public Mongo getObject() throws ConfigurationException {
TokenSetter.set("/gcube/devsec/devVRE"); TokenSetter.set("/gcube/devsec/devVRE");
return super.getObject(); return super.getObject();
} }

Loading…
Cancel
Save