use of javax.jcr.Binary in project jackrabbit-oak by apache.
the class RepositorySidegradeTest method createSourceContent.
@SuppressWarnings("unchecked")
protected NodeStore createSourceContent() throws Exception {
NodeStore source = SegmentNodeStoreBuilders.builder(new MemoryStore()).build();
Repository repository = new Jcr(new Oak(source)).createRepository();
Session session = repository.login(CREDENTIALS);
try {
JackrabbitWorkspace workspace = (JackrabbitWorkspace) session.getWorkspace();
NamespaceRegistry registry = workspace.getNamespaceRegistry();
registry.registerNamespace("test", "http://www.example.org/");
NodeTypeManager nodeTypeManager = workspace.getNodeTypeManager();
NodeTypeTemplate template = nodeTypeManager.createNodeTypeTemplate();
template.setName("test:unstructured");
template.setDeclaredSuperTypeNames(new String[] { "nt:unstructured" });
PropertyDefinitionTemplate pDef1 = nodeTypeManager.createPropertyDefinitionTemplate();
pDef1.setName("defaultString");
pDef1.setRequiredType(PropertyType.STRING);
Value stringValue = session.getValueFactory().createValue("stringValue");
pDef1.setDefaultValues(new Value[] { stringValue });
template.getPropertyDefinitionTemplates().add(pDef1);
PropertyDefinitionTemplate pDef2 = nodeTypeManager.createPropertyDefinitionTemplate();
pDef2.setName("defaultPath");
pDef2.setRequiredType(PropertyType.PATH);
Value pathValue = session.getValueFactory().createValue("/jcr:path/nt:value", PropertyType.PATH);
pDef2.setDefaultValues(new Value[] { pathValue });
template.getPropertyDefinitionTemplates().add(pDef2);
nodeTypeManager.registerNodeType(template, false);
template = nodeTypeManager.createNodeTypeTemplate();
template.setName("test:referenceable");
template.setDeclaredSuperTypeNames(new String[] { "nt:unstructured", "mix:referenceable" });
nodeTypeManager.registerNodeType(template, false);
Node root = session.getRootNode();
Node referenceable = root.addNode("referenceable", "test:unstructured");
referenceable.addMixin(NodeType.MIX_REFERENCEABLE);
Node versionable = root.addNode("versionable", NT_UNSTRUCTURED);
versionable.addMixin(MIX_VERSIONABLE);
Node child = versionable.addNode("child", "test:referenceable");
child.addNode("child2", NT_UNSTRUCTURED);
session.save();
session.getWorkspace().getVersionManager().checkin("/versionable");
Node properties = root.addNode("properties", "test:unstructured");
properties.setProperty("boolean", true);
Binary binary = session.getValueFactory().createBinary(new ByteArrayInputStream(BINARY));
try {
properties.setProperty("binary", binary);
} finally {
binary.dispose();
}
properties.setProperty("date", DATE);
properties.setProperty("decimal", new BigDecimal(123));
properties.setProperty("double", Math.PI);
properties.setProperty("long", 9876543210L);
properties.setProperty("reference", referenceable);
properties.setProperty("weak_reference", session.getValueFactory().createValue(referenceable, true));
properties.setProperty("mv_reference", new Value[] { session.getValueFactory().createValue(versionable, false) });
properties.setProperty("mv_weak_reference", new Value[] { session.getValueFactory().createValue(versionable, true) });
properties.setProperty("string", "test");
properties.setProperty("multiple", "a,b,c".split(","));
session.save();
binary = properties.getProperty("binary").getBinary();
try {
InputStream stream = binary.getStream();
try {
for (byte aBINARY : BINARY) {
assertEquals(aBINARY, (byte) stream.read());
}
assertEquals(-1, stream.read());
} finally {
stream.close();
}
} finally {
binary.dispose();
}
return source;
} finally {
session.logout();
}
}
use of javax.jcr.Binary in project jackrabbit-oak by apache.
the class RepositoryUpgradeTest method verifyGenericProperties.
@Test
public void verifyGenericProperties() throws Exception {
Session session = createAdminSession();
try {
assertTrue(session.nodeExists("/properties"));
Node properties = session.getNode("/properties");
assertEquals(PropertyType.BOOLEAN, properties.getProperty("boolean").getType());
assertEquals(true, properties.getProperty("boolean").getBoolean());
assertEquals(PropertyType.BINARY, properties.getProperty("binary").getType());
Binary binary = properties.getProperty("binary").getBinary();
try {
InputStream stream = binary.getStream();
try {
for (byte aBINARY : BINARY) {
assertEquals(aBINARY, (byte) stream.read());
}
assertEquals(-1, stream.read());
} finally {
stream.close();
}
} finally {
binary.dispose();
}
assertEquals(PropertyType.DATE, properties.getProperty("date").getType());
assertEquals(DATE.getTimeInMillis(), properties.getProperty("date").getDate().getTimeInMillis());
assertEquals(PropertyType.DECIMAL, properties.getProperty("decimal").getType());
assertEquals(new BigDecimal(123), properties.getProperty("decimal").getDecimal());
assertEquals(PropertyType.DOUBLE, properties.getProperty("double").getType());
assertEquals(Math.PI, properties.getProperty("double").getDouble());
assertEquals(PropertyType.LONG, properties.getProperty("long").getType());
assertEquals(9876543210L, properties.getProperty("long").getLong());
assertEquals(PropertyType.STRING, properties.getProperty("string").getType());
assertEquals("test", properties.getProperty("string").getString());
assertEquals(PropertyType.STRING, properties.getProperty("multiple").getType());
Value[] values = properties.getProperty("multiple").getValues();
assertEquals(3, values.length);
assertEquals("a", values[0].getString());
assertEquals("b", values[1].getString());
assertEquals("c", values[2].getString());
} finally {
session.logout();
}
}
use of javax.jcr.Binary in project jackrabbit-oak by apache.
the class JackrabbitNodeState method createBlob.
private Blob createBlob(final InternalValue value) {
checkArgument(checkNotNull(value).getType() == PropertyType.BINARY);
return new AbstractBlob() {
@Override
public long length() {
try {
return value.getLength();
} catch (RepositoryException e) {
warn("Unable to access blob length", e);
return 0;
}
}
@Nonnull
@Override
public InputStream getNewStream() {
try {
return value.getStream();
} catch (RepositoryException e) {
warn("Unable to access blob contents", e);
return new ByteArrayInputStream(new byte[0]);
}
}
@Override
public String getReference() {
if (!useBinaryReferences) {
return null;
}
try {
Binary binary = value.getBinary();
try {
if (binary instanceof ReferenceBinary) {
return ((ReferenceBinary) binary).getReference();
} else {
return null;
}
} finally {
binary.dispose();
}
} catch (RepositoryException e) {
warn("Unable to get blob reference", e);
return null;
}
}
@Override
public String getContentIdentity() {
final String reference = getReference();
if (reference != null) {
final int pos = reference.indexOf(":");
final String blobHash;
if (pos > -1) {
blobHash = reference.substring(0, pos);
} else {
blobHash = reference;
}
return blobHash + "#" + length();
}
return super.getContentIdentity();
}
};
}
use of javax.jcr.Binary in project jackrabbit-oak by apache.
the class NodeStateCopyUtils method createValue.
private static Value createValue(ValueFactory vf, PropertyState ps, int index) throws RepositoryException {
switch(ps.getType().tag()) {
case PropertyType.STRING:
return vf.createValue(getValue(ps, Type.STRING, index));
case PropertyType.BINARY:
Blob blob = getValue(ps, Type.BINARY, index);
Binary bin = vf.createBinary(blob.getNewStream());
return vf.createValue(bin);
case PropertyType.LONG:
return vf.createValue(getValue(ps, Type.LONG, index));
case PropertyType.DOUBLE:
return vf.createValue(getValue(ps, Type.DOUBLE, index));
case PropertyType.DATE:
return vf.createValue(getValue(ps, Type.DATE, index));
case PropertyType.BOOLEAN:
return vf.createValue(getValue(ps, Type.BOOLEAN, index));
case PropertyType.NAME:
return vf.createValue(getValue(ps, Type.NAME, index));
case PropertyType.PATH:
return vf.createValue(getValue(ps, Type.PATH, index));
case PropertyType.REFERENCE:
return vf.createValue(getValue(ps, Type.REFERENCE, index));
case PropertyType.WEAKREFERENCE:
return vf.createValue(getValue(ps, Type.WEAKREFERENCE, index));
case PropertyType.URI:
return vf.createValue(getValue(ps, Type.URI, index));
case PropertyType.DECIMAL:
return vf.createValue(getValue(ps, Type.DECIMAL, index));
default:
throw new IllegalStateException("Unsupported type " + ps.getType());
}
}
use of javax.jcr.Binary in project jackrabbit-oak by apache.
the class TextExtractionQueryTest method assertFileContains.
private void assertFileContains(String name, String type, String... statements) throws Exception {
if (testRootNode.hasNode(nodeName1)) {
testRootNode.getNode(nodeName1).remove();
}
testRootNode.getSession().save();
Node resource = testRootNode.addNode(nodeName1, NodeType.NT_RESOURCE);
resource.setProperty(JcrConstants.JCR_MIMETYPE, type);
InputStream stream = getClass().getResourceAsStream(name);
assertNotNull(stream);
try {
Binary binary = testRootNode.getSession().getValueFactory().createBinary(stream);
resource.setProperty(JcrConstants.JCR_DATA, binary);
} finally {
stream.close();
}
testRootNode.getSession().save();
for (String statement : statements) {
assertContainsQuery(statement, true);
}
}
Aggregations