You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by to...@apache.org on 2014/10/28 13:38:03 UTC
svn commit: r1634858 - in
/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger:
./ impl/
Author: tommaso
Date: Tue Oct 28 12:38:03 2014
New Revision: 1634858
URL: http://svn.apache.org/r1634858
Log:
SLING-4106 - adding exception handling for trigger (un)registration
Added:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerException.java (with props)
Modified:
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java
sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java?rev=1634858&r1=1634857&r2=1634858&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTrigger.java Tue Oct 28 12:38:03 2014
@@ -33,13 +33,15 @@ public interface ReplicationTrigger exte
* register a request handler to be triggered and returns a corresponding registration id
*
* @param requestHandler handler
+ * @throws org.apache.sling.replication.trigger.ReplicationTriggerException if registration fails
*/
- void register(ReplicationRequestHandler requestHandler);
+ void register(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException;
/**
* unregister the given handler, if existing
*
* @param requestHandler handler to unregister
+ * @throws org.apache.sling.replication.trigger.ReplicationTriggerException if unregistration fails
*/
- void unregister(ReplicationRequestHandler requestHandler);
+ void unregister(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException;
}
Added: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerException.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerException.java?rev=1634858&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerException.java (added)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerException.java Tue Oct 28 12:38:03 2014
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.replication.trigger;
+
+/**
+ * Exception representing errors during (un)registration of {@link org.apache.sling.replication.trigger.ReplicationTrigger}s
+ */
+public class ReplicationTriggerException extends Exception {
+
+ public ReplicationTriggerException(String message, Throwable throwable) {
+ super(message, throwable);
+ }
+
+ public ReplicationTriggerException(String message) {
+ super(message);
+ }
+}
Propchange: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/ReplicationTriggerException.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java?rev=1634858&r1=1634857&r2=1634858&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/AbstractJcrEventTrigger.java Tue Oct 28 12:38:03 2014
@@ -30,6 +30,7 @@ import org.apache.sling.jcr.api.SlingRep
import org.apache.sling.replication.communication.ReplicationRequest;
import org.apache.sling.replication.trigger.ReplicationRequestHandler;
import org.apache.sling.replication.trigger.ReplicationTrigger;
+import org.apache.sling.replication.trigger.ReplicationTriggerException;
import org.apache.sling.replication.util.ReplicationJcrUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,7 +56,7 @@ public abstract class AbstractJcrEventTr
this.serviceUser = serviceUser;
}
- public void register(ReplicationRequestHandler requestHandler) {
+ public void register(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
Session session = null;
try {
session = getSession();
@@ -64,7 +65,7 @@ public abstract class AbstractJcrEventTr
session.getWorkspace().getObservationManager().addEventListener(
listener, getEventTypes(), path, true, null, null, false);
} catch (RepositoryException e) {
- log.error("unable to register request handler {}", requestHandler, e);
+ throw new ReplicationTriggerException("unable to register handler " + requestHandler, e);
} finally {
if (session != null) {
session.logout();
@@ -72,7 +73,7 @@ public abstract class AbstractJcrEventTr
}
}
- public void unregister(ReplicationRequestHandler requestHandler) {
+ public void unregister(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
JcrEventReplicationTriggerListener listener = registeredListeners.get(requestHandler.toString());
if (listener != null) {
Session session = null;
@@ -80,7 +81,7 @@ public abstract class AbstractJcrEventTr
session = getSession();
session.getWorkspace().getObservationManager().removeEventListener(listener);
} catch (RepositoryException e) {
- log.error("unable to register session", e);
+ throw new ReplicationTriggerException("unable to unregister handler " + requestHandler, e);
} finally {
if (session != null) {
session.logout();
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java?rev=1634858&r1=1634857&r2=1634858&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ChainReplicateReplicationTrigger.java Tue Oct 28 12:38:03 2014
@@ -33,6 +33,7 @@ import org.apache.sling.replication.even
import org.apache.sling.replication.event.ReplicationEventType;
import org.apache.sling.replication.trigger.ReplicationRequestHandler;
import org.apache.sling.replication.trigger.ReplicationTrigger;
+import org.apache.sling.replication.trigger.ReplicationTriggerException;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.event.Event;
@@ -60,7 +61,7 @@ public class ChainReplicateReplicationTr
this.pathPrefix = pathPrefix;
}
- public void register(ReplicationRequestHandler requestHandler) {
+ public void register(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
// register an event handler on replication package install (on a certain path) which triggers the chain replication of that same package
Dictionary<String, Object> properties = new Hashtable<String, Object>();
@@ -76,12 +77,12 @@ public class ChainReplicateReplicationTr
registrations.put(requestHandler.toString(), triggerPathEventRegistration);
}
} else {
- log.error("cannot register trigger since bundle context is null");
+ throw new ReplicationTriggerException("cannot register trigger since bundle context is null");
}
}
- public void unregister(ReplicationRequestHandler requestHandler) {
+ public void unregister(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
ServiceRegistration serviceRegistration = registrations.get(requestHandler.toString());
if (serviceRegistration != null) {
serviceRegistration.unregister();
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java?rev=1634858&r1=1634857&r2=1634858&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/RemoteEventReplicationTrigger.java Tue Oct 28 12:38:03 2014
@@ -46,6 +46,7 @@ import org.apache.sling.replication.tran
import org.apache.sling.replication.transport.authentication.TransportAuthenticationProvider;
import org.apache.sling.replication.trigger.ReplicationRequestHandler;
import org.apache.sling.replication.trigger.ReplicationTrigger;
+import org.apache.sling.replication.trigger.ReplicationTriggerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -82,20 +83,19 @@ public class RemoteEventReplicationTrigg
this.scheduler = scheduler;
}
- public void register(ReplicationRequestHandler requestHandler) {
+ public void register(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
try {
log.info("applying remote event replication trigger");
ScheduleOptions options = scheduler.NOW();
options.name(requestHandler.toString());
scheduler.schedule(new EventBasedReplication(requestHandler), options);
-
} catch (Exception e) {
- log.error("handler {} cannot be registered", requestHandler, e);
+ throw new ReplicationTriggerException("unable to register handler " + requestHandler, e);
}
}
- public void unregister(ReplicationRequestHandler requestHandler) {
+ public void unregister(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
Future<HttpResponse> httpResponseFuture = requests.remove(requestHandler.toString());
if (httpResponseFuture != null) {
httpResponseFuture.cancel(true);
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java?rev=1634858&r1=1634857&r2=1634858&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ResourceEventReplicationTrigger.java Tue Oct 28 12:38:03 2014
@@ -29,6 +29,7 @@ import org.apache.sling.replication.comm
import org.apache.sling.replication.component.ManagedReplicationComponent;
import org.apache.sling.replication.trigger.ReplicationRequestHandler;
import org.apache.sling.replication.trigger.ReplicationTrigger;
+import org.apache.sling.replication.trigger.ReplicationTriggerException;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.event.Event;
@@ -77,7 +78,7 @@ public class ResourceEventReplicationTri
registrations.clear();
}
- public void register(ReplicationRequestHandler requestHandler) {
+ public void register(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
// register an event handler on path which triggers the agent on node / property changes / addition / removals
Dictionary<String, Object> properties = new Hashtable<String, Object>();
properties.put(EventConstants.EVENT_TOPIC, new String[]{SlingConstants.TOPIC_RESOURCE_ADDED,
@@ -90,11 +91,11 @@ public class ResourceEventReplicationTri
if (triggerPathEventRegistration != null) {
registrations.put(requestHandler.toString(), triggerPathEventRegistration);
} else {
- log.error("cannot register event handler service for triggering agent");
+ throw new ReplicationTriggerException("cannot register event handler service for triggering agent");
}
}
- public void unregister(ReplicationRequestHandler requestHandler) {
+ public void unregister(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
ServiceRegistration serviceRegistration = registrations.get(requestHandler.toString());
if (serviceRegistration != null) {
serviceRegistration.unregister();
Modified: sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java?rev=1634858&r1=1634857&r2=1634858&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java (original)
+++ sling/trunk/contrib/extensions/replication/core/src/main/java/org/apache/sling/replication/trigger/impl/ScheduledReplicationTrigger.java Tue Oct 28 12:38:03 2014
@@ -24,6 +24,7 @@ import org.apache.sling.replication.comm
import org.apache.sling.replication.communication.ReplicationRequest;
import org.apache.sling.replication.trigger.ReplicationRequestHandler;
import org.apache.sling.replication.trigger.ReplicationTrigger;
+import org.apache.sling.replication.trigger.ReplicationTriggerException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,13 +50,17 @@ public class ScheduledReplicationTrigger
this.scheduler = scheduler;
}
- public void register(ReplicationRequestHandler requestHandler) {
- ScheduleOptions options = scheduler.NOW(-1, secondsInterval);
- options.name(requestHandler.toString());
- scheduler.schedule(new ScheduledReplication(requestHandler), options);
+ public void register(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
+ try {
+ ScheduleOptions options = scheduler.NOW(-1, secondsInterval);
+ options.name(requestHandler.toString());
+ scheduler.schedule(new ScheduledReplication(requestHandler), options);
+ } catch (Exception e) {
+ throw new ReplicationTriggerException("unable to register handler " + requestHandler, e);
+ }
}
- public void unregister(ReplicationRequestHandler requestHandler) {
+ public void unregister(ReplicationRequestHandler requestHandler) throws ReplicationTriggerException {
scheduler.unschedule(requestHandler.toString());
}