많은 쿼리 옵션에 대해 URL로 호출 할 수있는 adobe API 문서 QueryBuilder Service에서 JSON 기반 응답을 반환합니다. 아주 잘. 나는 자바 API에서 이것을 사용하기를 원한다. 몇 가지 예제를 발견하고 이클립스에서 시도했지만, 내가 알지 못하는 어떤 것은 아래 주어진 코드 에서처럼 "슬링"서비스를 얻는 방법을 알지 못한다. 또는 다른 말로하면 QueryBuilder Java 오브젝트를 만드는 방법이다.CQ5 Java QueryBuilder API
내 모든 PC에 Apache SLING을 설치해야합니다.이 사이트를 공유 할 수있는 사람이 누구인지는 잘 모르겠지만 CQ5에 익숙하지 않으므로 도움이 될 것입니다.
예제 코드는 다음과 같습니다 :
Repository repository = JcrUtils.getRepository(SERVER);
SimpleCredentials credentials = new SimpleCredentials(USERNAME, PASSWORD.toCharArray());
Session session = repository.login(credentials);
System.out.println("got session: " + session);
/*HERE SLING IS THE PROBLEM HOW TO GET SLING */
QueryBuilder qbuilder = sling.getService(QueryBuilder.class);
String fulltextSearchTerm = "Geometrixx";
// create query description as hash map (simplest way, same as form
// post)
Map<String, String> map = new HashMap<String, String>();
// create query description as hash map (simplest way, same as form
// post)
map.put("path", "/content");
map.put("type", "cq:Page");
map.put("group.p.or", "true"); // combine this group with OR
map.put("group.1_fulltext", fulltextSearchTerm);
map.put("group.1_fulltext.relPath", "jcr:content");
map.put("group.2_fulltext", fulltextSearchTerm);
map.put("group.2_fulltext.relPath", "jcr:content/@cq:tags");
// can be done in map or with Query methods
map.put("p.offset", "0"); // same as query.setStart(0) below
map.put("p.limit", "20"); // same as query.setHitsPerPage(20) below
Query query = qbuilder.createQuery(PredicateGroup.create(map), session);
query.setStart(0);
query.setHitsPerPage(20);
SearchResult result = query.getResult();
감사하지만 여전히 QueryBuilder 런타임에 null의
는 activate 메소드를 구현합니다. main() 메소드로 간단한 클래스를 가진다. 그리고 빌드 경로에 Flix Annotation Jar를 추가했습니다. CQ5 서버가 로컬에서 실행 중입니다. – zaxeer@zaxeer CQ 인스턴스에 배포 할 때 또는 독립 실행 형 클래스로이 코드를 실행하고 있습니까? OSGi 컨테이너에 없어도'getService' 나'@ Reference'를 사용할 수 없습니다 - 각각의 경우에 서비스를 제공하는 것은 Felix입니다. – anotherdave
독립 실행 형 Java 응용 프로그램으로 코드를 실행 중입니다. Java 응용 프로그램에서 JCR 트리를 구문 분석하지만 내용을 검색하는 것이 새로운 요구 사항이었습니다. – zaxeer