diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoFTSQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoFTSQueryLanguage.java index 761de62a3e..76bfde910e 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoFTSQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoFTSQueryLanguage.java @@ -104,25 +104,26 @@ public class SolrAlfrescoFTSQueryLanguage extends AbstractSolrQueryLanguage httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true); httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin")); + URLCodec encoder = new URLCodec(); StringBuilder url = new StringBuilder(); url.append(getBaseUrl()); url.append("/alfresco/afts"); //duplicate the query in the URL url.append("?q="); - URLCodec encoder = new URLCodec(); + url.append(encoder.encode(searchParameters.getQuery(), "UTF-8")); - url.append("&wt=json"); - url.append("&fl=*,score"); + url.append("&wt=").append(encoder.encode("json", "UTF-8")); + url.append("&fl=").append(encoder.encode("*,score", "UTF-8")); if(searchParameters.getMaxItems() > 0) { - url.append("&rows=").append(searchParameters.getMaxItems()); + url.append("&rows=").append(encoder.encode(""+searchParameters.getMaxItems(), "UTF-8")); } else { - url.append("&rows=").append(Integer.MAX_VALUE); + url.append("&rows=").append(encoder.encode(""+Integer.MAX_VALUE, "UTF-8")); } - url.append("&df=").append(searchParameters.getDefaultFieldName()); - url.append("&start=").append(searchParameters.getSkipCount()); + url.append("&df=").append(encoder.encode(searchParameters.getDefaultFieldName(), "UTF-8")); + url.append("&start=").append(encoder.encode(""+searchParameters.getSkipCount(), "UTF-8")); Locale locale = I18NUtil.getLocale(); if(searchParameters.getLocales().size() > 0) @@ -130,7 +131,6 @@ public class SolrAlfrescoFTSQueryLanguage extends AbstractSolrQueryLanguage locale = searchParameters.getLocales().get(0); } url.append("&locale="); - encoder = new URLCodec(); url.append(encoder.encode(locale.toString(), "UTF-8")); StringBuffer sortBuffer = new StringBuffer(); @@ -142,16 +142,16 @@ public class SolrAlfrescoFTSQueryLanguage extends AbstractSolrQueryLanguage } else { - sortBuffer.append(", "); + sortBuffer.append(encoder.encode(", ", "UTF-8")); } - sortBuffer.append(sortDefinition.getField()).append(" "); + sortBuffer.append(encoder.encode(sortDefinition.getField(), "UTF-8")).append(encoder.encode(" ", "UTF-8")); if(sortDefinition.isAscending()) { - sortBuffer.append("asc"); + sortBuffer.append(encoder.encode("asc", "UTF-8")); } else { - sortBuffer.append("desc"); + sortBuffer.append(encoder.encode("desc", "UTF-8")); } } @@ -173,7 +173,7 @@ public class SolrAlfrescoFTSQueryLanguage extends AbstractSolrQueryLanguage //encoder = new URLCodec(); //url.append(encoder.encode(authQuery.toString(), "UTF-8")); - url.append("&fq=AUTHORITY_FILTER_FROM_JSON"); + url.append("&fq=").append(encoder.encode("{!afts}AUTHORITY_FILTER_FROM_JSON", "UTF-8")); // facets would go on url? diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoQueryLanguage.java index 2819078700..a069f766a5 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrAlfrescoQueryLanguage.java @@ -104,25 +104,27 @@ public class SolrAlfrescoQueryLanguage extends AbstractSolrQueryLanguage httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true); httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin")); + URLCodec encoder = new URLCodec(); StringBuilder url = new StringBuilder(); url.append(getBaseUrl()); url.append("/alfresco/alfresco"); //duplicate the query in the URL + //duplicate the query in the URL url.append("?q="); - URLCodec encoder = new URLCodec(); + url.append(encoder.encode(searchParameters.getQuery(), "UTF-8")); - url.append("&wt=json"); - url.append("&fl=*,score"); + url.append("&wt=").append(encoder.encode("json", "UTF-8")); + url.append("&fl=").append(encoder.encode("*,score", "UTF-8")); if(searchParameters.getMaxItems() > 0) { - url.append("&rows=").append(searchParameters.getMaxItems()); + url.append("&rows=").append(encoder.encode(""+searchParameters.getMaxItems(), "UTF-8")); } else { - url.append("&rows=").append(Integer.MAX_VALUE); + url.append("&rows=").append(encoder.encode(""+Integer.MAX_VALUE, "UTF-8")); } - url.append("&df=").append(searchParameters.getDefaultFieldName()); - url.append("&start=").append(searchParameters.getSkipCount()); + url.append("&df=").append(encoder.encode(searchParameters.getDefaultFieldName(), "UTF-8")); + url.append("&start=").append(encoder.encode(""+searchParameters.getSkipCount(), "UTF-8")); Locale locale = I18NUtil.getLocale(); if(searchParameters.getLocales().size() > 0) @@ -130,7 +132,6 @@ public class SolrAlfrescoQueryLanguage extends AbstractSolrQueryLanguage locale = searchParameters.getLocales().get(0); } url.append("&locale="); - encoder = new URLCodec(); url.append(encoder.encode(locale.toString(), "UTF-8")); StringBuffer sortBuffer = new StringBuffer(); @@ -142,16 +143,16 @@ public class SolrAlfrescoQueryLanguage extends AbstractSolrQueryLanguage } else { - sortBuffer.append(", "); + sortBuffer.append(encoder.encode(", ", "UTF-8")); } - sortBuffer.append(sortDefinition.getField()).append(" "); + sortBuffer.append(encoder.encode(sortDefinition.getField(), "UTF-8")).append(encoder.encode(" ", "UTF-8")); if(sortDefinition.isAscending()) { - sortBuffer.append("asc"); + sortBuffer.append(encoder.encode("asc", "UTF-8")); } else { - sortBuffer.append("desc"); + sortBuffer.append(encoder.encode("desc", "UTF-8")); } } @@ -173,9 +174,7 @@ public class SolrAlfrescoQueryLanguage extends AbstractSolrQueryLanguage //encoder = new URLCodec(); //url.append(encoder.encode(authQuery.toString(), "UTF-8")); - url.append("&fq="); - url.append(encoder.encode("{!afts}", "UTF-8")); - url.append("AUTHORITY_FILTER_FROM_JSON"); + url.append("&fq=").append(encoder.encode("{!afts}AUTHORITY_FILTER_FROM_JSON", "UTF-8")); // facets would go on url? diff --git a/source/java/org/alfresco/repo/search/impl/solr/SolrCMISQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/solr/SolrCMISQueryLanguage.java index 4fa324b986..ff1f6375e4 100644 --- a/source/java/org/alfresco/repo/search/impl/solr/SolrCMISQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/solr/SolrCMISQueryLanguage.java @@ -103,79 +103,77 @@ public class SolrCMISQueryLanguage extends AbstractSolrQueryLanguage httpClient.getParams().setBooleanParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, true); httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), new UsernamePasswordCredentials("admin", "admin")); + URLCodec encoder = new URLCodec(); StringBuilder url = new StringBuilder(); url.append(getBaseUrl()); url.append("/alfresco/cmis"); + //duplicate the query in the URL + //duplicate the query in the URL url.append("?q="); - URLCodec encoder = new URLCodec(); + url.append(encoder.encode(searchParameters.getQuery(), "UTF-8")); - url.append("&wt=json"); - url.append("&fl=*,score"); - if (searchParameters.getMaxItems() > 0) + url.append("&wt=").append(encoder.encode("json", "UTF-8")); + url.append("&fl=").append(encoder.encode("*,score", "UTF-8")); + if(searchParameters.getMaxItems() > 0) { - url.append("&rows=").append(searchParameters.getMaxItems()); + url.append("&rows=").append(encoder.encode(""+searchParameters.getMaxItems(), "UTF-8")); } else { - url.append("&rows=").append(Integer.MAX_VALUE); + url.append("&rows=").append(encoder.encode(""+Integer.MAX_VALUE, "UTF-8")); } - url.append("&df=").append(searchParameters.getDefaultFieldName()); - url.append("&start=").append(searchParameters.getSkipCount()); - + url.append("&df=").append(encoder.encode(searchParameters.getDefaultFieldName(), "UTF-8")); + url.append("&start=").append(encoder.encode(""+searchParameters.getSkipCount(), "UTF-8")); + Locale locale = I18NUtil.getLocale(); - if (searchParameters.getLocales().size() > 0) + if(searchParameters.getLocales().size() > 0) { locale = searchParameters.getLocales().get(0); } url.append("&locale="); - encoder = new URLCodec(); url.append(encoder.encode(locale.toString(), "UTF-8")); - - // Will use this search if not specified as part of the query )no order by clause) - // If the query contains an order by clause this will be used instead. + StringBuffer sortBuffer = new StringBuffer(); - for (SortDefinition sortDefinition : searchParameters.getSortDefinitions()) + for(SortDefinition sortDefinition : searchParameters.getSortDefinitions()) { - if (sortBuffer.length() == 0) + if(sortBuffer.length() == 0) { sortBuffer.append("&sort="); } else { - sortBuffer.append(", "); + sortBuffer.append(encoder.encode(", ", "UTF-8")); } - sortBuffer.append(sortDefinition.getField()).append(" "); - if (sortDefinition.isAscending()) + sortBuffer.append(encoder.encode(sortDefinition.getField(), "UTF-8")).append(encoder.encode(" ", "UTF-8")); + if(sortDefinition.isAscending()) { - sortBuffer.append("asc"); + sortBuffer.append(encoder.encode("asc", "UTF-8")); } else { - sortBuffer.append("desc"); + sortBuffer.append(encoder.encode("desc", "UTF-8")); } - + } url.append(sortBuffer); - + // Authorities go over in body - + StringBuilder authQuery = new StringBuilder(); - for (String authority : permissionService.getAuthorisations()) + for(String authority : permissionService.getAuthorisations()) { - if (authQuery.length() > 0) + if(authQuery.length() > 0) { authQuery.append(" "); } authQuery.append("AUTHORITY:\"").append(authority).append("\""); } - - // url.append("&fq="); - // encoder = new URLCodec(); - // url.append(encoder.encode(authQuery.toString(), "UTF-8")); - - url.append("&fq="); - url.append(encoder.encode("{!afts}", "UTF-8")); - url.append("AUTHORITY_FILTER_FROM_JSON"); + + //url.append("&fq="); + //encoder = new URLCodec(); + //url.append(encoder.encode(authQuery.toString(), "UTF-8")); + + url.append("&fq=").append(encoder.encode("{!afts}AUTHORITY_FILTER_FROM_JSON", "UTF-8")); // facets would go on url?