Package org.apache.ace.managementagent

Source Code of org.apache.ace.managementagent.Activator

package org.apache.ace.managementagent;

import java.io.IOException;
import java.util.Dictionary;
import java.util.Properties;

import org.apache.felix.dm.DependencyActivatorBase;
import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.service.cm.Configuration;
import org.osgi.service.cm.ConfigurationAdmin;

public class Activator extends DependencyActivatorBase {
    private BundleActivator[] m_activators = new BundleActivator[] {
        new org.apache.ace.deployment.deploymentadmin.Activator(),
        new org.apache.ace.deployment.task.Activator(),
        new org.apache.ace.discovery.property.Activator(),
        new org.apache.ace.gateway.log.Activator(),
        new org.apache.ace.gateway.log.store.impl.Activator(),
        new org.apache.ace.identification.property.Activator(),
        new org.apache.ace.log.listener.Activator(),
        new org.apache.ace.scheduler.Activator(),
        new org.apache.felix.cm.impl.ConfigurationManager(),
        new org.apache.felix.deploymentadmin.Activator(),
        new org.apache.felix.eventadmin.impl.Activator()
    };
   
    private volatile ConfigurationAdmin m_config;
   
    @Override
    public void init(BundleContext context, DependencyManager manager) throws Exception {
        for (int i = 0; i < m_activators.length; i++) {
            BundleActivator a = m_activators[i];
            a.start(context);
        }
       
        manager.add(createComponent()
            .setImplementation(this)
            .add(createServiceDependency()
                .setService(ConfigurationAdmin.class)
                .setRequired(true)));
    }
   
    public void start() {
        try {
            String server = System.getProperty("discovery", "http://localhost:8080");
            configure("org.apache.ace.discovery.property", "serverURL", server);
            String targetId = System.getProperty("identification", "configuredGatewayID");
            configure("org.apache.ace.identification.property", "gatewayID", targetId);
            String syncInterval = System.getProperty("syncinterval", "2000");
            configure("org.apache.ace.scheduler",
                    "auditlog", syncInterval,
                    "org.apache.ace.deployment.task.DeploymentUpdateTask", syncInterval);

            String stopUnaffectedBundles = System.getProperty("org.apache.felix.deploymentadmin.stopunaffectedbundle", "false");
            System.setProperty("org.apache.felix.deploymentadmin.stopunaffectedbundle", stopUnaffectedBundles);

            configureFactory("org.apache.ace.gateway.log.factory", "name", "auditlog");
            configureFactory("org.apache.ace.gateway.log.store.factory", "name", "auditlog");

            System.out.println("Started management agent.\n"
                    + "  Target ID: " + targetId + "\n"
                    + "  Server   : " + server + "\n"
                    + "  Sync interval: " + syncInterval + " ms\n"
                    + "  Unaffected bundles will " + ("false".equals(stopUnaffectedBundles) ? "not " : "")
                    + "be stopped during deployment.");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void configure(String pid, String... params) throws IOException {
        Configuration conf = m_config.getConfiguration(pid, null);
        Dictionary properties = conf.getProperties();
        if (properties == null) {
            properties = new Properties();
        }
        boolean changed = false;
        for (int i = 0; i < params.length; i += 2) {
            if (!params[i + 1].equals(properties.get(params[i]))) {
                properties.put(params[i], params[i + 1]);
                changed = true;
            }
        }
        if (changed) {
            conf.update(properties);
        }
    }

    private void configureFactory(String pid, String... params) throws IOException {
        Configuration conf = m_config.createFactoryConfiguration(pid, null);
        Dictionary properties = conf.getProperties();
        if (properties == null) {
            properties = new Properties();
        }
        boolean changed = false;
        for (int i = 0; i < params.length; i += 2) {
            if (!params[i + 1].equals(properties.get(params[i]))) {
                properties.put(params[i], params[i + 1]);
                changed = true;
            }
        }
        if (changed) {
            conf.update(properties);
        }
    }

    @Override
    public void destroy(BundleContext context, DependencyManager manager) throws Exception {
        for (int i = 0; i < m_activators.length; i++) {
            BundleActivator a = m_activators[i];
            a.stop(context);
        }
    }
}
TOP

Related Classes of org.apache.ace.managementagent.Activator

TOP
Copyright © 2018 www.massapi.com. 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.