Radosław Wesołowski created JCRVLT-335: ------------------------------------------
Summary: Remove AggregateImpl cast in DocViewSerializer
Key: JCRVLT-335
URL: https://issues.apache.org/jira/browse/JCRVLT-335
Project: Jackrabbit FileVault
Issue Type: Improvement
Components: vlt
Reporter: Radosław Wesołowski
Fix For: 3.2.6
The
[cast|https://github.com/apache/jackrabbit-filevault/blob/1931b593de726e42ead33aac12b8ff854371d343/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSerializer.java#L48]
of
[Aggregate|https://github.com/apache/jackrabbit-filevault/blob/1931b593de726e42ead33aac12b8ff854371d343/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/Aggregate.java]
to
[AggregateImpl|https://github.com/apache/jackrabbit-filevault/blob/1931b593de726e42ead33aac12b8ff854371d343/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java]
in
[DocViewSerializer|https://github.com/apache/jackrabbit-filevault/blob/1931b593de726e42ead33aac12b8ff854371d343/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/io/DocViewSerializer.java]'s
constructor as in
{code:java}
public DocViewSerializer(Aggregate aggregate) {
this.aggregate = (AggregateImpl) aggregate;
}
{code}
is breaking at least [Liskov substitution
principle|https://en.wikipedia.org/wiki/Liskov_substitution_principle]. Any
client of such class would be surprised to see it break upon passing a
seemingly correct parameter of type
[Aggregate|https://github.com/apache/jackrabbit-filevault/blob/1931b593de726e42ead33aac12b8ff854371d343/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/api/Aggregate.java].
The least that could be done would be to replace the parameter type to
[AggregateImpl|https://github.com/apache/jackrabbit-filevault/blob/1931b593de726e42ead33aac12b8ff854371d343/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/impl/AggregateImpl.java].
In the current form the design has a definitive code smell unfortunately.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
