From 0cc1c39ccea5d495c02282934b98d026603d4da4 Mon Sep 17 00:00:00 2001 From: Chris Norman Date: Tue, 8 Feb 2022 18:57:36 -0500 Subject: [PATCH] Try making FeatureManger, FeatureDataSource, LocatableCache and strategy classes serializable for JDK 11. --- .../broadinstitute/hellbender/engine/FeatureDataSource.java | 4 +++- .../broadinstitute/hellbender/engine/FeatureManager.java | 6 ++++-- .../engine/cache/DrivingFeatureInputCacheStrategy.java | 5 ++++- .../hellbender/engine/cache/LocatableCache.java | 4 +++- .../hellbender/engine/cache/LocatableCacheStrategy.java | 3 +-- .../hellbender/engine/cache/SideReadInputCacheStrategy.java | 5 ++++- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/broadinstitute/hellbender/engine/FeatureDataSource.java b/src/main/java/org/broadinstitute/hellbender/engine/FeatureDataSource.java index 8e2e89e8898..cd2c2355c25 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/FeatureDataSource.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/FeatureDataSource.java @@ -29,6 +29,7 @@ import java.io.File; import java.io.IOException; +import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.nio.channels.SeekableByteChannel; import java.nio.file.Files; @@ -67,7 +68,8 @@ * * @param The type of Feature returned by this data source */ -public final class FeatureDataSource implements GATKDataSource, AutoCloseable { +public final class FeatureDataSource implements GATKDataSource, AutoCloseable, Serializable { + private static final long serialVersionUID = 1L; private static final Logger logger = LogManager.getLogger(FeatureDataSource.class); /** diff --git a/src/main/java/org/broadinstitute/hellbender/engine/FeatureManager.java b/src/main/java/org/broadinstitute/hellbender/engine/FeatureManager.java index a24c0897e1a..fa77fcdad87 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/FeatureManager.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/FeatureManager.java @@ -22,6 +22,7 @@ import org.broadinstitute.hellbender.utils.config.ConfigFactory; import org.broadinstitute.hellbender.utils.config.GATKConfig; +import java.io.Serializable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; @@ -43,10 +44,11 @@ * by the user on the command line, determines the type of the file and the codec required to decode it, * creates a FeatureDataSource for that file, and adds it to a query-able resource pool. * - * Clients can then call {@link #getFeatures(FeatureInput, SimpleInterval)} to query the data source for + * Clients can then call {@link #getFeatures(FeatureInput, Locatable)} to query the data source for * a particular FeatureInput over a specific interval. */ -public final class FeatureManager implements AutoCloseable { +public final class FeatureManager implements AutoCloseable, Serializable { + private static final long serialVersionUID = 1L; private static final Logger logger = LogManager.getLogger(FeatureManager.class); /** diff --git a/src/main/java/org/broadinstitute/hellbender/engine/cache/DrivingFeatureInputCacheStrategy.java b/src/main/java/org/broadinstitute/hellbender/engine/cache/DrivingFeatureInputCacheStrategy.java index a11000b41de..cd356007c61 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/cache/DrivingFeatureInputCacheStrategy.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/cache/DrivingFeatureInputCacheStrategy.java @@ -5,6 +5,7 @@ import org.broadinstitute.hellbender.exceptions.GATKException; import org.broadinstitute.hellbender.utils.SimpleInterval; +import java.io.Serializable; import java.util.ArrayList; import java.util.Deque; import java.util.Iterator; @@ -22,7 +23,9 @@ * * @param type Feature being cached */ -public class DrivingFeatureInputCacheStrategy implements LocatableCacheStrategy { +public class DrivingFeatureInputCacheStrategy + implements LocatableCacheStrategy, Serializable { + private static final long serialVersionUID = 1L; /** * When we trimCache our cache to a new start position, this is the maximum number of diff --git a/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCache.java b/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCache.java index d6f85bfc3c8..f454ff2a819 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCache.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCache.java @@ -6,6 +6,7 @@ import org.apache.logging.log4j.Logger; import org.broadinstitute.hellbender.utils.Utils; +import java.io.Serializable; import java.util.*; /** @@ -23,7 +24,8 @@ * * @param Type of Locatable record we are caching */ -public class LocatableCache { +public class LocatableCache implements Serializable { + private static final long serialVersionUID = 1L; private static final Logger logger = LogManager.getLogger(LocatableCache.class); /** diff --git a/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCacheStrategy.java b/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCacheStrategy.java index 97bb978f372..ce098f5157e 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCacheStrategy.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/cache/LocatableCacheStrategy.java @@ -1,14 +1,13 @@ package org.broadinstitute.hellbender.engine.cache; import htsjdk.samtools.util.Locatable; -import org.broadinstitute.hellbender.utils.SimpleInterval; import java.util.Deque; import java.util.Iterator; import java.util.List; /** - * Interface for implemented by cache strategy objects for {@code LocatableCache}. + * Interface implemented by cache strategy objects for {@code LocatableCache}. * * {@code LocatableCacheStrategy} implementations determine the following policies for the cache: * diff --git a/src/main/java/org/broadinstitute/hellbender/engine/cache/SideReadInputCacheStrategy.java b/src/main/java/org/broadinstitute/hellbender/engine/cache/SideReadInputCacheStrategy.java index 8bf72cd29e0..b67e072c512 100644 --- a/src/main/java/org/broadinstitute/hellbender/engine/cache/SideReadInputCacheStrategy.java +++ b/src/main/java/org/broadinstitute/hellbender/engine/cache/SideReadInputCacheStrategy.java @@ -7,6 +7,7 @@ import org.broadinstitute.hellbender.utils.SimpleInterval; import org.broadinstitute.hellbender.utils.read.GATKRead; +import java.io.Serializable; import java.util.*; import java.util.function.Function; @@ -23,7 +24,9 @@ * * @param Type of Locatable being cached. */ -public class SideReadInputCacheStrategy implements LocatableCacheStrategy { +public class SideReadInputCacheStrategy + implements LocatableCacheStrategy, Serializable { + private static final long serialVersionUID = 1L; private static final Logger logger = LogManager.getLogger(LocatableCache.class); private static final int EXPECTED_MAX_OVERLAPPING_READS_DURING_CACHE_TRIM = 128;