Skip to content

Commit

Permalink
TEIID-4781 squashed commit of the original upgrade
Browse files Browse the repository at this point in the history
  • Loading branch information
shawkins committed Mar 20, 2018
1 parent 21027cf commit acd835e
Show file tree
Hide file tree
Showing 11 changed files with 72 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -211,11 +211,7 @@ protected List<ServerAddress> getServers() throws ResourceException {
if (idx < 0) {
throw new InvalidPropertyException(UTIL.getString("no_database")); //$NON-NLS-1$
}
try {
addresses.add(new ServerAddress(token.substring(0, idx), Integer.valueOf(token.substring(idx+1))));
} catch(UnknownHostException e) {
throw new ResourceException(e);
}
addresses.add(new ServerAddress(token.substring(0, idx), Integer.valueOf(token.substring(idx+1))));
}
return addresses;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ public void setName(String name) {
public DBRef getDBRef(DB db, boolean push) {
if (this.id != null) {
if (this.idReference != null) {
return new DBRef(db, push?this.parentTable:this.embeddedTable, new DBRef(db, this.idReference, this.id.getValue()));
return new DBRef(db.getName(), push?this.parentTable:this.embeddedTable, new DBRef(db.getName(), this.idReference, this.id.getValue()));
}
return new DBRef(db, push?this.parentTable:this.embeddedTable, this.id.getValue());
return new DBRef(db.getName(), push?this.parentTable:this.embeddedTable, this.id.getValue());
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,8 @@ public void substitute(Argument arg, StringBuilder builder, int index) {
}
else if (result instanceof WriteResult) {
WriteResult wr = (WriteResult)result;
if (wr.getError() != null) {
throw new TranslatorException(wr.getError());
if(!wr.wasAcknowledged()) { //throw error for unacknowledged write
throw new TranslatorException(wr.toString());
}
}
} catch (NoSuchMethodException e) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,31 @@
import java.sql.Clob;
import java.sql.SQLException;
import java.sql.SQLXML;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;

import javax.resource.cci.ConnectionFactory;

import org.bson.types.Binary;
import org.teiid.core.types.*;
import org.teiid.language.*;
import org.teiid.core.types.BinaryType;
import org.teiid.core.types.BlobImpl;
import org.teiid.core.types.ClobImpl;
import org.teiid.core.types.DataTypeManager;
import org.teiid.core.types.InputStreamFactory;
import org.teiid.core.types.SQLXMLImpl;
import org.teiid.core.types.Transform;
import org.teiid.core.types.TransformationException;
import org.teiid.language.Argument;
import org.teiid.language.Call;
import org.teiid.language.Command;
import org.teiid.language.Expression;
import org.teiid.language.Function;
import org.teiid.language.LanguageFactory;
import org.teiid.language.QueryExpression;
import org.teiid.language.visitor.SQLStringVisitor;
import org.teiid.metadata.FunctionMethod;
import org.teiid.metadata.RuntimeMetadata;
Expand All @@ -45,7 +63,11 @@
import org.teiid.translator.jdbc.AliasModifier;
import org.teiid.translator.jdbc.FunctionModifier;

import com.mongodb.*;
import com.mongodb.AggregationOptions;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBRef;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
Expand Down Expand Up @@ -516,7 +538,7 @@ else if (value instanceof BasicDBList) {
}
else if (value instanceof org.bson.types.ObjectId) {
org.bson.types.ObjectId id = (org.bson.types.ObjectId) value;
value = id.toStringBabble();
value = id.toHexString();
}
else {
Transform transform = DataTypeManager.getTransform(value.getClass(), expectedClass);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,23 @@
import java.util.Set;

import org.bson.types.Binary;
import org.teiid.metadata.*;
import org.teiid.metadata.Column;
import org.teiid.metadata.Column.SearchType;
import org.teiid.metadata.ExtensionMetadataProperty;
import org.teiid.metadata.KeyRecord;
import org.teiid.metadata.MetadataFactory;
import org.teiid.metadata.Table;
import org.teiid.mongodb.MongoDBConnection;
import org.teiid.translator.MetadataProcessor;
import org.teiid.translator.TranslatorException;
import org.teiid.translator.TypeFacility;

import com.mongodb.*;
import com.mongodb.BasicDBList;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBRef;

public class MongoDBMetadataProcessor implements MetadataProcessor<MongoDBConnection> {

Expand All @@ -44,7 +53,7 @@ public class MongoDBMetadataProcessor implements MetadataProcessor<MongoDBConnec
@ExtensionMetadataProperty(applicable=Table.class, datatype=String.class, display="Embedded Into Table", description="Declare the name of table that this table needs to be embedded into. A separate copy is also maintained")
public static final String EMBEDDABLE = MetadataFactory.MONGO_URI+"EMBEDDABLE"; //$NON-NLS-1$

private static final String ID = "_id"; //$NON-NLS-1$
static final String ID = "_id"; //$NON-NLS-1$
private static final String TOP_LEVEL_DOC = "TOP_LEVEL_DOC"; //$NON-NLS-1$
private static final String ASSOSIATION = "ASSOSIATION"; //$NON-NLS-1$

Expand Down Expand Up @@ -152,7 +161,7 @@ else if (value instanceof BasicDBList) {
else if (value instanceof DBRef) {
Object obj = ((DBRef)value).getId();
column = addColumn(metadataFactory, table, columnKey, obj);
String ref = ((DBRef)value).getRef();
String ref = ((DBRef)value).getCollectionName();
metadataFactory.addForiegnKey("FK_"+columnKey, Arrays.asList(columnKey), ref, table); //$NON-NLS-1$
}
else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.util.regex.Pattern;

import org.teiid.language.*;
import org.teiid.language.Function;
import org.teiid.language.Join.JoinType;
import org.teiid.language.SortSpecification.Ordering;
import org.teiid.language.visitor.HierarchyVisitor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,26 @@
*/
package org.teiid.translator.mongodb;

import static org.teiid.language.visitor.SQLStringVisitor.getRecordName;
import static org.teiid.language.visitor.SQLStringVisitor.*;

import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.teiid.GeneratedKeys;
import org.teiid.language.Command;
import org.teiid.language.Insert;
import org.teiid.language.Update;
import org.teiid.logging.LogConstants;
import org.teiid.logging.LogManager;
import org.teiid.metadata.*;
import org.teiid.metadata.Column;
import org.teiid.metadata.ForeignKey;
import org.teiid.metadata.KeyRecord;
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.metadata.Table;
import org.teiid.mongodb.MongoDBConnection;
import org.teiid.translator.DataNotAvailableException;
import org.teiid.translator.ExecutionContext;
Expand Down Expand Up @@ -618,17 +627,25 @@ private void addAutoGeneretedKeys(WriteResult result) throws TranslatorException
Table table = this.visitor.mongoDoc.getTargetTable();

int cols = table.getPrimaryKey().getColumns().size();

if (cols != 1) {
//restrict to only primary keys based upon id
return;
}
Class<?>[] columnDataTypes = new Class<?>[cols];
String[] columnNames = new String[cols];
//this is typically expected to be an int/long, but we'll be general here. we may eventual need the type logic off of the metadata importer
for (int i = 0; i < cols; i++) {
columnDataTypes[i] = table.getPrimaryKey().getColumns().get(i).getJavaType();
columnNames[i] = table.getPrimaryKey().getColumns().get(i).getName();
}
if (!columnNames[0].equals(MongoDBMetadataProcessor.ID)) {
return;
}
GeneratedKeys generatedKeys = this.executionContext.getCommandContext().returnGeneratedKeys(columnNames, columnDataTypes);
List<Object> vals = new ArrayList<Object>(columnDataTypes.length);
for (int i = 0; i < columnDataTypes.length; i++) {
Object value = this.executionFactory.retrieveValue(result.getField(columnNames[i]), columnDataTypes[i], this.mongoDB, columnNames[i], columnNames[i]);
Object value = this.executionFactory.retrieveValue(result.getUpsertedId(), columnDataTypes[i], this.mongoDB, columnNames[i], columnNames[i]);
vals.add(value);
}
generatedKeys.addKey(vals);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

import org.teiid.language.*;
import org.teiid.language.AndOr.Operator;
import org.teiid.language.Update;
import org.teiid.language.Function;
import org.teiid.language.visitor.CollectorVisitor;
import org.teiid.metadata.RuntimeMetadata;
import org.teiid.translator.TranslatorException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ public DBObject getEmbeddedDocument(DB mongoDB, String docName) {
if (ref.getName().equals(docName)) {
DBRef dbRef = ref.getDBRef(mongoDB, false);
if (dbRef != null) {
return mongoDB.getCollection(dbRef.getRef()).findOne(new BasicDBObject("_id", dbRef.getId())); //$NON-NLS-1$
return mongoDB.getCollection(dbRef.getCollectionName()).findOne(new BasicDBObject("_id", dbRef.getId())); //$NON-NLS-1$
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void testMetadata() throws TranslatorException {
row.append("col3", new Long(3L));
row.append("col5", Boolean.TRUE);
row.append("col6", new Date(0L));
row.append("col6", new DBRef(db, "ns", "one"));
row.append("col6", new DBRef(db.getName(), "ns", "one"));
row.append("col7", array);
row.append("col8", new Binary("binary".getBytes()));

Expand Down
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@


<!-- drivers and other external, provided, dependencies -->
<version.org.mongodb.mongo-java-driver>2.13.1</version.org.mongodb.mongo-java-driver>
<version.com.couchbase.client>2.4.2</version.com.couchbase.client>
<version.org.mongodb.mongo-java-driver>3.4.2</version.org.mongodb.mongo-java-driver>
<version.com.couchbase.client>2.4.2</version.com.couchbase.client>
<version.com.couchbase.core.io>1.4.2</version.com.couchbase.core.io>
<version.io.reactivex>1.2.3</version.io.reactivex>

Expand Down

0 comments on commit acd835e

Please sign in to comment.