diff --git a/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java b/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java index bce9f8ff5ec19b2a80fb661ddbe950804dc9e3b8..df793bb8ae802d4e4c5787910efd6b658c50431e 100644 --- a/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java +++ b/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java @@ -6,7 +6,7 @@ import com.google.common.collect.Lists; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import org.nrg.xft.event.EventClass; +import org.nrg.framework.event.EventClass; import org.python.google.common.collect.Maps; import org.springframework.core.annotation.AnnotationUtils; diff --git a/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java b/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java index a83585802358eebeec89d4a7121751e45487f222..94d72a07fa1f2ed0fafd33be14dc08e645058e63 100644 --- a/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java +++ b/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java @@ -6,7 +6,14 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponses; import javassist.Modifier; + +import org.nrg.automation.event.AutomationEventImplementerI; +import org.nrg.automation.event.entities.AutomationEventIds; +import org.nrg.automation.event.entities.AutomationFilters; +import org.nrg.automation.services.impl.hibernate.HibernateAutomationEventIdsService; +import org.nrg.automation.services.impl.hibernate.HibernateAutomationFiltersService; import org.nrg.framework.annotations.XapiRestController; +import org.nrg.framework.event.Filterable; import org.nrg.framework.utilities.Reflection; import org.nrg.xapi.model.event.EventClassInfo; import org.nrg.xdat.XDAT; @@ -15,12 +22,6 @@ import org.nrg.xdat.om.base.auto.AutoXnatProjectdata; import org.nrg.xdat.security.XDATUser; import org.nrg.xdat.security.helpers.Permissions; import org.nrg.xdat.security.helpers.Roles; -import org.nrg.xdat.services.impl.hibernate.HibernateAutomationEventIdsService; -import org.nrg.xdat.services.impl.hibernate.HibernateAutomationFiltersService; -import org.nrg.xft.event.AutomationEventImplementerI; -import org.nrg.xft.event.Filterable; -import org.nrg.xft.event.entities.AutomationEventIds; -import org.nrg.xft.event.entities.AutomationFilters; import org.nrg.xft.security.UserI; import org.nrg.xnat.event.conf.EventPackages; import org.slf4j.Logger; diff --git a/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java b/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java index db418854f470a31823530a35eee9a345820fba3a..71cd31bac145cc811ba0ff45c6d9030393dbdae2 100644 --- a/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java +++ b/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java @@ -13,6 +13,7 @@ import org.nrg.notify.entities.*; import org.nrg.notify.exceptions.DuplicateDefinitionException; import org.nrg.notify.exceptions.DuplicateSubscriberException; import org.nrg.notify.services.NotificationService; +import org.nrg.xdat.XDAT; import org.nrg.xdat.preferences.SiteConfigPreferences; import org.nrg.xdat.rest.AbstractXnatRestApi; import org.slf4j.Logger; @@ -558,20 +559,26 @@ public class NotificationsApi extends AbstractXnatRestApi { private void setSubscribersForNotificationType(NotificationType notificationType, final String subscribersString){ List<String> subscribers = Arrays.asList(subscribersString.split("\\s*,\\s*")); - Category category = _notificationService.getCategoryService().newEntity(); - category.setScope(CategoryScope.Site); - category.setEvent(notificationType.id()); + Category category = _notificationService.getCategoryService().getCategoryByScopeAndEvent(CategoryScope.Site, notificationType.id()); + if(category==null) { + category = _notificationService.getCategoryService().newEntity(); + category.setScope(CategoryScope.Site); + category.setEvent(notificationType.id()); + XDAT.getNotificationService().getCategoryService().create(category); + } for(String subscriber : subscribers){ try { Subscriber subscriberObject = _notificationService.getSubscriberService().getSubscriberByName(subscriber); if(subscriberObject==null){ subscriberObject = _notificationService.getSubscriberService().createSubscriber(subscriber, subscriber); + XDAT.getNotificationService().getSubscriberService().create(subscriberObject); } Definition definition1 = _notificationService.getDefinitionService().getDefinitionForCategoryAndEntity(category,1L); if(definition1==null) { definition1 = _notificationService.createDefinition(CategoryScope.Site, notificationType.id(), 1L); + XDAT.getNotificationService().getDefinitionService().create(definition1); } Channel channel1 = _notificationService.getChannelService().getChannel("htmlMail"); diff --git a/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java b/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java index 74b582bf20b7fe8ce76acea7927aa73640e08ef2..bf0ce3f6d7c5bd556b47ff684bf57927832c42ca 100644 --- a/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java +++ b/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java @@ -30,7 +30,7 @@ import java.util.List; "org.nrg.prefs.repositories", "org.nrg.xdat.daos", "org.nrg.xdat.services.impl.hibernate", "org.nrg.xft.daos", "org.nrg.xft.event.listeners", "org.nrg.xft.services", "org.nrg.xnat.configuration", "org.nrg.xnat.daos", "org.nrg.xnat.event.listeners", "org.nrg.xnat.helpers.merge", "org.nrg.xnat.initialization.tasks", - "org.nrg.xnat.services.impl.hibernate", "org.nrg.xnat.spawner.repositories"}) + "org.nrg.xnat.services.impl.hibernate", "org.nrg.xnat.spawner.repositories", "org.nrg.automation.daos"}) @Import({FeaturesConfig.class, ReactorConfig.class}) @ImportResource("WEB-INF/conf/mq-context.xml") public class ApplicationConfig { diff --git a/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java b/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java index f1581c29fd7331ba11e4f7c0e3954d5e99f31479..27138d6cc5b2346a7ff67ef57123914de76c3023 100755 --- a/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java +++ b/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java @@ -1,6 +1,6 @@ package org.nrg.xnat.configuration; -import org.nrg.xft.event.XftEventService; +import org.nrg.framework.services.NrgEventService; import org.nrg.xft.event.listeners.XftItemEventListener; import org.nrg.xnat.event.conf.EventPackages; import org.springframework.context.annotation.Bean; @@ -17,8 +17,8 @@ import java.util.HashSet; @Configuration public class ReactorConfig { @Bean - public XftEventService xftEventService() { - return new XftEventService(); + public NrgEventService xftEventService() { + return new NrgEventService(); } @Bean diff --git a/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java b/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java index ecaae576417958a5692776c9d3059e3dc8efea1a..ff474487300f6466cf9b1477b3ad27231163d383 100644 --- a/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java +++ b/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java @@ -6,11 +6,11 @@ import javax.persistence.Entity; import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.Transient; -import org.nrg.xft.event.AutomationEventImplementerI; -import org.nrg.xft.event.EventClass; -import org.nrg.xft.event.entities.AutomationCompletionEvent; -import org.nrg.xft.event.entities.PersistentEvent; -import org.nrg.xft.event.persist.PersistentEventImplementerI; +import org.nrg.automation.event.AutomationEventImplementerI; +import org.nrg.automation.event.entities.AutomationCompletionEvent; +import org.nrg.automation.event.entities.PersistentEvent; +import org.nrg.framework.event.EventClass; +import org.nrg.framework.event.persist.PersistentEventImplementerI; /** * The Class AutomationLaunchRequestEvent. diff --git a/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java b/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java index 0741edfda1b01193948b2126e25d5be71cfb4be3..ceb1ba91f75cba086c644f01a0e4d49d3478677f 100644 --- a/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java +++ b/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java @@ -4,8 +4,9 @@ import com.google.common.collect.Lists; import reactor.bus.Event; import reactor.bus.EventBus; import reactor.fn.Consumer; + +import org.nrg.automation.event.entities.AutomationCompletionEvent; import org.nrg.xdat.XDAT; -import org.nrg.xft.event.entities.AutomationCompletionEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; diff --git a/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java b/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java index ea599485b88a6de26000874bf6bc0ec47cc2d466..39aad6309da54c8b0ec9c4e47e920c64efd4f6ef 100644 --- a/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java +++ b/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java @@ -7,27 +7,28 @@ import org.hibernate.exception.ConstraintViolationException; import org.nrg.automation.entities.Script; import org.nrg.automation.entities.ScriptOutput; import org.nrg.automation.entities.ScriptOutput.Status; +import org.nrg.automation.event.AutomationEventImplementerI; +import org.nrg.automation.event.entities.AutomationCompletionEvent; +import org.nrg.automation.event.entities.AutomationEventIds; +import org.nrg.automation.event.entities.AutomationFilters; +import org.nrg.automation.event.entities.PersistentEvent; +import org.nrg.automation.services.AutomationEventIdsService; +import org.nrg.automation.services.AutomationFiltersService; +import org.nrg.automation.services.PersistentEventService; import org.nrg.automation.services.ScriptRunnerService; import org.nrg.automation.services.ScriptTriggerService; import org.nrg.automation.services.impl.hibernate.HibernateScriptTriggerService; import org.nrg.framework.constants.Scope; +import org.nrg.framework.event.Filterable; +import org.nrg.framework.event.persist.PersistentEventImplementerI; import org.nrg.framework.exceptions.NrgServiceException; +import org.nrg.framework.services.NrgEventService; +import org.nrg.xdat.XDAT; import org.nrg.xdat.security.helpers.Users; import org.nrg.xdat.security.user.exceptions.UserInitException; import org.nrg.xdat.security.user.exceptions.UserNotFoundException; -import org.nrg.xdat.services.AutomationEventIdsService; -import org.nrg.xdat.services.AutomationFiltersService; -import org.nrg.xdat.services.PersistentEventService; import org.nrg.xdat.turbine.utils.AdminUtils; -import org.nrg.xft.event.AutomationEventImplementerI; import org.nrg.xft.event.EventUtils; -import org.nrg.xft.event.Filterable; -import org.nrg.xft.event.XftEventService; -import org.nrg.xft.event.entities.AutomationCompletionEvent; -import org.nrg.xft.event.entities.AutomationEventIds; -import org.nrg.xft.event.entities.AutomationFilters; -import org.nrg.xft.event.entities.PersistentEvent; -import org.nrg.xft.event.persist.PersistentEventImplementerI; import org.nrg.xft.event.persist.PersistentWorkflowI; import org.nrg.xft.event.persist.PersistentWorkflowUtils; import org.nrg.xft.security.UserI; @@ -75,6 +76,12 @@ public class AutomationEventScriptHandler implements Consumer<Event<AutomationEv @Autowired @Lazy private ScriptRunnerService _service; + + /** + * The _eventService. + */ + @Autowired + private NrgEventService _eventService; /** * The _script trigger service. @@ -323,10 +330,9 @@ public class AutomationEventScriptHandler implements Consumer<Event<AutomationEv } } if (automationCompletionEvent != null && automationCompletionEvent.getScriptOutputs().size() > 0) { - XftEventService eventService = XftEventService.getService(); - if (eventService != null) { + if (_eventService != null) { automationCompletionEvent.setEventCompletionTime(System.currentTimeMillis()); - eventService.triggerEvent(automationCompletionEvent); + _eventService.triggerEvent(automationCompletionEvent); List<String> notifyList = automationCompletionEvent.getNotificationList(); if (notifyList != null && !notifyList.isEmpty()) { final String EMAIL_SUBJECT = "Automation Results"; diff --git a/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java b/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java index b4f92dd04b4302aae130625d52f5ca13073cce3b..743d0bbff6742674b5daec28004d1c1cfb608098 100644 --- a/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java +++ b/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java @@ -46,9 +46,13 @@ import org.nrg.action.ClientException; import org.nrg.action.ServerException; import org.nrg.automation.entities.ScriptOutput; import org.nrg.automation.entities.ScriptOutput.Status; +import org.nrg.automation.event.AutomationEventImplementerI; +import org.nrg.automation.event.entities.AutomationCompletionEvent; import org.nrg.automation.entities.ScriptTrigger; import org.nrg.automation.services.ScriptTriggerService; import org.nrg.framework.constants.Scope; +import org.nrg.framework.event.Filterable; +import org.nrg.framework.services.NrgEventService; import org.nrg.xdat.XDAT; import org.nrg.xdat.om.XnatExperimentdata; import org.nrg.xdat.om.XnatProjectdata; @@ -62,14 +66,10 @@ import org.nrg.xnat.turbine.utils.ArcSpecManager; import java.util.zip.ZipOutputStream; -import org.nrg.xft.event.AutomationEventImplementerI; import org.nrg.xft.event.EventMetaI; import org.nrg.xft.event.EventUtils; import org.nrg.xft.event.EventUtils.CATEGORY; import org.nrg.xft.event.EventUtils.TYPE; -import org.nrg.xft.event.XftEventService; -import org.nrg.xft.event.Filterable; -import org.nrg.xft.event.entities.AutomationCompletionEvent; import org.nrg.xft.event.entities.WorkflowStatusEvent; import org.nrg.xft.event.persist.PersistentWorkflowI; import org.nrg.xft.event.persist.PersistentWorkflowUtils; @@ -644,7 +644,7 @@ public class AutomationBasedImporter extends ImporterHandlerA implements Callabl automationCompletionEvent.addNotificationEmailAddr(user.getEmail()); } automationEvent.setAutomationCompletionEvent(automationCompletionEvent); - XftEventService eventService = XftEventService.getService(); + final NrgEventService eventService = XDAT.getContextService().getBean(NrgEventService.class); if (eventService == null) { returnList.add("ERROR: Could retrieve event service"); return; diff --git a/src/main/java/org/nrg/xnat/services/XnatAppInfo.java b/src/main/java/org/nrg/xnat/services/XnatAppInfo.java index 2b6326ca9fcd8a3b30645f20358f15b603b3b649..e6f2fd791dfd6a6074ee8f13e0476fbb1d22f74f 100644 --- a/src/main/java/org/nrg/xnat/services/XnatAppInfo.java +++ b/src/main/java/org/nrg/xnat/services/XnatAppInfo.java @@ -84,7 +84,7 @@ public class XnatAppInfo { * @return The primary system properties. */ public Properties getSystemProperties() { - return new Properties(_properties); + return (Properties)_properties.clone(); } /** diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java index 4bf7e85358218c1b6d382d2b7c0dd4f5136a8715..6dc72acc2a52b6f915029a35d929840bb8e679c0 100755 --- a/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java +++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java @@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.turbine.modules.ScreenLoader; import org.apache.turbine.util.RunData; import org.apache.velocity.context.Context; +import org.nrg.framework.services.NrgEventService; import org.nrg.xdat.XDAT; import org.nrg.xdat.om.ArcProject; import org.nrg.xdat.om.XnatProjectdata; @@ -31,7 +32,6 @@ import org.nrg.xft.XFTItem; import org.nrg.xft.db.PoolDBUtils; import org.nrg.xft.event.EventMetaI; import org.nrg.xft.event.EventUtils; -import org.nrg.xft.event.XftEventService; import org.nrg.xft.event.XftItemEvent; import org.nrg.xft.event.persist.PersistentWorkflowI; import org.nrg.xft.event.persist.PersistentWorkflowUtils; @@ -167,7 +167,8 @@ public class AddProject extends SecureAction { WorkflowUtils.complete(wrk, c); UserHelper.setUserHelper(data.getRequest(),user); - XftEventService.getService().triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE)); + final NrgEventService eventService = XDAT.getContextService().getBean(NrgEventService.class); + eventService.triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE)); } catch (Exception e) { WorkflowUtils.fail(wrk, c); throw e; diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java index d4f03a9e278f2695559ca0796c2754fbecabcaf0..b33fd567f384f76b2cacc15d8218dc986242f295 100755 --- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java +++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java @@ -12,6 +12,8 @@ package org.nrg.xnat.turbine.modules.actions; import org.apache.turbine.util.RunData; import org.apache.velocity.context.Context; +import org.nrg.framework.services.NrgEventService; +import org.nrg.xdat.XDAT; import org.nrg.xdat.model.XnatInvestigatordataI; import org.nrg.xdat.model.XnatProjectdataAliasI; import org.nrg.xdat.om.XnatProjectdata; @@ -27,7 +29,6 @@ import org.nrg.xft.XFTItem; import org.nrg.xft.db.PoolDBUtils; import org.nrg.xft.event.XftItemEvent; import org.nrg.xft.event.EventMetaI; -import org.nrg.xft.event.XftEventService; import org.nrg.xft.event.EventUtils; import org.nrg.xft.event.persist.PersistentWorkflowI; import org.nrg.xft.event.persist.PersistentWorkflowUtils; @@ -130,7 +131,8 @@ public class ModifyProject extends SecureAction { WorkflowUtils.complete(wrk, c); Users.clearCache(user); - XftEventService.getService().triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE)); + final NrgEventService eventService = XDAT.getContextService().getBean(NrgEventService.class); + eventService.triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE)); } catch (SecurityException e) { logger.error("Security exception triggered by user '" + user.getLogin() + "': " + e.getMessage(), e); handleException(data, project.getItem(), e, TurbineUtils.EDIT_ITEM); diff --git a/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt b/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt index 91c8dacd14aabe2cb1e0a5e9ca0f2478991ddd05..8c57423a4c597a61463d3af54de0d894d8a6a8f7 100644 --- a/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt +++ b/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt @@ -7,6 +7,8 @@ org.nrg.prefs.entities org.nrg.xdat.entities org.nrg.xft.entities org.nrg.xft.event.entities +org.nrg.automation.event.entities +org.nrg.framework.event.entities org.nrg.xnat.entities org.nrg.xnat.event.entities -org.nrg.xnat.spawner.entities +org.nrg.xnat.spawner.entities \ No newline at end of file diff --git a/src/main/webapp/page/admin/data/config/site-setup.yaml b/src/main/webapp/page/admin/data/config/site-setup.yaml index bf53e95453ffa45c1f994997b0ce931301012b06..cb44590a2e65e6fd507b4a74c97cd79de996e2e7 100644 --- a/src/main/webapp/page/admin/data/config/site-setup.yaml +++ b/src/main/webapp/page/admin/data/config/site-setup.yaml @@ -20,7 +20,7 @@ initialSetup: marginBottom: 24px html: > The settings below need to be configured before this XNAT system - can be used. Please set the properties below and submit the form continue. + can be used. Please set the properties below and submit the form to continue. # ==================== # PANEL diff --git a/src/main/webapp/setup/index.jsp b/src/main/webapp/setup/index.jsp index cbabee9e3ba5a76bce023c0ae8a10e49962acda4..15e1d5f4dcecc3cd773b852b5df84f360f959911 100644 --- a/src/main/webapp/setup/index.jsp +++ b/src/main/webapp/setup/index.jsp @@ -66,7 +66,7 @@ <h2 class="pull-left">XNAT Site Setup</h2> <div class="hidden message pull-left"> The settings below need to be configured before this XNAT system - can be used. Please set the properties below and submit the form continue. + can be used. Please set the properties below and submit the form to continue. </div> <div class="clearfix"></div> </header>