[ https://issues.apache.org/jira/browse/COMMONSRDF-7?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15611891#comment-15611891 ]
ASF GitHub Bot commented on COMMONSRDF-7: ----------------------------------------- Github user ajs6f commented on a diff in the pull request: https://github.com/apache/incubator-commonsrdf/pull/26#discussion_r85336105 --- Diff: api/src/main/java/org/apache/commons/rdf/api/RDFTerm.java --- @@ -37,4 +55,46 @@ */ String ntriplesString(); + /** + * Check it this RDFTerm is equal to another RDFTerm. + * <p> + * If this object is an {@link IRI}, equality is checked using + * {@link IRI#equals(Object)}, or if this object is a {@link BlankNode}, + * equality is checked using {@link BlankNode#equals(Object)}, or if this + * object is a {@link Literal}, equality is checked using + * {@link Literal#equals(Object)}. + * <p> + * Implementations MUST also override {@link #hashCode()} so that two equal + * Literals produce the same hash code. + * + * @see IRI#equals(Object) + * @see BlankNode#equals(Object) + * @see Literal#equals(Object) + * + * @param other + * Another object + * @return true if other is a RDFTerm and is equal to this + */ + @Override + public boolean equals(Object other); + + /** + * Calculate a hash code for this RDFTerm. + * <p> + * As an {@link RDFTerm} is <em>immutable</em>, this method will always + * return the same hashCode over the lifetime of this object. + * <p> + * This method MUST be implemented in conjunction with + * {@link #equals(Object)} so that two equal RDFTerm produce the same hash --- End diff -- typo: `RDFTerms` > Document that RDFTerm, Triple and Quad are immutable > ---------------------------------------------------- > > Key: COMMONSRDF-7 > URL: https://issues.apache.org/jira/browse/COMMONSRDF-7 > Project: Apache Commons RDF > Issue Type: Improvement > Components: api > Reporter: Stian Soiland-Reyes (old) > Assignee: Stian Soiland-Reyes > Labels: discussion, immutable > Fix For: 0.3.0 > > > From https://github.com/commons-rdf/commons-rdf/issues/57 > ansell: > {quote} > As mentioned in #45, should we add a contract requirement that all RDFTerm > instances (and Triple?) be implemented as immutable objects? > https://github.com/commons-rdf/commons-rdf/issues/45 > {quote} > stain: > {quote} > +1, if we say SHOULD. But only the exposed RDFTerm++ methods need to be > immutable - so this should probably go into each of their descriptions. So if > I have a getDatabaseThingie() method that can be mutable. > {quote} > ansell: > {quote} > The value of stating that the objects must be immutable is decreased if it > only applies to the results of the API methods. A useful goal would be to > ensure that the entire object is immutable to give a guarantee about > threadsafety, but that may be too much for all implementations to support. > Just stating that the results of the visible API methods are immutable > doesn't help much. It is also not likely to apply to the methods that return > Optional, as to enable serialisation, the actual field may not be an Optional > itself in most cases. > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)