@Override public DocumentDescriptor create(DocumentUriTemplate template, W contentHandle) throws ForbiddenUserException, FailedRequestException { return create(template, null, contentHandle, null, null, getWriteParams()); } @Override
@Override public DocumentDescriptor createAs(DocumentUriTemplate template, Object content, ServerTransform transform) throws ForbiddenUserException, FailedRequestException { return createAs(template, null, content, transform); } @Override
@Override public void delete(String uri) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { delete(uri, null); } @Override
@Override public <T extends R> T read(String uri, T contentHandle, ServerTransform transform) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { return read(uri, null, contentHandle, transform, null, getReadParams()); } @Override
@SuppressWarnings("rawtypes") protected DocumentDescriptorImpl create(DocumentUriTemplate template, DocumentMetadataWriteHandle metadataHandle, W contentHandle, ServerTransform transform, Transaction transaction, String temporalCollection, Calendar systemTime, RequestParameters extraParams) { if ( logger.isInfoEnabled() ) logger.info("Creating content"); if ( extraParams == null ) extraParams = getWriteParams(); if (metadataHandle != null) { HandleImplementation metadataBase = HandleAccessor.checkHandle( metadataHandle, "metadata"); Format metadataFormat = metadataBase.getFormat(); if (metadataFormat == null || (metadataFormat != Format.JSON && metadataFormat != Format.XML)) { if (logger.isWarnEnabled()) logger.warn("Unsupported metadata format {}, using XML", metadataFormat.name()); metadataBase.setFormat(Format.XML); } } extraParams = addTemporalParams(extraParams, temporalCollection, null, systemTime); checkContentFormat(contentHandle); return services.postDocument( requestLogger, template, transaction, (metadataHandle != null) ? processedMetadata : null, mergeTransformParameters((transform != null) ? transform : getWriteTransform(), extraParams), metadataHandle, contentHandle); }
checkContentFormat(contentHandle); extraParams = addTemporalParams(extraParams, temporalCollection, null, null); transaction, (metadataHandle != null) ? processedMetadata : null, mergeTransformParameters((transform != null) ? transform : getReadTransform(), extraParams), metadataHandle, contentHandle);
@Override public <T> T readAs(String uri, DocumentMetadataReadHandle metadataHandle, Class<T> as, ServerTransform transform) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { ContentHandle<T> handle = getHandleRegistry().makeHandle(as); if (null == read(uri, metadataHandle, castAbstractReadHandle(as, handle), transform)) { return null; } return handle.get(); } R castAbstractReadHandle(Class<?> as, AbstractReadHandle handle) {
@Override public DocumentDescriptor createAs(DocumentUriTemplate template, DocumentMetadataWriteHandle metadataHandle, Object content, ServerTransform transform) throws ForbiddenUserException, FailedRequestException { Class<?> as = content.getClass(); W writeHandle = null; if (AbstractWriteHandle.class.isAssignableFrom(as)) { AbstractWriteHandle handle = (AbstractWriteHandle) content; writeHandle = castAbstractWriteHandle(null, handle); } else { ContentHandle<?> handle = getHandleRegistry().makeHandle(as); Utilities.setHandleContent(handle, content); writeHandle = castAbstractWriteHandle(as, handle); } return create(template, metadataHandle, writeHandle, transform); }
@Override public void writeAs(String uri, DocumentMetadataWriteHandle metadataHandle, Object content, ServerTransform transform) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { if (content == null) { throw new IllegalArgumentException("no content to write"); } Class<?> as = content.getClass(); W writeHandle = null; if (AbstractWriteHandle.class.isAssignableFrom(as)) { AbstractWriteHandle handle = (AbstractWriteHandle) content; writeHandle = castAbstractWriteHandle(null, handle); } else { ContentHandle<?> handle = getHandleRegistry().makeHandle(as); Utilities.setHandleContent(handle, content); writeHandle = castAbstractWriteHandle(as, handle); } write(uri, metadataHandle, writeHandle, transform); } W castAbstractWriteHandle(Class<?> as, AbstractWriteHandle handle) {
@SuppressWarnings("rawtypes") public DocumentDescriptor create(DocumentUriTemplate template, DocumentMetadataWriteHandle metadataHandle, W contentHandle, ServerTransform transform, Transaction transaction, RequestParameters extraParams) throws ForbiddenUserException, FailedRequestException { if (logger.isInfoEnabled()) logger.info("Creating content"); if (metadataHandle != null) { HandleImplementation metadataBase = HandleAccessor.checkHandle(metadataHandle, "metadata"); Format metadataFormat = metadataBase.getFormat(); if (metadataFormat == null || (metadataFormat != Format.JSON && metadataFormat != Format.XML)) { if (logger.isWarnEnabled()) logger.warn("Unsupported metadata format {}, using XML",metadataFormat.name()); metadataBase.setFormat(Format.XML); } } checkContentFormat(contentHandle); return services.postDocument( requestLogger, template, (transaction == null) ? null : transaction.getTransactionId(), (metadataHandle != null) ? processedMetadata : null, mergeTransformParameters( (transform != null) ? transform : getWriteTransform(), extraParams ), metadataHandle, contentHandle ); }
checkContentFormat(contentHandle); (transaction != null) ? transaction.getTransactionId() : null, (metadataHandle != null) ? processedMetadata : null, mergeTransformParameters( (transform != null) ? transform : getReadTransform(), extraParams ),
private DocumentPage search(QueryDefinition querydef, long start, long serverTimestamp, SearchReadHandle searchHandle, Transaction transaction) { if (searchHandle != null) { HandleImplementation searchBase = HandleAccessor.checkHandle( searchHandle, "search"); if (searchHandle instanceof SearchHandle) { SearchHandle responseHandle = (SearchHandle) searchHandle; responseHandle.setHandleRegistry(getHandleRegistry()); responseHandle.setQueryCriteria(querydef); } if (nonDocumentFormat != null && nonDocumentFormat != searchBase.getFormat()) { throw new UnsupportedOperationException( "The format supported by your handle:[" + searchBase.getFormat() + "] does not match the non-document format:[" + nonDocumentFormat + "]"); } } String tid = transaction == null ? null : transaction.getTransactionId(); // the default for bulk is no metadata, which differs from the normal // default of ALL Set<Metadata> metadata = isProcessedMetadataModified ? processedMetadata : null; return services.getBulkDocuments(requestLogger, serverTimestamp, querydef, start, getPageLength(), transaction, searchHandle, searchView, metadata, nonDocumentFormat, getReadTransform(), null); }
@Override public DocumentDescriptor create(DocumentUriTemplate template, DocumentMetadataWriteHandle metadataHandle, W contentHandle, Transaction transaction) throws ForbiddenUserException, FailedRequestException { return create(template, metadataHandle, contentHandle, null, transaction, null, null, null); }
@Override public void patchAs(String uri, Object patch) throws ForbiddenUserException, FailedRequestException { if (patch == null) { throw new IllegalArgumentException("no patch to apply"); } Class<?> as = patch.getClass(); DocumentPatchHandle patchHandle = null; if (DocumentPatchHandle.class.isAssignableFrom(as)) { patchHandle = (DocumentPatchHandle) patch; } else { ContentHandle<?> handle = getHandleRegistry().makeHandle(as); if (!DocumentPatchHandle.class.isAssignableFrom(handle.getClass())) { throw new IllegalArgumentException("Handle " + handle.getClass().getName() + " cannot be used to apply patch as " + as.getName()); } Utilities.setHandleContent(handle, patch); patchHandle = (DocumentPatchHandle) handle; } patch(uri, patchHandle); }
@Override public void setMetadataCategories(Set<Metadata> categories) { clearMetadataCategories(); processedMetadata.addAll(categories); } @Override
@Override public DocumentDescriptor exists(String uri) throws ForbiddenUserException, FailedRequestException { return exists(uri, null); } @Override
private void checkContentFormat(Object contentHandle) { checkContentFormat(HandleAccessor.checkHandle(contentHandle, "content")); } @SuppressWarnings("rawtypes")
@Override public PojoPage<T> search(PojoQueryDefinition query, long start, SearchReadHandle searchHandle, Transaction transaction) { if ( searchHandle != null ) { HandleAccessor.checkHandle(searchHandle, "search"); if (searchHandle instanceof SearchHandle) { SearchHandle responseHandle = (SearchHandle) searchHandle; if ( docMgr instanceof DocumentManagerImpl ) { responseHandle.setHandleRegistry(((DocumentManagerImpl<?, ?>) docMgr).getHandleRegistry()); } responseHandle.setQueryCriteria(query); } } DocumentPage docPage = docMgr.search(wrapQuery(query), start, searchHandle, transaction); PojoPage<T> pojoPage = new PojoPageImpl<>(docPage, entityClass); return pojoPage; }
@Override public <T extends R> T read(String uri, DocumentMetadataReadHandle metadataHandle, T contentHandle, ServerTransform transform) throws ResourceNotFoundException, ForbiddenUserException, FailedRequestException { return read(uri, metadataHandle, contentHandle, transform, null, getReadParams()); } @Override
checkContentFormat(contentHandle); extraParams = addTemporalParams(extraParams, temporalCollection, temporalDocumentURI, systemTime); transaction, (metadataHandle != null) ? processedMetadata : null, mergeTransformParameters((transform != null) ? transform : getWriteTransform(), extraParams), metadataHandle, contentHandle);