/**
 *
 * Copyright 2005 the original author or authors.
 *
 *  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.gbean.geronimo;

import java.net.URI;
import javax.management.ObjectName;

import org.apache.geronimo.kernel.config.ConfigurationStore;
import org.gbean.loader.Loader;

/**
 * @version $Revision$ $Date$
 */
public class LoaderBridge implements Loader {
    private final ConfigurationStore configurationStore;

    public LoaderBridge(ConfigurationStore configurationStore) {
        this.configurationStore = configurationStore;
    }

    public ObjectName load(String location) {
        URI configurationUri = URI.create(location);
        try {
            return configurationStore.loadConfiguration(configurationUri);
        } catch (Exception e) {
            throw new RuntimeException("Error loading configuration: " + configurationUri, e);
        }
    }
}
