From 7e3f09786c9b0f07c8647f909ac3d74dc92bdc38 Mon Sep 17 00:00:00 2001 From: Karel Piwko Date: Mon, 23 Sep 2013 12:32:33 +0200 Subject: [PATCH] ARQ-1492 Removing @Deprecated Enhancer SPI --- .../drone/impl/DroneDestructor.java | 2 - .../arquillian/drone/impl/DroneEnhancer.java | 123 ++++-------------- .../drone/impl/EnhancerTestCase.java | 36 ----- .../jboss/arquillian/drone/spi/Enhancer.java | 68 ---------- 4 files changed, 25 insertions(+), 204 deletions(-) delete mode 100644 drone-spi/src/main/java/org/jboss/arquillian/drone/spi/Enhancer.java diff --git a/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneDestructor.java b/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneDestructor.java index b9fee765..ba14d16d 100644 --- a/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneDestructor.java +++ b/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneDestructor.java @@ -66,7 +66,6 @@ public class DroneDestructor { @Inject private Event droneLifecycleEvent; - @SuppressWarnings("unchecked") public void destroyClassScopedDrone(@Observes AfterClass event, DroneContext droneContext) { Class clazz = event.getTestClass().getJavaClass(); @@ -90,7 +89,6 @@ public void destroyClassScopedDrone(@Observes AfterClass event, DroneContext dro } } - @SuppressWarnings("unchecked") public void destroyMethodScopedDrone(@Observes After event, DroneContext droneContext) { Method method = event.getTestMethod(); diff --git a/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneEnhancer.java b/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneEnhancer.java index 0e5df73c..0714f426 100644 --- a/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneEnhancer.java +++ b/drone-impl/src/main/java/org/jboss/arquillian/drone/impl/DroneEnhancer.java @@ -30,9 +30,7 @@ import org.jboss.arquillian.core.spi.ServiceLoader; import org.jboss.arquillian.drone.spi.DroneContext; import org.jboss.arquillian.drone.spi.DroneInstanceEnhancer; -import org.jboss.arquillian.drone.spi.Enhancer; import org.jboss.arquillian.drone.spi.InstanceOrCallableInstance; -import org.jboss.arquillian.drone.spi.Sortable; import org.jboss.arquillian.drone.spi.event.AfterDroneDeenhanced; import org.jboss.arquillian.drone.spi.event.AfterDroneEnhanced; import org.jboss.arquillian.drone.spi.event.AfterDroneInstantiated; @@ -73,9 +71,8 @@ public class DroneEnhancer { @SuppressWarnings({ "rawtypes", "unchecked" }) public void enhanceDrone(@Observes AfterDroneInstantiated droneInstance, DroneContext context) { - // until deprecated Enhancers are removed, we need to pick both of these classes - List enhancers = new ArrayList(serviceLoader.get().all(DroneInstanceEnhancer.class)); - enhancers.addAll(serviceLoader.get().all(Enhancer.class)); + List enhancers = new ArrayList(serviceLoader.get().all( + DroneInstanceEnhancer.class)); Collections.sort(enhancers, PrecedenceComparator.getInstance()); @@ -83,36 +80,17 @@ public void enhanceDrone(@Observes AfterDroneInstantiated droneInstance, DroneCo final Class type = droneInstance.getDroneType(); final Class qualifier = droneInstance.getQualifier(); - for (Sortable candidate : enhancers) { - - if (candidate instanceof DroneInstanceEnhancer) { - DroneInstanceEnhancer enhancer = (DroneInstanceEnhancer) candidate; - if (enhancer.canEnhance(browser, type, qualifier)) { - log.log(Level.FINE, - "Enhancing {0} @{1} using enhancer {2} with precedence {3}", - new Object[] { type.getSimpleName(), qualifier.getSimpleName(), enhancer.getClass().getName(), - enhancer.getPrecedence() }); - - droneEnhancementEvent.fire(new BeforeDroneEnhanced(enhancer, browser, type, qualifier)); - Object newBrowser = enhancer.enhance(browser.asInstance(type), qualifier); - browser.set(newBrowser); - droneEnhancementEvent.fire(new AfterDroneEnhanced(browser, type, qualifier)); - } - } - else if (candidate instanceof Enhancer) { - Enhancer enhancer = (Enhancer) candidate; - if (enhancer.canEnhance(type, qualifier)) { - log.log(Level.WARNING, - "Deprecated Enhancer type, please implement DroneInstanceEnhancer instead. Enhancing {0} @{1} using enhancer {2} with precedence {3}", - new Object[] { type.getSimpleName(), qualifier.getSimpleName(), enhancer.getClass().getName(), - enhancer.getPrecedence() }); - - droneEnhancementEvent.fire(new BeforeDroneEnhanced(new DeprecatedEnhancerWrap(enhancer), browser, type, - qualifier)); - Object newBrowser = enhancer.enhance(browser.asInstance(type), qualifier); - browser.set(newBrowser); - droneEnhancementEvent.fire(new AfterDroneEnhanced(browser, type, qualifier)); - } + for (DroneInstanceEnhancer enhancer : enhancers) { + if (enhancer.canEnhance(browser, type, qualifier)) { + log.log(Level.FINE, + "Enhancing {0} @{1} using enhancer {2} with precedence {3}", + new Object[] { type.getSimpleName(), qualifier.getSimpleName(), enhancer.getClass().getName(), + enhancer.getPrecedence() }); + + droneEnhancementEvent.fire(new BeforeDroneEnhanced(enhancer, browser, type, qualifier)); + Object newBrowser = enhancer.enhance(browser.asInstance(type), qualifier); + browser.set(newBrowser); + droneEnhancementEvent.fire(new AfterDroneEnhanced(browser, type, qualifier)); } } } @@ -120,9 +98,8 @@ else if (candidate instanceof Enhancer) { @SuppressWarnings({ "rawtypes", "unchecked" }) public void deenhanceDrone(@Observes BeforeDroneDestroyed droneInstance, DroneContext context) { - List enhancers = new ArrayList(serviceLoader.get().all( + List enhancers = new ArrayList(serviceLoader.get().all( DroneInstanceEnhancer.class)); - enhancers.addAll(serviceLoader.get().all(Enhancer.class)); // here we are deenhancing in reversed order Collections.sort(enhancers, PrecedenceComparator.getReversedOrder()); @@ -131,69 +108,19 @@ public void deenhanceDrone(@Observes BeforeDroneDestroyed droneInstance, DroneCo final Class type = droneInstance.getDroneType(); final Class qualifier = droneInstance.getQualifier(); - for (Sortable candidate : enhancers) { - if (candidate instanceof DroneInstanceEnhancer) { - DroneInstanceEnhancer enhancer = (DroneInstanceEnhancer) candidate; - if (enhancer.canEnhance(browser, type, qualifier)) { - log.log(Level.FINE, - "Deenhancing {0} @{1} using enhancer {2} with precedence {3}", - new Object[] { type.getSimpleName(), qualifier.getSimpleName(), enhancer.getClass().getName(), - enhancer.getPrecedence() }); - - droneEnhancementEvent.fire(new BeforeDroneDeenhanced(enhancer, browser, type, qualifier)); - Object newBrowser = enhancer.deenhance(browser.asInstance(type), qualifier); - browser.set(newBrowser); - droneEnhancementEvent.fire(new AfterDroneDeenhanced(browser, type, qualifier)); - } - } - else if (candidate instanceof Enhancer) { - Enhancer enhancer = (Enhancer) candidate; - if (enhancer.canEnhance(type, qualifier)) { - log.log(Level.WARNING, - "Deprecated Enhancer type, please implement DroneInstanceEnhancer instead. Deenhancing {0} @{1} using enhancer {2} with precedence {3}", - new Object[] { type.getSimpleName(), qualifier.getSimpleName(), enhancer.getClass().getName(), - enhancer.getPrecedence() }); - - droneEnhancementEvent.fire(new BeforeDroneDeenhanced(new DeprecatedEnhancerWrap(enhancer), browser, type, - qualifier)); - Object newBrowser = enhancer.deenhance(browser.asInstance(type), qualifier); - browser.set(newBrowser); - droneEnhancementEvent.fire(new AfterDroneDeenhanced(browser, type, qualifier)); - } + for (DroneInstanceEnhancer enhancer : enhancers) { + if (enhancer.canEnhance(browser, type, qualifier)) { + log.log(Level.FINE, + "Deenhancing {0} @{1} using enhancer {2} with precedence {3}", + new Object[] { type.getSimpleName(), qualifier.getSimpleName(), enhancer.getClass().getName(), + enhancer.getPrecedence() }); + + droneEnhancementEvent.fire(new BeforeDroneDeenhanced(enhancer, browser, type, qualifier)); + Object newBrowser = enhancer.deenhance(browser.asInstance(type), qualifier); + browser.set(newBrowser); + droneEnhancementEvent.fire(new AfterDroneDeenhanced(browser, type, qualifier)); } - - } - } - - @Deprecated - private static class DeprecatedEnhancerWrap implements DroneInstanceEnhancer { - - private final Enhancer deprecated; - - public DeprecatedEnhancerWrap(Enhancer deprecated) { - this.deprecated = deprecated; } - - @Override - public int getPrecedence() { - return deprecated.getPrecedence(); - } - - @Override - public boolean canEnhance(InstanceOrCallableInstance instance, Class droneType, Class qualifier) { - return deprecated.canEnhance(droneType, qualifier); - } - - @Override - public T enhance(T instance, Class qualifier) { - return deprecated.enhance(instance, qualifier); - } - - @Override - public T deenhance(T enhancedInstance, Class qualifier) { - return deprecated.deenhance(enhancedInstance, qualifier); - } - } } diff --git a/drone-impl/src/test/java/org/jboss/arquillian/drone/impl/EnhancerTestCase.java b/drone-impl/src/test/java/org/jboss/arquillian/drone/impl/EnhancerTestCase.java index 34c9cdcb..7f794b6a 100644 --- a/drone-impl/src/test/java/org/jboss/arquillian/drone/impl/EnhancerTestCase.java +++ b/drone-impl/src/test/java/org/jboss/arquillian/drone/impl/EnhancerTestCase.java @@ -39,7 +39,6 @@ import org.jboss.arquillian.drone.spi.Destructor; import org.jboss.arquillian.drone.spi.DroneContext; import org.jboss.arquillian.drone.spi.DroneInstanceEnhancer; -import org.jboss.arquillian.drone.spi.Enhancer; import org.jboss.arquillian.drone.spi.InstanceOrCallableInstance; import org.jboss.arquillian.drone.spi.Instantiator; import org.jboss.arquillian.drone.spi.event.AfterDroneInstantiated; @@ -83,7 +82,6 @@ public class EnhancerTestCase extends AbstractTestTestBase { private MockDrone notEnhanced; private MockDrone deEnhanced; - private MockDrone deprecatedEnhanced; @Override protected void addExtensions(List> extensions) { @@ -118,13 +116,10 @@ public void setUp() { Mockito.when(serviceLoader.onlyOne(DroneInstanceCreator.class)).thenReturn(instanceCreator); Mockito.when(serviceLoader.all(DroneInstanceEnhancer.class)).thenReturn( Arrays. asList(new MockDroneEnhancer2(), new MockDroneEnhancer1())); - Mockito.when(serviceLoader.all(Enhancer.class)).thenReturn( - Arrays. asList(new DeprecatedDroneEnhancer())); Mockito.when(serviceLoader.onlyOne(TestEnricher.class)).thenReturn(testEnricher); notEnhanced = null; deEnhanced = null; - deprecatedEnhanced = null; } @Test @@ -144,14 +139,12 @@ public void testClassLevel() throws Exception { assertThat("both enhancerns were applied", droneInstance.asInstance(MockDrone.class), equalTo(enhanced2)); assertThat("the initial instance provided by Drone was not enhanced", notEnhanced, is(not(nullValue()))); - assertThat("deprecated enhancer was applied", deprecatedEnhanced, is(not(nullValue()))); droneInstance = context.get(MockDrone.class, Default.class); fire(new AfterClass(EnrichedClass.class)); droneInstance = context.get(MockDrone.class, Default.class); assertThat(droneInstance, is(nullValue())); - assertThat("deprecated deenhancer was applied", deprecatedEnhanced, is(nullValue())); assertThat(notEnhanced, equalTo(deEnhanced)); } @@ -177,12 +170,10 @@ public void testMethodLevel() throws Exception { assertThat(droneInstance.asInstance(MockDrone.class), equalTo(enhanced2)); assertThat(notEnhanced, is(not(nullValue()))); - assertThat("deprecated enhancer was applied", deprecatedEnhanced, is(not(nullValue()))); fire(new After(instance, testMethod)); droneInstance = context.get(MockDrone.class, Default.class); assertThat(droneInstance, is(nullValue())); - assertThat("deprecated deenhancer was applied", deprecatedEnhanced, is(nullValue())); assertThat(notEnhanced, equalTo(deEnhanced)); } @@ -253,31 +244,4 @@ public MockDrone deenhance(MockDrone enhancedInstance, Class { - - @Override - public int getPrecedence() { - return 50; - } - - @Override - public boolean canEnhance(Class type, Class qualifier) { - return true; - } - - @Override - public MockDrone enhance(MockDrone instance, Class qualifier) { - - deprecatedEnhanced = instance; - return instance; - } - - @Override - public MockDrone deenhance(MockDrone enhancedInstance, Class qualifier) { - deprecatedEnhanced = null; - return enhancedInstance; - } - - } - } diff --git a/drone-spi/src/main/java/org/jboss/arquillian/drone/spi/Enhancer.java b/drone-spi/src/main/java/org/jboss/arquillian/drone/spi/Enhancer.java deleted file mode 100644 index d0d1ec69..00000000 --- a/drone-spi/src/main/java/org/jboss/arquillian/drone/spi/Enhancer.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2011, Red Hat Middleware LLC, and individual contributors - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * Licensed 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.jboss.arquillian.drone.spi; - -import java.lang.annotation.Annotation; - -/** - * Enhances Drone instance in order to give it additional capabilities. - * This class is deprecated and will be removed. Please use {@link DroneInstanceEnhancer} instead. - * - * @author Lukas Fryc - */ -@Deprecated -public interface Enhancer extends Sortable { - - /** - * Returns true when this {@link Enhancer} is able to enhance given type. - * - * @param type the type of field or parameter which can be enhanced - * @param qualifier the qualifier associated with the injected type - * @return true when this {@link Enhancer} is able to enhance given type. - */ - boolean canEnhance(Class type, Class qualifier); - - /** - *

- * Takes the instance instantiated by Drone and returns its enhanced version. - *

- * - *

- * Note: No enhancement can be done in this method. - *

- * - * @param instance the instance to be enhanced - * @param qualifier the qualifier associated with an instance - * @return the enhanced instance - */ - T enhance(T instance, Class qualifier); - - /** - *

- * Takes the instance which was previously enhanced by {@link #enhance(Object)} method and cancels the enhancement. - *

- * - *

- * No: No de-enhancement can be done in this method. - *

- * - * @param enhancedInstance the instance which was previously enhanced by {@link #enhance(Object)}. - * @param qualifier the qualifier associated with an instance - * @return the de-enhanced instance - */ - T deenhance(T enhancedInstance, Class qualifier); -}