Skip to content

Commit 00d7e69

Browse files
authored
Merge pull request #641 from overture-stack/rc/4.2.2
Release Candidate 4.2.2
2 parents 0ff9424 + 7869310 commit 00d7e69

File tree

31 files changed

+287
-191
lines changed

31 files changed

+287
-191
lines changed

build.sh

-26
This file was deleted.

db_dir.sh

-2
This file was deleted.

pom.xml

+14-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<groupId>bio.overture</groupId>
2222
<artifactId>song</artifactId>
2323
<packaging>pom</packaging>
24-
<version>4.2.1</version>
24+
<version>4.2.2</version>
2525
<modules>
2626
<module>song-core</module>
2727
<module>song-java-sdk</module>
@@ -370,6 +370,19 @@
370370
<showWarnings>true</showWarnings>
371371
<forceJavacCompilerUse>true</forceJavacCompilerUse>
372372
<verbose>true</verbose>
373+
<annotationProcessorPaths>
374+
<path>
375+
<groupId>org.mapstruct</groupId>
376+
<artifactId>mapstruct-processor</artifactId>
377+
<version>${mapstruct.version}</version>
378+
</path>
379+
<path>
380+
<groupId>org.projectlombok</groupId>
381+
<artifactId>lombok</artifactId>
382+
<version>${lombok.version}</version>
383+
</path>
384+
<!-- other annotation processors -->
385+
</annotationProcessorPaths>
373386
</configuration>
374387
<dependencies>
375388
<dependency>

song-client/pom.xml

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<parent>
1919
<artifactId>song</artifactId>
2020
<groupId>bio.overture</groupId>
21-
<version>4.2.1</version>
21+
<version>4.2.2</version>
2222
</parent>
2323
<modelVersion>4.0.0</modelVersion>
2424

@@ -35,12 +35,12 @@
3535
<dependency>
3636
<groupId>bio.overture</groupId>
3737
<artifactId>song-java-sdk</artifactId>
38-
<version>4.2.1</version>
38+
<version>4.2.2</version>
3939
</dependency>
4040
<dependency>
4141
<groupId>bio.overture</groupId>
4242
<artifactId>song-core</artifactId>
43-
<version>4.2.1</version>
43+
<version>4.2.2</version>
4444
</dependency>
4545

4646
<!-- CLI -->

