You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by pr...@apache.org on 2002/07/19 23:00:30 UTC

cvs commit: jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator Resources.properties NoopConfigurationValidator.java JarvConfigurationValidator.java DelegatingConfigurationValidator.java

proyal      2002/07/19 14:00:30

  Modified:    src/java/org/apache/avalon/phoenix/components/embeddor
                        ManagementRegistration.java
               src/java/org/apache/avalon/phoenix/components/configuration/validator
                        Resources.properties
                        NoopConfigurationValidator.java
                        JarvConfigurationValidator.java
                        DelegatingConfigurationValidator.java
  Added:       src/java/org/apache/avalon/phoenix/interfaces
                        ConfigurationValidatorMBean.java
  Log:
  Enable ConfigurationValidator to be reached via JMX
  
  Revision  Changes    Path
  1.1                  jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/interfaces/ConfigurationValidatorMBean.java
  
  Index: ConfigurationValidatorMBean.java
  ===================================================================
  /*
   * Copyright (C) The Apache Software Foundation. All rights reserved.
   *
   * This software is published under the terms of the Apache Software License
   * version 1.1, a copy of which has been included with this distribution in
   * the LICENSE.txt file.
   */
  package org.apache.avalon.phoenix.interfaces;
  
  import org.apache.avalon.framework.configuration.ConfigurationException;
  import org.apache.avalon.framework.configuration.Configuration;
  
  /**
   * Management interface to the Configuration Validator
   *
   * @author <a href="mailto:proyal@apache.org">Peter Royal</a>
   * @see ConfigurationValidator
   */
  public interface ConfigurationValidatorMBean
  {
      /**
       * Get the schema type for the specified application and block. Returns
       * null if no schema
       *
       * @param application to get schema for
       * @param block to get schema for
       * @return schema type, or null if none exists
       */
      String getSchemaType( final String application, final String block );
  
      /**
       * Get the XML that represents the schema for the specified application and block.
       * Returns null if no schema.
       *
       * @param application to get schema for
       * @param block to get schema for
       * @return schema as string, or null if none exists
       */
      String getSchema( final String application, final String block );
  
      /**
       * Check to see if configuration is valid.
       *
       * @param application Application name
       * @param block Block name to store configuration for
       * @param configuration Configuration to check
       *
       * @return true if configuration is valid
       *
       * @throws ConfigurationException if no schema is found
       *
       * @see ConfigurationValidator#isValid
       */
      boolean isValid( String application, String block, Configuration configuration )
        throws ConfigurationException;
  }
  
  
  
  1.4       +7 -0      jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/embeddor/ManagementRegistration.java
  
  Index: ManagementRegistration.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/embeddor/ManagementRegistration.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ManagementRegistration.java	14 Jul 2002 05:44:22 -0000	1.3
  +++ ManagementRegistration.java	19 Jul 2002 21:00:29 -0000	1.4
  @@ -19,6 +19,8 @@
   import org.apache.avalon.phoenix.interfaces.Kernel;
   import org.apache.avalon.phoenix.interfaces.KernelMBean;
   import org.apache.avalon.phoenix.interfaces.LogManager;
  +import org.apache.avalon.phoenix.interfaces.ConfigurationValidator;
  +import org.apache.avalon.phoenix.interfaces.ConfigurationValidatorMBean;
   
   /**
    *
  @@ -46,6 +48,11 @@
           new ManagementRegistration( ConfigurationRepository.ROLE,
                                       "ConfigurationManager",
                                       new Class[]{} );
  +
  +    public static final ManagementRegistration CONFIGURATION_VALIDATOR =
  +        new ManagementRegistration( ConfigurationValidator.ROLE,
  +                                    "ConfigurationValidator",
  +                                    new Class[]{ConfigurationValidatorMBean.class} );
       //TODO: Need information for SystemManager?
   
       private String m_role;
  
  
  
  1.2       +1 -1      jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/Resources.properties
  
  Index: Resources.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/Resources.properties,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Resources.properties	13 Jul 2002 19:48:21 -0000	1.1
  +++ Resources.properties	19 Jul 2002 21:00:30 -0000	1.2
  @@ -5,4 +5,4 @@
   jarv.error.schema.parse=Unable to parse schema [app: {0}, block: {1}, line: {2}, column: {3}]
   jarv.error.schema.create=Unable to create schema [app: {0}, block: {1}]
   jarv.valid.schema=Unable to verify configuration for application {0} block {1}
  -jarv.valid.badparse=Unable to parse configuration for application {0} block {1}
  \ No newline at end of file
  +jarv.valid.badparse=Unable to parse configuration for application {0} block {1}
  
  
  
  1.3       +19 -1     jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/NoopConfigurationValidator.java
  
  Index: NoopConfigurationValidator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/NoopConfigurationValidator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NoopConfigurationValidator.java	13 Jul 2002 19:46:59 -0000	1.2
  +++ NoopConfigurationValidator.java	19 Jul 2002 21:00:30 -0000	1.3
  @@ -8,6 +8,7 @@
   package org.apache.avalon.phoenix.components.configuration.validator;
   
   import org.apache.avalon.phoenix.interfaces.ConfigurationValidator;
  +import org.apache.avalon.phoenix.interfaces.ConfigurationValidatorMBean;
   import org.apache.avalon.framework.configuration.Configuration;
   import org.apache.avalon.framework.configuration.ConfigurationException;
   
  @@ -16,7 +17,8 @@
    *
    * @author <a href="mailto:proyal@apache.org">Peter Royal</a>
    */
  -public class NoopConfigurationValidator implements ConfigurationValidator
  +public class NoopConfigurationValidator
  +    implements ConfigurationValidator, ConfigurationValidatorMBean
   {
       public void addSchema( String application, String block, String schemaType, String url )
         throws ConfigurationException
  @@ -35,6 +37,22 @@
   
       public boolean isFeasiblyValid( String application, String block, Configuration configuration )
         throws ConfigurationException
  +    {
  +        return true;
  +    }
  +
  +    public String getSchema( String application, String block )
  +    {
  +        return null;
  +    }
  +
  +    public String getSchemaType( String application, String block )
  +    {
  +        return null;
  +    }
  +
  +    public boolean isValid( String application, String block, String configurationXml )
  +        throws ConfigurationException
       {
           return true;
       }
  
  
  
  1.4       +38 -3     jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/JarvConfigurationValidator.java
  
  Index: JarvConfigurationValidator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/JarvConfigurationValidator.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- JarvConfigurationValidator.java	16 Jul 2002 17:54:13 -0000	1.3
  +++ JarvConfigurationValidator.java	19 Jul 2002 21:00:30 -0000	1.4
  @@ -8,6 +8,8 @@
   package org.apache.avalon.phoenix.components.configuration.validator;
   
   import java.io.File;
  +import java.io.IOException;
  +import java.net.URL;
   import java.util.Collections;
   import java.util.HashMap;
   import java.util.Map;
  @@ -19,6 +21,7 @@
   import org.apache.avalon.excalibur.i18n.ResourceManager;
   import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.excalibur.io.FileUtil;
  +import org.apache.avalon.excalibur.io.IOUtil;
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.configuration.Configurable;
   import org.apache.avalon.framework.configuration.Configuration;
  @@ -26,6 +29,7 @@
   import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.phoenix.interfaces.ConfigurationValidator;
  +import org.apache.avalon.phoenix.interfaces.ConfigurationValidatorMBean;
   import org.apache.excalibur.configuration.ConfigurationUtil;
   
   import org.iso_relax.verifier.Schema;
  @@ -41,7 +45,7 @@
    * @author <a href="mailto:proyal@apache.org">Peter Royal</a>
    */
   public class JarvConfigurationValidator extends AbstractLogEnabled
  -    implements Configurable, Initializable, ConfigurationValidator
  +    implements Configurable, Initializable, ConfigurationValidator, ConfigurationValidatorMBean
   {
       private static final Resources REZ =
           ResourceManager.getPackageResources( JarvConfigurationValidator.class );
  @@ -54,6 +58,7 @@
       private final DefaultConfigurationSerializer m_serializer =
           new DefaultConfigurationSerializer();
   
  +    private final Map m_schemaURLs = Collections.synchronizedMap( new HashMap() );
       private final Map m_schemas = Collections.synchronizedMap( new HashMap() );
       private VerifierFactory m_verifierFactory;
   
  @@ -122,8 +127,10 @@
   
           try
           {
  -            this.m_schemas.put( createKey( application, block ),
  -                                this.m_verifierFactory.compileSchema( url ) );
  +            final String key = createKey( application, block );
  +
  +            this.m_schemas.put( key, this.m_verifierFactory.compileSchema( url ) );
  +            this.m_schemaURLs.put( key, url );
           }
           catch( VerifierConfigurationException e )
           {
  @@ -263,8 +270,36 @@
   
       public void removeSchema( String application, String block )
       {
  +        this.m_schemaURLs.remove( createKey( application, block ) );
  +
           if( null != this.m_schemas.remove( createKey( application, block ) )
               && getLogger().isDebugEnabled() )
               getLogger().debug( "Removed schema [app: " + application + ", block: " + block + "]" );
  +    }
  +
  +    public String getSchemaType( String application, String block )
  +    {
  +        return this.m_schemaType;
  +    }
  +
  +    public String getSchema( String application, String block )
  +    {
  +        final String key = createKey( application, block );
  +        final String url = ( String ) this.m_schemaURLs.get( key );
  +
  +        if( null != url )
  +        {
  +            try
  +            {
  +                return IOUtil.toString( new URL( url ).openStream() );
  +            }
  +            catch( IOException e )
  +            {
  +                getLogger().error( "Unable to read schema [app: " + application
  +                                   + ", block: " + block + ", url: " + url + "]", e );
  +            }
  +        }
  +
  +        return null;
       }
   }
  
  
  
  1.3       +36 -11    jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/DelegatingConfigurationValidator.java
  
  Index: DelegatingConfigurationValidator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-avalon-phoenix/src/java/org/apache/avalon/phoenix/components/configuration/validator/DelegatingConfigurationValidator.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DelegatingConfigurationValidator.java	15 Jul 2002 16:18:31 -0000	1.2
  +++ DelegatingConfigurationValidator.java	19 Jul 2002 21:00:30 -0000	1.3
  @@ -12,8 +12,6 @@
   import java.util.Iterator;
   import java.util.Map;
   
  -import org.apache.avalon.excalibur.i18n.ResourceManager;
  -import org.apache.avalon.excalibur.i18n.Resources;
   import org.apache.avalon.framework.activity.Disposable;
   import org.apache.avalon.framework.activity.Initializable;
   import org.apache.avalon.framework.configuration.Configurable;
  @@ -22,6 +20,9 @@
   import org.apache.avalon.framework.container.ContainerUtil;
   import org.apache.avalon.framework.logger.AbstractLogEnabled;
   import org.apache.avalon.phoenix.interfaces.ConfigurationValidator;
  +import org.apache.avalon.phoenix.interfaces.ConfigurationValidatorMBean;
  +import org.apache.avalon.excalibur.i18n.Resources;
  +import org.apache.avalon.excalibur.i18n.ResourceManager;
   
   /**
    * Default ConfigurationValidator implementation that allows schemas to be plugged-in
  @@ -29,7 +30,8 @@
    * @author <a href="mailto:proyal@apache.org">Peter Royal</a>
    */
   public class DelegatingConfigurationValidator extends AbstractLogEnabled
  -    implements Configurable, Initializable, Disposable, ConfigurationValidator
  +    implements Configurable, Initializable, Disposable,
  +    ConfigurationValidator, ConfigurationValidatorMBean
   {
       private static final Resources REZ =
           ResourceManager.getPackageResources( DelegatingConfigurationValidator.class );
  @@ -126,15 +128,13 @@
   
       public void removeSchema( String application, String block )
       {
  -        try
  -        {
  -            getDelegate( application, block ).removeSchema( application, block );
  -        }
  -        catch( ConfigurationException e )
  +        final String type = ( String ) m_blockTypeMap.get( createKey( application, block ) );
  +
  +        if( null != type )
           {
  -            getLogger().warn( "Unable to remove schema [app: " + application
  -                              + ", block: " + block + "]",
  -                              e );
  +            final DelegateEntry entry = ( DelegateEntry ) m_delegates.get( type );
  +
  +            entry.getValidator().removeSchema( application, block );
           }
       }
   
  @@ -156,5 +156,30 @@
       private String createKey( String application, String block )
       {
           return application + "." + block;
  +    }
  +
  +    public String getSchema( String application, String block )
  +    {
  +        final String type = ( String ) m_blockTypeMap.get( createKey( application, block ) );
  +
  +        if( null != type )
  +        {
  +            final DelegateEntry entry = ( DelegateEntry ) m_delegates.get( type );
  +            final ConfigurationValidator validator = entry.getValidator();
  +
  +            if( validator instanceof ConfigurationValidatorMBean )
  +            {
  +                return ( ( ConfigurationValidatorMBean ) validator ).getSchema( application,
  +                                                                                block );
  +
  +            }
  +        }
  +
  +        return null;
  +    }
  +
  +    public String getSchemaType( String application, String block )
  +    {
  +        return ( String ) this.m_blockTypeMap.get( createKey( application, block ) );
       }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>