FELIX-2399 Be lenient to types of the ds.loglevel and ds.factory.enabled configuration properties.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@952964 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfiguration.java b/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfiguration.java
index c640525..4883d36 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfiguration.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/config/ScrConfiguration.java
@@ -110,21 +110,16 @@
if ( config == null )
{
- logLevel = getLogLevel( bundleContext );
+ logLevel = getDefaultLogLevel();
factoryEnabled = getDefaultFactoryEnabled();
}
else
{
- logLevel = ( ( Integer ) config.get( PROP_LOGLEVEL ) ).intValue();
- factoryEnabled = ( ( Boolean ) config.get( PROP_FACTORY_ENABLED ) ).booleanValue();
+ logLevel = getLogLevel( config.get( PROP_LOGLEVEL ) );
+ factoryEnabled = VALUE_TRUE.equals( String.valueOf( config.get( PROP_FACTORY_ENABLED ) ) );
}
}
- private boolean getDefaultFactoryEnabled() {
- return VALUE_TRUE.equals( bundleContext.getProperty( PROP_FACTORY_ENABLED ) );
- }
-
-
public int getLogLevel()
{
return logLevel;
@@ -137,11 +132,27 @@
}
- private static int getLogLevel( BundleContext bundleContext )
+ private boolean getDefaultFactoryEnabled() {
+ return VALUE_TRUE.equals( bundleContext.getProperty( PROP_FACTORY_ENABLED ) );
+ }
+
+
+ private int getDefaultLogLevel()
{
- String levelString = bundleContext.getProperty( PROP_LOGLEVEL );
- if ( levelString != null )
+ return getLogLevel( bundleContext.getProperty( PROP_LOGLEVEL ) );
+ }
+
+
+ private int getLogLevel( final Object levelObject )
+ {
+ if ( levelObject != null )
{
+ if ( levelObject instanceof Number )
+ {
+ return ( ( Number ) levelObject ).intValue();
+ }
+
+ String levelString = levelObject.toString();
try
{
return Integer.parseInt( levelString );
@@ -185,12 +196,13 @@
return LogService.LOG_ERROR;
}
- private Object tryToCreateMetaTypeProvider(final Object managedService)
+
+ private Object tryToCreateMetaTypeProvider( final Object managedService )
{
try
{
- return new MetaTypeProviderImpl(getLogLevel( bundleContext ),
- getDefaultFactoryEnabled(), (ManagedService)managedService);
+ return new MetaTypeProviderImpl( getDefaultLogLevel(), getDefaultFactoryEnabled(),
+ ( ManagedService ) managedService );
} catch (Throwable t)
{
// we simply ignore this