in oak-store-spi/src/main/java/org/apache/jackrabbit/oak/plugins/memory/PropertyStates.java [196:248]
public static PropertyState createProperty(String name, Object value, Type<?> type) {
switch (type.tag()) {
case PropertyType.STRING:
return type.isArray()
? MultiStringPropertyState.stringProperty(name, (Iterable<String>) value)
: StringPropertyState.stringProperty(name, (String) value);
case PropertyType.BINARY:
return type.isArray()
? MultiBinaryPropertyState.binaryPropertyFromBlob(name, (Iterable<Blob>) value)
: BinaryPropertyState.binaryProperty(name, (Blob) value);
case PropertyType.LONG:
return type.isArray()
? MultiLongPropertyState.createLongProperty(name, (Iterable<Long>) value)
: LongPropertyState.createLongProperty(name, (Long) value);
case PropertyType.DOUBLE:
return type.isArray()
? MultiDoublePropertyState.doubleProperty(name, (Iterable<Double>) value)
: DoublePropertyState.doubleProperty(name, (Double) value);
case PropertyType.DATE:
return type.isArray()
? MultiGenericPropertyState.dateProperty(name, (Iterable<String>) value)
: GenericPropertyState.dateProperty(name, (String) value);
case PropertyType.BOOLEAN:
return type.isArray()
? MultiBooleanPropertyState.booleanProperty(name, (Iterable<Boolean>) value)
: BooleanPropertyState.booleanProperty(name, (Boolean) value);
case PropertyType.NAME:
return type.isArray()
? MultiGenericPropertyState.nameProperty(name, (Iterable<String>) value)
: GenericPropertyState.nameProperty(name, (String) value);
case PropertyType.PATH:
return type.isArray()
? MultiGenericPropertyState.pathProperty(name, (Iterable<String>) value)
: GenericPropertyState.pathProperty(name, (String) value);
case PropertyType.REFERENCE:
return type.isArray()
? MultiGenericPropertyState.referenceProperty(name, (Iterable<String>) value)
: GenericPropertyState.referenceProperty(name, (String) value);
case PropertyType.WEAKREFERENCE:
return type.isArray()
? MultiGenericPropertyState.weakreferenceProperty(name, (Iterable<String>) value)
: GenericPropertyState.weakreferenceProperty(name, (String) value);
case PropertyType.URI:
return type.isArray()
? MultiGenericPropertyState.uriProperty(name, (Iterable<String>) value)
: GenericPropertyState.uriProperty(name, (String) value);
case PropertyType.DECIMAL:
return type.isArray()
? MultiDecimalPropertyState.decimalProperty(name, (Iterable<BigDecimal>) value)
: DecimalPropertyState.decimalProperty(name, (BigDecimal) value);
default: throw new IllegalArgumentException("Invalid type: " + type);
}
}