@Override public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword) { int sz = this.size; for (int i = 0; i < sz; i++) { if (this.resolvers[i].isResolverForKeyword(searchExpressionContext, keyword)) { return this.resolvers[i].isLeaf(searchExpressionContext, keyword); } } return false; } }
@Override public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword) { int sz = this.size; for (int i = 0; i < sz; i++) { if (this.resolvers[i].isResolverForKeyword(searchExpressionContext, keyword)) { return this.resolvers[i].isPassthrough(searchExpressionContext, keyword); } } return false; }
@Override public void resolve(SearchKeywordContext context, UIComponent current, String keyword) { context.setKeywordResolved(false); for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(context.getSearchExpressionContext(), keyword)) { resolver.resolve(context, current, keyword); if (context.isKeywordResolved()) { return; } } } }
@Override public boolean isResolverForKeyword(SearchExpressionContext searchExpressionContext, String keyword) { int sz = this.size; for (int i = 0; i < sz; i++) { if (this.resolvers[i].isResolverForKeyword(searchExpressionContext, keyword)) { return true; } } return false; }
protected void applyKeyword(SearchExpressionContext searchExpressionContext, UIComponent last, String command, String remainingExpression, ContextCallback topCallback) { SearchKeywordContext searchContext = new SearchKeywordContext(searchExpressionContext, topCallback, remainingExpression); searchExpressionContext.getFacesContext().getApplication() .getSearchKeywordResolver().resolve(searchContext, last, command); }
@Override public boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String expression) { if (expression != null) { expression = expression.trim(); } if (expression != null && expression.contains(KEYWORD_PREFIX)) { FacesContext facesContext = searchExpressionContext.getFacesContext(); String command = extractFirstCommand(facesContext, expression); // check if there are remaining commands/id's after the first command String remainingExpression = null; if (command.length() < expression.length()) { remainingExpression = expression.substring(command.length() + 1); } if (command.startsWith(KEYWORD_PREFIX) && remainingExpression == null) { String keyword = command.substring(KEYWORD_PREFIX.length()); SearchKeywordResolver keywordResolver = facesContext.getApplication().getSearchKeywordResolver(); return keywordResolver.isPassthrough(searchExpressionContext, keyword); } // check again the remainingExpression SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler(); return handler.isPassthroughExpression(searchExpressionContext, remainingExpression); } return false; }
} else { if (facesContext.getApplication().getSearchKeywordResolver().isLeaf(searchExpressionContext, keyword)) { throw new FacesException("It's not valid to place a keyword or id after a leaf keyword: " + KEYWORD_PREFIX + keyword + ". Expression: " + expression);
@Override public void resolve(SearchKeywordContext context, UIComponent current, String keyword) { context.setKeywordResolved(false); for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(context.getSearchExpressionContext(), keyword)) { resolver.resolve(context, current, keyword); if (context.isKeywordResolved()) { return; } } } }
@Override public boolean isResolverForKeyword(SearchExpressionContext searchExpressionContext, String keyword) { for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(searchExpressionContext, keyword)) { return true; } } return false; }
protected void invokeKeywordResolvers(SearchExpressionContext searchExpressionContext, UIComponent previous, String keyword, String remainingExpression, ContextCallback callback) { // take the keyword and resolve it using the chain of responsibility pattern. SearchKeywordContext searchContext = new SearchKeywordContext(searchExpressionContext, callback, remainingExpression); searchExpressionContext.getFacesContext().getApplication() .getSearchKeywordResolver().resolve(searchContext, previous, keyword); }
@Override public boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String expression) { if (expression != null) { expression = expression.trim(); } if (expression != null && expression.contains(KEYWORD_PREFIX)) { FacesContext facesContext = searchExpressionContext.getFacesContext(); String command = extractFirstCommand(facesContext, expression); // check if there are remaining commands/id's after the first command String remainingExpression = null; if (command.length() < expression.length()) { remainingExpression = expression.substring(command.length() + 1); } if (command.startsWith(KEYWORD_PREFIX) && remainingExpression == null) { String keyword = command.substring(KEYWORD_PREFIX.length()); SearchKeywordResolver keywordResolver = facesContext.getApplication().getSearchKeywordResolver(); return keywordResolver.isPassthrough(searchExpressionContext, keyword); } // check again the remainingExpression SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler(); return handler.isPassthroughExpression(searchExpressionContext, remainingExpression); } return false; }
} else { if (facesContext.getApplication().getSearchKeywordResolver().isLeaf(searchExpressionContext, keyword)) { throw new FacesException("It's not valid to place a keyword or id after a leaf keyword: " + KEYWORD_PREFIX + keyword + ". Expression: " + expression);
@Override public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword) { for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(searchExpressionContext, keyword)) { return resolver.isLeaf(searchExpressionContext, keyword); } } return false; } }
@Override public boolean isPassthrough(SearchExpressionContext searchExpressionContext, String keyword) { for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(searchExpressionContext, keyword)) { return resolver.isPassthrough(searchExpressionContext, keyword); } } return false; }
@Override public void resolve(SearchKeywordContext context, UIComponent current, String keyword) { context.setKeywordResolved(false); for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(context.getSearchExpressionContext(), keyword)) { resolver.resolve(context, current, keyword); if (context.isKeywordResolved()) { return; } } } }
@Override public boolean isResolverForKeyword(SearchExpressionContext searchExpressionContext, String keyword) { for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(searchExpressionContext, keyword)) { return true; } } return false; }
protected void invokeKeywordResolvers(SearchExpressionContext searchExpressionContext, UIComponent previous, String keyword, String remainingExpression, ContextCallback callback) { // take the keyword and resolve it using the chain of responsibility pattern. SearchKeywordContext searchContext = new SearchKeywordContext(searchExpressionContext, callback, remainingExpression); searchExpressionContext.getFacesContext().getApplication() .getSearchKeywordResolver().resolve(searchContext, previous, keyword); }
@Override public boolean isPassthroughExpression(SearchExpressionContext searchExpressionContext, String expression) { if (expression != null) { expression = expression.trim(); } if (expression != null && expression.contains(KEYWORD_PREFIX)) { FacesContext facesContext = searchExpressionContext.getFacesContext(); String command = extractFirstCommand(facesContext, expression); // check if there are remaining commands/id's after the first command String remainingExpression = null; if (command.length() < expression.length()) { remainingExpression = expression.substring(command.length() + 1); } if (command.startsWith(KEYWORD_PREFIX) && remainingExpression == null) { String keyword = command.substring(KEYWORD_PREFIX.length()); SearchKeywordResolver keywordResolver = facesContext.getApplication().getSearchKeywordResolver(); return keywordResolver.isPassthrough(searchExpressionContext, keyword); } // check again the remainingExpression SearchExpressionHandler handler = facesContext.getApplication().getSearchExpressionHandler(); return handler.isPassthroughExpression(searchExpressionContext, remainingExpression); } return false; }
} else { if (facesContext.getApplication().getSearchKeywordResolver().isLeaf(searchExpressionContext, keyword)) { throw new FacesException("It's not valid to place a keyword or id after a leaf keyword: " + KEYWORD_PREFIX + keyword + ". Expression: " + expression);
@Override public boolean isLeaf(SearchExpressionContext searchExpressionContext, String keyword) { for (int i = 0; i < resolvers.size(); i++) { SearchKeywordResolver resolver = resolvers.get(i); if (resolver.isResolverForKeyword(searchExpressionContext, keyword)) { return resolver.isLeaf(searchExpressionContext, keyword); } } return false; } }