Package org.jboss.osgi.framework

Examples of org.jboss.osgi.framework.PersistentBundlesComplete


        private ServiceListener<Bundle> bundleInstallListener;

        public InitialDeploymentTracker(final OperationContext context, final Activation activationMode) {

            final ServiceTarget serviceTarget = context.getServiceTarget();
            final PersistentBundlesComplete installComplete = new PersistentBundlesComplete() {
                @Override
                protected boolean allServicesAdded(Set<ServiceName> trackedServices) {
                    synchronized (bundleInstallServices) {
                        return deploymentInstallComplete.get() && bundleInstallServices.size() == trackedServices.size();
                    }
                }
            };
            ServiceBuilder<Void> installCompleteBuilder = installComplete.install(serviceTarget);
            installCompleteBuilder.setInitialMode(activationMode == Activation.EAGER ? Mode.ACTIVE : Mode.ON_DEMAND);

            deploymentNames = getDeploymentNames(context);
            deploymentCount = new AtomicInteger(deploymentNames.size());
            if (deploymentCount.get() == 0) {
                // Install the INITIAL_DEPLOYMENTS_COMPLETE service
                initialDeploymentsComplete(serviceTarget);
                // Install the PERSISTENT_BUNDLES_COMPLETE service
                installCompleteBuilder.install();
                return;
            }

            final Set<ServiceName> depUnitPhaseServices = new HashSet<ServiceName>();
            for (String deploymentName : deploymentNames) {
                ServiceName serviceName = Services.deploymentUnitName(deploymentName);
                depUnitPhaseServices.add(serviceName.append(Phase.INSTALL.toString()));
            }

            final ServiceRegistry serviceRegistry = context.getServiceRegistry(false);
            final ServiceTarget listenerTarget = serviceRegistry.getService(JBOSS_SERVER_CONTROLLER).getServiceContainer();
            bundleInstallListener = installComplete.getListener();
            ServiceListener<Object> listener = new AbstractServiceListener<Object>() {
                @Override
                public void transition(ServiceController<? extends Object> controller, Transition transition) {
                    if (isClosed() == false) {
                        ServiceName serviceName = controller.getName();
                        synchronized (depUnitPhaseServices) {
                            if (depUnitPhaseServices.contains(serviceName)) {
                                switch (transition) {
                                    case STARTING_to_UP:
                                    case STARTING_to_START_FAILED:
                                        depUnitPhaseServices.remove(serviceName);
                                        int remaining = deploymentCount.decrementAndGet();
                                        LOGGER.debugf("Initial deployment tracked: %s (remaining=%d)", serviceName.getCanonicalName(), remaining);
                                        if (deploymentCount.get() == 0) {
                                            listenerTarget.removeListener(this);
                                            initialDeploymentsComplete(serviceTarget);
                                            installComplete.checkAndComplete();
                                        }
                                }
                            }
                        }
                    }
View Full Code Here


        private ServiceListener<Bundle> bundleInstallListener;

        public InitialDeploymentTracker(final OperationContext context, final Activation activationMode) {

            final ServiceTarget serviceTarget = context.getServiceTarget();
            final PersistentBundlesComplete installComplete = new PersistentBundlesComplete() {
                @Override
                protected boolean allServicesAdded(Set<ServiceName> trackedServices) {
                    synchronized (bundleInstallServices) {
                        return deploymentInstallComplete.get() && bundleInstallServices.size() == trackedServices.size();
                    }
                }
            };
            ServiceBuilder<Void> installCompleteBuilder = installComplete.install(serviceTarget);
            installCompleteBuilder.setInitialMode(activationMode == Activation.EAGER ? Mode.ACTIVE : Mode.ON_DEMAND);

            deploymentNames = getDeploymentNames(context);
            deploymentCount = new AtomicInteger(deploymentNames.size());
            if (deploymentCount.get() == 0) {
                // Install the INITIAL_DEPLOYMENTS_COMPLETE service
                initialDeploymentsComplete(serviceTarget);
                // Install the PERSISTENT_BUNDLES_COMPLETE service
                installCompleteBuilder.install();
                return;
            }

            final Set<ServiceName> deploymentServiceNames = new HashSet<ServiceName>();
            for (String deploymentName : deploymentNames) {
                ServiceName serviceName = Services.deploymentUnitName(deploymentName);
                deploymentServiceNames.add(serviceName.append(Phase.INSTALL.toString()));
            }

            final ServiceRegistry serviceRegistry = context.getServiceRegistry(false);
            final ServiceTarget listenerTarget = serviceRegistry.getService(JBOSS_SERVER_CONTROLLER).getServiceContainer();
            bundleInstallListener = installComplete.getListener();
            ServiceListener<Object> listener = new AbstractServiceListener<Object>() {
                @Override
                public void transition(ServiceController<? extends Object> controller, Transition transition) {
                    if (isClosed() == false) {
                        ServiceName serviceName = controller.getName();
                        synchronized (deploymentServiceNames) {
                            if (deploymentServiceNames.contains(serviceName)) {
                                switch (transition) {
                                    case STARTING_to_UP:
                                    case STARTING_to_START_FAILED:
                                        deploymentServiceNames.remove(serviceName);
                                        int remaining = deploymentCount.decrementAndGet();
                                        LOGGER.debugf("Initial deployment tracked: %s (remaining=%d)", serviceName.getCanonicalName(), remaining);
                                        if (deploymentCount.get() == 0) {
                                            listenerTarget.removeListener(this);
                                            initialDeploymentsComplete(serviceTarget);
                                            installComplete.checkAndComplete();
                                        }
                                }
                            }
                        }
                    }
View Full Code Here

TOP

Related Classes of org.jboss.osgi.framework.PersistentBundlesComplete

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.