Skip to content

Commit 12bdb58

Browse files
committed
Refactor sequence pipeline generics
1 parent 6afca92 commit 12bdb58

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/pipeline/AbstractPipelineStepProvider.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ public JSONObject toJSON()
140140
@Override
141141
public Class<StepType> getStepClass()
142142
{
143-
ParameterizedType parameterizedType = (ParameterizedType) getClass().getGenericSuperclass();
144-
return (Class) parameterizedType.getActualTypeArguments()[0];
143+
return (Class<StepType>) SequencePipelineService.get().findSuperClassParameterType(getClass());
145144
}
146145

147146
@Override

SequenceAnalysis/api-src/org/labkey/api/sequenceanalysis/pipeline/SequencePipelineService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,6 @@ static public void setInstance(SequencePipelineService instance)
146146
abstract public TaskFileManager getTaskFileManager();
147147

148148
abstract public Set<JobResourceSettings> getResourceSettings();
149+
150+
abstract public Class<?> findSuperClassParameterType(Object instance);
149151
}

SequenceAnalysis/src/org/labkey/sequenceanalysis/SequencePipelineServiceImpl.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,14 @@ public <StepType extends PipelineStep> Set<PipelineStepProvider<StepType>> getPr
119119
return ret;
120120
}
121121

122+
@Override
123+
public Class<?> findSuperClassParameterType(Object instance)
124+
{
125+
return findSuperClassParameterType(instance, 0);
126+
}
127+
122128
// Based on: https://www.javacodegeeks.com/2013/12/advanced-java-generics-retreiving-generic-type-arguments.html
123-
private static Class<?> findSuperClassParameterType(Object instance, int parameterIndex) {
129+
public static Class<?> findSuperClassParameterType(Object instance, int parameterIndex) {
124130
Class<?> clazz = instance.getClass();
125131
while (clazz != clazz.getSuperclass()) {
126132
if (clazz.getGenericSuperclass() instanceof ParameterizedType pt)

0 commit comments

Comments
 (0)