| Home >> All >> javax >> ide >> log >> [ spi Javadoc ] |
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 }