KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > clif > deploy > BladeDeploy


1 /*
2 * CLIF is a Load Injection Framework
3 * Copyright (C) 2004 France Telecom R&D
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * CLIF $Name: $
20 *
21 * Contact: clif@objectweb.org
22 */

23
24 package org.objectweb.clif.deploy;
25
26 import org.objectweb.clif.server.api.ClifServerControl;
27 import org.objectweb.clif.supervisor.api.ClifException;
28 import org.objectweb.fractal.api.Component;
29 import java.util.Map JavaDoc;
30
31
32 /**
33  * Asynchronously and remotely instantiates a Blade component in a CLIF server.
34  * @author Bruno Dillenseger
35  */

36 public class BladeDeploy extends Thread JavaDoc
37 {
38     protected Component clifApp;
39     protected ClifServerControl server;
40     protected String JavaDoc id;
41     protected String JavaDoc adlFilename;
42     protected Map JavaDoc adlParameters;
43     protected String JavaDoc argument;
44     protected Component bladeComp = null;
45     protected ClifException exception = null;
46     protected boolean terminated = false;
47
48
49     /**
50      * Defines a new Blade Component deployment.
51      * @param clifApp the Clif application distributed component where this blade will be added
52      * @param adlFilename ADL definition of a BladeType compliant component
53      * @param adlParameters parameters for ADL definition (if any)
54      * @param server the controller of the CLIF server where to deploy the blade
55      * @param id the blade identifier
56      */

57     public BladeDeploy(Component clifApp, String JavaDoc adlFilename, Map JavaDoc adlParameters, ClifServerControl server, String JavaDoc id)
58     {
59         super(adlFilename + " blade deployment on " + server + " with parameters " + adlParameters);
60         this.clifApp = clifApp;
61         this.server = server;
62         this.adlParameters = adlParameters;
63         this.adlFilename = adlFilename;
64         this.id = id;
65     }
66
67
68     /**
69      * Actually performs the blade deployment.
70      */

71     public synchronized void run()
72     {
73         try
74         {
75             bladeComp = server.addBlade(clifApp, adlFilename, adlParameters, id);
76         }
77         catch (ClifException ex)
78         {
79             exception = ex;
80         }
81         terminated = true;
82         notify();
83     }
84
85
86     /**
87      * Gets the blade component (the call is blocked waiting for the blade to be
88      * actually deployed)
89      * @return the blade component reference
90      */

91     public synchronized Component get()
92         throws ClifException
93     {
94         while (! terminated)
95         {
96             try
97             {
98                 wait();
99             }
100             catch (InterruptedException JavaDoc ex)
101             {
102                 System.err.println(ex);
103             }
104         }
105         if (exception == null)
106         {
107             return bladeComp;
108         }
109         throw exception;
110     }
111 }
112
Popular Tags