Skip to content

Commit 3858eb2

Browse files
authored
Merge pull request #17121 from iterate-ch/bugfix/immutable-pojos
Make setters no-op in immutable instances.
2 parents c5035fb + 024d2e1 commit 3858eb2

3 files changed

Lines changed: 209 additions & 4 deletions

File tree

core/src/main/java/ch/cyberduck/core/Acl.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,25 @@
3636
import java.util.Objects;
3737
import java.util.Set;
3838

39-
public final class Acl extends HashMap<Acl.User, Set<Acl.Role>> implements Serializable {
39+
public class Acl extends HashMap<Acl.User, Set<Acl.Role>> implements Serializable {
4040
private static final Logger log = LogManager.getLogger(Acl.class);
4141

42-
public static final Acl EMPTY = new Acl();
42+
public static final Acl EMPTY = new Acl() {
43+
@Override
44+
public boolean isEditable() {
45+
return false;
46+
}
47+
48+
@Override
49+
public void addAll(final User user, final Role... permissions) {
50+
// No-op
51+
}
52+
53+
@Override
54+
public void addAll(final UserAndRole... set) {
55+
// No-op
56+
}
57+
};
4358
/**
4459
* A pre-canned REST ACL to set an object's permissions to Private (only owner can read/write)
4560
*/

core/src/main/java/ch/cyberduck/core/PathAttributes.java

Lines changed: 162 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@
3939
public class PathAttributes extends Attributes implements Serializable {
4040
private static final Logger log = LogManager.getLogger(PathAttributes.class);
4141

42-
public static final PathAttributes EMPTY = new PathAttributes();
43-
4442
/**
4543
* The file length
4644
*/
@@ -716,4 +714,166 @@ public String toString() {
716714
sb.append('}');
717715
return sb.toString();
718716
}
717+
718+
public static final PathAttributes EMPTY = new PathAttributes() {
719+
@Override
720+
public <T> T serialize(final Serializer<T> dict) {
721+
return super.serialize(dict);
722+
}
723+
724+
@Override
725+
public PathAttributes setSize(final long size) {
726+
return this;
727+
}
728+
729+
@Override
730+
public PathAttributes setQuota(final Quota.Space quota) {
731+
return this;
732+
}
733+
734+
@Override
735+
public PathAttributes setModificationDate(final long millis) {
736+
return this;
737+
}
738+
739+
@Override
740+
public PathAttributes setCreationDate(final long millis) {
741+
return this;
742+
}
743+
744+
@Override
745+
public PathAttributes setAccessedDate(final long millis) {
746+
return this;
747+
}
748+
749+
@Override
750+
public PathAttributes setPermission(final Permission p) {
751+
return this;
752+
}
753+
754+
@Override
755+
public PathAttributes setAcl(final Acl acl) {
756+
return this;
757+
}
758+
759+
@Override
760+
public PathAttributes setOwner(final String o) {
761+
return this;
762+
}
763+
764+
@Override
765+
public PathAttributes setGroup(final String g) {
766+
return this;
767+
}
768+
769+
@Override
770+
public PathAttributes setChecksum(final Checksum checksum) {
771+
return this;
772+
}
773+
774+
@Override
775+
public PathAttributes setETag(final String etag) {
776+
return this;
777+
}
778+
779+
@Override
780+
public PathAttributes setStorageClass(final String storageClass) {
781+
return this;
782+
}
783+
784+
@Override
785+
public PathAttributes setEncryption(final Encryption.Algorithm encryption) {
786+
return this;
787+
}
788+
789+
@Override
790+
public PathAttributes setVersionId(final String versionId) {
791+
return this;
792+
}
793+
794+
@Override
795+
public PathAttributes setFileId(final String fileId) {
796+
return this;
797+
}
798+
799+
@Override
800+
public PathAttributes setLockId(final String lockId) {
801+
return this;
802+
}
803+
804+
@Override
805+
public PathAttributes setDirectoryId(final String directoryId) {
806+
return this;
807+
}
808+
809+
@Override
810+
public PathAttributes setRevision(final Long revision) {
811+
return this;
812+
}
813+
814+
@Override
815+
public PathAttributes setDecrypted(final Path decrypted) {
816+
return this;
817+
}
818+
819+
@Override
820+
public PathAttributes setEncrypted(final Path encrypted) {
821+
return this;
822+
}
823+
824+
@Override
825+
public PathAttributes setVault(final Path vault) {
826+
return this;
827+
}
828+
829+
@Override
830+
public PathAttributes setDuplicate(final boolean duplicate) {
831+
return this;
832+
}
833+
834+
@Override
835+
public PathAttributes setHidden(final boolean hidden) {
836+
return this;
837+
}
838+
839+
@Override
840+
public PathAttributes setTrashed(final boolean trashed) {
841+
return this;
842+
}
843+
844+
@Override
845+
public PathAttributes setMetadata(final Map<String, String> metadata) {
846+
return this;
847+
}
848+
849+
@Override
850+
public PathAttributes setRegion(final String region) {
851+
return this;
852+
}
853+
854+
@Override
855+
public PathAttributes setDisplayname(final String displayname) {
856+
return this;
857+
}
858+
859+
@Override
860+
public PathAttributes setLink(final DescriptiveUrl link) {
861+
return this;
862+
}
863+
864+
@Override
865+
public PathAttributes setCustom(final Map<String, String> custom) {
866+
return this;
867+
}
868+
869+
@Override
870+
public PathAttributes setCustom(final String key, final String value) {
871+
return this;
872+
}
873+
874+
@Override
875+
public PathAttributes setVerdict(final Verdict verdict) {
876+
return this;
877+
}
878+
};
719879
}

core/src/main/java/ch/cyberduck/core/Permission.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,36 @@ public String getMode() {
6161
public String getSymbol() {
6262
return "--";
6363
}
64+
65+
@Override
66+
public void setUser(final Action user) {
67+
// No-op
68+
}
69+
70+
@Override
71+
public void setGroup(final Action group) {
72+
// No-op
73+
}
74+
75+
@Override
76+
public void setOther(final Action other) {
77+
// No-op
78+
}
79+
80+
@Override
81+
public void setSetuid(final boolean setuid) {
82+
// No-op
83+
}
84+
85+
@Override
86+
public void setSetgid(final boolean setgid) {
87+
// No-op
88+
}
89+
90+
@Override
91+
public void setSticky(final boolean sticky) {
92+
// No-op
93+
}
6494
};
6595

6696
private Action user;

0 commit comments

Comments
 (0)