View Javadoc

1   /*
2    * Copyright (c) 2001-2004,
3    * RedVerst Group, ISP RAS http://www.ispras.ru
4    * All rights reserved.
5    *
6    * Redistribution and use in source and binary forms, with or without
7    * modification, are permitted provided that the following conditions are met:
8    *
9    * 1. Redistributions of source code must retain the above copyright notice, this
10   *    list of conditions and the following disclaimer.
11   *
12   * 2. Redistributions in binary form must reproduce the above copyright notice,
13   *    this list of conditions and the following disclaimer in the documentation
14   *    and/or other materials provided with the distribution.
15   *
16   * 3. The names "ATP", "TreeDL", "RedVerst", "ISP RAS"
17   *    may not be used to endorse or promote products derived from this software
18   *    without specific prior written permission.
19   *
20   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
21   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
24   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
25   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
27   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30   */
31  
32  package com.unitesk.atp.tree.tool;
33  
34  import com.unitesk.atp.tree.Node;
35  import com.unitesk.atp.messages.*;
36  
37  /***
38   * Default implementation of plugin manager interface.
39   *
40   * @author <A href="mailto:demakov@ispras.ru">Alexey Demakov</A>
41   * @version $Id: PluginManagerClass.java,v 1.1 2004/10/09 06:40:12 all-x Exp $
42   */
43  public class PluginManagerClass
44      extends com.unitesk.atp.tool.PluginManagerClass
45      implements PluginManager
46  {
47      protected Tree tree;
48  
49      /***
50       * {@inheritDoc}
51       */
52      public Tree getTree() { return tree; }
53  
54      /***
55       * {@inheritDoc}
56       */
57      public void setTree( Tree tree ) { this.tree = tree; }
58  
59      /***
60       * {@inheritDoc}
61       */
62      public final void process( String name, Tree tree )
63      {
64          Object plugin = getPlugin( name );
65  
66          if( plugin != null && plugin instanceof Action )
67          {
68              ((Action)plugin).process( tree != null ? tree : this.tree );
69          } else {
70              mbox.fatal( new NameNotFoundMessage( null
71                                                 , null
72                                                 ,  mbox
73                                                   .getStringManager()
74                                                   .getString( Action.class
75                                                             , "message.action"
76                                                             )
77                                                 , name
78                                                 )
79                        );
80          }
81      }
82  
83      /***
84       * {@inheritDoc}
85       */
86      public final Object get( String name, Tree tree, Node node )
87      {
88          Object plugin = getPlugin( name );
89  
90          if( plugin != null && plugin instanceof Attribute )
91          {
92              return ((Attribute)plugin).get( tree != null ? tree : this.tree
93                                            , node
94                                            );
95          } else {
96              mbox.fatal( new NameNotFoundMessage( null
97                                                 , null
98                                                 ,  mbox
99                                                   .getStringManager()
100                                                  .getString( Attribute.class
101                                                            , "message.attribute"
102                                                            )
103                                                , name
104                                                )
105                       );
106             return null;
107         }
108     }
109 }