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