The version cheat:
In order to test the above, we had to cheat with the version number to make it match our current pom files.
The file has a line that defines the version:
- version = isRelease ? gitVersion : gitVersion + "-SNAPSHOT"
Since we can't run it in release mode (partly because I don't know how and partly because that activates their automated update process), we just hard-coded the version to match our current pom files:
A real solution will have to address that a bit more elegantly.
____________________
The easy plan:
Kiran reached out to the samtools developers asking them to include the lines we need in their build. If they can add the lines we need to their build, then we don't have to do any customization on our end.
The DIY plan:
This is what we'll have to do if we don't hear back from the samtools developers, or if they say they don't want to add those lines, or it might take a long time.
We'll host the modified jar file ourselves.
To do this, we need to :
- make a fork of the htsjdk repo
- add a commit that adds the lines we need and adds this line for the version
version = gitVersion
'Bundle-SymbolicName': project.getGroup() + '.' + project.getName() + '-igb'
'Bundle-Version': version
- build the jar file and add that to our repo
- modify the IGB pom files to use that version number
When we want to update the library, we would need to:
- rebase our fork based on the main htsjdk repo, applying our one commit on top.
- build the jar file and put it in our repo
- update the version number in our pom files.
Using +'-igb' ensures that IGB will pull our version of the jar file even if it has access to a repository that has the non-modified htsjdk version.
____________________
Kiran reached out to the samtools developers.
They do pretty frequent releases and they have been responsive before, so I have high hopes for the 'easy plan'.
If we haven't heard back from them by Tuesday (31 July 2018) then we'll move forward with the DIY plan.
In the mean time, we'll use our test jar file or installers to do the testing for issues that are affected by this.
This error appears on startup and on each time that I refresh an app repository:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.lorainelab.igb.plugin.manager.BundleInfoManager.lambda$isVersionOfBundleInstalled$48(BundleInfoManager.java:149)
at java.util.stream.MatchOps$1MatchSink.accept(MatchOps.java:90)
at java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:449)
at org.lorainelab.igb.plugin.manager.BundleInfoManager.isVersionOfBundleInstalled(BundleInfoManager.java:149)
at org.lorainelab.igb.plugin.manager.AppManagerFxPanel.lambda$null$5(AppManagerFxPanel.java:150)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at org.lorainelab.igb.plugin.manager.AppManagerFxPanel.lambda$udpateDataEventNotification$6(AppManagerFxPanel.java:149)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)