aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/lib/AnyObjectId.java
Commit message (Collapse)AuthorAgeFilesLines
* Remove deprecated static #equals(AnyObjectId, AnyObjectId) methodMatthias Sohn2024-09-031-17/+0
| | | | Change-Id: I72544d2b3c85b8f96c2b8f94b86fb9b362f09475
* Fix all Javadoc warnings and fail on themAntoine Musso2023-06-161-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes all the javadoc warnings, stops ignoring doclint 'missing' category and fails the build on javadoc warnings for public and protected classes and class members. Since javadoc doesn't allow access specifiers when specifying doclint configuration we cannot set `-Xdoclint:all,-missing/private` hence there is no simple way to skip private elements from doclint. Therefore we check javadoc using the Eclipse Java compiler (which is used by default) and javadoc configuration in `.settings/org.eclipse.jdt.core.prefs` files. This allows more fine grained configuration. We can reconsider this when javadoc starts supporting access specifiers in the doclint configuration. Below are detailled explanations for most modifications. @inheritDoc =========== doclint complains about explicits `{@inheritDoc}` when the parent does not have any documentation. As far as I can tell, javadoc defaults to inherit comments and should only be used when one wants to append extra documentation from the parent. Given the parent has no documentation, remove those usages which doclint complains about. In some case I have moved up the documentation from the concrete class up to the abstract class. Remove `{@inheritDoc}` on overriden methods which don't add additional documentation since javadoc defaults to inherit javadoc of overridden methods. @value to @link =============== In PackConfig, DEFAULT_SEARCH_FOR_REUSE_TIMEOUT and similar are forged from Integer.MAX_VALUE and are thus not considered constants (I guess cause the value would depends on the platform). Replace it with a link to `Integer.MAX_VALUE`. In `StringUtils.toBoolean`, @value was used to refer to the `stringValue` parameter. I have replaced it with `{@code stringValue}`. {@link <url>} to <a> ==================== @link does not support being given an external URL. Replaces them with HTML `<a>`. @since: being invalid ===================== org.eclipse.jgit/src/org/eclipse/jgit/util/Equality.java has an invalid tag `@since: ` due to the extra `:`. Javadoc does not complain about it with version 11.0.18+10 but does with 11.0.19.7. It is invalid regardless. invalid HTML syntax =================== - javadoc doesn't allow <br/>, <p/> and </p> anymore, use <br> and <p> instead - replace <tt>code</tt> by {@code code} - <table> tags don't allow summary attribute, specify caption as <caption>caption</caption> to fix this doclint visibility issue ======================== In the private abstract classes `BaseDirCacheEditor` and `BasePackConnection` links to other methods in the abstract class are inherited in the public subclasses but doclint gets confused and considers them unreachable. The HTML documentation for the sub classes shows the relative links in the sub classes, so it is all correct. It must be a bug somewhere in javadoc. Mute those warnings with: @SuppressWarnings("doclint:missing") Misc ==== Replace `<` and `>` with HTML encoded entities (`&lt; and `&gt;`). In `SshConstants` I went enclosing a serie of -> arrows in @literal. Additional tags =============== Configure maven-javad0c-plugin to allow the following additional tags defined in https://openjdk.org/jeps/8068562: - apiNote - implSpec - implNote Missing javadoc =============== Add missing @params and descriptions Change-Id: I840056389aa59135cfb360da0d5e40463ce35bd0 Also-By: Matthias Sohn <matthias.sohn@sap.com>
* Update EDL 1.0 license headers to new short SPDX compliant formatMatthias Sohn2020-01-041-38/+5
| | | | | | | | | | This is the format given by the Eclipse legal doc generator [1]. [1] https://www.eclipse.org/projects/tools/documentation.php?id=technology.jgit Bug: 548298 Change-Id: I8d8cabc998ba1b083e3f0906a8d558d391ffb6c4 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Enable and fix "Statement unnecessarily nested within else clause" warningsDavid Pursehouse2019-10-171-3/+3
| | | | | | | | | | | | | | | Since [1] the gerrit project includes jgit as a submodule, and has this warning enabled, resulting in 100s of warnings in the console. Also enable the warning here, and fix them. At the same time, add missing braces around adjacent and nearby one-line blocks. [1] https://gerrit-review.googlesource.com/c/gerrit/+/227897 Change-Id: I81df3fc7ed6eedf6874ce1a3bedfa727a1897e4c Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* [error prone] fix ReferenceEquality warning in static equals methodsMatthias Sohn2019-08-091-1/+2
| | | | | | | | | | | Implement a helper method suppressing the ReferenceEquality error prone warning and use it to fix this warning in static equals methods where this comparison is used to implement fast path of static equals implementation. See https://errorprone.info/bugpattern/ReferenceEquality Change-Id: I33538a3406007d24efec3a504e031ca1069572ed Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* [error prone] suppress AmbiguousMethodReference in AnyObjectIdMatthias Sohn2019-08-081-6/+23
| | | | | | | | | | Move the implementation of the static equals() method to a new method and suppress the error. Deprecate the old method to signal that we intend to remove it in the next major release. See https://errorprone.info/bugpattern/AmbiguousMethodReference Change-Id: I5e29c97f4db3e11770be589a6ccd785e2c9ac7f2 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Error Prone: Increase severity of NonOverridingEquals to ERRORDavid Pursehouse2019-06-171-0/+1
| | | | | | | | | | | | | | | | | | | | | Error Prone reports the warning on several classes: [NonOverridingEquals] equals method doesn't override Object.equals; if this is a type-specific helper for a method that does override Object.equals, either inline it into the callers or rename it to avoid ambiguity. See https://errorprone.info/bugpattern/NonOverridingEquals Most of these are in the public API, so we can't rename or inline them without breaking the API. FileSnapshot is not part of the public API, but clients may be using it anyway, so we also shouldn't change that. Suppress all the warnings instead. Having the check at severity ERROR will at least make sure we don't introduce any new occurrences. Change-Id: I92345c11256f06b4fa03ccc13337f72af5a43591 Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Remove further unnecessary 'final' keywordsHan-Wen Nienhuys2018-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove it from * package private functions. * try blocks * for loops this was done with the following python script: $ cat f.py import sys import re import os def replaceFinal(m): return m.group(1) + "(" + m.group(2).replace('final ', '') + ")" methodDecl = re.compile(r"^([\t ]*[a-zA-Z_ ]+)\(([^)]*)\)") def subst(fn): input = open(fn) os.rename(fn, fn + "~") dest = open(fn, 'w') for l in input: l = methodDecl.sub(replaceFinal, l) dest.write(l) dest.close() for root, dirs, files in os.walk(".", topdown=False): for f in files: if not f.endswith('.java'): continue full = os.path.join(root, f) print full subst(full) Change-Id: If533a75a417594fc893e7c669d2c1f0f6caeb7ca Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
* Remove 'final' in parameter listsHan-Wen Nienhuys2018-05-151-18/+18
| | | | | Change-Id: Id924f79c8b2c720297ebc49bf9c5d4ddd6d52547 Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
* Fix comparison order in AnyObjectIdDavid Turner2018-04-271-8/+10
| | | | | | | | | | | The previous version suggested testing w2 first because w1 was used for hashing, but in fact, hashCode returns w2. The order (w3, w4, w5, w1, w2) might be better on 64-bit processors too, since it allows comparing 64 bits at a time, although perhaps on a modern SIMD processor, the entire 160 bytes would be compared at once anyway. Change-Id: Ieb69606d3c1456aeff36bffe99a71587ea76e977 Signed-off-by: David Turner <dturner@twosigma.com>
* Fix javadoc in org.eclipse.jgit lib packageMatthias Sohn2017-12-191-21/+29
| | | | Change-Id: I1e85a951488177993521ce177fdea212615e6164 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Enable and fix 'Should be tagged with @Override' warningDavid Pursehouse2017-02-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | Set missingOverrideAnnotation=warning in Eclipse compiler preferences which enables the warning: The method <method> of type <type> should be tagged with @Override since it actually overrides a superclass method Justification for this warning is described in: http://stackoverflow.com/a/94411/381622 Enabling this causes in excess of 1000 warnings across the entire code-base. They are very easy to fix automatically with Eclipse's "Quick Fix" tool. Fix all of them except 2 which cause compilation failure when the project is built with mvn; add TODO comments on those for further investigation. Change-Id: I5772061041fd361fe93137fd8b0ad356e748a29c Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
* Cleanup javadocs so they pass the java8 doclint checksRobin Rosenberg2014-03-291-2/+2
| | | | | | Bug: 431552 Change-Id: I469316f5645205016e1fa6b0fbd2ff3b509b14bc Signed-off-by: Robin Stocker <robin@nibor.org>
* Fix AnyObjectId's generic type declaration of ComparableRoberto Tyley2013-05-161-5/+1
| | | | | | | | | | | | | | | | | | | | | If you look at any implementation of Comparable in the JDK, you'll see that the type parameter for Comparable is supposed to be the type of the implementing class: http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html The current type signature of Comparable<Object> is pretty awful, at the very least because you can not, in fact, successfully compare AnyObjectId with any random subclass of Object. It also causes problems with type-inference and the scala.math.Ordering trait in Scala. In order to compile, this change *does* require removing the AnyObjectId.ompareTo(Object) method - which actually only ever cast to AnyObjectId in any case. Nothing in the JGit test suite requires this method, but it might constitute a breaking API change, so it would be best if it can be added in time for JGit 3.0. Change-Id: I3b549a5519ccd6785f98e444da76d2363bcbe41a
* Mark non-externalizable strings as suchRobin Rosenberg2012-12-271-0/+1
| | | | | | | | | | A few classes such as Constanrs are marked with @SuppressWarnings, as are toString() methods with many liternal, but otherwise $NLS-n$ is used for string containing text that should not be translated. A few literals may fall into the gray zone, but mostly I've tried to only tag the obvious ones. Change-Id: I22e50a77e2bf9e0b842a66bdf674e8fa1692f590
* Fix typo in AnyObjectId#abbreviateRobin Stocker2012-09-241-2/+2
| | | | Change-Id: I5796dc81727a8e1923189e9490a55c4af6ad053e
* Add Object type to Comparable implements declarationKevin Sawicki2012-05-101-1/+1
| | | | | | | | | This removes unchecked warnings when a List of AnyObjectId objects or any of its subclasses are passed to Collections.sort such as in PackWriter Change-Id: I806732cee24349c75c0357a655df55b070f2f213 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Add ObjectId getByte for random accessShawn O. Pearce2010-11-041-2/+48
| | | | | | | | | | | Processing git notes requires random access to part of the raw data of each ObjectId... which isn't easy because ObjectIds are stored with an internal representation of 5 ints. Expose random access to the individual data bytes through new methods, avoiding the need to convert first to a byte[20]. Change-Id: I99e64700b27fc0c95aa14ef8ad46a0e8832d4441 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Fully implement SHA-1 abbreviationsShawn O. Pearce2010-08-231-21/+6
| | | | | | | | | | | | | | | | | | ObjectReader implementations are now responsible for creating the unique abbreviation of an ObjectId, or for resolving an abbreviation back to its full form. In this latter case the reader can offer up multiple candidates to the caller, who may be able to disambiguate them based on context. Repository.resolve() doesn't take multiple candidates into account right now, but it could in the future by looking for a remaining ^0 or ^{commit} suffix and take an expansion if there is only one commit that matches the input abbreviation. It could also use the distance from an annotated tag to resolve "tag-NNN-gcommit" style strings that are often output by `git describe`. Change-Id: Icd3250adc8177ae05278b858933afdca0cbbdb56 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Add copyTo(ByteBuffer) to AnyObjectIdShawn O. Pearce2010-08-201-0/+10
| | | | | Change-Id: I3572f6113db883002f9c3a5ecc1bcc8370105c98 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Add copyTo(byte[], int) to AnyObjectIdShawn O. Pearce2010-08-201-0/+16
| | | | | | | | | This permits formatting in hex into an existing byte array supplied by the caller, and mirrors our copyRawTo method with the same parameter signature. Change-Id: Ia078d83e338b09b903bfd2d04284e5283f885a19 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Make ObjectId.compareTo finalShawn O. Pearce2010-08-191-4/+4
| | | | | | | | | | Since equals() is now final and does not permit being overridden, we should do the same thing with compareTo() to prevent different subclasses from having different ordering behaviors. This could lead to the same mess that we had with different equals() behaviors. Change-Id: I35a849b6efccee5fe74cc5788a3566a1516004b7 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Make ObjectId.hashCode final tooShawn O. Pearce2010-08-191-1/+1
| | | | | | | | | | Since equals() is now final and does not permit being overridden, we should do the same thing with hashCode() to prevent different subclasses from having different hashing behaviors. This could lead to the same mess that we had with different equals() behaviors. Change-Id: I35a849b6efccee5fe74cc5788a3566a1516004b7 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Backout RevObject's object-identity based equals implementationMatthias Sohn2010-08-151-2/+2
| | | | | | | | | | | | | | This restores the transitivity and symmetry properties of the equals methods on the AnyObjectId type hierarchy as defined in [1]. Following [2] we declare these equals methods final to ensure that semantics of equals are consistent across AnyObjectId's type hierarchy. [1] http://download-llnw.oracle.com/javase/6/docs/api/java/lang/Object.html#equals(java.lang.Object) [2] http://www.angelikalanger.com/Articles/JavaSolutions/SecretsOfEquals/Equals.html Bug: 321502 Change-Id: Ibace21fa268c4aa15da6c65d42eb705ab1aa24b3 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
* Permit AnyObjectTo to compareTo AnyObjectIdShawn O. Pearce2010-06-301-2/+2
| | | | | | | | | Assume that the argument of compareTo won't be mutated while we are doing the compare, and support the wider AnyObjectId type so MutableObjectId is suitable on either side of the compareTo call. Change-Id: I2a63a496c0a7b04f0e5f27d588689c6d5e149d98 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Expose AnyObjectId compareTo(byte[]) and compareTo(int[])Shawn O. Pearce2010-06-231-2/+24
| | | | | | | | | | Storage systems can use these implementations to compare a passed AnyObjectId with a stored representation of an ObjectId in the canonical network byte order format. This can be useful to do a binary search, or just linear scan, over an encoded storage file. Change-Id: I8c72993c4f4c6e98d599ac2c9867453752f25fd2 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Get rid of a duplicate constant for SHA-1 lengthRobin Rosenberg2009-12-281-14/+4
| | | | | | | | | | Since Constants.OBJECT_ID_LENGTH is a compile time constant we can be sure that it will always be inlined. The same goes for the associated constant STR_LEN which is now refactored to the Constant class and given a name better suited for wider use. Change-Id: I03f52131e64edcd0aa74bbbf36e7d42faaf4a698 Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
* Remove trailing whitespace at end of lineAlex Blewitt2009-10-311-12/+12
| | | | | | | | | As discussed on the egit-dev mailing list, we prefer not to have trailing whitespace in our source code. Correct all currently offending lines by trimming them. Change-Id: I002b1d1980071084c0bc53242c8f5900970e6845 Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* Initial JGit contribution to eclipse.orgGit Development Community2009-09-291-0/+492
Per CQ 3448 this is the initial contribution of the JGit project to eclipse.org. It is derived from the historical JGit repository at commit 3a2dd9921c8a08740a9e02c421469e5b1a9e47cb. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>