001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.servicemix.common;
018    
019    import javax.jbi.management.DeploymentException;
020    
021    /**
022     * A deployer is responsible for handling one type of artifact deployment.
023     * 
024     * @author Guillaume Nodet
025     * @version $Revision: 426415 $
026     * @since 3.0
027     */
028    public interface Deployer {
029    
030            /**
031             * Check if this deployer is able to handle a given artifact.
032             * 
033             * @param serviceUnitName the name of the service unit 
034             * @param serviceUnitRootPath the path of the exploded service unit
035             * @return <code>true</code> if this deployer can handle the given artifact
036             */
037        boolean canDeploy(String serviceUnitName, 
038                          String serviceUnitRootPath);
039        
040        /**
041         * Actually deploys the given service unit and build a ServiceUnit object
042         * that contains endpoints.
043         * 
044             * @param serviceUnitName the name of the service unit 
045             * @param serviceUnitRootPath the path of the exploded service unit
046         * @return a service unit containing endpoints
047         * @throws DeploymentException if an error occurs
048         */
049        ServiceUnit deploy(String serviceUnitName, 
050                           String serviceUnitRootPath) throws DeploymentException;
051    
052        /**
053         * Undeploys the given service unit.
054         * @param su the service unit to undeploy
055         */
056            void undeploy(ServiceUnit su) throws DeploymentException;
057        
058    }