Fixes ##22217
This commit is contained in:
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…
Reference in New Issue