This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata.git


The following commit(s) were added to refs/heads/develop by this push:
     new 36f795c  AIRAVATA-2876 Delete inputs/outputs when removed
36f795c is described below

commit 36f795c14e20f428d1d6cf93e9da37e3fbe0f98c
Author: Marcus Christie <[email protected]>
AuthorDate: Tue Sep 4 17:35:30 2018 -0400

    AIRAVATA-2876 Delete inputs/outputs when removed
---
 .../appcatalog/ApplicationInterfaceEntity.java     |  4 +-
 .../ApplicationInterfaceRepositoryTest.java        | 61 ++++++++++++++++++++++
 2 files changed, 63 insertions(+), 2 deletions(-)

diff --git 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInterfaceEntity.java
 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInterfaceEntity.java
index 55ab8a9..cec6a0c 100644
--- 
a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInterfaceEntity.java
+++ 
b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/appcatalog/ApplicationInterfaceEntity.java
@@ -65,11 +65,11 @@ public class ApplicationInterfaceEntity implements 
Serializable {
        @Column(name = "MODULE_ID")
        private List<String> applicationModules;
 
-       @OneToMany(targetEntity = ApplicationInputEntity.class, cascade = 
CascadeType.ALL,
+       @OneToMany(targetEntity = ApplicationInputEntity.class, cascade = 
CascadeType.ALL, orphanRemoval = true,
                        mappedBy = "applicationInterface", fetch = 
FetchType.EAGER)
        private List<ApplicationInputEntity> applicationInputs;
 
-       @OneToMany(targetEntity = ApplicationOutputEntity.class, cascade = 
CascadeType.ALL,
+       @OneToMany(targetEntity = ApplicationOutputEntity.class, cascade = 
CascadeType.ALL, orphanRemoval = true,
                        mappedBy = "applicationInterface", fetch = 
FetchType.EAGER)
        private List<ApplicationOutputEntity> applicationOutputs;
 
diff --git 
a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/ApplicationInterfaceRepositoryTest.java
 
b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/ApplicationInterfaceRepositoryTest.java
index 18968bc..614a138 100644
--- 
a/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/ApplicationInterfaceRepositoryTest.java
+++ 
b/modules/registry-refactoring/src/test/java/org/apache/airavata/registry/core/repositories/appcatalog/ApplicationInterfaceRepositoryTest.java
@@ -244,6 +244,67 @@ public class ApplicationInterfaceRepositoryTest extends 
TestBase {
     }
 
     @Test
+    public void addAndRemoveInputsOutputsToInterfaceTest() throws 
AppCatalogException {
+
+        ApplicationInterfaceDescription applicationInterfaceDescription = new 
ApplicationInterfaceDescription();
+        
applicationInterfaceDescription.setApplicationInterfaceId("interface1");
+        applicationInterfaceDescription.setApplicationName("app interface 1");
+
+        String interfaceId = 
applicationInterfaceRepository.addApplicationInterface(applicationInterfaceDescription,
 gatewayId);
+
+        InputDataObjectType input = new InputDataObjectType();
+        input.setName("input1");
+        input.setApplicationArgument("Arg");
+        input.setDataStaged(true);
+        input.setInputOrder(0);
+        input.setIsReadOnly(true);
+        input.setIsRequired(true);
+        input.setRequiredToAddedToCommandLine(true);
+        input.setType(DataType.FLOAT);
+        input.setUserFriendlyDescription("User friendly description");
+        input.setValue("113");
+        input.setMetaData("Metadata");
+        input.setStandardInput(true);
+
+        InputDataObjectType input2 = new InputDataObjectType();
+        input2.setName("input2");
+        input2.setInputOrder(1);
+
+        OutputDataObjectType output = new OutputDataObjectType();
+        output.setName("output1");
+        output.setValue("value");
+        output.setType(DataType.FLOAT);
+        output.setApplicationArgument("Argument");
+        output.setDataMovement(true);
+        output.setIsRequired(true);
+        output.setLocation("/home/");
+        output.setSearchQuery("Search query");
+        output.setRequiredToAddedToCommandLine(true);
+        output.setOutputStreaming(true);
+
+        OutputDataObjectType output2 = new OutputDataObjectType();
+        output2.setName("output2");
+
+        
applicationInterfaceDescription.setApplicationInputs(Arrays.asList(input, 
input2));
+        
applicationInterfaceDescription.setApplicationOutputs(Arrays.asList(output, 
output2));
+
+        applicationInterfaceRepository.updateApplicationInterface(interfaceId, 
applicationInterfaceDescription);
+
+        ApplicationInterfaceDescription savedInterface = 
applicationInterfaceRepository.getApplicationInterface(interfaceId);
+        Assert.assertEquals(2, savedInterface.getApplicationInputsSize());
+        Assert.assertEquals(2, savedInterface.getApplicationOutputsSize());
+
+        savedInterface.setApplicationInputs(Arrays.asList(input));
+        savedInterface.setApplicationOutputs(Arrays.asList(output));
+
+        applicationInterfaceRepository.updateApplicationInterface(interfaceId, 
savedInterface);
+        ApplicationInterfaceDescription updatedInterface = 
applicationInterfaceRepository.getApplicationInterface(interfaceId);
+        Assert.assertEquals(1, updatedInterface.getApplicationInputsSize());
+        Assert.assertEquals(1, updatedInterface.getApplicationOutputsSize());
+
+    }
+
+    @Test
     public void filterApplicationInterfacesTest() throws AppCatalogException {
 
         List<ApplicationInterfaceDescription> interfaces = new ArrayList<>();

Reply via email to