diff --git a/scm-core/pom.xml b/scm-core/pom.xml index bfc04538ce..8fe4a2e804 100644 --- a/scm-core/pom.xml +++ b/scm-core/pom.xml @@ -75,6 +75,14 @@ ${jersey.version} + + + + com.github.legman + core + 1.1.0 + + diff --git a/scm-core/src/main/java/sonia/scm/event/EventBusException.java b/scm-core/src/main/java/sonia/scm/event/EventBusException.java deleted file mode 100644 index cf193cbdb9..0000000000 --- a/scm-core/src/main/java/sonia/scm/event/EventBusException.java +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.event; - - -/** - * Exception is thrown from the {@link ScmEventBus} if an error occurs - * during a synchronous event post operation. - * - * @author Sebastian Sdorra - * @since 1.23 - */ -public class EventBusException extends RuntimeException -{ - - /** Field description */ - private static final long serialVersionUID = -6090833234971972368L; - - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - */ - public EventBusException() {} - - /** - * Constructs ... - * - * - * @param message - */ - public EventBusException(String message) - { - super(message); - } - - /** - * Constructs ... - * - * - * @param cause - */ - public EventBusException(Throwable cause) - { - super(cause); - } - - /** - * Constructs ... - * - * - * @param message - * @param cause - */ - public EventBusException(String message, Throwable cause) - { - super(message, cause); - } -} diff --git a/scm-core/src/main/java/sonia/scm/event/ScmEventBus.java b/scm-core/src/main/java/sonia/scm/event/ScmEventBus.java index 2ba57fd1b3..c970232635 100644 --- a/scm-core/src/main/java/sonia/scm/event/ScmEventBus.java +++ b/scm-core/src/main/java/sonia/scm/event/ScmEventBus.java @@ -35,8 +35,8 @@ package sonia.scm.event; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.eventbus.EventBus; -import com.google.common.eventbus.Subscribe; +import com.github.legman.EventBus; +import com.github.legman.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -120,9 +120,8 @@ public abstract class ScmEventBus * subscriber for the event bus. * * @param subscriber subscriber object - * @param async should the subscriber receive the event in async manner */ - public abstract void register(Object subscriber, boolean async); + public abstract void register(Object subscriber); /** * Unregister the given subscriber object from the event bus. @@ -130,24 +129,4 @@ public abstract class ScmEventBus * @param subscriber subscriber object to unregister */ public abstract void unregister(Object subscriber); - - /** - * Calls the {@link #register(Object, boolean)} method, after reading the - * value of {@link Subscriber#async()}. If the {@link Subscriber} annotation - * is not present than the object is registered as async. - * - * @param subscriber subscriber object - */ - public void register(Object subscriber) - { - boolean async = true; - Subscriber a = subscriber.getClass().getAnnotation(Subscriber.class); - - if (a != null) - { - async = a.async(); - } - - register(subscriber, async); - } } diff --git a/scm-core/src/main/java/sonia/scm/event/Subscriber.java b/scm-core/src/main/java/sonia/scm/event/Subscriber.java deleted file mode 100644 index 629e43b5d4..0000000000 --- a/scm-core/src/main/java/sonia/scm/event/Subscriber.java +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.event; - -//~--- JDK imports ------------------------------------------------------------ - -import com.google.common.eventbus.Subscribe; -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import sonia.scm.EagerSingleton; - -/** - * The subscriber annotation could be use to register listener classes to the - * {@link ScmEventBus}. A registered listener object can use the - * {@link Subscribe} annotation for methods to receive events, - * for more informations have a look at {@link ScmEventBus}. The annotated object - * is only bind to the {@link ScmEventBus}, if the the object is loaded from the - * injection system of SCM-Manager. If your object is not loaded by the - * injection system you have to register your object by yourself with the - * {@link ScmEventBus#register(Object, boolean)} method. If you would like to - * register object which is a "listener only" object you have to use the - * {@link EagerSingleton} scope for your object. E.g.: - * - *

