Package org.jboss.arquillian.drone.spi

Examples of org.jboss.arquillian.drone.spi.DroneContext


        createDroneCallable(registry, injectionPoint);
    }

    private <DRONE> void configureDrone(DroneRegistry registry, InjectionPoint<DRONE> injectionPoint) {
        ArquillianDescriptor descriptor = arquillianDescriptor.get();
        DroneContext context = droneContext.get();
        Validate.stateNotNull(descriptor, "ArquillianDescriptor should not be null");
        Validate.stateNotNull(context, "DroneContext should be available while working with method scoped instances");

        if (context.isDroneConfigurationStored(injectionPoint)) {
            logger.log(Level.WARNING, "Couldn''t configure drone for injection point {0}, " +
                    "because it was already configured!", injectionPoint);
            return;
        }

        Configurator<DRONE, ?> configurator = registry.getEntryFor(injectionPoint.getDroneType(), Configurator.class);

        beforeDroneConfiguredEvent.fire(new BeforeDroneConfigured(configurator, injectionPoint));

        DroneConfiguration configuration;
        // If nobody else provided the configuration
        if (!context.isDroneConfigurationStored(injectionPoint)) {
            configuration = configurator.createConfiguration(descriptor, injectionPoint);

            context.storeDroneConfiguration(injectionPoint, configuration);
        } else {
            configuration = context.getDroneConfiguration(injectionPoint, DroneConfiguration.class);
        }

        afterDroneConfiguredEvent.fire(new AfterDroneConfigured(configuration, injectionPoint));
    }
View Full Code Here


        afterDroneConfiguredEvent.fire(new AfterDroneConfigured(configuration, injectionPoint));
    }

    private <DRONE> void createDroneCallable(DroneRegistry registry, final InjectionPoint<DRONE> injectionPoint) {
        final DroneContext context = droneContext.get();

        if (context.isFutureDroneStored(injectionPoint)) {
            logger.log(Level.WARNING, "Couldn''t create drone callable for injection point {0}, because it was already created!", injectionPoint);
            return;
        }

        final Instantiator instantiator = registry.getEntryFor(injectionPoint.getDroneType(), Instantiator.class);
        if (logger.isLoggable(Level.FINE)) {
            logger.fine("Using instantiator defined in class: " + instantiator.getClass().getName() + ", " +
                    "with precedence " + instantiator.getPrecedence());
        }

        beforeDroneCallableCreatedEvent.fire(new BeforeDroneCallableCreated(instantiator, injectionPoint));

        // create future instance
        CachingCallable futureDrone = new CachingCallableImpl<DRONE>() {
            @Override
            protected DRONE createInstance() throws Exception {
                DroneConfiguration<?> configuration = context.getDroneConfiguration(injectionPoint,
                        DroneConfiguration.class);
                return (DRONE) instantiator.createInstance(configuration);
            }
        };

        context.storeFutureDrone(injectionPoint, futureDrone);

        afterDroneCallableCreatedEvent.fire(new AfterDroneCallableCreated(injectionPoint));
    }
