Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I am trying to use a java class that works perfectly outside Talend. the class opens a bucket, reads the contents, and sets the output variables.
this is the code that I use in a tJava component, and it only outputs 1 row:
CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder()
.connectTimeout(10000)
.build();
Cluster cluster = CouchbaseCluster.create(env,"10.0.0.0");
Bucket bucket = cluster.openBucket("myBucket","password");
N1qlQueryResult result = bucket.query(N1qlQuery.simple("SELECT * FROM mybucket" ));
Iterator<N1qlQueryRow> rowIterator = result.rows();
while (rowIterator.hasNext()) {
N1qlQueryRow row = rowIterator.next();
// Return results
String content = row.toString();
JsonObject obj = (JsonObject) row.value().get("mybucket");
String _class = obj.get("_class").toString();
if (_class.equalsIgnoreCase("record.type.one") ){
//transaction id
String createdByTransactionId = obj.get("createdByTransactionId").toString();
//addresses is an optional field
JsonArray address_obj = null;
if (obj.get("addresses") != null) {
address_obj = (JsonArray) obj.get("addresses");
}}
row1.createdByTransactionId = createdByTransactionId;
}}
bucket.close();
env.shutdown();
When I use the same code in a tJavaRow, in output I get 0 rows in output.
When I use a tJavaFlex component, I get 0 rows in output.
What am I doing wrong?
Any help is welcome.
you need to use tjavaflex , Ideally
Begin part should have
CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder()
.connectTimeout(10000)
.build();
Cluster cluster = CouchbaseCluster.create(env,"10.0.0.0");
Bucket bucket = cluster.openBucket("myBucket","password");
N1qlQueryResult result = bucket.query(N1qlQuery.simple("SELECT * FROM mybucket" ));
Iterator<N1qlQueryRow> rowIterator = result.rows();
while (rowIterator.hasNext()) {
Main Part
N1qlQueryRow row = rowIterator.next();
// Return results
String content = row.toString();
JsonObject obj = (JsonObject) row.value().get("mybucket");
String _class = obj.get("_class").toString();
if (_class.equalsIgnoreCase("record.type.one") ){
//transaction id
String createdByTransactionId = obj.get("createdByTransactionId").toString();
//addresses is an optional field
JsonArray address_obj = null;
if (obj.get("addresses") != null) {
address_obj = (JsonArray) obj.get("addresses");
}}
row1.createdByTransactionId = createdByTransactionId;
}
End Part
}
bucket.close();
env.shutdown();
Please try and let us know if doesnot work.
you need to use tjavaflex , Ideally
Begin part should have
CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder()
.connectTimeout(10000)
.build();
Cluster cluster = CouchbaseCluster.create(env,"10.0.0.0");
Bucket bucket = cluster.openBucket("myBucket","password");
N1qlQueryResult result = bucket.query(N1qlQuery.simple("SELECT * FROM mybucket" ));
Iterator<N1qlQueryRow> rowIterator = result.rows();
while (rowIterator.hasNext()) {
Main Part
N1qlQueryRow row = rowIterator.next();
// Return results
String content = row.toString();
JsonObject obj = (JsonObject) row.value().get("mybucket");
String _class = obj.get("_class").toString();
if (_class.equalsIgnoreCase("record.type.one") ){
//transaction id
String createdByTransactionId = obj.get("createdByTransactionId").toString();
//addresses is an optional field
JsonArray address_obj = null;
if (obj.get("addresses") != null) {
address_obj = (JsonArray) obj.get("addresses");
}}
row1.createdByTransactionId = createdByTransactionId;
}
End Part
}
bucket.close();
env.shutdown();
Please try and let us know if doesnot work.
Thank you very much, Akumar.
I didn't get right the main part (I included the while there).
Now works perfectly.