@Override public RecordBuilder recordType(String name, Long version) throws RecordException { record.setRecordType(name, version); return this; }
@Override public RecordBuilder recordType(QName name, Long version) { record.setRecordType(name, version); return this; }
@Override public void setRecordType(QName name, Long version) { record.setRecordType(name, version); }
@Override public void setRecordType(String recordTypeName) throws RecordException { record.setRecordType(recordTypeName); }
@Override public void setRecordType(QName name) { record.setRecordType(name); }
@Override public void setRecordType(Scope scope, String recordTypeName, Long version) throws RecordException { record.setRecordType(scope, recordTypeName, version); }
@Override public void setRecordType(Scope scope, QName name, Long version) { record.setRecordType(scope, name, version); }
@Override public void setRecordType(String recordTypeName, Long version) throws RecordException { record.setRecordType(recordTypeName, version); }
/** * Removes any versioned information from the supplied record object. */ public static void reduceToNonVersioned(Record record, Set<QName> fields, TypeManager typeManager) throws RepositoryException, InterruptedException { if (record.getVersion() == null) { // The record has no versions so there should be no versioned fields in it return; } Iterator<Map.Entry<QName, Object>> fieldsIt = record.getFields().entrySet().iterator(); while (fieldsIt.hasNext()) { Map.Entry<QName, Object> entry = fieldsIt.next(); if (fields != null && !fields.contains(entry.getKey())) { fieldsIt.remove(); } else if (typeManager.getFieldTypeByName(entry.getKey()).getScope() != Scope.NON_VERSIONED) { fieldsIt.remove(); } } // Remove versioned record type info record.setRecordType(Scope.VERSIONED, (QName) null, null); record.setRecordType(Scope.VERSIONED_MUTABLE, (QName) null, null); }
private void setRecordTypesAfterUpdate(Record record, Record originalRecord, Set<Scope> changedScopes) { // The returned record object after an update should always contain complete record type information for // all the scopes for (Scope scope : Scope.values()) { // For any unchanged or non-existing scope, we reset the record type information to the one of the // original record, so that the returned record object corresponds to the repository state (= same // as when one would do a fresh read) // // Copy over the original record type of a scope if: // - the scope was unchanged. If it was changed, the record type will already have been filled in // by calculateRecordChanges. // - for the non-versioned scope, only copy it over if none of the scopes changed, because the // record type of the non-versioned scope is always brought up to date in case any scope is changed if (!changedScopes.contains(scope) && (scope != Scope.NON_VERSIONED || changedScopes.isEmpty())) { record.setRecordType(scope, originalRecord.getRecordTypeName(scope), originalRecord.getRecordTypeVersion(scope)); } } }
private Record merge(Record record, Record original) { Record result = original.clone(); if (record.getRecordTypeName() != null) { result.setRecordType(record.getRecordTypeName()); } // TODO merge meta map for(Map.Entry<QName,Object> entry : record.getFields().entrySet()) { result.setField(entry.getKey(), entry.getValue()); } for (QName toDelete : record.getFieldsToDelete()) { result.getFields().remove(toDelete); } return result; }
RecordType recordType = typeManager.getRecordTypeById(recordTypePair.getV1(), recordTypePair.getV2()); recordEntry.getValue().setRecordType(scope, recordType.getName(), recordType.getVersion());
record.setRecordType(scope, recordType.getName(), recordType.getVersion());
record.setRecordType(newRecordTypeName, actualRecordTypeVersion); if (version != null) { byte[] versionBytes = Bytes.toBytes(version);
QName qname = QNameConverter.fromJson(JsonUtil.getString(typeNode, "name"), namespaces); Long version = JsonUtil.getLong(typeNode, "version", null); record.setRecordType(qname, version); } else if (typeNode.isTextual()) { record.setRecordType(QNameConverter.fromJson(typeNode.getTextValue(), namespaces));
@Override @SuppressWarnings("unchecked") public Record read(DataInput dataInput) throws RepositoryException, InterruptedException { Record record = new RecordImpl(); dataInput.readByte(); // Ignore, there is currently only one encoding : 1 int length = dataInput.readVInt(); byte[] recordTypeId = dataInput.readBytes(length); Long recordTypeVersion = dataInput.readLong(); RecordType recordType = typeManager.getRecordTypeById(new SchemaIdImpl(recordTypeId), recordTypeVersion); record.setRecordType(recordType.getName(), recordTypeVersion); Map<SchemaId, QName> idToQNameMapping = new HashMap<SchemaId, QName>(); List<FieldType> fieldTypes = getSortedFieldTypes(recordType); for (FieldType fieldType : fieldTypes) { byte readByte = dataInput.readByte(); if (DEFINED == readByte) { Object value = fieldType.getValueType().read(dataInput); record.setField(fieldType.getName(), value); idToQNameMapping.put(fieldType.getId(), fieldType.getName()); } } Map<Scope, SchemaId> recordTypeIds = new EnumMap<Scope, SchemaId>(Scope.class); recordTypeIds.put(Scope.NON_VERSIONED, recordType.getId()); return new IdRecordImpl(record, idToQNameMapping, recordTypeIds); }
private Record writeRecord(Record record) throws RepositoryException, InterruptedException{ record = record.cloneRecord(); Record originalRecord = record; ResponseStatus status = ResponseStatus.UP_TO_DATE; if (records.containsKey(record.getId())) { originalRecord = records.get(record.getId()); record = merge(record, originalRecord); if (!originalRecord.equals(record)) { status = ResponseStatus.UPDATED; } } else { status = ResponseStatus.CREATED; } QName recordTypeName = record.getRecordTypeName(); Long recordTypeVersion = getTypeManager().getRecordTypeByName(recordTypeName, null).getVersion(); record.setRecordType(recordTypeName, recordTypeVersion); validateRecord(record, originalRecord, getTypeManager().getRecordTypeByName(recordTypeName, null)); Long version = record.getVersion() == null ? 0l : record.getVersion(); record.setVersion(version + 1); records.put(record.getId(), record.cloneRecord()); record.setResponseStatus(status); return record; }
record.setRecordType(scope, recordTypeName, recordTypePair.getV2()); if (readContext != null) { readContext.setRecordTypeId(scope, recordTypePair.getV1());
QName recordType = readNullOrQName(input); Long rtVersion = readNullOrVLong(input); record.setRecordType(scope, recordType, rtVersion);
newRecord.setRecordType(typeManager.getRecordTypeById(idxSel.getNewRecordType(), null).getName()); oldRecord.setRecordType(typeManager.getRecordTypeById(idxSel.getOldRecordType(), null).getName());