@Override protected ServiceRegistration registerServiceObject(Resource config, Hashtable<String, Object> props) { AutomaticPackageReplicatorModel model = new AutomaticPackageReplicatorModel(config); AutomaticPackageReplicatorJob job = new AutomaticPackageReplicatorJob(resourceResolverFactory, replicator, eventAdmin, model.getPackagePath()); ServiceRegistration serviceRegistration = null; props.put(TRIGGER_KEY, model.getTrigger().name()); if (AutomaticPackageReplicatorModel.TRIGGER.cron == model.getTrigger()) { if(StringUtils.isEmpty(model.getCronTrigger())){ throw new IllegalArgumentException("No cron trigger specified"); } props.put(Scheduler.PROPERTY_SCHEDULER_EXPRESSION, model.getCronTrigger()); log.debug("Registering cron runner with: {}", props); serviceRegistration = super.getBundleContext().registerService(Runnable.class.getCanonicalName(), job, props); } else { if(StringUtils.isEmpty(model.getEventTopic())){ throw new IllegalArgumentException("No event topic specified"); } props.put(EventConstants.EVENT_TOPIC, new String[] { model.getEventTopic() }); if (StringUtils.isNotEmpty(model.getEventFilter())) { props.put(EventConstants.EVENT_FILTER, model.getEventFilter()); } log.debug("Registering event handler runner with: {}", props); serviceRegistration = super.getBundleContext().registerService(EventHandler.class.getCanonicalName(), job, props); } return serviceRegistration; } }