ETFilter andFilter = new ETFilter();andFilter.getFilters().add(nameFilter);andFilter.setOperator(ETFilter.Operator.AND);
ETFilter folderFilter = new ETFilter();folderFilter.setProperty("Category");folderFilter.addValue("123456");folderFilter.setOperator(ETFilter.Operator.EQUALS); // Category = 123456
andFilter.getFilters().add(folderFilter); // ListName = Breaking News AND Category = 123456
ETResponse<ETList> response = new ETResponse<>();response = client.retrieve(ETList.class, andFilter);
correctly retrieves the List named Breaking News in the Folder with the ID 123456
1.0.3
// same code as above throws this error
Index: 0, Size: 0 (java.lang.IndexOutOfBoundsException)java.util.ArrayList.rangeCheck(ArrayList.java:653)java.util.ArrayList.get(ArrayList.java:429)com.exacttarget.fuelsdk.ETExpression.toString(ETExpression.java:183)com.exacttarget.fuelsdk.ETObject.toString(ETObject.java:112)
I updated our code to use ETExpression, but it seems like client.retrieve(ETList.class, andFilter) only evaluates the main expression, and ignores any subexpressions.
I'm seeing this error when upgrading from 1.0.1 to 1.0.3
1.0.1
ETFilter nameFilter = new ETFilter();
nameFilter.setProperty("ListName");
nameFilter.addValue("Breaking News");
nameFilter.setOperator(ETFilter.Operator.EQUALS); // ListName = Breaking News
ETFilter andFilter = new ETFilter();
andFilter.getFilters().add(nameFilter);
andFilter.setOperator(ETFilter.Operator.AND);
ETFilter folderFilter = new ETFilter();
folderFilter.setProperty("Category");
folderFilter.addValue("123456");
folderFilter.setOperator(ETFilter.Operator.EQUALS); // Category = 123456
andFilter.getFilters().add(folderFilter); // ListName = Breaking News AND Category = 123456
ETResponse<ETList> response = new ETResponse<>();
response = client.retrieve(ETList.class, andFilter);
correctly retrieves the List named Breaking News in the Folder with the ID 123456
1.0.3
// same code as above throws this error
Index: 0, Size: 0 (java.lang.IndexOutOfBoundsException)
java.util.ArrayList.rangeCheck(ArrayList.java:653)
java.util.ArrayList.get(ArrayList.java:429)
com.exacttarget.fuelsdk.ETExpression.toString(ETExpression.java:183)
com.exacttarget.fuelsdk.ETObject.toString(ETObject.java:112)
I updated our code to use
ETExpression
, but it seems likeclient.retrieve(ETList.class, andFilter)
only evaluates the main expression, and ignores any subexpressions.