Skip to content

Commit 85ced44

Browse files
authored
API: Fix listSSHKeyPairs API when listing all resources (listall=true & projectid=-1) (apache#5958)
* API: Fix listSSHKeyPairs API when listing all resources (listall=true & projectid=-1) * fix issue with indexing
1 parent 143b72d commit 85ced44

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
import javax.persistence.Table;
5757
import javax.persistence.TableGenerator;
5858

59+
import org.apache.commons.lang3.StringUtils;
5960
import org.apache.log4j.Logger;
6061

6162
import com.cloud.utils.DateUtil;
@@ -878,7 +879,7 @@ protected String buildSelectByIdSql(final StringBuilder sql) {
878879
for (final Field field : clazz.getDeclaredFields()) {
879880
sql.append(_table).append(".").append(DbUtil.getColumnName(field, overrides)).append(" = ? AND ");
880881
}
881-
sql.delete(sql.length() - 4, sql.length());
882+
removeAndClause(sql);
882883
}
883884

884885
return sql.toString();
@@ -1262,10 +1263,11 @@ protected StringBuilder createPartialSelectSql(SearchCriteria<?> sc, final boole
12621263

12631264
@DB()
12641265
protected void addJoins(StringBuilder str, Collection<JoinBuilder<SearchCriteria<?>>> joins) {
1266+
boolean hasWhereClause = true;
12651267
int fromIndex = str.lastIndexOf("WHERE");
12661268
if (fromIndex == -1) {
12671269
fromIndex = str.length();
1268-
str.append(" WHERE ");
1270+
hasWhereClause = false;
12691271
} else {
12701272
str.append(" AND ");
12711273
}
@@ -1287,13 +1289,19 @@ protected void addJoins(StringBuilder str, Collection<JoinBuilder<SearchCriteria
12871289
.append(" ");
12881290
str.insert(fromIndex, onClause);
12891291
String whereClause = join.getT().getWhereClause();
1290-
if ((whereClause != null) && !"".equals(whereClause)) {
1292+
if (StringUtils.isNotEmpty(whereClause)) {
1293+
if (!hasWhereClause) {
1294+
str.append(" WHERE ");
1295+
hasWhereClause = true;
1296+
}
12911297
str.append(" (").append(whereClause).append(") AND");
12921298
}
12931299
fromIndex += onClause.length();
12941300
}
12951301

1296-
str.delete(str.length() - 4, str.length());
1302+
if (hasWhereClause) {
1303+
removeAndClause(str);
1304+
}
12971305

12981306
for (JoinBuilder<SearchCriteria<?>> join : joins) {
12991307
if (join.getT().getJoins() != null) {
@@ -1302,6 +1310,10 @@ protected void addJoins(StringBuilder str, Collection<JoinBuilder<SearchCriteria
13021310
}
13031311
}
13041312

1313+
private void removeAndClause(StringBuilder sql) {
1314+
sql.delete(sql.length() - 4, sql.length());
1315+
}
1316+
13051317
@Override
13061318
@DB()
13071319
public List<T> search(final SearchCriteria<T> sc, final Filter filter) {

0 commit comments

Comments
 (0)