Skip to content

Commit 9e1ca80

Browse files
committed
Add writer as parameter to allow wrapping with encryption feature.
1 parent 8085cff commit 9e1ca80

24 files changed

+105
-100
lines changed

eue/src/main/java/ch/cyberduck/core/eue/EueDirectoryFeature.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import ch.cyberduck.core.exception.InvalidFilenameException;
2929
import ch.cyberduck.core.exception.NotfoundException;
3030
import ch.cyberduck.core.features.Directory;
31+
import ch.cyberduck.core.features.Write;
3132
import ch.cyberduck.core.transfer.TransferStatus;
3233

3334
import org.apache.commons.lang3.StringUtils;
@@ -50,7 +51,7 @@ public EueDirectoryFeature(final EueSession session, final EueResourceIdProvider
5051
}
5152

5253
@Override
53-
public Path mkdir(final Path folder, final TransferStatus status) throws BackgroundException {
54+
public Path mkdir(final Write<EueWriteFeature.Chunk> writer, final Path folder, final TransferStatus status) throws BackgroundException {
5455
try {
5556
final ResourceCreationRepresentationArrayInner resourceCreationRepresentation = new ResourceCreationRepresentationArrayInner();
5657
final String path = StringUtils.removeStart(folder.getAbsolute(), String.valueOf(Path.DELIMITER));

eue/src/main/java/ch/cyberduck/core/eue/EueTouchFeature.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
public class EueTouchFeature extends DefaultTouchFeature<EueWriteFeature.Chunk> {
2929

3030
public EueTouchFeature(final EueSession session, final EueResourceIdProvider fileid) {
31-
super(new EueWriteFeature(session, fileid));
31+
super(session);
3232
}
3333

3434
@Override

eue/src/test/java/ch/cyberduck/core/cryptomator/EueSingleUploadServiceTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import ch.cyberduck.core.Path;
2727
import ch.cyberduck.core.cryptomator.features.CryptoReadFeature;
2828
import ch.cyberduck.core.cryptomator.features.CryptoUploadFeature;
29+
import ch.cyberduck.core.cryptomator.features.CryptoWriteFeature;
2930
import ch.cyberduck.core.eue.AbstractEueSessionTest;
3031
import ch.cyberduck.core.eue.EueAttributesFinderFeature;
3132
import ch.cyberduck.core.eue.EueDeleteFeature;
@@ -68,7 +69,7 @@ public class EueSingleUploadServiceTest extends AbstractEueSessionTest {
6869
@Test
6970
public void testUploadVault() throws Exception {
7071
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
71-
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(AbstractPath.Type.directory)), new TransferStatus().setLength(0L));
72+
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(AbstractPath.Type.directory)), new TransferStatus().setLength(0L));
7273
final Path vault = new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory));
7374
final Path test = new Path(vault, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
7475
final CryptoVault cryptomator = new CryptoVault(vault);
@@ -82,10 +83,10 @@ public void testUploadVault() throws Exception {
8283
writeStatus.setHeader(cryptomator.getFileHeaderCryptor().encryptHeader(header));
8384
writeStatus.setLength(content.length);
8485
final BytecountStreamListener count = new BytecountStreamListener();
85-
final CryptoUploadFeature feature = new CryptoUploadFeature<>(session,
86+
final CryptoUploadFeature<EueWriteFeature.Chunk> feature = new CryptoUploadFeature<>(session,
8687
new EueSingleUploadService(session, fileid),
8788
cryptomator);
88-
feature.upload(new EueWriteFeature(session, fileid), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, null);
89+
feature.upload(new CryptoWriteFeature<>(session, new EueWriteFeature(session, fileid), cryptomator), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, null);
8990
assertEquals(content.length, count.getSent());
9091
assertTrue(writeStatus.isComplete());
9192
assertTrue(cryptomator.getFeature(session, Find.class, new EueFindFeature(session, fileid)).find(test));

eue/src/test/java/ch/cyberduck/core/cryptomator/EueThresholdUploadServiceTest.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import ch.cyberduck.core.cryptomator.features.CryptoBulkFeature;
2727
import ch.cyberduck.core.cryptomator.features.CryptoReadFeature;
2828
import ch.cyberduck.core.cryptomator.features.CryptoUploadFeature;
29+
import ch.cyberduck.core.cryptomator.features.CryptoWriteFeature;
2930
import ch.cyberduck.core.eue.AbstractEueSessionTest;
3031
import ch.cyberduck.core.eue.EueAttributesFinderFeature;
3132
import ch.cyberduck.core.eue.EueDeleteFeature;
@@ -73,7 +74,7 @@ public class EueThresholdUploadServiceTest extends AbstractEueSessionTest {
7374
@Test
7475
public void testUploadVault() throws Exception {
7576
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
76-
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus().setLength(0L));
77+
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus().setLength(0L));
7778
final Path vault = new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory));
7879
final Path test = new Path(vault, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
7980
final CryptoVault cryptomator = new CryptoVault(vault);
@@ -88,10 +89,10 @@ public void testUploadVault() throws Exception {
8889
writeStatus.setHeader(cryptomator.getFileHeaderCryptor().encryptHeader(header));
8990
writeStatus.setLength(content.length);
9091
final BytecountStreamListener count = new BytecountStreamListener();
91-
final CryptoUploadFeature feature = new CryptoUploadFeature<>(session,
92+
final CryptoUploadFeature<EueWriteFeature.Chunk> feature = new CryptoUploadFeature<>(session,
9293
new EueThresholdUploadService(session, fileid, registry),
9394
cryptomator);
94-
feature.upload(new EueWriteFeature(session, fileid), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
95+
feature.upload(new CryptoWriteFeature<>(session, new EueWriteFeature(session, fileid), cryptomator), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
9596
assertEquals(content.length, count.getSent());
9697
assertTrue(writeStatus.isComplete());
9798
assertTrue(cryptomator.getFeature(session, Find.class, new EueFindFeature(session, fileid)).find(test));
@@ -108,7 +109,7 @@ public void testUploadVault() throws Exception {
108109
@Test
109110
public void testUploadVaultWithBulkFeature() throws Exception {
110111
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
111-
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus().setLength(0L));
112+
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus().setLength(0L));
112113
final Path vault = new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory));
113114
final Path test = new Path(vault, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
114115
final CryptoVault cryptomator = new CryptoVault(vault);
@@ -125,10 +126,10 @@ public void testUploadVaultWithBulkFeature() throws Exception {
125126
final CryptoBulkFeature<Map<TransferItem, TransferStatus>> bulk = new CryptoBulkFeature<>(session, new DisabledBulkFeature(), cryptomator);
126127
bulk.pre(Transfer.Type.upload, Collections.singletonMap(new TransferItem(test), writeStatus), new DisabledConnectionCallback());
127128
final BytecountStreamListener count = new BytecountStreamListener();
128-
final CryptoUploadFeature feature = new CryptoUploadFeature<>(session,
129+
final CryptoUploadFeature<EueWriteFeature.Chunk> feature = new CryptoUploadFeature<>(session,
129130
new EueThresholdUploadService(session, fileid, registry),
130131
cryptomator);
131-
feature.upload(new EueWriteFeature(session, fileid), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
132+
feature.upload(new CryptoWriteFeature<>(session, new EueWriteFeature(session, fileid), cryptomator), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
132133
assertEquals(content.length, count.getSent());
133134
assertTrue(writeStatus.isComplete());
134135
assertTrue(cryptomator.getFeature(session, Find.class, new EueFindFeature(session, fileid)).find(test));

eue/src/test/java/ch/cyberduck/core/cryptomator/EueUploadServiceTest.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import ch.cyberduck.core.cryptomator.features.CryptoBulkFeature;
2828
import ch.cyberduck.core.cryptomator.features.CryptoReadFeature;
2929
import ch.cyberduck.core.cryptomator.features.CryptoUploadFeature;
30+
import ch.cyberduck.core.cryptomator.features.CryptoWriteFeature;
3031
import ch.cyberduck.core.eue.AbstractEueSessionTest;
3132
import ch.cyberduck.core.eue.EueAttributesFinderFeature;
3233
import ch.cyberduck.core.eue.EueDeleteFeature;
@@ -36,6 +37,7 @@
3637
import ch.cyberduck.core.eue.EueReadFeature;
3738
import ch.cyberduck.core.eue.EueResourceIdProvider;
3839
import ch.cyberduck.core.eue.EueUploadService;
40+
import ch.cyberduck.core.eue.EueWriteFeature;
3941
import ch.cyberduck.core.features.AttributesFinder;
4042
import ch.cyberduck.core.features.Delete;
4143
import ch.cyberduck.core.features.Find;
@@ -74,7 +76,7 @@ public class EueUploadServiceTest extends AbstractEueSessionTest {
7476
@Test
7577
public void testUploadVault() throws Exception {
7678
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
77-
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(AbstractPath.Type.directory)), new TransferStatus().setLength(0L));
79+
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(AbstractPath.Type.directory)), new TransferStatus().setLength(0L));
7880
final Path vault = new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory));
7981
final Path test = new Path(vault, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
8082
final CryptoVault cryptomator = new CryptoVault(vault);
@@ -88,10 +90,10 @@ public void testUploadVault() throws Exception {
8890
writeStatus.setHeader(cryptomator.getFileHeaderCryptor().encryptHeader(header));
8991
writeStatus.setLength(content.length);
9092
final BytecountStreamListener count = new BytecountStreamListener();
91-
final CryptoUploadFeature feature = new CryptoUploadFeature<>(session,
93+
final CryptoUploadFeature<EueWriteFeature.Chunk> feature = new CryptoUploadFeature<>(session,
9294
new EueUploadService(session),
9395
cryptomator);
94-
feature.upload(new EueMultipartWriteFeature(session, fileid), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
96+
feature.upload(new CryptoWriteFeature<>(session, new EueMultipartWriteFeature(session, fileid), cryptomator), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
9597
assertEquals(content.length, count.getSent());
9698
assertTrue(writeStatus.isComplete());
9799
assertTrue(cryptomator.getFeature(session, Find.class, new EueFindFeature(session, fileid)).find(test));
@@ -108,7 +110,7 @@ public void testUploadVault() throws Exception {
108110
@Test
109111
public void testUploadVaultWithBulkFeature() throws Exception {
110112
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
111-
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(AbstractPath.Type.directory)), new TransferStatus().setLength(0L));
113+
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(AbstractPath.Type.directory)), new TransferStatus().setLength(0L));
112114
final Path vault = new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory));
113115
final Path test = new Path(vault, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
114116
final CryptoVault cryptomator = new CryptoVault(vault);
@@ -124,10 +126,10 @@ public void testUploadVaultWithBulkFeature() throws Exception {
124126
final CryptoBulkFeature<Map<TransferItem, TransferStatus>> bulk = new CryptoBulkFeature<>(session, new DisabledBulkFeature(), cryptomator);
125127
bulk.pre(Transfer.Type.upload, Collections.singletonMap(new TransferItem(test), writeStatus), new DisabledConnectionCallback());
126128
final BytecountStreamListener count = new BytecountStreamListener();
127-
final CryptoUploadFeature feature = new CryptoUploadFeature<>(session,
129+
final CryptoUploadFeature<EueWriteFeature.Chunk> feature = new CryptoUploadFeature<>(session,
128130
new EueUploadService(session),
129131
cryptomator);
130-
feature.upload(new EueMultipartWriteFeature(session, fileid), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
132+
feature.upload(new CryptoWriteFeature<>(session, new EueMultipartWriteFeature(session, fileid), cryptomator), test, local, new BandwidthThrottle(BandwidthThrottle.UNLIMITED), new DisabledProgressListener(), count, writeStatus, new DisabledConnectionCallback());
131133
assertEquals(content.length, count.getSent());
132134
assertTrue(writeStatus.isComplete());
133135
assertTrue(cryptomator.getFeature(session, Find.class, new EueFindFeature(session, fileid)).find(test));

eue/src/test/java/ch/cyberduck/core/eue/EueAttributesFinderFeatureTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void testRoot() throws Exception {
6060
public void testFindIfNoneMatch() throws Exception {
6161
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
6262
final EueWriteFeature writer = new EueWriteFeature(session, fileid);
63-
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
63+
final Path container = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
6464
final EueAttributesFinderFeature feature = new EueAttributesFinderFeature(session, fileid);
6565
final long ts = feature.find(container).getModificationDate();
6666
final Path file = new Path(container, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
@@ -104,18 +104,18 @@ public void testChangeETagPropagatingToRoot() throws Exception {
104104
final String rootEtag = feature.find(new Path("/", EnumSet.of(Path.Type.directory))).getETag();
105105
assertNotNull(rootEtag);
106106
final long rootModificationDate = feature.find(new Path("/", EnumSet.of(Path.Type.directory))).getModificationDate();
107-
final Path firstlevel = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
107+
final Path firstlevel = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
108108
final String firstLevelEtag = feature.find(firstlevel).getETag();
109109
final Long firstLevelRevision = feature.find(firstlevel).getRevision();
110110
assertNull(firstLevelRevision);
111111
final long firstLevelModificationDate = feature.find(firstlevel).getModificationDate();
112112
assertNotNull(firstLevelEtag);
113-
final Path secondlevel = new EueDirectoryFeature(session, fileid).mkdir(new Path(firstlevel, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
113+
final Path secondlevel = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(firstlevel, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
114114
final String secondLevelEtag = feature.find(secondlevel).getETag();
115115
assertNotNull(secondLevelEtag);
116-
final Path secondlevelSibling = new EueDirectoryFeature(session, fileid).mkdir(new Path(firstlevel, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
116+
final Path secondlevelSibling = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(firstlevel, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
117117
assertNotNull(secondlevelSibling);
118-
final Path file = new EueTouchFeature(session, fileid).touch(new Path(secondlevel, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), new TransferStatus());
118+
final Path file = new EueTouchFeature(session, fileid).touch(new EueWriteFeature(session, fileid), new Path(secondlevel, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file)), new TransferStatus());
119119
final String secondLevelSiblingEtag = feature.find(secondlevelSibling).getETag();
120120
assertNotEquals(secondLevelEtag, feature.find(secondlevel).getETag());
121121
assertNotEquals(firstLevelEtag, feature.find(firstlevel).getETag());
@@ -129,7 +129,7 @@ public void testChangeETagPropagatingToRoot() throws Exception {
129129
@Test
130130
public void testFindFeatureForSharedFolder() throws Exception {
131131
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
132-
final Path folder = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
132+
final Path folder = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
133133
final ShareCreationResponseEntry shareCreationResponseEntry = createShare(fileid, folder);
134134
final String shareName = shareCreationResponseEntry.getEntity().getName();
135135
final EueAttributesFinderFeature feature = new EueAttributesFinderFeature(session, fileid);
@@ -142,7 +142,7 @@ public void testFindFeatureForSharedFolder() throws Exception {
142142
@Test
143143
public void testFindFeatureForSharedFile() throws Exception {
144144
final EueResourceIdProvider fileid = new EueResourceIdProvider(session);
145-
final Path sourceFolder = new EueDirectoryFeature(session, fileid).mkdir(new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
145+
final Path sourceFolder = new EueDirectoryFeature(session, fileid).mkdir(new EueWriteFeature(session, fileid), new Path(new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.directory)), new TransferStatus());
146146
final Path file = new Path(sourceFolder, new AlphanumericRandomStringService().random(), EnumSet.of(Path.Type.file));
147147
createFile(fileid, file, RandomUtils.nextBytes(0));
148148
assertTrue(new EueFindFeature(session, fileid).find(file));

0 commit comments

Comments
 (0)