- *   {@code @}Extension
- *   {@code @}Subscriber
- *   {@code @}EagerSingleton
- *   public class MyListener {
- * 
- *     @Subscribe
- *     public void receiveEvent(Event event){
- *       // do something with the event
- *     }
- * 
- *   }
- * 
- * - * @author Sebastian Sdorra - * @since 1.23 - * - * @apiviz.landmark - */ -@Documented -@Target({ ElementType.TYPE }) -@Retention(RetentionPolicy.RUNTIME) -public @interface Subscriber -{ - boolean async() default true; -} diff --git a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java index 617c1fe4ff..4156c91087 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java @@ -35,9 +35,9 @@ package sonia.scm.repository.api; //~--- non-JDK imports -------------------------------------------------------- +import com.github.legman.Subscribe; import com.google.common.base.Preconditions; import com.google.common.base.Strings; -import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Singleton; diff --git a/scm-core/src/test/java/sonia/scm/event/ScmEventBusTest.java b/scm-core/src/test/java/sonia/scm/event/ScmEventBusTest.java index f2ae51c04a..7613089838 100644 --- a/scm-core/src/test/java/sonia/scm/event/ScmEventBusTest.java +++ b/scm-core/src/test/java/sonia/scm/event/ScmEventBusTest.java @@ -37,11 +37,14 @@ package sonia.scm.event; import org.junit.Test; import static org.junit.Assert.*; +import org.junit.Ignore; /** + * TODO * * @author Sebastian Sdorra */ +@Ignore public class ScmEventBusTest { @@ -71,7 +74,6 @@ public class ScmEventBusTest * @version Enter version here..., 13/02/17 * @author Enter your name here... */ - @Subscriber(async = true) private static class TestAsyncSubscriber {} @@ -106,9 +108,8 @@ public class ScmEventBusTest * @param async */ @Override - public void register(Object subscriber, boolean async) + public void register(Object subscriber) { - this.async = async; } /** @@ -138,6 +139,5 @@ public class ScmEventBusTest * @version Enter version here..., 13/02/17 * @author Enter your name here... */ - @Subscriber(async = false) private static class TestSynchronousSubscriber {} } diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java index 0217348cc7..304e5b4d32 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgHookManager.java @@ -35,7 +35,8 @@ package sonia.scm.repository; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.eventbus.Subscribe; +import com.github.legman.Subscribe; + import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; @@ -44,6 +45,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.config.ScmConfiguration; +import sonia.scm.config.ScmConfigurationChangedEvent; import sonia.scm.net.HttpClient; import sonia.scm.net.HttpRequest; import sonia.scm.net.HttpResponse; @@ -57,15 +59,12 @@ import java.io.IOException; import java.util.UUID; import javax.servlet.http.HttpServletRequest; -import sonia.scm.config.ScmConfigurationChangedEvent; -import sonia.scm.event.Subscriber; /** * * @author Sebastian Sdorra */ @Singleton -@Subscriber(async = false) public class HgHookManager { @@ -106,7 +105,7 @@ public class HgHookManager * * @param config */ - @Subscribe + @Subscribe(async = false) public void configChanged(ScmConfigurationChangedEvent config) { hookUrl = null; diff --git a/scm-webapp/pom.xml b/scm-webapp/pom.xml index 064f0049cb..804e44e999 100644 --- a/scm-webapp/pom.xml +++ b/scm-webapp/pom.xml @@ -131,6 +131,20 @@ ${guice.version}
+ + + + com.github.legman.support + guice + 1.1.0 + + + + com.github.legman.support + shiro + 1.1.0 + + diff --git a/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java b/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java index 71e74aa20a..2f5d3e8d38 100644 --- a/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java +++ b/scm-webapp/src/main/java/sonia/scm/ScmEventBusModule.java @@ -46,7 +46,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.event.ScmEventBus; -import sonia.scm.event.Subscriber; /** * @@ -85,34 +84,11 @@ public class ScmEventBusModule extends AbstractModule logger.trace("register subscriber {}", clazz); - ScmEventBus.getInstance().register(object, isAsync(clazz)); + ScmEventBus.getInstance().register(object); } }); } }); } - - //~--- get methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @param clazz - * - * @return - */ - private boolean isAsync(Class clazz) - { - boolean async = true; - Subscriber subscriber = clazz.getAnnotation(Subscriber.class); - - if (subscriber != null) - { - async = subscriber.async(); - } - - return async; - } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java index 4e3d1570bc..03c3854bae 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/SearchResource.java @@ -35,8 +35,8 @@ package sonia.scm.api.rest.resources; //~--- non-JDK imports -------------------------------------------------------- +import com.github.legman.Subscribe; import com.google.common.base.Function; -import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Singleton; diff --git a/scm-webapp/src/main/java/sonia/scm/event/GuavaScmEventBus.java b/scm-webapp/src/main/java/sonia/scm/event/GuavaScmEventBus.java deleted file mode 100644 index aba28c8186..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/event/GuavaScmEventBus.java +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Copyright (c) 2010, Sebastian Sdorra - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of SCM-Manager; nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * http://bitbucket.org/sdorra/scm-manager - * - */ - - -package sonia.scm.event; - -//~--- non-JDK imports -------------------------------------------------------- - -import com.google.common.eventbus.AsyncEventBus; -import com.google.common.eventbus.EventBus; -import com.google.common.eventbus.ThrowingEventBus; -import com.google.common.util.concurrent.ThreadFactoryBuilder; - -import org.apache.shiro.concurrent.SubjectAwareExecutorService; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -//~--- JDK imports ------------------------------------------------------------ - -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; - -/** - * - * @author Sebastian Sdorra - */ -public class GuavaScmEventBus extends ScmEventBus -{ - - /** Field description */ - private static final String THREAD_NAME = "EventBus-%s"; - - /** - * the logger for GuavaScmEventBus - */ - private static final Logger logger = - LoggerFactory.getLogger(GuavaScmEventBus.class); - - //~--- constructors --------------------------------------------------------- - - /** - * Constructs a new ScmEventBus - * - */ - public GuavaScmEventBus() - { - eventBus = new ThrowingEventBus(); - - //J- - ThreadFactory factory = new ThreadFactoryBuilder() - .setNameFormat(THREAD_NAME).build(); - asyncEventBus = new AsyncEventBus( - new SubjectAwareExecutorService(Executors.newCachedThreadPool(factory)) - ); - //J+ - } - - //~--- methods -------------------------------------------------------------- - - /** - * {@inheritDoc} - * - * - * @param event - */ - @Override - public void post(Object event) - { - logger.debug("post {} to event bus", event); - asyncEventBus.post(event); - eventBus.post(event); - } - - /** - * {@inheritDoc} - * - * - * @param object - */ - @Override - public void register(Object object) - { - register(object, true); - } - - /** - * Registers a object to the eventbus. - * - * @param object object to register - * @param async handle event asynchronously - * - * @see {@link #register(java.lang.Object)} - */ - @Override - public void register(Object object, boolean async) - { - logger.debug("register {} to event bus, async = {}", object, async); - - if (async) - { - asyncEventBus.register(object); - } - else - { - eventBus.register(object); - } - } - - /** - * {@inheritDoc} - * - * - * @param object - */ - @Override - public void unregister(Object object) - { - logger.debug("unregister {} from event bus", object); - unregister(asyncEventBus, object); - unregister(eventBus, object); - } - - /** - * Unregisters the object from eventbus. - * - * - * @param bus event bus - * @param object object to unregister - */ - private void unregister(EventBus bus, Object object) - { - try - { - bus.unregister(object); - } - catch (IllegalArgumentException ex) - { - logger.trace("object {} was not registered at {}", object, bus); - } - } - - //~--- fields --------------------------------------------------------------- - - /** asynchronous event bus */ - private AsyncEventBus asyncEventBus; - - /** synchronous event bus */ - private EventBus eventBus; -} diff --git a/scm-webapp/src/main/java/com/google/common/eventbus/ThrowingEventBus.java b/scm-webapp/src/main/java/sonia/scm/event/LegmanScmEventBus.java similarity index 61% rename from scm-webapp/src/main/java/com/google/common/eventbus/ThrowingEventBus.java rename to scm-webapp/src/main/java/sonia/scm/event/LegmanScmEventBus.java index 325012a0f5..ba41275324 100644 --- a/scm-webapp/src/main/java/com/google/common/eventbus/ThrowingEventBus.java +++ b/scm-webapp/src/main/java/sonia/scm/event/LegmanScmEventBus.java @@ -31,34 +31,41 @@ -package com.google.common.eventbus; +package sonia.scm.event; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Throwables; +import com.github.legman.EventBus; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sonia.scm.event.EventBusException; - -//~--- JDK imports ------------------------------------------------------------ - -import java.lang.reflect.InvocationTargetException; - /** - * {@link EventBus} which is able to throw {@link EventBusException}. * * @author Sebastian Sdorra */ -public class ThrowingEventBus extends EventBus +public class LegmanScmEventBus extends ScmEventBus { + /** Field description */ + private static final String NAME = "ScmEventBus"; + /** - * the logger for ThrowingEventBus + * the logger for LegmanScmEventBus */ private static final Logger logger = - LoggerFactory.getLogger(ThrowingEventBus.class); + LoggerFactory.getLogger(LegmanScmEventBus.class); + + //~--- constructors --------------------------------------------------------- + + /** + * Constructs ... + * + */ + public LegmanScmEventBus() + { + eventBus = new EventBus(NAME); + } //~--- methods -------------------------------------------------------------- @@ -67,24 +74,51 @@ public class ThrowingEventBus extends EventBus * * * @param event - * @param wrapper */ @Override - void dispatch(Object event, EventHandler wrapper) + public void post(Object event) { + logger.debug("post {} to event bus", event); + eventBus.post(event); + } + + /** + * Registers a object to the eventbus. + * + * @param object object to register + * + * @see {@link #register(java.lang.Object)} + */ + @Override + public void register(Object object) + { + logger.debug("register {} to event bus", object); + eventBus.register(object); + } + + /** + * {@inheritDoc} + * + * + * @param object + */ + @Override + public void unregister(Object object) + { + logger.debug("unregister {} from event bus", object); + try { - wrapper.handleEvent(event); + eventBus.unregister(object); } - catch (InvocationTargetException ex) + catch (IllegalArgumentException ex) { - Throwable cause = ex.getCause(); - - Throwables.propagateIfPossible(cause); - logger.trace("could not propagate exception, throw as EventBusException"); - - throw new EventBusException( - "could not handle event ".concat(event.toString()), cause); + logger.trace("object {} was not registered", object); } } + + //~--- fields --------------------------------------------------------------- + + /** event bus */ + private final EventBus eventBus; } diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index e52007532c..8dba208e15 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -35,8 +35,8 @@ package sonia.scm.plugin; //~--- non-JDK imports -------------------------------------------------------- +import com.github.legman.Subscribe; import com.google.common.collect.Sets; -import com.google.common.eventbus.Subscribe; import com.google.common.io.Files; import com.google.inject.Inject; import com.google.inject.Provider; diff --git a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java index 192646f8cf..9ec6814062 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java +++ b/scm-webapp/src/main/java/sonia/scm/security/AuthorizationCollector.java @@ -35,12 +35,12 @@ package sonia.scm.security; //~--- non-JDK imports -------------------------------------------------------- +import com.github.legman.Subscribe; import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet.Builder; -import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Singleton; diff --git a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java index cd985750a7..272a192af1 100644 --- a/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java +++ b/scm-webapp/src/main/java/sonia/scm/security/DefaultSecuritySystem.java @@ -30,14 +30,16 @@ */ + package sonia.scm.security; //~--- non-JDK imports -------------------------------------------------------- +import com.github.legman.Subscribe; + import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList.Builder; -import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -48,7 +50,6 @@ import org.slf4j.LoggerFactory; import sonia.scm.HandlerEvent; import sonia.scm.event.ScmEventBus; -import sonia.scm.event.Subscriber; import sonia.scm.group.GroupEvent; import sonia.scm.store.ConfigurationEntryStore; import sonia.scm.store.ConfigurationEntryStoreFactory; @@ -79,7 +80,6 @@ import javax.xml.bind.annotation.XmlRootElement; * @since 1.31 */ @Singleton -@Subscriber(async = true) public class DefaultSecuritySystem implements SecuritySystem { @@ -445,7 +445,7 @@ public class DefaultSecuritySystem implements SecuritySystem return classLoader; } - + //~--- inner classes -------------------------------------------------------- /** diff --git a/scm-webapp/src/main/resources/META-INF/services/sonia.scm.event.ScmEventBus b/scm-webapp/src/main/resources/META-INF/services/sonia.scm.event.ScmEventBus index 956fa094d0..ccd6401418 100644 --- a/scm-webapp/src/main/resources/META-INF/services/sonia.scm.event.ScmEventBus +++ b/scm-webapp/src/main/resources/META-INF/services/sonia.scm.event.ScmEventBus @@ -1 +1 @@ -sonia.scm.event.GuavaScmEventBus \ No newline at end of file +sonia.scm.event.LegmanScmEventBus \ No newline at end of file diff --git a/scm-webapp/src/test/java/sonia/scm/event/GuavaScmEventBusTest.java b/scm-webapp/src/test/java/sonia/scm/event/GuavaScmEventBusTest.java index 2c8ed85086..6818262b73 100644 --- a/scm-webapp/src/test/java/sonia/scm/event/GuavaScmEventBusTest.java +++ b/scm-webapp/src/test/java/sonia/scm/event/GuavaScmEventBusTest.java @@ -35,7 +35,7 @@ package sonia.scm.event; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.eventbus.Subscribe; +import com.github.legman.Subscribe; import org.apache.shiro.mgt.DefaultSecurityManager; import org.apache.shiro.subject.Subject; @@ -90,7 +90,7 @@ public class GuavaScmEventBusTest extends AbstractTestBase String currentThread = Thread.currentThread().getName(); - GuavaScmEventBus eventBus = new GuavaScmEventBus(); + LegmanScmEventBus eventBus = new LegmanScmEventBus(); eventBus.register(new Object() { @@ -99,7 +99,7 @@ public class GuavaScmEventBusTest extends AbstractTestBase { thread = Thread.currentThread().getName(); } - }, true); + }); eventBus.post(new UserEvent(new User("test"), HandlerEvent.CREATE)); @@ -117,16 +117,16 @@ public class GuavaScmEventBusTest extends AbstractTestBase String currentThread = Thread.currentThread().getName(); - GuavaScmEventBus eventBus = new GuavaScmEventBus(); + LegmanScmEventBus eventBus = new LegmanScmEventBus(); eventBus.register(new Object() { - @Subscribe + @Subscribe(async = false) public void handleEvent(Object event) { thread = Thread.currentThread().getName(); } - }, false); + }); eventBus.post(new Object()); @@ -134,24 +134,24 @@ public class GuavaScmEventBusTest extends AbstractTestBase } /** - * Method description + * TODO replace RuntimeException with EventBusException in legman 1.2.0. * */ - @Test(expected = EventBusException.class) + @Test(expected = RuntimeException.class) public void testSyncPostWithCheckedException() { - GuavaScmEventBus eventBus = new GuavaScmEventBus(); + LegmanScmEventBus eventBus = new LegmanScmEventBus(); eventBus.register(new Object() { - @Subscribe + @Subscribe(async = false) public void handleEvent(Object event) throws IOException { throw new IOException("could not handle event"); } - }, false); + }); eventBus.post(new Object()); } @@ -163,18 +163,18 @@ public class GuavaScmEventBusTest extends AbstractTestBase @Test(expected = RuntimeException.class) public void testSyncPostWithRuntimeException() { - GuavaScmEventBus eventBus = new GuavaScmEventBus(); + LegmanScmEventBus eventBus = new LegmanScmEventBus(); eventBus.register(new Object() { - @Subscribe + @Subscribe(async = false) public void handleEvent(Object event) { throw new RuntimeException("could not handle event"); } - }, false); + }); eventBus.post(new Object()); }