View Full Code Here

    @Inject
    private Instance<DroneContext> droneContext;

    public void destroyDrone(@Observes DestroyDrone command) {
        DroneContext context = droneContext.get();
        InjectionPoint<?> injectionPoint = command.getInjectionPoint();
        if (injectionPoint == null || !context.isDroneConfigurationStored(injectionPoint)) {
            return;
        }

        boolean wasInstantiated = context.isDroneInstantiated(injectionPoint);
        if (wasInstantiated) {
            Destructor destructor = getDestructorFor(injectionPoint.getDroneType());
            Object drone = context.getDrone(injectionPoint);

            droneLifecycleEvent.fire(new BeforeDroneDestroyed(drone, injectionPoint));

            // we need to get drone once again, at it might get modified by observers on previous event
            drone = context.getDrone(injectionPoint);

            destructor.destroyInstance(drone);
        }

        context.removeDrone(injectionPoint);
        context.removeDroneConfiguration(injectionPoint);

        if (wasInstantiated) {
            droneLifecycleEvent.fire(new AfterDroneDestroyed(injectionPoint));
        }
View Full Code Here

    @Inject
    private Event<DroneLifecycleEvent> droneLifecycleEvent;

    @Override
    public void enrich(Object testCase) {
        DroneContext context = droneContext.get();

        Map<Field, InjectionPoint<?>> injectionPoints = InjectionPoints.fieldsInClass(testCase.getClass());

        for (Field field : injectionPoints.keySet()) {
            // omit setting if already set
            if (SecurityActions.getFieldValue(testCase, field) != null) {
                log.log(Level.FINER, "Skipped injection of field {0}", field.getName());
                continue;
            }

            InjectionPoint<?> injectionPoint = injectionPoints.get(field);

            ensureInjectionPointPrepared(injectionPoint);

            log.log(Level.FINE, "Injecting @Drone for field {0}, injection point {1}",
                    new Object[] { injectionPoint.getDroneType().getSimpleName(), injectionPoint }
            );

            Object drone = context.getDrone(injectionPoint);
            Validate.stateNotNull(drone, "Retrieved a null from Drone Context, " +
                            "which is not a valid Drone browser object. \nClass: {0}, field: {1}, injection point: {2}",
                    testCase.getClass().getName(), field.getName(), injectionPoint
            );
            SecurityActions.setFieldValue(testCase, field, drone);
View Full Code Here

        }
    }

    @Override
    public Object[] resolve(Method method) {
        DroneContext context = droneContext.get();
        InjectionPoint<?>[] injectionPoints = InjectionPoints.parametersInMethod(method);
        Object[] resolution = new Object[injectionPoints.length];
        for (int i = 0; i < injectionPoints.length; i++) {
            InjectionPoint<?> injectionPoint = injectionPoints[i];
            if (injectionPoint == null) {
                resolution[i] = null;
                continue;
            }

            ensureInjectionPointPrepared(injectionPoint);

            log.log(Level.FINE, "Injecting @Drone for method {0}, injection point {1}",
                    new Object[] { method.getName(), injectionPoint }
            );

            Object drone = context.getDrone(injectionPoint);
            Validate.stateNotNull(drone, "Retrieved a null from Drone Context, which is not a valid Drone browser object" +
                    ".\nMethod: {0}, injection point: {1},", method.getName(), injectionPoint);
            resolution[i] = drone;
        }
View Full Code Here

    @Inject
    private Event<DestroyDrone> destroyDroneCommand;

    public void managerStarted(@Observes ManagerStarted event) {
        try {
            DroneContext context = injector.get().inject(new DroneContextImpl());
            droneContext.set(context);
        } catch (TypeNotPresentException e) {
            log.log(Level.SEVERE,
                "Unable to create Drone Context due to missing services on classpath. Please make sure to use Arquillian Core 1.1.4.Final or later.");
            throw new IllegalStateException("Unable to create Drone Context due to missing services on classpath. Please make sure to use Arquillian Core 1.1.4.Final or later.",
View Full Code Here

                e);
        }
    }

    public void configureDroneExtension(@Observes BeforeSuite event) {
        DroneContext context = droneContext.get();

        if (context.getGlobalDroneConfiguration(DroneConfiguration.class) != null) {
            return;
        }

        beforeDroneExtensionConfiguredEvent.fire(new BeforeDroneExtensionConfigured());

        if (context.getGlobalDroneConfiguration(DroneConfiguration.class) == null) {
            GlobalDroneConfiguration configuration =
                new GlobalDroneConfiguration().configure(arquillianDescriptor.get(), null);
            context.setGlobalDroneConfiguration(configuration);
        }

        afterDroneExtensionConfiguredEvent.fire(new AfterDroneExtensionConfigured());
    }
View Full Code Here

            createDroneConfigurationCommand.fire(new PrepareDrone(injectionPoint));
        }
    }

    public void after(@Observes After event) {
        DroneContext context = droneContext.get();
        LifecycleFilter lifecycleFilter = new LifecycleFilter(InjectionPoint.Lifecycle.METHOD);
        List<InjectionPoint<?>> injectionPoints = context.find(Object.class, lifecycleFilter);

        for (InjectionPoint<?> injectionPoint : injectionPoints) {
            destroyDroneCommand.fire(new DestroyDrone(injectionPoint));
        }
    }
View Full Code Here

            destroyDroneCommand.fire(new DestroyDrone(injectionPoint));
        }
    }

    public void beforeUndeploy(@Observes BeforeUnDeploy event) {
        DroneContext context = droneContext.get();
        DeploymentFilter deploymentFilter = new DeploymentFilter(Pattern.quote(event.getDeployment().getName()));
        List<InjectionPoint<?>> injectionPoints = context.find(Object.class, deploymentFilter);

        for (InjectionPoint<?> injectionPoint : injectionPoints) {
            destroyDroneCommand.fire(new DestroyDrone(injectionPoint));
        }
    }
View Full Code Here

            destroyDroneCommand.fire(new DestroyDrone(injectionPoint));
        }
    }

    public void afterClass(@Observes AfterClass event) {
        DroneContext context = droneContext.get();

        LifecycleFilter lifecycleFilter = new LifecycleFilter(InjectionPoint.Lifecycle.CLASS,
            InjectionPoint.Lifecycle.METHOD);
        List<InjectionPoint<?>> injectionPoints = context.find(Object.class, lifecycleFilter);

        for (InjectionPoint<?> injectionPoint : injectionPoints) {
            destroyDroneCommand.fire(new DestroyDrone(injectionPoint));
        }
    }
View Full Code Here

TOP

Related Classes of org.jboss.arquillian.drone.spi.DroneContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.