Search in sources :

Example 36 with Binary

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();
    }
}
Also used : NodeTypeManager(javax.jcr.nodetype.NodeTypeManager) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Node(javax.jcr.Node) JackrabbitWorkspace(org.apache.jackrabbit.api.JackrabbitWorkspace) BigDecimal(java.math.BigDecimal) MemoryStore(org.apache.jackrabbit.oak.segment.memory.MemoryStore) Repository(javax.jcr.Repository) NodeStore(org.apache.jackrabbit.oak.spi.state.NodeStore) NamespaceRegistry(javax.jcr.NamespaceRegistry) NodeTypeTemplate(javax.jcr.nodetype.NodeTypeTemplate) PropertyDefinitionTemplate(javax.jcr.nodetype.PropertyDefinitionTemplate) ByteArrayInputStream(java.io.ByteArrayInputStream) Jcr(org.apache.jackrabbit.oak.jcr.Jcr) Oak(org.apache.jackrabbit.oak.Oak) Value(javax.jcr.Value) Binary(javax.jcr.Binary) Session(javax.jcr.Session) JackrabbitSession(org.apache.jackrabbit.api.JackrabbitSession)

Example 37 with Binary

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();
    }
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Node(javax.jcr.Node) Value(javax.jcr.Value) Binary(javax.jcr.Binary) BigDecimal(java.math.BigDecimal) Session(javax.jcr.Session) Test(org.junit.Test)

Example 38 with Binary

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();
        }
    };
}
Also used : AbstractBlob(org.apache.jackrabbit.oak.plugins.memory.AbstractBlob) ByteArrayInputStream(java.io.ByteArrayInputStream) RepositoryException(javax.jcr.RepositoryException) ReferenceBinary(org.apache.jackrabbit.api.ReferenceBinary) Binary(javax.jcr.Binary) ReferenceBinary(org.apache.jackrabbit.api.ReferenceBinary)

Example 39 with Binary

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());
    }
}
Also used : Blob(org.apache.jackrabbit.oak.api.Blob) Binary(javax.jcr.Binary)

Example 40 with Binary

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);
    }
}
Also used : ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) Node(javax.jcr.Node) Binary(javax.jcr.Binary)

Aggregations

Binary (javax.jcr.Binary)51 ByteArrayInputStream (java.io.ByteArrayInputStream)28 InputStream (java.io.InputStream)22 Node (javax.jcr.Node)20 Value (javax.jcr.Value)14 Test (org.junit.Test)12 Session (javax.jcr.Session)10 ReferenceBinary (org.apache.jackrabbit.api.ReferenceBinary)8 BigDecimal (java.math.BigDecimal)7 SimpleReferenceBinary (org.apache.jackrabbit.commons.jackrabbit.SimpleReferenceBinary)7 RandomInputStream (org.apache.jackrabbit.core.data.RandomInputStream)7 IOException (java.io.IOException)5 Property (javax.jcr.Property)5 RepositoryException (javax.jcr.RepositoryException)5 NodeTypeManager (javax.jcr.nodetype.NodeTypeManager)4 JackrabbitNode (org.apache.jackrabbit.api.JackrabbitNode)4 NamespaceRegistry (javax.jcr.NamespaceRegistry)3 ValueFactory (javax.jcr.ValueFactory)3 NodeTypeTemplate (javax.jcr.nodetype.NodeTypeTemplate)3 QValue (org.apache.jackrabbit.spi.QValue)3