@Override
    public Path touch(final Path file, final TransferStatus status) throws BackgroundException {
        try {
            final BrickUploadFeature upload = new BrickUploadFeature(session, new BrickWriteFeature(session));
            final FileUploadPartEntity uploadPartEntity = upload.startUpload(file);
            status.withLength(0L).withOffset(0L);
            status.setUrl(uploadPartEntity.getUploadUri());
            status.setSegment(true);
            status.setModified(System.currentTimeMillis());
            status.setPart(1);
            new BrickWriteFeature(session).write(file, status, new DisabledConnectionCallback()).close();
            final FileEntity entity = upload.completeUpload(file, uploadPartEntity.getRef(), status, Collections.singletonList(status));
            return file.withAttributes(new BrickAttributesFinderFeature(session).toAttributes(entity));
        }
        catch(IOException e) {
            throw new DefaultIOExceptionMappingService().map("Cannot create {0}", e, file);
        }
    }
@Test
    public void testCaseSensitivity() throws Exception {
        final Path container = new BrickDirectoryFeature(session).mkdir(new Path(
                new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory, Path.Type.volume)), new TransferStatus());
        final String filename = StringUtils.lowerCase(new AlphanumericRandomStringService().random());
        final Path lowerCase = new BrickTouchFeature(session)
                .touch(new Path(container, filename, EnumSet.of(Path.Type.file)), new TransferStatus().withLength(0L));
        final Path upperCase = new BrickTouchFeature(session)
                .touch(new Path(container, StringUtils.capitalize(filename), EnumSet.of(Path.Type.file)), new TransferStatus().withLength(0L));
        assertTrue(new BrickFindFeature(session).find(lowerCase));
        assertTrue(new BrickFindFeature(session).find(upperCase));
        assertEquals(1, new BrickListService(session).list(container, new DisabledListProgressListener()).size());
        new BrickDeleteFeature(session).delete(Arrays.asList(lowerCase, container), new DisabledPasswordCallback(), new Delete.DisabledCallback());
    }