use of org.apache.jackrabbit.spi.QValue in project jackrabbit by apache.
the class EventImpl method getInfo.
/**
* @see javax.jcr.observation.Event#getInfo()
*/
public Map<String, String> getInfo() throws RepositoryException {
Map<String, String> jcrInfo = new HashMap<String, String>();
for (Map.Entry<Name, QValue> entry : event.getInfo().entrySet()) {
Name key = entry.getKey();
QValue value = entry.getValue();
String strValue = null;
if (value != null) {
strValue = ValueFormat.getJCRString(value, resolver);
}
jcrInfo.put(resolver.getJCRName(key), strValue);
}
return jcrInfo;
}
use of org.apache.jackrabbit.spi.QValue in project jackrabbit by apache.
the class RepositoryServiceImpl method getPropertyInfo.
/**
* @see RepositoryService#getPropertyInfo(SessionInfo, PropertyId)
*/
@Override
public PropertyInfo getPropertyInfo(SessionInfo sessionInfo, PropertyId propertyId) throws RepositoryException {
Path p = getPath(propertyId, sessionInfo);
String uri = getURI(p, sessionInfo);
HttpPropfind request = null;
try {
request = new HttpPropfind(uri, LAZY_PROPERTY_NAME_SET, DavConstants.DEPTH_0);
HttpResponse response = executeRequest(sessionInfo, request);
request.checkSuccess(response);
MultiStatusResponse[] mresponses = request.getResponseBodyAsMultiStatus(response).getResponses();
if (mresponses.length != 1) {
throw new ItemNotFoundException("Unable to retrieve the PropertyInfo. No such property " + uri);
}
MultiStatusResponse mresponse = mresponses[0];
DavPropertySet props = mresponse.getProperties(DavServletResponse.SC_OK);
int propertyType = PropertyType.valueFromName(props.get(JCR_TYPE).getValue().toString());
if (propertyType == PropertyType.BINARY) {
DavProperty<?> lengthsProp = props.get(JCR_LENGTHS);
if (lengthsProp != null) {
// multivalued binary property
long[] lengths = ValueUtil.lengthsFromXml(lengthsProp.getValue());
QValue[] qValues = new QValue[lengths.length];
for (int i = 0; i < lengths.length; i++) {
qValues[i] = getQValueFactory(sessionInfo).create(lengths[i], uri, i);
}
return new PropertyInfoImpl(propertyId, p, propertyType, qValues);
} else {
// single valued binary property
long length = Long.parseLong(props.get(JCR_LENGTH).getValue().toString());
QValue qValue = getQValueFactory(sessionInfo).create(length, uri, QValueFactoryImpl.NO_INDEX);
return new PropertyInfoImpl(propertyId, p, propertyType, qValue);
}
} else if (props.contains(JCR_GET_STRING)) {
// single valued non-binary property
Object v = props.get(JCR_GET_STRING).getValue();
String str = (v == null) ? "" : v.toString();
QValue qValue = ValueFormat.getQValue(str, propertyType, getNamePathResolver(sessionInfo), getQValueFactory(sessionInfo));
return new PropertyInfoImpl(propertyId, p, propertyType, qValue);
} else {
// didn't expose the JCR_GET_STRING dav property.
return super.getPropertyInfo(sessionInfo, propertyId);
}
} catch (IOException e) {
log.error("Internal error while retrieving ItemInfo.", e);
throw new RepositoryException(e.getMessage());
} catch (DavException e) {
throw ExceptionConverter.generate(e);
} finally {
if (request != null) {
request.releaseConnection();
}
}
}
use of org.apache.jackrabbit.spi.QValue in project jackrabbit by apache.
the class BatchTest method testSetDateValue.
public void testSetDateValue() throws RepositoryException {
NodeId nid = getNodeId(testPath);
Name propName = resolver.getQName("dateProp");
QValue v = rs.getQValueFactory().create(Calendar.getInstance());
Batch b = rs.createBatch(si, nid);
b.addProperty(nid, propName, v);
rs.submit(b);
PropertyInfo pi = rs.getPropertyInfo(si, getPropertyId(nid, propName));
assertFalse(pi.isMultiValued());
assertEquals(v, pi.getValues()[0]);
assertEquals(v.getString(), pi.getValues()[0].getString());
assertEquals(PropertyType.DATE, pi.getType());
pi = getPropertyInfo(nid, propName);
assertEquals(v, pi.getValues()[0]);
assertEquals(v.getString(), pi.getValues()[0].getString());
assertEquals(PropertyType.DATE, pi.getType());
}
use of org.apache.jackrabbit.spi.QValue in project jackrabbit by apache.
the class BatchTest method testSetLongValue.
public void testSetLongValue() throws RepositoryException {
NodeId nid = getNodeId(testPath);
Name propName = resolver.getQName("doubleProp");
QValue v = rs.getQValueFactory().create(234567);
Batch b = rs.createBatch(si, nid);
b.addProperty(nid, propName, v);
rs.submit(b);
PropertyInfo pi = rs.getPropertyInfo(si, getPropertyId(nid, propName));
assertFalse(pi.isMultiValued());
assertEquals(v, pi.getValues()[0]);
assertEquals(v.getString(), pi.getValues()[0].getString());
assertEquals(PropertyType.LONG, pi.getType());
pi = getPropertyInfo(nid, propName);
assertEquals(v, pi.getValues()[0]);
assertEquals(v.getString(), pi.getValues()[0].getString());
assertEquals(PropertyType.LONG, pi.getType());
}
use of org.apache.jackrabbit.spi.QValue in project jackrabbit by apache.
the class BatchTest method testEmptyValueArray.
public void testEmptyValueArray() throws RepositoryException {
NodeId nid = getNodeId(testPath);
Name propName = resolver.getQName("mvProperty");
Batch b = rs.createBatch(si, nid);
b.addProperty(nid, propName, new QValue[0]);
rs.submit(b);
PropertyId pid = getPropertyId(nid, propName);
PropertyInfo pi = rs.getPropertyInfo(si, pid);
assertTrue(pi.isMultiValued());
assertEquals(Arrays.asList(new QValue[0]), Arrays.asList(pi.getValues()));
assertFalse(pi.getType() == PropertyType.UNDEFINED);
Iterator<? extends ItemInfo> it = rs.getItemInfos(si, nid);
while (it.hasNext()) {
ItemInfo info = it.next();
if (!info.denotesNode()) {
PropertyInfo pInfo = (PropertyInfo) info;
if (propName.equals((pInfo.getId().getName()))) {
assertTrue(pi.isMultiValued());
assertEquals(Arrays.asList(new QValue[0]), Arrays.asList(pi.getValues()));
assertFalse(pi.getType() == PropertyType.UNDEFINED);
break;
}
}
}
}
Aggregations