Repository: airavata Updated Branches: refs/heads/master aee6aad8e -> 6d7890d4c
Merging changes from safekeeping branch to master Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/6d7890d4 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/6d7890d4 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/6d7890d4 Branch: refs/heads/master Commit: 6d7890d4cf93764046f2aaf8c0fa9b2b5439acbd Parents: aee6aad Author: Chathuri Wimalasena <[email protected]> Authored: Fri Nov 14 17:03:54 2014 -0500 Committer: Chathuri Wimalasena <[email protected]> Committed: Fri Nov 14 17:03:54 2014 -0500 ---------------------------------------------------------------------- .../server/handler/AiravataServerHandler.java | 11 +++- .../data/impl/ApplicationInterfaceImpl.java | 63 +++++++++++++------- .../resources/AppModuleMappingResource.java | 29 ++++++++- .../resources/ApplicationInputResource.java | 6 +- .../resources/ApplicationOutputResource.java | 31 +++++----- .../app/catalog/test/AppInterfaceTest.java | 15 ++++- .../airavata/gfac/monitor/HPCMonitorID.java | 2 +- .../apache/airavata/gsi/ssh/util/SSHUtils.java | 4 +- 8 files changed, 112 insertions(+), 49 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java index 76a6d2d..c98850f 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java @@ -1425,7 +1425,16 @@ public class AiravataServerHandler implements Airavata.Iface { */ @Override public List<ApplicationDeploymentDescription> getAllApplicationDeployments() throws InvalidRequestException, AiravataClientException, AiravataSystemException, TException { - return null; + try { + appCatalog = AppCatalogFactory.getAppCatalog(); + return appCatalog.getApplicationDeployment().getAllApplicationDeployements(); + } catch (AppCatalogException e) { + logger.error("Error while retrieving application deployments...", e); + AiravataSystemException exception = new AiravataSystemException(); + exception.setAiravataErrorType(AiravataErrorType.INTERNAL_ERROR); + exception.setMessage("Error while retrieving application deployments. More info : " + e.getMessage()); + throw exception; + } } /** http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java ---------------------------------------------------------------------- diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java index 5c3db08..d430ebe 100644 --- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java +++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/impl/ApplicationInterfaceImpl.java @@ -162,36 +162,52 @@ public class ApplicationInterfaceImpl implements ApplicationInterface { public void updateApplicationInterface(String interfaceId, ApplicationInterfaceDescription updatedInterface) throws AppCatalogException { try { AppInterfaceResource resource = new AppInterfaceResource(); - AppInterfaceResource existingInterface = (AppInterfaceResource)resource.get(interfaceId); + AppInterfaceResource existingInterface = (AppInterfaceResource) resource.get(interfaceId); existingInterface.setAppName(updatedInterface.getApplicationName()); + existingInterface.setAppDescription(updatedInterface.getApplicationDescription()); existingInterface.save(); + // remove existing modules before adding + Map<String, String> ids = new HashMap<String, String>(); + ids.put(AbstractResource.AppModuleMappingConstants.INTERFACE_ID, interfaceId); + AppModuleMappingResource moduleMappingResource = new AppModuleMappingResource(); + moduleMappingResource.remove(ids); List<String> applicationModules = updatedInterface.getApplicationModules(); - if (applicationModules != null && !applicationModules.isEmpty()){ - for (String moduleId : applicationModules){ + if (applicationModules != null && !applicationModules.isEmpty()) { + for (String moduleId : applicationModules) { AppModuleResource appModuleResource = new AppModuleResource(); - AppModuleMappingResource moduleMappingResource = new AppModuleMappingResource(); - Map<String, String> ids = new HashMap<String, String>(); + moduleMappingResource = new AppModuleMappingResource(); + ids = new HashMap<String, String>(); ids.put(AbstractResource.AppModuleMappingConstants.MODULE_ID, moduleId); ids.put(AbstractResource.AppModuleMappingConstants.INTERFACE_ID, interfaceId); - AppModuleMappingResource existingMapping = (AppModuleMappingResource)moduleMappingResource.get(ids); + AppModuleMappingResource existingMapping; + if (!moduleMappingResource.isExists(ids)) { + existingMapping = new AppModuleMappingResource(); + } else { + existingMapping = (AppModuleMappingResource) moduleMappingResource.get(ids); + } existingMapping.setInterfaceId(interfaceId); existingMapping.setModuleId(moduleId); - existingMapping.setModuleResource((AppModuleResource)appModuleResource.get(moduleId)); + existingMapping.setModuleResource((AppModuleResource) appModuleResource.get(moduleId)); existingMapping.setAppInterfaceResource(existingInterface); existingMapping.save(); } } + // remove existing application inputs + ApplicationInputResource inputResource = new ApplicationInputResource(); + ids = new HashMap<String, String>(); + ids.put(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId); + inputResource.remove(ids); List<InputDataObjectType> applicationInputs = updatedInterface.getApplicationInputs(); - if (applicationInputs != null && !applicationInputs.isEmpty()){ - for (InputDataObjectType input : applicationInputs){ - ApplicationInputResource inputResource = new ApplicationInputResource(); - Map<String, String> ids = new HashMap<String, String>(); + if (applicationInputs != null && !applicationInputs.isEmpty()) { + for (InputDataObjectType input : applicationInputs) { + inputResource = new ApplicationInputResource(); + ids = new HashMap<String, String>(); ids.put(AbstractResource.AppInputConstants.INTERFACE_ID, interfaceId); ids.put(AbstractResource.AppInputConstants.INPUT_KEY, input.getName()); - if (inputResource.isExists(ids)){ - inputResource = (ApplicationInputResource)inputResource.get(ids); + if (inputResource.isExists(ids)) { + inputResource = (ApplicationInputResource) inputResource.get(ids); } inputResource.setAppInterfaceResource(existingInterface); inputResource.setInterfaceID(interfaceId); @@ -206,15 +222,20 @@ public class ApplicationInterfaceImpl implements ApplicationInterface { } } + // remove existing app outputs before adding + ApplicationOutputResource outputResource = new ApplicationOutputResource(); + ids = new HashMap<String, String>(); + ids.put(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId); + outputResource.remove(ids); List<OutputDataObjectType> applicationOutputs = updatedInterface.getApplicationOutputs(); - if (applicationOutputs != null && !applicationOutputs.isEmpty()){ - for (OutputDataObjectType output : applicationOutputs){ - ApplicationOutputResource outputResource = new ApplicationOutputResource(); - Map<String, String> ids = new HashMap<String, String>(); + if (applicationOutputs != null && !applicationOutputs.isEmpty()) { + for (OutputDataObjectType output : applicationOutputs) { + outputResource = new ApplicationOutputResource(); + ids = new HashMap<String, String>(); ids.put(AbstractResource.AppOutputConstants.INTERFACE_ID, interfaceId); ids.put(AbstractResource.AppOutputConstants.OUTPUT_KEY, output.getName()); - if (outputResource.isExists(ids)){ - outputResource = (ApplicationOutputResource)outputResource.get(ids); + if (outputResource.isExists(ids)) { + outputResource = (ApplicationOutputResource) outputResource.get(ids); } outputResource.setInterfaceID(interfaceId); outputResource.setAppInterfaceResource(existingInterface); @@ -224,8 +245,8 @@ public class ApplicationInterfaceImpl implements ApplicationInterface { outputResource.save(); } } - }catch (Exception e) { - logger.error("Error while updating application interface "+interfaceId, e); + } catch (Exception e) { + logger.error("Error while updating application interface " + interfaceId, e); throw new AppCatalogException(e); } } http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java ---------------------------------------------------------------------- diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java index 2b904ad..a44229d 100644 --- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java +++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/AppModuleMappingResource.java @@ -95,7 +95,32 @@ public class AppModuleMappingResource extends AbstractResource { em.getTransaction().begin(); AppCatalogQueryGenerator generator= new AppCatalogQueryGenerator(APP_MODULE_MAPPING); generator.setParameter(AppModuleMappingConstants.INTERFACE_ID, ids.get(AppModuleMappingConstants.INTERFACE_ID)); - generator.setParameter(AppModuleMappingConstants.MODULE_ID, ids.get(AppModuleMappingConstants.MODULE_ID)); + if (ids.get(AppModuleMappingConstants.MODULE_ID) != null){ + generator.setParameter(AppModuleMappingConstants.MODULE_ID, ids.get(AppModuleMappingConstants.MODULE_ID)); + } + Query q = generator.deleteQuery(em); + q.executeUpdate(); + em.getTransaction().commit(); + em.close(); + } catch (ApplicationSettingsException e) { + logger.error(e.getMessage(), e); + throw new AppCatalogException(e); + } finally { + if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()){ + em.getTransaction().rollback(); + } + em.close(); + } + } + } + + public void removeAll() throws AppCatalogException { + EntityManager em = null; + try { + em = AppCatalogJPAUtils.getEntityManager(); + em.getTransaction().begin(); + AppCatalogQueryGenerator generator= new AppCatalogQueryGenerator(APP_MODULE_MAPPING); Query q = generator.deleteQuery(em); q.executeUpdate(); em.getTransaction().commit(); @@ -289,4 +314,4 @@ public class AppModuleMappingResource extends AbstractResource { } } } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java ---------------------------------------------------------------------- diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java index 764ddd8..6894ff1 100644 --- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java +++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationInputResource.java @@ -67,7 +67,9 @@ public class ApplicationInputResource extends AbstractResource { em.getTransaction().begin(); AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(APPLICATION_INPUT); generator.setParameter(AppInputConstants.INTERFACE_ID, ids.get(AppInputConstants.INTERFACE_ID)); - generator.setParameter(AppInputConstants.INPUT_KEY, ids.get(AppInputConstants.INPUT_KEY)); + if (ids.get(AppInputConstants.INPUT_KEY) != null){ + generator.setParameter(AppInputConstants.INPUT_KEY, ids.get(AppInputConstants.INPUT_KEY)); + } Query q = generator.deleteQuery(em); q.executeUpdate(); em.getTransaction().commit(); @@ -277,9 +279,9 @@ public class ApplicationInputResource extends AbstractResource { } else { applicationInput=existingApplicationInput; } - applicationInput.setInterfaceID(interfaceID); ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID); applicationInput.setApplicationInterface(applicationInterface); + applicationInput.setInterfaceID(applicationInterface.getInterfaceID()); applicationInput.setDataType(dataType); applicationInput.setInputKey(inputKey); applicationInput.setInputVal(inputVal); http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java ---------------------------------------------------------------------- diff --git a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java index e709fb2..ea0f52b 100644 --- a/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java +++ b/modules/app-catalog/app-catalog-data/src/main/java/org/apache/aiaravata/application/catalog/data/resources/ApplicationOutputResource.java @@ -62,7 +62,9 @@ public class ApplicationOutputResource extends AbstractResource { em.getTransaction().begin(); AppCatalogQueryGenerator generator = new AppCatalogQueryGenerator(APPLICATION_OUTPUT); generator.setParameter(AppOutputConstants.INTERFACE_ID, ids.get(AppOutputConstants.INTERFACE_ID)); - generator.setParameter(AppOutputConstants.OUTPUT_KEY, ids.get(AppOutputConstants.OUTPUT_KEY)); + if (ids.get(AppOutputConstants.OUTPUT_KEY) != null){ + generator.setParameter(AppOutputConstants.OUTPUT_KEY, ids.get(AppOutputConstants.OUTPUT_KEY)); + } Query q = generator.deleteQuery(em); q.executeUpdate(); em.getTransaction().commit(); @@ -267,26 +269,21 @@ public class ApplicationOutputResource extends AbstractResource { new AppOutput_PK(interfaceID, outputKey)); em.close(); + ApplicationOutput applicationOutput; em = AppCatalogJPAUtils.getEntityManager(); em.getTransaction().begin(); - if (existingApplicationOutput != null) { - existingApplicationOutput.setInterfaceID(interfaceID); - ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID); - existingApplicationOutput.setApplicationInterface(applicationInterface); - existingApplicationOutput.setDataType(dataType); - existingApplicationOutput.setOutputKey(outputKey); - existingApplicationOutput.setOutputVal(outputVal); - em.merge(existingApplicationOutput); + if (existingApplicationOutput == null) { + applicationOutput = new ApplicationOutput(); } else { - ApplicationOutput applicationOutput = new ApplicationOutput(); - applicationOutput.setInterfaceID(interfaceID); - ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID); - applicationOutput.setApplicationInterface(applicationInterface); - applicationOutput.setDataType(dataType); - applicationOutput.setOutputKey(outputKey); - applicationOutput.setOutputVal(outputVal); - em.persist(applicationOutput); + applicationOutput = existingApplicationOutput; } + ApplicationInterface applicationInterface = em.find(ApplicationInterface.class, interfaceID); + applicationOutput.setApplicationInterface(applicationInterface); + applicationOutput.setInterfaceID(applicationInterface.getInterfaceID()); + applicationOutput.setDataType(dataType); + applicationOutput.setOutputKey(outputKey); + applicationOutput.setOutputVal(outputVal); + em.merge(applicationOutput); em.getTransaction().commit(); em.close(); } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java ---------------------------------------------------------------------- diff --git a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java index de31870..1a1dbd3 100644 --- a/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java +++ b/modules/app-catalog/app-catalog-data/src/test/java/org/apache/airavata/app/catalog/test/AppInterfaceTest.java @@ -97,8 +97,17 @@ public class AppInterfaceTest { ApplicationInterfaceDescription ainterface = null; if (appInterface.isApplicationInterfaceExists(appID)){ ainterface = appInterface.getApplicationInterface(appID); - System.out.println("********** application name ************* : " + ainterface.getApplicationName()); - System.out.println("********** application description ************* : " + ainterface.getApplicationDescription()); + OutputDataObjectType output3 = createAppOutput("output3", "", DataType.STRING); + OutputDataObjectType output4 = createAppOutput("output4", "", DataType.STRING); + outputs.add(output3); + outputs.add(output4); + ainterface.setApplicationOutputs(outputs); + appInterface.updateApplicationInterface(appID, ainterface); + ApplicationInterfaceDescription updateApp = appInterface.getApplicationInterface(appID); + List<OutputDataObjectType> appOutputs = updateApp.getApplicationOutputs(); + System.out.println("********** application name ************* : " + updateApp.getApplicationName()); + System.out.println("********** application description ************* : " + updateApp.getApplicationDescription()); + System.out.println("********** output size ************* : " + appOutputs.size()); } ApplicationModule wrfModule = appInterface.getApplicationModule(wrfModuleId); System.out.println("********** WRF module name ************* : " + wrfModule.getAppModuleName()); @@ -170,4 +179,4 @@ public class AppInterfaceTest { outputDataObjectType.setType(type); return outputDataObjectType; } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java ---------------------------------------------------------------------- diff --git a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java index 7ba5b6b..ae463a7 100644 --- a/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java +++ b/modules/gfac/gfac-monitor/src/main/java/org/apache/airavata/gfac/monitor/HPCMonitorID.java @@ -76,7 +76,7 @@ public class HPCMonitorID extends MonitorID { } } } catch (GFacException e) { - e.printStackTrace(); + logger.error("Error while getting security context", e); } } } http://git-wip-us.apache.org/repos/asf/airavata/blob/6d7890d4/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java ---------------------------------------------------------------------- diff --git a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java index 1fdaa1f..bef2cc7 100644 --- a/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java +++ b/tools/gsissh/src/main/java/org/apache/airavata/gsi/ssh/util/SSHUtils.java @@ -155,7 +155,7 @@ public class SSHUtils { File _lfile = new File(lFile); if (ptimestamp) { - command = "T " + (_lfile.lastModified() / 1000) + " 0"; + command = "T" + (_lfile.lastModified() / 1000) + " 0"; // The access time should be sent here, // but it is not accessible with JavaAPI ;-< command += (" " + (_lfile.lastModified() / 1000) + " 0\n"); @@ -259,7 +259,7 @@ public class SSHUtils { File _lfile = new File(localFile); if (ptimestamp) { - command = "T " + (_lfile.lastModified() / 1000) + " 0"; + command = "T" + (_lfile.lastModified() / 1000) + " 0"; // The access time should be sent here, // but it is not accessible with JavaAPI ;-< command += (" " + (_lfile.lastModified() / 1000) + " 0\n");
