ch.entwine.weblounge.bridge.oaipmh.util.OsgiUtil.java Source code

Java tutorial

Introduction

Here is the source code for ch.entwine.weblounge.bridge.oaipmh.util.OsgiUtil.java

Source

/**
 *  Copyright 2009, 2010 The Regents of the University of California
 *  Licensed under the Educational Community 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.osedu.org/licenses/ECL-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 ch.entwine.weblounge.bridge.oaipmh.util;

import org.apache.commons.lang.StringUtils;
import org.osgi.service.cm.ConfigurationException;
import org.osgi.service.component.ComponentContext;

import java.util.Dictionary;

/**
 * Collection of utility function around OSGi.
 */
public final class OsgiUtil {

    private OsgiUtil() {
    }

    /**
     * Get a mandatory, non-blank value from a component context.
     * 
     * @throws RuntimeException
     *           key does not exist or its value is blank
     */
    public static String getContextProperty(ComponentContext cc, String key) {
        String p = cc.getBundleContext().getProperty(key);
        if (StringUtils.isBlank(p))
            throw new RuntimeException("Please provide context property " + key);
        return p;
    }

    /**
     * Get a mandatory, non-blank value from a dictionary.
     * 
     * @throws ConfigurationException
     *           key does not exist or its value is blank
     */
    public static String getCfg(Dictionary d, String key) throws ConfigurationException {
        Object p = d.get(key);
        if (p == null)
            throw new ConfigurationException(key, "does not exist");
        String ps = p.toString();
        if (StringUtils.isBlank(ps))
            throw new ConfigurationException(key, "is blank");
        return ps;
    }

    /**
     * Get a mandatory integer from a dictionary.
     * 
     * @throws ConfigurationException
     *           key does not exist or is not an integer
     */
    public static int getCfgAsInt(Dictionary d, String key) throws ConfigurationException {
        try {
            return Integer.parseInt(getCfg(d, key));
        } catch (NumberFormatException e) {
            throw new ConfigurationException(key, "not an integer");
        }
    }

    /**
     * Check the existence of the given dictionary. Throw an exception if null.
     */
    public static void checkDictionary(Dictionary properties, ComponentContext componentContext)
            throws ConfigurationException {
        if (properties == null) {
            String dicName = componentContext.getProperties().get("service.pid").toString();
            throw new ConfigurationException("*", "Dictionary for " + dicName + " does not exist");
        }
    }

    public interface UpdateHandler {
        void updated(Dictionary dictionary);

        void deleted();
    }
}