1010
1111interface BazelSourceFileTarget {
1212 String getName ();
13- byte [] getDigest () throws NoSuchAlgorithmException ;
13+ byte [] getDigest ();
1414}
1515
1616class BazelSourceFileTargetImpl implements BazelSourceFileTarget {
1717
1818 private String name ;
1919 private byte [] digest ;
2020
21- BazelSourceFileTargetImpl (String name , byte [] digest , Path workingDirectory ) throws IOException {
21+ BazelSourceFileTargetImpl (String name , byte [] digest , Path workingDirectory ) throws IOException , NoSuchAlgorithmException {
2222 this .name = name ;
23+ byte [] data = null ;
2324 if (workingDirectory != null && name .startsWith ("//" )) {
2425 String filenameSubstring = name .substring (2 );
2526 String filenamePath = filenameSubstring .replaceFirst (":" , "/" );
@@ -28,12 +29,18 @@ class BazelSourceFileTargetImpl implements BazelSourceFileTarget {
2829 ByteArrayOutputStream outputStream = new ByteArrayOutputStream ();
2930 outputStream .write (Files .readAllBytes (sourceFile .toPath ()));
3031 outputStream .write (digest );
31- this . digest = outputStream .toByteArray ();
32+ data = outputStream .toByteArray ();
3233 outputStream .close ();
3334 }
3435 } else {
35- this . digest = digest ;
36+ data = digest ;
3637 }
38+ MessageDigest finalDigest = MessageDigest .getInstance ("SHA-256" );
39+ if (data != null ) {
40+ finalDigest .update (data );
41+ }
42+ finalDigest .update (name .getBytes ());
43+ this .digest = finalDigest .digest ();
3744 }
3845
3946 @ Override
@@ -42,12 +49,7 @@ public String getName() {
4249 }
4350
4451 @ Override
45- public byte [] getDigest () throws NoSuchAlgorithmException {
46- MessageDigest finalDigest = MessageDigest .getInstance ("SHA-256" );
47- if (digest != null ) {
48- finalDigest .update (digest );
49- }
50- finalDigest .update (name .getBytes ());
51- return finalDigest .digest ();
52+ public byte [] getDigest () {
53+ return this .digest ;
5254 }
5355}
0 commit comments