Examples of MetadataBuilder


Examples of org.lilyproject.repository.api.MetadataBuilder

            os.close();

            Record record = repository.newRecord();
            record.setRecordType(recordType1.getName());
            record.setField(blobField.getName(), blob);
            record.setMetadata(blobField.getName(), new MetadataBuilder().value("field1", "value1").build());
            try {
                record = repository.create(record);
                fail("Expected an exception trying to set metadata on a blob field");
            } catch (Exception e) {
                assertTrue(e.getMessage().contains("Field metadata is currently not supported for BLOB fields."));
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

        // is metadata for the field (metadata is stored in the same cell as the value, and should be ignored
        // by the FieldValueFilter)
        Record record = repository.newRecord();
        record.setRecordType(recordType1.getName());
        record.setField(fieldType1.getName(), "stop drinking coke");
        record.setMetadata(fieldType1.getName(), new MetadataBuilder().value("field1", "foobar").build());
        repository.create(record);

        RecordScan scan = new RecordScan();
        scan.setRecordFilter(new FieldValueFilter(fieldType1.getName(), "stop drinking coke"));
        assertEquals(1, countResults(repository.getScanner(scan)));
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

    @Test
    public void testMetadataViaRecordBuilder() throws Exception {
        Record record = repository.recordBuilder()
                .recordType(recordType1.getName())
                .field(fieldType1.getName(), "hi")
                .metadata(fieldType1.getName(), new MetadataBuilder().value("x", "y").build())
                .create();

        record = repository.read(record.getId());
        assertEquals("y", record.getMetadata(fieldType1.getName()).get("x"));
    }
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

    @Test
    public void testMetadataFieldsToDeleteNotStored() throws Exception {
        Record record = repository.recordBuilder()
                .recordType(recordType1.getName())
                .field(fieldType1.getName(), "hi")
                .metadata(fieldType1.getName(), new MetadataBuilder().value("x", "y").delete("z").build())
                .create();

        record = repository.read(record.getId());
        assertEquals(0, record.getMetadata(fieldType1.getName()).getFieldsToDelete().size());
    }
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

            output.writeVUTF(field);
        }
    }

    public static Metadata read(DataInput input) {
        MetadataBuilder metadataBuilder = new MetadataBuilder();

        // read fields
        int size = input.readVInt();
        for (int i = 0; i < size; i++) {
            String key = input.readVUTF();
            byte valueType = input.readByte();
            ValueSerDeser serdeser = BYTE_TO_SERDESER.get(valueType);
            if (serdeser == null) {
                throw new IllegalArgumentException("Unsupported kind of metadata value: type byte " + (int)valueType);
            }
            Object value = serdeser.deserialize(input);
            metadataBuilder.object(key, value);
        }

        // read deleted fields
        size = input.readVInt();
        for (int i = 0; i < size; i++) {
            metadataBuilder.delete(input.readVUTF());
        }

        return metadataBuilder.build();
    }
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

            metadataBuilders = new HashMap<QName, MetadataBuilder>();
            Iterator<Map.Entry<String, JsonNode>> it = metadata.getFields();
            while (it.hasNext()) {
                Map.Entry<String, JsonNode> entry = it.next();
                QName qname = QNameConverter.fromJson(entry.getKey(), namespaces);
                MetadataBuilder builder = readMetadata(entry.getValue(), qname);
                metadataBuilders.put(qname, builder);
            }
        }

        ObjectNode metadataToDelete = getObject(node, "metadataToDelete", null);
        if (metadataToDelete != null) {
            if (metadataBuilders == null) {
                metadataBuilders = new HashMap<QName, MetadataBuilder>();
            }

            Iterator<Map.Entry<String, JsonNode>> it = metadataToDelete.getFields();
            while (it.hasNext()) {
                Map.Entry<String, JsonNode> entry = it.next();
                QName qname = QNameConverter.fromJson(entry.getKey(), namespaces);
                MetadataBuilder builder = readMetadataToDelete(entry.getValue(), metadataBuilders.get(qname), qname);
                metadataBuilders.put(qname, builder);
            }
        }

        if (metadataBuilders != null) {
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

        if (!metadata.isObject()) {
            throw new JsonFormatException("The value for the metadata should be an object, field: " + recordField);
        }

        ObjectNode object = (ObjectNode)metadata;
        MetadataBuilder builder = new MetadataBuilder();

        Iterator<Map.Entry<String, JsonNode>> it = object.getFields();
        while (it.hasNext()) {
            Map.Entry<String, JsonNode> entry = it.next();
            String name = entry.getKey();
            JsonNode value = entry.getValue();

            if (value.isTextual()) {
                builder.value(name, value.getTextValue());
            } else if (value.isInt()) {
                builder.value(name, value.getIntValue());
            } else if (value.isLong()) {
                builder.value(name, value.getLongValue());
            } else if (value.isBoolean()) {
                builder.value(name, value.getBooleanValue());
            } else if (value.isFloatingPointNumber()) {
                // In the JSON format, for simplicity, we don't make distinction between float & double, so you
                // can't control which of the two is created.
                builder.value(name, value.getDoubleValue());
            } else if (value.isObject()) {
                String type = JsonUtil.getString(value, "type", null);
                if (type == null) {
                    throw new JsonFormatException("Missing required 'type' property on object in metadata field '"
                            + name + "' of record field " + recordField);
                }

                if (type.equals("binary")) {
                    JsonNode binaryValue = value.get("value");
                    if (!binaryValue.isTextual()) {
                        throw new JsonFormatException("Invalid binary value for metadata field '"
                                + name + "' of record field " + recordField);
                    }

                    try {
                        builder.value(name, new ByteArray(binaryValue.getBinaryValue()));
                    } catch (IOException e) {
                        throw new JsonFormatException("Invalid binary value for metadata field '"
                                + name + "' of record field " + recordField);
                    }
                } else if (type.equals("datetime")) {
                    JsonNode datetimeValue = value.get("value");
                    if (!datetimeValue.isTextual()) {
                        throw new JsonFormatException("Invalid datetime value for metadata field '"
                                + name + "' of record field " + recordField);
                    }

                    try {
                        builder.value(name, ISODateTimeFormat.dateTime().parseDateTime(datetimeValue.getTextValue()));
                    } catch (Exception e) {
                        throw new JsonFormatException("Invalid datetime value for metadata field '"
                                + name + "' of record field " + recordField);
                    }
                } else {
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

            throw new JsonFormatException("The value for the metadataToDelete should be an array, field: " + recordField);
        }

        ArrayNode array = (ArrayNode)metadataToDelete;
        if (builder == null) {
            builder = new MetadataBuilder();
        }

        for (int i = 0; i < array.size(); i++) {
            JsonNode entry = array.get(i);
            if (!entry.isTextual()) {
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

        // Clearing the fieldsToDelete of the metadata's is a bit more complex since those objects are immutable
        Map<QName, Metadata> changedMetadata = null;
        for (Map.Entry<QName, Metadata> metadataEntry : record.getMetadataMap().entrySet()) {
            if (metadataEntry.getValue().getFieldsToDelete().size() > 0) {
                MetadataBuilder builder = new MetadataBuilder();
                for (Map.Entry<String, Object> entry : metadataEntry.getValue().getMap().entrySet()) {
                    builder.object(entry.getKey(), entry.getValue());
                }
                if (changedMetadata == null) {
                    changedMetadata = new HashMap<QName, Metadata>();
                }
                changedMetadata.put(metadataEntry.getKey(), builder.build());
            }
        }

        if (changedMetadata != null) {
            record.getMetadataMap().putAll(changedMetadata);
View Full Code Here

Examples of org.lilyproject.repository.api.MetadataBuilder

        if (newMetadata == null || newMetadata.isEmpty()) {
            return oldMetadata;
        }

        MetadataBuilder result = new MetadataBuilder();

        // Run over the old values
        for (Entry<String, Object> entry : oldMetadata.getMap().entrySet()) {
            // If it's not deleted
            if (!newMetadata.getFieldsToDelete().contains(entry.getKey())) {
                // If it's not updated
                if (!newMetadata.contains(entry.getKey())) {
                    result.object(entry.getKey(), entry.getValue());
                }
            }
        }

        // Run over the new values
        for (Entry<String, Object> entry : newMetadata.getMap().entrySet()) {
            result.object(entry.getKey(), entry.getValue());
        }

        return result.build();
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.