Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: javax/ide/log/spi/LogHook.java


1   package javax.ide.log.spi;
2   
3   import java.util.ArrayList;
4   import java.util.Collection;
5   import java.util.Collections;
6   import java.util.logging.Level;
7   
8   import javax.ide.extension.ElementName;
9   import javax.ide.extension.ElementStartContext;
10  import javax.ide.extension.ElementVisitor;
11  import javax.ide.extension.ExtensionHook;
12  import javax.ide.extension.spi.ExtensionVisitor;
13  import javax.ide.util.MetaClass;
14  
15  /**
16   * Log page information gathered from processing the <b>log-hook</b>
17   * section of an extension manifest. The information recorded 
18   * here describes a new wizard and is generally given to the 
19   * {@link javax.ide.log.LogManager} for registration.<p>
20   */
21  public class LogHook extends ExtensionHook
22  {
23    public static final ElementName ELEMENT = 
24      new ElementName( MANIFEST_XMLNS, "log-hook" );
25      
26    private static final ElementName LOG_PAGES = 
27      new ElementName( MANIFEST_XMLNS, "log-pages" );
28    private static final ElementName LOG_PAGE = 
29      new ElementName( MANIFEST_XMLNS, "log-page" );
30      
31    private ElementVisitor _logPagesVisitor = new LogPagesVisitor();
32    private ElementVisitor _logPageVisitor = new LogPageVisitor();
33  
34    private Collection _logPages = new ArrayList();
35    
36    public Collection getLogPages()
37    {
38      return Collections.unmodifiableCollection( _logPages );
39    }
40      
41    public void start( ElementStartContext context )
42    {
43      context.registerChildVisitor( LOG_PAGES, _logPagesVisitor );
44    }
45    
46    private class LogPagesVisitor extends ElementVisitor
47    {
48      public void start( ElementStartContext context )
49      {
50        context.registerChildVisitor( LOG_PAGE, _logPageVisitor );
51      }
52    }
53    
54    private class LogPageVisitor extends ElementVisitor
55    {
56      public void start( ElementStartContext context )
57      {
58        String pageClass = context.getAttributeValue( "log-page-class" );
59        if ( pageClass == null )
60        {
61          log( context, Level.SEVERE, "Missing attribute 'log-page-class'" );
62        }
63        else
64        {
65          MetaClass pageMetaClass = new MetaClass( 
66            (ClassLoader) context.getScopeData().get( ExtensionVisitor.KEY_CLASSLOADER ),
67            pageClass
68          );
69          
70          _logPages.add( pageMetaClass );
71        }
72      }
73    }
74  
75  }