Author: gttersen Date: 2007-05-22 15:57:10 +0200 (Tue, 22 May 2007) New Revision: 5139
Modified: trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java Log: initializeQuery no longer throws NullPointerException if queryparameter is set and has no value. Modified: trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java =================================================================== --- trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java 2007-05-22 13:41:31 UTC (rev 5138) +++ trunk/core-api/src/main/java/no/schibstedsok/searchportal/mode/command/AbstractSearchCommand.java 2007-05-22 13:57:10 UTC (rev 5139) @@ -5,6 +5,7 @@ import no.schibstedsok.commons.ioc.BaseContext; import no.schibstedsok.commons.ioc.ContextWrapper; import no.schibstedsok.searchportal.datamodel.DataModel; +import no.schibstedsok.searchportal.datamodel.generic.StringDataObject; import no.schibstedsok.searchportal.mode.config.FastCommandConfig; import no.schibstedsok.searchportal.mode.config.SearchConfiguration; import no.schibstedsok.searchportal.query.AndClause; @@ -33,6 +34,9 @@ import no.schibstedsok.searchportal.query.transform.QueryTransformerFactory; import no.schibstedsok.searchportal.result.BasicSearchResult; import no.schibstedsok.searchportal.result.Modifier; +import no.schibstedsok.searchportal.result.ResultItem; +import no.schibstedsok.searchportal.result.ResultList; +import no.schibstedsok.searchportal.result.handler.DataModelResultHandler; import no.schibstedsok.searchportal.result.handler.ResultHandler; import no.schibstedsok.searchportal.result.handler.ResultHandlerConfig; import no.schibstedsok.searchportal.result.handler.ResultHandlerFactory; @@ -46,9 +50,6 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import no.schibstedsok.searchportal.result.ResultItem; -import no.schibstedsok.searchportal.result.ResultList; -import no.schibstedsok.searchportal.result.handler.DataModelResultHandler; /** * @author <a href="mailto:[EMAIL PROTECTED]">Magnus Eklund</a>. @@ -57,7 +58,7 @@ public abstract class AbstractSearchCommand extends AbstractReflectionVisitor implements SearchCommand { // Constants ----------------------------------------------------- - + private static final DataModelResultHandler DATAMODEL_HANDLER = new DataModelResultHandler(); private static final String FIELD_TRANSFORMED_QUERY = "transformedQuery"; @@ -154,7 +155,8 @@ /** * Returns the query as it is after the query transformers have been applied to it. - * @return + * + * @return */ public String getTransformedQuerySesamSyntax() { return transformedQuerySesamSyntax; @@ -170,7 +172,8 @@ /** * TODO comment me. * - * @return + * + * @return */ public String getFilter() { return filter; @@ -267,9 +270,9 @@ * @param clause */ protected void visitImpl(final LeafClause clause) { - + appendToQueryRepresentation(getTransformedTerm(clause)); - + // if (null == getTransformedTerm(clause)) { // if (null != clause.getField()) { // if (null == getFieldFilter(clause)) { @@ -440,10 +443,10 @@ + "; filter:" + filter + "; tabKey:" + parameters.get("c") + ';'); - final ResultList<? extends ResultItem> result = executeQuery - ? execute() + final ResultList<? extends ResultItem> result = executeQuery + ? execute() : new BasicSearchResult<ResultItem>(); - + hitCount = result.getHitCount(); LOG.debug("Hits is " + getSearchConfiguration().getName() + ':' + hitCount); @@ -465,10 +468,11 @@ } } - /** Perform (delegating out to) all registered result handlers for this command. + /** + * Perform (delegating out to) all registered result handlers for this command. * Also performs some hardcoded result handling, eg DataModelResultHandler. - * - * @param result + * + * @param result */ protected final void performResultHandling(final ResultList<? extends ResultItem> result) { @@ -485,29 +489,34 @@ public ResultList<? extends ResultItem> getSearchResult() { return result; } + public SearchTab getSearchTab() { return context.getRunningQuery().getSearchTab(); } + public void addSource(final Modifier modifier) { context.getRunningQuery().addSource(modifier); } - public Query getQuery(){ + + public Query getQuery() { return AbstractSearchCommand.this.getQuery(); } }, context ); - + // process listed result handlers for (ResultHandlerConfig resultHandlerConfig : getSearchConfiguration().getResultHandlers()) { ResultHandlerFactory.getController(resultHandlerConfig).handleResult(resultHandlerContext, datamodel); } - + // The DataModel result handler is a hardcoded feature of the architecture DATAMODEL_HANDLER.handleResult(resultHandlerContext, datamodel); // also ping everybody that might be waiting on these results: "dinner's served!" - synchronized(datamodel.getSearches()){ datamodel.getSearches().notifyAll(); } + synchronized (datamodel.getSearches()) { + datamodel.getSearches().notifyAll(); + } } /** @@ -534,7 +543,8 @@ /** * TODO comment me. * - * @return + * + * @return */ protected Map<String, Object> getParameters() { @@ -546,7 +556,8 @@ * Returns parameter value. In case the parameter is multi-valued only the * first value is returned. If the parameter does not exist or is empty * the empty string is returned. - * @param paramName + * + * @param paramName */ protected String getParameter(final String paramName) { @@ -586,8 +597,7 @@ } /** - * - * @param addition + * @param addition */ protected final void appendToQueryRepresentation(final char addition) { sb.append(addition); @@ -616,7 +626,7 @@ protected final String getTransformedTerm(final Clause clause) { final String transformedTerm = transformedTerms.get(clause); return escapeTerm(transformedTerm != null ? transformedTerm : clause.getTerm()); - + } /** @@ -686,14 +696,14 @@ protected final ReconstructedQuery createQuery(final String queryString) { LOG.debug("createQuery(" + queryString + ')'); - - if(datamodel.getQuery().getQuery().getQueryString().equalsIgnoreCase(queryString)){ - + + if (datamodel.getQuery().getQuery().getQueryString().equalsIgnoreCase(queryString)) { + // return original query and engine return new ReconstructedQuery(datamodel.getQuery().getQuery(), context.getTokenEvaluationEngine()); - - }else{ + } else { + final TokenEvaluationEngine.Context tokenEvalFactoryCxt = ContextWrapper.wrap( TokenEvaluationEngine.Context.class, context, @@ -792,13 +802,14 @@ return new SesamSyntaxQueryBuilder(); } - /** [EMAIL PROTECTED] */ - protected static final ResultList<? extends ResultItem> getSearchResult( + /** + * [EMAIL PROTECTED] + */ + protected static ResultList<? extends ResultItem> getSearchResult( final String id, final DataModel datamodel) throws InterruptedException { - - synchronized(datamodel.getSearches()){ - while(null == datamodel.getSearch(id)){ + synchronized (datamodel.getSearches()) { + while (null == datamodel.getSearch(id)) { // next line releases the monitor so it is possible to call this method from different threads datamodel.getSearches().wait(); } @@ -814,20 +825,17 @@ final String queryParameter = getSearchConfiguration().getQueryParameter(); if (queryParameter != null && queryParameter.length() > 0) { - // It's not the query we are looking for but a string held in a different parameter. - final String queryToUse = datamodel.getParameters().getValue(queryParameter).getString(); - final ReconstructedQuery recon = createQuery(queryToUse); - - query = recon.getQuery(); - engine = recon.getEngine(); - - } else { - - query = datamodel.getQuery().getQuery(); - engine = context.getTokenEvaluationEngine(); - + final StringDataObject queryToUse = datamodel.getParameters().getValue(queryParameter); + if (queryToUse != null) { + final ReconstructedQuery recon = createQuery(queryToUse.getString()); + query = recon.getQuery(); + engine = recon.getEngine(); + return; + } } + query = datamodel.getQuery().getQuery(); + engine = context.getTokenEvaluationEngine(); } /** _______________________________________________ Kernel-commits mailing list [email protected] http://sesat.no/mailman/listinfo/kernel-commits
