KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > openccm > descriptor > componentassembly > ccm > deployer > installer > DefaultDestinationDeployerFactory


1 /*====================================================================
2
3 OpenCCM: The Open CORBA Component Model Platform
4 Copyright (C) 2000-2004 INRIA - USTL - LIFL - GOAL
5 Contact: openccm@objectweb.org
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Lesser General Public
9 License as published by the Free Software Foundation; either
10 version 2.1 of the License, or any later version.
11
12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public
18 License along with this library; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20 USA
21
22 Initial developer(s): Briclet Frédéric.
23 Contributor(s): ______________________________________.
24
25 ====================================================================*/

26 package org.objectweb.openccm.descriptor.componentassembly.ccm.deployer.installer;
27
28 import java.lang.reflect.Constructor JavaDoc;
29 import java.util.Hashtable JavaDoc;
30 import java.util.Iterator JavaDoc;
31
32 import org.objectweb.openccm.descriptor.deployerconfig.DeployerconfigImpl;
33 import org.objectweb.openccm.descriptor.deployerconfig.Destination;
34
35 /**
36  * DefaultFactory to resolve the right DestinationDeployer compliant with
37  * target host requirements.
38  *
39  * @author <a HREF="mailto:briclet@lifl.fr">Briclet Frédéric</a>
40  *
41  * @version 0.1
42  */

43 public class DefaultDestinationDeployerFactory
44        implements DestinationDeployerFactory
45     {
46     // ==================================================================
47
//
48
// Internal state.
49
//
50
// ==================================================================
51
private DeployerconfigImpl deployerConfig;
52     private Hashtable JavaDoc supportedDestination;
53      
54     // ==================================================================
55
//
56
// Constructors.
57
//
58
// ==================================================================
59
public
60     DefaultDestinationDeployerFactory(DeployerconfigImpl deployerConfig)
61     {
62         this.deployerConfig=deployerConfig;
63         supportedDestination=new Hashtable JavaDoc();
64         setupSupportedDestination();
65     }
66     // ==================================================================
67
//
68
// Internal methods.
69
//
70
// ==================================================================
71

72     private void setupSupportedDestination(){
73         for(Iterator JavaDoc it=deployerConfig.getSupporteddestination().getDestinationList().iterator();
74             it.hasNext();)
75             {
76              Destination dest=(Destination)it.next();
77              addDeployer(dest.getType(),dest.getDeployerclass());
78             }
79     }
80     // ==================================================================
81
//
82
// Public methods.
83
//
84
// ==================================================================
85
/**
86      * getDestinationDeployer return the right DestinationDeployer able to
87      * work with the destination type precised with @param destinationtype
88      *
89      * @param destinationtype the destinationtype key
90      * @throws UnknownDestinationDeployer if this target type is not supported
91      */

92     public DestinationDeployerBase
93     getDestinationDeployer(String JavaDoc destinationtype)
94     throws UnknownDestinationDeployer
95     {
96        
97         if(!supportedDestination.containsKey(destinationtype))
98             throw new UnknownDestinationDeployer(destinationtype);
99         String JavaDoc clazz=(String JavaDoc)supportedDestination.get(destinationtype);
100         try{
101             Constructor JavaDoc constru=Class.forName(clazz)
102                                 .getConstructor(new Class JavaDoc[0]);
103             return (DestinationDeployerBase)constru.newInstance(new Object JavaDoc[0]);
104         }
105         catch(Exception JavaDoc e){
106             e.printStackTrace();
107             throw new UnknownDestinationDeployer(destinationtype);
108         }
109     }
110     
111     /**
112      * addDeployer is used to add a new kind of destination to support.
113      * The prefixIdentifier is the kind key used in Componentassembly
114      * descriptor to precise the destination kind.
115      *
116      * @param prefixIdentifier the destination kind key.
117      * @param className The full classname include package name
118      * where the class can be found for being instantiate.
119      */

120     public void
121     addDeployer(String JavaDoc prefixIdentifier,
122                 String JavaDoc className)
123     {
124         supportedDestination.put(prefixIdentifier,className);
125     }
126
127 }
128
Popular Tags