/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.test.api.query.qom;
import javax.jcr.RepositoryException;
import javax.jcr.Node;
import javax.jcr.Value;
import javax.jcr.query.RowIterator;
import javax.jcr.query.Row;
import javax.jcr.query.qom.QueryObjectModel;
import javax.jcr.query.qom.Column;
/**
* <code>RowIteratorTest</code> contains test cases for {@link Row}.
*/
public class RowTest extends AbstractQOMTest {
private static final String TEST_VALUE = "value";
private static final String SELECTOR_NAME = "s";
protected void setUp() throws Exception {
super.setUp();
Node n = testRootNode.addNode(nodeName1, testNodeType);
n.setProperty(propertyName1, TEST_VALUE);
superuser.save();
}
public void testGetValues() throws RepositoryException {
Row r = getRow();
Value[] values = r.getValues();
assertEquals("wrong number of columns", 1, values.length);
assertEquals("property value does not match", TEST_VALUE, values[0].getString());
}
public void testGetValue() throws RepositoryException {
Row r = getRow();
assertEquals("property value does not match", TEST_VALUE, r.getValue(propertyName1).getString());
}
public void testGetNode() throws RepositoryException {
Row r = getRow();
String expectedPath = testRootNode.getNode(nodeName1).getPath();
assertEquals("unexpected result node", expectedPath, r.getNode().getPath());
}
public void testGetNodeWithSelector() throws RepositoryException {
Row r = getRow();
String expectedPath = testRootNode.getNode(nodeName1).getPath();
assertEquals("unexpected result node", expectedPath, r.getNode(SELECTOR_NAME).getPath());
}
public void testGetPath() throws RepositoryException {
Row r = getRow();
String expectedPath = testRootNode.getNode(nodeName1).getPath();
assertEquals("unexpected result node", expectedPath, r.getPath());
}
public void testGetPathWithSelector() throws RepositoryException {
Row r = getRow();
String expectedPath = testRootNode.getNode(nodeName1).getPath();
assertEquals("unexpected result node", expectedPath, r.getPath(SELECTOR_NAME));
}
public void testGetScore() throws RepositoryException {
Row r = getRow();
// value is implementation dependent, simply call method...
r.getScore();
}
public void testGetScoreWithSelector() throws RepositoryException {
Row r = getRow();
// value is implementation dependent, simply call method...
r.getScore(SELECTOR_NAME);
}
private Row getRow() throws RepositoryException {
QueryObjectModel qom = qf.createQuery(
qf.selector(testNodeType, SELECTOR_NAME),
qf.descendantNode(SELECTOR_NAME, testRoot),
null,
new Column[]{qf.column(SELECTOR_NAME, propertyName1, propertyName1)});
RowIterator rows = qom.execute().getRows();
assertTrue("empty result", rows.hasNext());
Row r = rows.nextRow();
assertFalse("result must not contain more than one row", rows.hasNext());
return r;
}
}