@@ -396,10 +396,10 @@ public List<T> searchIncludingRemoved(SearchCriteria<T> sc, final Filter filter,
396396 final List <T > result = new ArrayList <T >();
397397 try {
398398 pstmt = txn .prepareAutoCloseStatement (sql );
399- int i = 0 ;
399+ int i = 1 ;
400400 if (clause != null ) {
401401 for (final Pair <Attribute , Object > value : sc .getValues ()) {
402- prepareAttribute (++ i , pstmt , value .first (), value .second ());
402+ prepareAttribute (i ++ , pstmt , value .first (), value .second ());
403403 }
404404 }
405405
@@ -431,10 +431,13 @@ public List<T> searchIncludingRemoved(SearchCriteria<T> sc, final Filter filter,
431431 @ Override
432432 @ SuppressWarnings ("unchecked" )
433433 public <M > List <M > customSearchIncludingRemoved (SearchCriteria <M > sc , final Filter filter ) {
434+ if (sc == null ) {
435+ throw new CloudRuntimeException ("Call to customSearchIncludingRemoved with null search Criteria" );
436+ }
434437 if (sc .isSelectAll ()) {
435438 return (List <M >)searchIncludingRemoved ((SearchCriteria <T >)sc , filter , null , false );
436439 }
437- String clause = sc != null ? sc .getWhereClause () : null ;
440+ String clause = sc .getWhereClause ();
438441 if (clause != null && clause .length () == 0 ) {
439442 clause = null ;
440443 }
@@ -445,11 +448,9 @@ public <M> List<M> customSearchIncludingRemoved(SearchCriteria<M> sc, final Filt
445448 }
446449
447450 Collection <JoinBuilder <SearchCriteria <?>>> joins = null ;
448- if (sc != null ) {
449- joins = sc .getJoins ();
450- if (joins != null ) {
451- addJoins (str , joins );
452- }
451+ joins = sc .getJoins ();
452+ if (joins != null ) {
453+ addJoins (str , joins );
453454 }
454455
455456 List <Object > groupByValues = addGroupBy (str , sc );
@@ -461,10 +462,10 @@ public <M> List<M> customSearchIncludingRemoved(SearchCriteria<M> sc, final Filt
461462 PreparedStatement pstmt = null ;
462463 try {
463464 pstmt = txn .prepareAutoCloseStatement (sql );
464- int i = 0 ;
465+ int i = 1 ;
465466 if (clause != null ) {
466467 for (final Pair <Attribute , Object > value : sc .getValues ()) {
467- prepareAttribute (++ i , pstmt , value .first (), value .second ());
468+ prepareAttribute (i ++ , pstmt , value .first (), value .second ());
468469 }
469470 }
470471
@@ -1070,6 +1071,8 @@ public List<T> listAllIncludingRemoved() {
10701071
10711072 @ DB ()
10721073 protected List <Object > addGroupBy (final StringBuilder sql , SearchCriteria <?> sc ) {
1074+ if (sc == null )
1075+ return null ;
10731076 Pair <GroupBy <?, ?, ?>, List <Object >> groupBys = sc .getGroupBy ();
10741077 if (groupBys != null ) {
10751078 groupBys .first ().toSql (sql );
@@ -1179,6 +1182,10 @@ public boolean expunge(final ID id) {
11791182 // FIXME: Does not work for joins.
11801183 @ Override
11811184 public int expunge (final SearchCriteria <T > sc ) {
1185+ if (sc == null ) {
1186+ throw new CloudRuntimeException ("Call to throw new expunge with null search Criteria" );
1187+ }
1188+
11821189 final StringBuilder str = new StringBuilder ("DELETE FROM " );
11831190 str .append (_table );
11841191 str .append (" WHERE " );
0 commit comments