/** * Determine the array type which has this type as base type * @return array type with this type as base type * @throws IllegalStateException if {@code isArray} is true. */ public Type<?> getArrayType() { checkState(!isArray(), "Not a simply type"); return fromTag(tag, true); }
/** * Determine the array type which has this type as base type * @return array type with this type as base type * @throws IllegalStateException if {@code isArray} is true. */ public Type<?> getArrayType() { checkState(!isArray(), "Not a simply type"); return fromTag(tag, true); }
/** * Determine the array type which has this type as base type * @return array type with this type as base type * @throws IllegalStateException if {@code isArray} is true. */ public Type<?> getArrayType() { checkState(!isArray(), "Not a simply type"); return fromTag(tag, true); }
/** * Determine the base type of array types * @return base type * @throws IllegalStateException if {@code isArray} is false. */ public Type<?> getBaseType() { checkState(isArray(), "Not an array"); return fromTag(tag, false); }
/** * Determine the base type of array types * @return base type * @throws IllegalStateException if {@code isArray} is false. */ public Type<?> getBaseType() { checkState(isArray(), "Not an array"); return fromTag(tag, false); }
/** * Determine the base type of array types * @return base type * @throws IllegalStateException if {@code isArray} is false. */ public Type<?> getBaseType() { checkState(isArray(), "Not an array"); return fromTag(tag, false); }
private boolean indexFacets(D doc, PropertyState property, String pname, PropertyDefinition pd) { int tag = property.getType().tag(); int idxDefinedTag = pd.getType(); // Try converting type to the defined type in the index definition if (tag != idxDefinedTag) { log.debug("[{}] Facet property defined with type {} differs from property {} with type {} in " + "path {}", getIndexName(), Type.fromTag(idxDefinedTag, false), property.toString(), Type.fromTag(tag, false), path); tag = idxDefinedTag; } return indexFacetProperty(doc, tag, property, pname); }
@NotNull protected PropertyState createSingleState( String oakName, Value value, Type<?> type) throws RepositoryException { if (type == UNDEFINED) { type = Type.fromTag(value.getType(), false); } if (type == NAME || type == PATH) { return createProperty(oakName, getOakValue(value, type), type); } else { return createProperty(oakName, value); } }
@Nonnull protected PropertyState createSingleState( String oakName, Value value, Type<?> type) throws RepositoryException { if (type == UNDEFINED) { type = Type.fromTag(value.getType(), false); } if (type == NAME || type == PATH) { return createProperty(oakName, getOakValue(value, type), type); } else { return createProperty(oakName, value); } }
@NotNull protected PropertyState createSingleState( String oakName, Value value, Type<?> type) throws RepositoryException { if (type == UNDEFINED) { type = Type.fromTag(value.getType(), false); } if (type == NAME || type == PATH) { return createProperty(oakName, getOakValue(value, type), type); } else { return createProperty(oakName, value); } }
private boolean addTypedOrderedFields(D doc, PropertyState property, String pname, PropertyDefinition pd) { // Ignore and warn if property multi-valued as not supported if (property.getType().isArray()) { log.warn( "[{}] Ignoring ordered property {} of type {} for path {} as multivalued ordered property not supported", getIndexName(), pname, Type.fromTag(property.getType().tag(), true), path); return false; } int tag = property.getType().tag(); int idxDefinedTag = pd.getType(); // Try converting type to the defined type in the index definition if (tag != idxDefinedTag) { log.debug( "[{}] Ordered property defined with type {} differs from property {} with type {} in " + "path {}", getIndexName(), Type.fromTag(idxDefinedTag, false), property.toString(), Type.fromTag(tag, false), path); tag = idxDefinedTag; } return indexTypeOrderedFields(doc, pname, tag, property, pd); }
private PropertyTemplate[] readProps(int propertyCount, int recordNumber, int offset) { PropertyTemplate[] properties = new PropertyTemplate[propertyCount]; if (propertyCount > 0) { RecordId id = readRecordId(recordNumber, offset); ListRecord propertyNames = new ListRecord(id, properties.length); offset += RECORD_ID_BYTES; for (int i = 0; i < propertyCount; i++) { byte type = readByte(recordNumber, offset++); properties[i] = new PropertyTemplate(i, reader.readString(propertyNames.getEntry(i)), Type.fromTag( Math.abs(type), type < 0)); } } return properties; }
@NotNull protected PropertyState createMultiState( String oakName, List<Value> values, Type<?> type) throws RepositoryException { if (values.isEmpty()) { Type<?> base = type.getBaseType(); if (base == UNDEFINED) { base = STRING; } return PropertyBuilder.array(base) .setName(oakName).getPropertyState(); } if (type == UNDEFINEDS) { type = Type.fromTag(values.get(0).getType(), true); } if (type == NAMES || type == PATHS) { Type<?> base = type.getBaseType(); List<String> strings = newArrayListWithCapacity(values.size()); for (Value value : values) { strings.add(getOakValue(value, base)); } return createProperty(oakName, strings, type); } else { return createProperty(oakName, values, type.tag()); } }
@Nonnull protected PropertyState createMultiState( String oakName, List<Value> values, Type<?> type) throws RepositoryException { if (values.isEmpty()) { Type<?> base = type.getBaseType(); if (base == UNDEFINED) { base = STRING; } return PropertyBuilder.array(base) .setName(oakName).getPropertyState(); } if (type == UNDEFINEDS) { type = Type.fromTag(values.get(0).getType(), true); } if (type == NAMES || type == PATHS) { Type<?> base = type.getBaseType(); List<String> strings = newArrayListWithCapacity(values.size()); for (Value value : values) { strings.add(getOakValue(value, base)); } return createProperty(oakName, strings, type); } else { return createProperty(oakName, values, type.tag()); } }
@NotNull protected PropertyState createMultiState( String oakName, List<Value> values, Type<?> type) throws RepositoryException { if (values.isEmpty()) { Type<?> base = type.getBaseType(); if (base == UNDEFINED) { base = STRING; } return PropertyBuilder.array(base) .setName(oakName).getPropertyState(); } if (type == UNDEFINEDS) { type = Type.fromTag(values.get(0).getType(), true); } if (type == NAMES || type == PATHS) { Type<?> base = type.getBaseType(); List<String> strings = newArrayListWithCapacity(values.size()); for (Value value : values) { strings.add(getOakValue(value, base)); } return createProperty(oakName, strings, type); } else { return createProperty(oakName, values, type.tag()); } }
private Property internalSetProperty( final String jcrName, final Value value, final boolean exactTypeMatch) throws RepositoryException { final String oakName = getOakPathOrThrow(checkNotNull(jcrName)); final PropertyState state = createSingleState( oakName, value, Type.fromTag(value.getType(), false)); return perform(new ItemWriteOperation<Property>("internalSetProperty") { @Override public void checkPreconditions() throws RepositoryException { super.checkPreconditions(); if (!isCheckedOut() && getOPV(dlg.getTree(), state) != OnParentVersionAction.IGNORE) { throw new VersionException(format( "Cannot set property. Node [%s] is checked in.", getNodePath())); } } @NotNull @Override public Property perform() throws RepositoryException { return new PropertyImpl( dlg.setProperty(state, exactTypeMatch, false), sessionContext); } @Override public String toString() { return format("Setting property [%s/%s]", dlg.getPath(), jcrName); } }); }
private Property internalSetProperty( final String jcrName, final Value value, final boolean exactTypeMatch) throws RepositoryException { final String oakName = getOakPathOrThrow(checkNotNull(jcrName)); final PropertyState state = createSingleState( oakName, value, Type.fromTag(value.getType(), false)); return perform(new ItemWriteOperation<Property>("internalSetProperty") { @Override public void checkPreconditions() throws RepositoryException { super.checkPreconditions(); if (!isCheckedOut() && getOPV(dlg.getTree(), state) != OnParentVersionAction.IGNORE) { throw new VersionException(format( "Cannot set property. Node [%s] is checked in.", getNodePath())); } } @NotNull @Override public Property perform() throws RepositoryException { return new PropertyImpl( dlg.setProperty(state, exactTypeMatch, false), sessionContext); } @Override public String toString() { return format("Setting property [%s/%s]", dlg.getPath(), jcrName); } }); }
/** * Create a {@code PropertyState} based on a {@link Value}. The * {@link Type} of the property state is determined by the * type of the value. * @param name The name of the property state * @param value The value of the property state * @return The new property state * @throws RepositoryException forwarded from {@code value} */ @Nonnull public static PropertyState createProperty(String name, Value value) throws RepositoryException { int type = value.getType(); switch (type) { case PropertyType.STRING: return StringPropertyState.stringProperty(name, getString(value, type)); case PropertyType.BINARY: return BinaryPropertyState.binaryProperty(name, value); case PropertyType.LONG: return LongPropertyState.createLongProperty(name, value.getLong()); case PropertyType.DOUBLE: return DoublePropertyState.doubleProperty(name, value.getDouble()); case PropertyType.BOOLEAN: return BooleanPropertyState.booleanProperty(name, value.getBoolean()); case PropertyType.DECIMAL: return DecimalPropertyState.decimalProperty(name, value.getDecimal()); default: return new GenericPropertyState(name, getString(value, type), Type.fromTag(type, false)); } }
/** * Create a {@code PropertyState} from a string. * @param name The name of the property state * @param value The value of the property state * @param type The type of the property state * @return The new property state */ @NotNull public static PropertyState createProperty(String name, String value, int type) { switch (type) { case PropertyType.STRING: return StringPropertyState.stringProperty(name, value); case PropertyType.BINARY: return BinaryPropertyState.binaryProperty(name, Conversions.convert(value).toBinary()); case PropertyType.LONG: return LongPropertyState.createLongProperty(name, Conversions.convert(value).toLong()); case PropertyType.DOUBLE: return DoublePropertyState.doubleProperty(name, Conversions.convert(value).toDouble()); case PropertyType.BOOLEAN: return BooleanPropertyState.booleanProperty(name, Conversions.convert(value).toBoolean()); case PropertyType.DECIMAL: return DecimalPropertyState.decimalProperty(name, Conversions.convert(value).toDecimal()); default: return new GenericPropertyState(name, value, Type.fromTag(type, false)); } }
/** * Create a {@code PropertyState} from a string. * @param name The name of the property state * @param value The value of the property state * @param type The type of the property state * @return The new property state */ @Nonnull public static PropertyState createProperty(String name, String value, int type) { switch (type) { case PropertyType.STRING: return StringPropertyState.stringProperty(name, value); case PropertyType.BINARY: return BinaryPropertyState.binaryProperty(name, Conversions.convert(value).toBinary()); case PropertyType.LONG: return LongPropertyState.createLongProperty(name, Conversions.convert(value).toLong()); case PropertyType.DOUBLE: return DoublePropertyState.doubleProperty(name, Conversions.convert(value).toDouble()); case PropertyType.BOOLEAN: return BooleanPropertyState.booleanProperty(name, Conversions.convert(value).toBoolean()); case PropertyType.DECIMAL: return DecimalPropertyState.decimalProperty(name, Conversions.convert(value).toDecimal()); default: return new GenericPropertyState(name, value, Type.fromTag(type, false)); } }