KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > proactive > core > component > xml > AbstractContainerComponentHandler


1 /*
2  * ################################################################
3  *
4  * ProActive: The Java(TM) library for Parallel, Distributed,
5  * Concurrent computing with Security and Mobility
6  *
7  * Copyright (C) 1997-2004 INRIA/University of Nice-Sophia Antipolis
8  * Contact: proactive-support@inria.fr
9  *
10  * This library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 2.1 of the License, or any later version.
14  *
15  * This library is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  * Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public
21  * License along with this library; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23  * USA
24  *
25  * Initial developer(s): The ProActive Team
26  * http://www.inria.fr/oasis/ProActive/contacts.html
27  * Contributor(s):
28  *
29  * ################################################################
30  */

31 package org.objectweb.proactive.core.component.xml;
32
33 import org.objectweb.proactive.core.descriptor.data.ProActiveDescriptor;
34
35 import java.util.HashMap JavaDoc;
36
37
38 /**
39  * This class allows the coherency of the nesting of components (component
40  * containers such as composite or parallel components) :
41  * only the container handler of level n+1 is involved (whereas with the
42  * standard design, the top containing handler receives all the messages)
43  *
44  * @author Matthieu Morel
45  */

46 public abstract class AbstractContainerComponentHandler extends ComponentHandler
47     implements ContainerHandlerMarker {
48     private boolean enabled;
49     private ContainerElementHierarchy containersHierarchy;
50
51     /**
52      * @param deploymentDescriptor
53      * @param componentsCache
54      * @param componentTypes
55      */

56     public AbstractContainerComponentHandler(
57         ProActiveDescriptor deploymentDescriptor,
58         ComponentsCache componentsCache, HashMap JavaDoc componentTypes,
59         ComponentsHandler fatherHandler) {
60         super(deploymentDescriptor, componentsCache, componentTypes);
61         enable();
62         containersHierarchy = new ContainerElementHierarchy();
63         containersHierarchy.addFatherHandler(fatherHandler);
64         containersHierarchy.disableGrandFatherHandler();
65         // add handler on components element
66
ComponentsHandler handler = new ComponentsHandler(deploymentDescriptor,
67                 componentsCache, componentTypes, this);
68         addHandler(ComponentsDescriptorConstants.COMPONENTS_TAG, handler);
69         getContainerElementHierarchy().addChildContainerHandler(handler);
70     }
71
72     public void enable() {
73         enabled = true;
74     }
75
76     public void disable() {
77         enabled = false;
78     }
79
80     public boolean isEnabled() {
81         return enabled;
82     }
83
84     /**
85      * see {@link org.objectweb.proactive.core.component.xml.ContainerHandlerMarker#getContainerElementHierarchy()}
86      */

87     public ContainerElementHierarchy getContainerElementHierarchy() {
88         return containersHierarchy;
89     }
90 }
91
Popular Tags