song-client/src/main/java/bio/overture/song/client/cli/ClientMain.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,14 @@ public void run(String... args) {
107107
} catch (IOException e) {
108108
val em = fromException(e);
109109
log.error(em.toPrettyJson());
110-
command.err("IO Error[%s]: %s", e.getClass().getSimpleName(), em.getTimestamp(), e.getMessage());
110+
command.err(
111+
"IO Error[%s]: %s", e.getClass().getSimpleName(), em.getTimestamp(), e.getMessage());
111112
} catch (Throwable e) {
112113
val em = fromException(e);
113114
log.error(em.toPrettyJson());
114-
command.err("Unknown error[%s @ %s]: %s", e.getClass().getSimpleName(), em.getTimestamp(), e.getMessage());
115+
command.err(
116+
"Unknown error[%s @ %s]: %s",
117+
e.getClass().getSimpleName(), em.getTimestamp(), e.getMessage());
115118
} finally {
116119
command.report();
117120
exit(exitCode);

song-client/src/main/java/bio/overture/song/client/command/FileUpdateCommand.java

+4
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ public class FileUpdateCommand extends Command {
5151
@Parameter(names = {"-m", "--md5"})
5252
private String fileMd5;
5353

54+
@Parameter(names = {"-d", "--datatype"})
55+
private String dataType;
56+
5457
@Parameter(
5558
names = {"-a", "--access"},
5659
converter = AccessTypeConverter.class)
@@ -72,6 +75,7 @@ public void run() throws IOException {
7275
.fileSize(fileSize)
7376
.fileAccess(isNull(fileAccess) ? null : fileAccess.toString())
7477
.fileMd5sum(fileMd5)
78+
.dataType(dataType)
7579
.info(fileInfoString)
7680
.build();
7781

song-client/src/main/java/bio/overture/song/client/command/SubmitCommand.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@
3333
@Parameters(separators = "=", commandDescription = "Submit a payload to create an analysis")
3434
public class SubmitCommand extends Command {
3535

36-
@Parameter(names = {"-f", "--file"}, required = true)
36+
@Parameter(
37+
names = {"-f", "--file"},
38+
required = true)
3739
private String fileName;
3840

3941
@NonNull private CustomRestClientConfig clientConfig;

song-client/src/test/java/bio/overture/song/client/HappyPathClientMainTest.java

+11-6
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ public void testAnalysisSearch() {
279279

280280
@Test
281281
public void testIdSearch() {
282-
val expectedFile = FileDTO.builder().objectId("FI1").build();
282+
val expectedFile = new FileDTO().setObjectId("FI1");
283283
val expectedSample = Sample.builder().sampleId("SA1").build();
284284
val expectedSpecimen = Specimen.builder().specimenId("SP1").build();
285285
val expectedDonor = Donor.builder().donorId("DO1").build();
@@ -338,11 +338,10 @@ public void testManifest() {
338338
.map(fn -> touchFile(inputDir, fn))
339339
.map(
340340
f ->
341-
FileDTO.builder()
342-
.fileName(f.getName())
343-
.objectId(randomGenerator.generateRandomUUIDAsString())
344-
.fileMd5sum(randomGenerator.generateRandomMD5())
345-
.build())
341+
new FileDTO()
342+
.setFileName(f.getName())
343+
.setObjectId(randomGenerator.generateRandomUUIDAsString())
344+
.setFileMd5sum(randomGenerator.generateRandomMD5()))
346345
.collect(toUnmodifiableList());
347346

348347
// Mock api to return expected FileDTOs
@@ -416,13 +415,15 @@ public void testSuppress() {
416415
public void testUpdateFile() {
417416
Long size = 9999L;
418417
val access = "open";
418+
val dataType = "someDataType";
419419
val info = "{\"firstName\" : \"John\"}";
420420
val md5 = randomGenerator.generateRandomMD5();
421421
val expectedUpdateRequest =
422422
FileUpdateRequest.builder()
423423
.fileSize(size)
424424
.fileAccess(access)
425425
.fileMd5sum(md5)
426+
.dataType(dataType)
426427
.info(mapper().readTree(info))
427428
.build();
428429
val expectedUpdateResponse =
@@ -437,6 +438,8 @@ public void testUpdateFile() {
437438
DUMMY_OBJECT_ID,
438439
"-s",
439440
size.toString(),
441+
"-d",
442+
dataType,
440443
"-m",
441444
md5,
442445
"-a",
@@ -452,6 +455,8 @@ public void testUpdateFile() {
452455
size.toString(),
453456
"--md5",
454457
md5,
458+
"--datatype",
459+
dataType,
455460
"--access ",
456461
access,
457462
"--info",

song-client/src/test/java/bio/overture/song/client/SadPathClientMainTest.java

+3-48
Original file line numberDiff line numberDiff line change
@@ -17,64 +17,20 @@
1717

1818
package bio.overture.song.client;
1919

20+
import static org.junit.Assert.assertTrue;
21+
import static org.mockito.Mockito.when;
22+
2023
import bio.overture.song.client.cli.ClientMain;
2124
import bio.overture.song.client.config.CustomRestClientConfig;
22-
import bio.overture.song.core.model.Analysis;
23-
import bio.overture.song.core.model.AnalysisType;
24-
import bio.overture.song.core.model.AnalysisTypeId;
25-
import bio.overture.song.core.model.Donor;
26-
import bio.overture.song.core.model.FileDTO;
27-
import bio.overture.song.core.model.FileUpdateRequest;
28-
import bio.overture.song.core.model.FileUpdateResponse;
29-
import bio.overture.song.core.model.PageDTO;
30-
import bio.overture.song.core.model.Sample;
31-
import bio.overture.song.core.model.Specimen;
32-
import bio.overture.song.core.model.SubmitResponse;
33-
import bio.overture.song.core.utils.RandomGenerator;
3425
import bio.overture.song.sdk.ManifestClient;
3526
import bio.overture.song.sdk.SongApi;
36-
import bio.overture.song.sdk.Toolbox;
37-
import com.fasterxml.jackson.databind.JsonNode;
38-
import com.google.common.collect.Lists;
39-
import com.google.common.collect.Maps;
40-
import lombok.Lombok;
41-
import lombok.SneakyThrows;
4227
import lombok.extern.slf4j.Slf4j;
4328
import lombok.val;
44-
import org.junit.Before;
45-
import org.junit.Rule;
4629
import org.junit.Test;
47-
import org.junit.rules.TemporaryFolder;
4830
import org.junit.runner.RunWith;
4931
import org.mockito.Mock;
50-
import org.mockito.Mockito;
5132
import org.mockito.junit.MockitoJUnitRunner;
5233

53-
import java.io.File;
54-
import java.nio.file.Files;
55-
import java.nio.file.Path;
56-
import java.util.List;
57-
import java.util.Map;
58-
import java.util.UUID;
59-
import java.util.stream.IntStream;
60-
61-
import static com.google.common.base.Preconditions.checkState;
62-
import static java.util.stream.Collectors.toUnmodifiableList;
63-
import static org.apache.commons.lang.StringUtils.isBlank;
64-
import static org.junit.Assert.assertEquals;
65-
import static org.junit.Assert.assertFalse;
66-
import static org.junit.Assert.assertNotEquals;
67-
import static org.junit.Assert.assertTrue;
68-
import static org.mockito.ArgumentMatchers.anyList;
69-
import static org.mockito.ArgumentMatchers.eq;
70-
import static org.mockito.Mockito.when;
71-
import static bio.overture.song.core.model.ExportedPayload.createExportedPayload;
72-
import static bio.overture.song.core.model.enums.AnalysisStates.UNPUBLISHED;
73-
import static bio.overture.song.core.utils.JsonUtils.mapper;
74-
import static bio.overture.song.core.utils.JsonUtils.objectToTree;
75-
import static bio.overture.song.core.utils.JsonUtils.readTree;
76-
import static bio.overture.song.core.utils.RandomGenerator.createRandomGenerator;
77-
7834
@Slf4j
7935
@RunWith(MockitoJUnitRunner.class)
8036
public class SadPathClientMainTest extends AbstractClientMainTest {
@@ -96,5 +52,4 @@ public void testExitCodeOnError() {
9652
val e1 = executeMain("ping");
9753
assertTrue(getExitCode() == 1);
9854
}
99-
10055
}

song-core/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<artifactId>song</artifactId>
2121
<groupId>bio.overture</groupId>
22-
<version>4.2.1</version>
22+
<version>4.2.2</version>
2323
</parent>
2424
<modelVersion>4.0.0</modelVersion>
2525

song-core/src/main/java/bio/overture/song/core/model/File.java

-2
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,4 @@ public interface File extends FileMetadata, FileContent {
2828
String getFileName();
2929

3030
String getFileType();
31-
32-
String getDataType();
3331
}

song-core/src/main/java/bio/overture/song/core/model/FileDTO.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package bio.overture.song.core.model;
22

33
import lombok.AllArgsConstructor;
4-
import lombok.Builder;
54
import lombok.Data;
65
import lombok.NoArgsConstructor;
6+
import lombok.experimental.Accessors;
77

88
@Data
9-
@Builder
109
@NoArgsConstructor
1110
@AllArgsConstructor
11+
@Accessors(chain = true)
1212
public class FileDTO extends Metadata implements File {
1313

1414
private String objectId;

song-core/src/main/java/bio/overture/song/core/model/FileMetadata.java

+2
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@ public interface FileMetadata {
2323

2424
String getFileAccess();
2525

26+
String getDataType();
27+
2628
JsonNode getInfo();
2729
}

song-core/src/main/java/bio/overture/song/core/model/FileUpdateRequest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ public class FileUpdateRequest implements FileData {
3737
private Long fileSize;
3838
private String fileMd5sum;
3939
private String fileAccess;
40+
private String dataType;
4041
private JsonNode info;
4142

4243
public static FileUpdateRequest createFileUpdateRequest(
4344
@NonNull Long fileSize,
4445
@NonNull String fileMd5sum,
4546
@NonNull String fileAccess,
47+
@NonNull String dataType,
4648
@NonNull JsonNode info) {
47-
return new FileUpdateRequest(fileSize, fileMd5sum, fileAccess, info);
49+
return new FileUpdateRequest(fileSize, fileMd5sum, fileAccess, dataType, info);
4850
}
4951
}

song-core/src/main/java/bio/overture/song/core/model/enums/FileUpdateTypes.java

+6
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ private static boolean isUnchangedAccess(FileMetadata originalFile, FileMetadata
5959
return isUnchanged(FileMetadata::getFileAccess, originalFile, fileUpdataData);
6060
}
6161

62+
private static boolean isUnchangedDataType(
63+
FileMetadata originalFile, FileMetadata fileUpdataData) {
64+
return isUnchanged(FileMetadata::getDataType, originalFile, fileUpdataData);
65+
}
66+
6267
private static boolean isUnchangedInfo(FileMetadata originalFile, FileMetadata fileUpdataData) {
6368
return isUnchanged(FileMetadata::getInfo, originalFile, fileUpdataData);
6469
}
@@ -70,6 +75,7 @@ private static boolean isChangedContent(FileContent originalFile, FileContent fi
7075

7176
private static boolean isChangedMetadata(FileMetadata originalFile, FileMetadata fileUpdateData) {
7277
return !(isUnchangedAccess(originalFile, fileUpdateData)
78+
&& isUnchangedDataType(originalFile, fileUpdateData)
7379
&& isUnchangedInfo(originalFile, fileUpdateData));
7480
}
7581
}

song-core/src/main/java/bio/overture/song/core/utils/RandomGenerator.java

+19
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import java.util.EnumSet;
3232
import java.util.List;
3333
import java.util.Random;
34+
import java.util.Set;
3435
import java.util.UUID;
3536
import java.util.function.Supplier;
3637
import java.util.stream.IntStream;
@@ -247,6 +248,24 @@ public <T> T randomElement(List<T> list) {
247248
return list.get(generateRandomIntRange(0, list.size()));
248249
}
249250

251+
/**
252+
* Select a random element from a list, ignoring a set of values. This is useful for selecting
253+
* random and different enum values
254+
*
255+
* @param list input list to select from
256+
* @param ignoreSet set of values to exclude from randomization
257+
*/
258+
public <T> T randomElementIgnoring(List<T> list, Set<T> ignoreSet) {
259+
val filteredList =
260+
list.stream().filter(x -> !ignoreSet.contains(x)).collect(toUnmodifiableList());
261+
log.debug(
262+
"Selecting RandomElementIgnoring for RandomGenerator[{}] with seed '{}' and callCount '{}'",
263+
id,
264+
seed,
265+
callCount);
266+
return filteredList.get(generateRandomIntRange(0, filteredList.size()));
267+
}
268+
250269
/**
251270
* Call the randomSupplier streamSize amount of times and stream it
252271
*

0 commit comments

Comments
 (0)