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>