FELIX-1186 Refactor log messages to use the new deferred log message
construction wherever parametrized logging is used
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@830907 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java b/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java
index f5f60e1..f10f65a 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/BundleComponentActivator.java
@@ -135,8 +135,8 @@
{
// 112.4.1 If an XML document specified by the header cannot be located in the bundle and its attached
// fragments, SCR must log an error message with the Log Service, if present, and continue.
- log( LogService.LOG_ERROR, "Component descriptor entry '" + descriptorLocation + "' not found", null,
- null );
+ log( LogService.LOG_ERROR, "Component descriptor entry ''{0}'' not found", new Object[]
+ { descriptorLocation }, null, null );
continue;
}
@@ -268,11 +268,13 @@
// 112.4.1 If an XML document specified by the header cannot be located in the bundle and its attached
// fragments, SCR must log an error message with the Log Service, if present, and continue.
- log( LogService.LOG_ERROR, "Problem reading descriptor entry '" + descriptorLocation + "'", null, ex );
+ log( LogService.LOG_ERROR, "Problem reading descriptor entry ''{0}''", new Object[]
+ { descriptorLocation }, null, ex );
}
catch ( Exception ex )
{
- log( LogService.LOG_ERROR, "General problem with descriptor entry '" + descriptorLocation + "'", null, ex );
+ log( LogService.LOG_ERROR, "General problem with descriptor entry ''{0}''", new Object[]
+ { descriptorLocation }, null, ex );
}
finally
{
@@ -304,8 +306,8 @@
// mark instance inactive (no more component activations)
m_active = false;
- log( LogService.LOG_DEBUG, "BundleComponentActivator : Bundle [" + m_context.getBundle().getBundleId()
- + "] will destroy " + m_managers.size() + " instances", null, null );
+ log( LogService.LOG_DEBUG, "BundleComponentActivator : Bundle [{0}] will destroy {1} instances", new Object[]
+ { new Long( m_context.getBundle().getBundleId() ), new Integer( m_managers.size() ) }, null, null );
while ( m_managers.size() != 0 )
{
@@ -327,8 +329,8 @@
}
- log( LogService.LOG_DEBUG, "BundleComponentActivator : Bundle [" + m_context.getBundle().getBundleId()
- + "] STOPPED", null, null );
+ log( LogService.LOG_DEBUG, "BundleComponentActivator : Bundle [{0}] STOPPED", new Object[]
+ { new Long( m_context.getBundle().getBundleId() ) }, null, null );
m_context = null;
}
@@ -513,7 +515,8 @@
}
else
{
- log( LogService.LOG_INFO, "BundleComponentActivator is not active; not scheduling " + task, null, null );
+ log( LogService.LOG_INFO, "BundleComponentActivator is not active; not scheduling {0}", new Object[]
+ { task }, null, null );
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
index 0c5c508..fcf2d39 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/BaseMethod.java
@@ -121,8 +121,8 @@
else
{
// optional method not found, log as DEBUG and ignore
- getComponentManager().log( LogService.LOG_DEBUG,
- getMethodNamePrefix() + " method [" + getMethodName() + "] not found, ignoring", null );
+ getComponentManager().log( LogService.LOG_DEBUG, "{0} method [{1}] not found, ignoring", new Object[]
+ { getMethodNamePrefix(), getMethodName() }, null );
m_state = NotApplicable.INSTANCE;
}
}
@@ -174,8 +174,8 @@
{
// log and return null
getComponentManager().log( LogService.LOG_ERROR,
- "DependencyManager : Suitable but non-accessible method found in class " + targetClass.getName(),
- null );
+ "DependencyManager : Suitable but non-accessible method found in class {0}", new Object[]
+ { targetClass.getName() }, null );
break;
}
@@ -222,21 +222,22 @@
// 112.3.1 If the method is not is not declared protected or
// public, SCR must log an error message with the log service,
// if present, and ignore the method
- getComponentManager().log( LogService.LOG_DEBUG, "Method " + getMethodName() + " cannot be called", ex );
+ getComponentManager().log( LogService.LOG_DEBUG, "Method {0} cannot be called", new Object[]
+ { getMethodName() }, ex );
}
catch ( InvocationTargetException ex )
{
// 112.5.7 If a bind method throws an exception, SCR must log an
// error message containing the exception [...]
- getComponentManager().log( LogService.LOG_ERROR,
- "The " + getMethodName() + " method has thrown an exception", ex.getCause() );
+ getComponentManager().log( LogService.LOG_ERROR, "The {0} method has thrown an exception", new Object[]
+ { getMethodName() }, ex.getCause() );
return false;
}
catch ( Throwable t )
{
// anything else went wrong, log the message and fail the invocation
- getComponentManager().log( LogService.LOG_ERROR, "The " + getMethodName() + " method could not be called",
- t );
+ getComponentManager().log( LogService.LOG_ERROR, "The {0} method could not be called", new Object[]
+ { getMethodName() }, t );
// method invocation threw, so it was a failure
return false;
@@ -316,19 +317,21 @@
// may be thrown if a method would be found but the signature
// contains throws declaration for an exception which cannot
// be loaded
- // FELIX... TODO
- StringBuffer buf = new StringBuffer();
- buf.append( "Failure loooking up method " ).append( name ).append( '(' );
- for ( int i = 0; parameterTypes != null && i < parameterTypes.length; i++ )
+ if ( getComponentManager().isLogEnabled( LogService.LOG_WARNING ) )
{
- buf.append( parameterTypes[i].getName() );
- if ( i > 0 )
+ StringBuffer buf = new StringBuffer();
+ buf.append( "Failure loooking up method " ).append( name ).append( '(' );
+ for ( int i = 0; parameterTypes != null && i < parameterTypes.length; i++ )
{
- buf.append( ", " );
+ buf.append( parameterTypes[i].getName() );
+ if ( i > 0 )
+ {
+ buf.append( ", " );
+ }
}
+ buf.append( ") in class class " ).append( clazz.getName() ).append( ". Assuming no such method." );
+ getComponentManager().log( LogService.LOG_WARNING, buf.toString(), cdfe );
}
- buf.append( ") in class class " ).append( clazz.getName() ).append( ". Assuming no such method." );
- getComponentManager().log( LogService.LOG_WARNING, buf.toString(), cdfe );
}
catch ( Throwable throwable )
{
@@ -471,8 +474,8 @@
private void resolve( final BaseMethod baseMethod )
{
- baseMethod.getComponentManager().log( LogService.LOG_DEBUG,
- "getting " + baseMethod.getMethodNamePrefix() + ": " + baseMethod.getMethodName(), null );
+ baseMethod.getComponentManager().log( LogService.LOG_DEBUG, "getting {0}: {1}", new Object[]
+ { baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() }, null );
// resolve the method
Method method;
@@ -483,8 +486,8 @@
catch ( InvocationTargetException ex )
{
method = null;
- baseMethod.getComponentManager().log( LogService.LOG_WARNING,
- baseMethod.getMethodName() + " cannot be found", ex.getTargetException() );
+ baseMethod.getComponentManager().log( LogService.LOG_WARNING, "{0} cannot be found", new Object[]
+ { baseMethod.getMethodName() }, ex.getTargetException() );
}
baseMethod.setMethod( method );
@@ -515,8 +518,8 @@
// 112.3.1 If the method is not found , SCR must log an error
// message with the log service, if present, and ignore the
// method
- baseMethod.getComponentManager().log( LogService.LOG_ERROR,
- baseMethod.getMethodNamePrefix() + " method [" + baseMethod.getMethodName() + "] not found", null );
+ baseMethod.getComponentManager().log( LogService.LOG_ERROR, "{0} method [{1}] not found", new Object[]
+ { baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() }, null );
return false;
}
@@ -534,8 +537,8 @@
public boolean invoke( final BaseMethod baseMethod, final Object componentInstance, final Object rawParameter )
{
- baseMethod.getComponentManager().log( LogService.LOG_DEBUG,
- "invoking " + baseMethod.getMethodNamePrefix() + ": " + baseMethod.getMethodName(), null );
+ baseMethod.getComponentManager().log( LogService.LOG_DEBUG, "invoking {0}: {1}", new Object[]
+ { baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() }, null );
return baseMethod.invokeMethod( componentInstance, rawParameter );
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
index a931eb7..8a6a749 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
@@ -165,7 +165,8 @@
if ( suitableMethodNotAccessible )
{
getComponentManager().log( LogService.LOG_ERROR,
- "DependencyManager : Suitable but non-accessible method found in class " + targetClass.getName(), null );
+ "DependencyManager : Suitable but non-accessible method found in class {0}", new Object[]
+ { targetClass.getName() }, null );
throw new SuitableMethodNotAccessibleException();
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/helper/Logger.java b/scr/src/main/java/org/apache/felix/scr/impl/helper/Logger.java
index 51a9435..51cea8c 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/helper/Logger.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/helper/Logger.java
@@ -18,6 +18,7 @@
*/
package org.apache.felix.scr.impl.helper;
+
import org.apache.felix.scr.impl.metadata.ComponentMetadata;
@@ -30,6 +31,28 @@
{
/**
+ * Returns <code>true</code> if logging for the given level is enabled.
+ */
+ boolean isLogEnabled( int level );
+
+
+ /**
+ * Method to actually emit the log message. If the LogService is available,
+ * the message will be logged through the LogService. Otherwise the message
+ * is logged to stdout (or stderr in case of LOG_ERROR level messages),
+ *
+ * @param level The log level to log the message at
+ * @param pattern The <code>java.text.MessageFormat</code> message format
+ * string for preparing the message
+ * @param arguments The format arguments for the <code>pattern</code>
+ * string.
+ * @param ex An optional <code>Throwable</code> whose stack trace is written,
+ * or <code>null</code> to not log a stack trace.
+ */
+ void log( int level, String pattern, Object[] arguments, ComponentMetadata metadata, Throwable ex );
+
+
+ /**
* Writes a messages for the given <code>ComponentMetadata</code>.
*
* @param level The log level of the messages. This corresponds to the log
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
index 51ba11c..4f0c4d0 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
@@ -572,7 +572,8 @@
if ( !dm.isSatisfied() )
{
// at least one dependency is not satisfied
- log( LogService.LOG_INFO, "Dependency not satisfied: " + dm.getName(), null );
+ log( LogService.LOG_INFO, "Dependency not satisfied: {0}", new Object[]
+ { dm.getName() }, null );
satisfied = false;
}
}
@@ -711,7 +712,8 @@
*/
void changeState( State newState )
{
- log( LogService.LOG_DEBUG, "State transition : " + m_state + " -> " + newState, null );
+ log( LogService.LOG_DEBUG, "State transition : {0} -> {1}", new Object[]
+ { m_state, newState }, null );
m_state = newState;
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
index fc6e419..06010aa 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentFactoryImpl.java
@@ -281,8 +281,7 @@
else
{
// 112.7 Factory Configuration not allowed for factory component
- getActivator().log( LogService.LOG_ERROR,
- "Component Factory cannot be configured by factory configuration", getComponentMetadata(), null );
+ log( LogService.LOG_ERROR, "Component Factory cannot be configured by factory configuration", null );
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index e0ccf7e..a5f4f99 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -147,8 +147,8 @@
switch ( event.getType() )
{
case ServiceEvent.REGISTERED:
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Adding " + serviceString,
- null );
+ m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Adding {0}", new Object[]
+ { serviceString }, null );
// consider the service if the filter matches
if ( targetFilterMatch( ref ) )
@@ -158,15 +158,16 @@
}
else
{
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Ignoring added Service for "
- + m_dependencyMetadata.getName() + " : does not match target filter " + getTarget(),
- null );
+ m_componentManager.log( LogService.LOG_DEBUG,
+ "Dependency Manager: Ignoring added Service for {0} : does not match target filter {1}",
+ new Object[]
+ { m_dependencyMetadata.getName(), getTarget() }, null );
}
break;
case ServiceEvent.MODIFIED:
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Updating " + serviceString,
- null );
+ m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Updating {0}", new Object[]
+ { serviceString }, null );
// remove the service first
// only continue with further event handling if the service
@@ -190,8 +191,8 @@
break;
case ServiceEvent.UNREGISTERING:
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Removing " + serviceString,
- null );
+ m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Removing {0}", new Object[]
+ { serviceString }, null );
// manage the service counter if the filter matchs
if ( targetFilterMatch( ref ) )
@@ -200,9 +201,13 @@
}
else
{
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Not counting Service for "
- + m_dependencyMetadata.getName() + " : Service " + ref.getProperty( Constants.SERVICE_ID )
- + " does not match target filter " + getTarget(), null );
+ m_componentManager
+ .log(
+ LogService.LOG_DEBUG,
+ "Dependency Manager: Not counting Service for {0} : Service {1} does not match target filter {2}",
+ new Object[]
+ { m_dependencyMetadata.getName(), ref.getProperty( Constants.SERVICE_ID ), getTarget() },
+ null );
}
// remove the service ignoring the filter match because if the
@@ -232,8 +237,9 @@
// if the component is pending deactivation)
if ( m_componentManager.getState() == AbstractComponentManager.STATE_UNSATISFIED )
{
- m_componentManager.log( LogService.LOG_INFO, "Dependency Manager: Service "
- + m_dependencyMetadata.getName() + " registered, activate component", null );
+ m_componentManager.log( LogService.LOG_INFO,
+ "Dependency Manager: Service {0} registered, activate component", new Object[]
+ { m_dependencyMetadata.getName() }, null );
m_componentManager.activate();
}
@@ -247,8 +253,9 @@
// the component is reactivated for other reasons.
if ( m_dependencyMetadata.isStatic() )
{
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Added service "
- + m_dependencyMetadata.getName() + " is ignored for static reference", null );
+ m_componentManager.log( LogService.LOG_DEBUG,
+ "Dependency Manager: Added service {0} is ignored for static reference", new Object[]
+ { m_dependencyMetadata.getName() }, null );
}
// otherwise bind if we have a bind method and the service needs
@@ -267,9 +274,8 @@
else
{
m_componentManager.log( LogService.LOG_DEBUG,
- "Dependency Manager: Ignoring service addition, wrong state "
- + m_componentManager.state(),
- null );
+ "Dependency Manager: Ignoring service addition, wrong state {0}", new Object[]
+ { m_componentManager.state() }, null );
}
}
@@ -297,9 +303,9 @@
// check whether we are bound to that service, do nothing if not
if ( getBoundService( reference ) == null )
{
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Ignoring removed Service for "
- + m_dependencyMetadata.getName() + " : Service " + reference.getProperty( Constants.SERVICE_ID )
- + " not bound", null );
+ m_componentManager.log( LogService.LOG_DEBUG,
+ "Dependency Manager: Ignoring removed Service for {0} : Service {1} not bound", new Object[]
+ { m_dependencyMetadata.getName(), reference.getProperty( Constants.SERVICE_ID ) }, null );
// service was not bound, we can continue without interruption
return true;
@@ -313,12 +319,10 @@
// deactivate the component
if ( !isSatisfied() )
{
- m_componentManager.getActivator()
- .log(
- LogService.LOG_DEBUG,
- "Dependency Manager: Deactivating component due to mandatory dependency on "
- + m_dependencyMetadata.getName() + "/" + m_dependencyMetadata.getInterface()
- + " not satisfied", m_componentManager.getComponentMetadata(), null );
+ m_componentManager.log( LogService.LOG_DEBUG,
+ "Dependency Manager: Deactivating component due to mandatory dependency on {0}/{1} not satisfied",
+ new Object[]
+ { m_dependencyMetadata.getName(), m_dependencyMetadata.getInterface() }, null );
// deactivate the component now
m_componentManager.deactivateInternal( ComponentConstants.DEACTIVATION_REASON_REFERENCE );
@@ -333,16 +337,15 @@
{
try
{
- m_componentManager.log( LogService.LOG_DEBUG, "Dependency Manager: Static dependency on "
- + m_dependencyMetadata.getName() + "/" + m_dependencyMetadata.getInterface() + " is broken",
- null );
+ m_componentManager.log( LogService.LOG_DEBUG,
+ "Dependency Manager: Static dependency on {0}/{1} is broken", new Object[]
+ { m_dependencyMetadata.getName(), m_dependencyMetadata.getInterface() }, null );
m_componentManager.deactivateInternal( ComponentConstants.DEACTIVATION_REASON_REFERENCE );
m_componentManager.activate();
}
catch ( Exception ex )
{
- m_componentManager.log( LogService.LOG_ERROR, "Exception while recreating dependency ",
- ex );
+ m_componentManager.log( LogService.LOG_ERROR, "Exception while recreating dependency ", ex );
}
// static reference removal causes reactivation, nothing more to do
@@ -361,10 +364,12 @@
// available, bind returns false and we deactivate
if ( !bind() )
{
- m_componentManager.log( LogService.LOG_DEBUG,
- "Dependency Manager: Deactivating component due to mandatory dependency on "
- + m_dependencyMetadata.getName() + "/" + m_dependencyMetadata.getInterface()
- + " not satisfied", null );
+ m_componentManager
+ .log(
+ LogService.LOG_DEBUG,
+ "Dependency Manager: Deactivating component due to mandatory dependency on {0}/{1} not satisfied",
+ new Object[]
+ { m_dependencyMetadata.getName(), m_dependencyMetadata.getInterface() }, null );
m_componentManager.deactivateInternal( ComponentConstants.DEACTIVATION_REASON_REFERENCE );
// required service could not be replaced, component
@@ -387,9 +392,8 @@
else
{
m_componentManager.log( LogService.LOG_DEBUG,
- "Dependency Manager: Ignoring service removal, wrong state "
- + m_componentManager.state(),
- null );
+ "Dependency Manager: Ignoring service removal, wrong state {0}", new Object[]
+ { m_componentManager.state() }, null );
}
// everything is fine, the component is still active and we continue
@@ -464,8 +468,9 @@
String filterString = "(" + Constants.OBJECTCLASS + "=" + m_dependencyMetadata.getInterface() + ")";
m_componentManager.getActivator().getBundleContext().addServiceListener( this, filterString );
- m_componentManager.log( LogService.LOG_DEBUG, "Registered for service events, currently " + m_size
- + " service(s) match the filter", null );
+ m_componentManager.log( LogService.LOG_DEBUG,
+ "Registered for service events, currently {0} service(s) match the filter", new Object[]
+ { new Integer( m_size ) }, null );
}
/**
@@ -538,8 +543,8 @@
}
catch ( InvalidSyntaxException ise )
{
- m_componentManager.log( LogService.LOG_ERROR, "Unexpected problem with filter '" + targetFilter + "'",
- ise );
+ m_componentManager.log( LogService.LOG_ERROR, "Unexpected problem with filter ''{0}''", new Object[]
+ { targetFilter }, ise );
return null;
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
index 037e735..976f9a4 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/ImmediateComponentManager.java
@@ -184,8 +184,7 @@
catch ( Exception ex )
{
// failed to instantiate, return null
- log( LogService.LOG_ERROR, "Error during instantiation of the implementation object",
- ex );
+ log( LogService.LOG_ERROR, "Error during instantiation of the implementation object", ex );
return null;
}
@@ -199,8 +198,9 @@
DependencyManager dm = ( DependencyManager ) it.next();
if ( !dm.open( implementationObject ) )
{
- log( LogService.LOG_ERROR, "Cannot create component instance due to failure to bind reference "
- + dm.getName(), null );
+ log( LogService.LOG_ERROR, "Cannot create component instance due to failure to bind reference {0}",
+ new Object[]
+ { dm.getName() }, null );
// make sure, we keep no bindings
it = getDependencyManagers();
@@ -400,8 +400,7 @@
}
else if ( !modify() )
{
- log( LogService.LOG_DEBUG, "Deactivating and Activating to reconfigure from configuration",
- null );
+ log( LogService.LOG_DEBUG, "Deactivating and Activating to reconfigure from configuration", null );
int reason = ( configuration == null ) ? ComponentConstants.DEACTIVATION_REASON_CONFIGURATION_DELETED
: ComponentConstants.DEACTIVATION_REASON_CONFIGURATION_MODIFIED;
reactivate( reason );
@@ -433,8 +432,9 @@
if ( !dm.canUpdateDynamically( props ) )
{
log( LogService.LOG_INFO,
- "Cannot dynamically update the configuration due to dependency changes induced on dependency "
- + dm.getName(), null );
+ "Cannot dynamically update the configuration due to dependency changes induced on dependency {0}",
+ new Object[]
+ { dm.getName() }, null );
return false;
}
}
@@ -444,8 +444,9 @@
if ( !m_modifyMethod.invoke( getInstance(), new ActivateMethod.ActivatorParameter( m_componentContext, -1 ) ) )
{
// log an error if the declared method cannot be found
- log( LogService.LOG_ERROR, "Declared modify method '" + getComponentMetadata().getModified()
- + "' cannot be found, configuring by reactivation", null );
+ log( LogService.LOG_ERROR, "Declared modify method '{0}' cannot be found, configuring by reactivation",
+ new Object[]
+ { getComponentMetadata().getModified() }, null );
return false;
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java b/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java
index d6356a5..d55bcf3 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/metadata/ComponentMetadata.java
@@ -712,8 +712,8 @@
// flag duplicates
if ( !refs.add( refMeta.getName() ) )
{
- logger.log( LogService.LOG_WARNING, "Detected duplicate reference name: \"" + refMeta.getName() + "\"",
- this, null );
+ logger.log( LogService.LOG_WARNING, "Detected duplicate reference name: ''{0}''", new Object[]
+ { refMeta.getName() }, this, null );
}
}
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/metadata/XmlHandler.java b/scr/src/main/java/org/apache/felix/scr/impl/metadata/XmlHandler.java
index 02953e4..3100c7f 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/metadata/XmlHandler.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/metadata/XmlHandler.java
@@ -311,11 +311,12 @@
m_currentComponent.addDependency( ref );
}
- // unexpected element
- else
+ // unexpected element (except the root element "components"
+ // used by the Maven SCR Plugin, which is just silently ignored)
+ else if ( !localName.equals( "components" ) )
{
- m_logger.log( LogService.LOG_INFO, "Ignoring unsupported element " + localName + " (bundle "
- + m_bundle.getLocation() + ")", null, null );
+ m_logger.log( LogService.LOG_DEBUG, "Ignoring unsupported element {0} (bundle {1})", new Object[]
+ { localName, m_bundle.getLocation() }, null, null );
}
}
catch ( Exception ex )
@@ -325,11 +326,12 @@
}
}
- // unexpected namespace
- else
+ // unexpected namespace (except the root element "components"
+ // used by the Maven SCR Plugin, which is just silently ignored)
+ else if ( !localName.equals( "components" ) )
{
- m_logger.log( LogService.LOG_INFO, "Ignoring unsupported element {" + uri + "}" + localName + " (bundle "
- + m_bundle.getLocation() + ")", null, null );
+ m_logger.log( LogService.LOG_DEBUG, "Ignoring unsupported element '{'{0}'}'{1} (bundle {2})", new Object[]
+ { uri, localName, m_bundle.getLocation() }, null, null );
}
}
diff --git a/scr/src/test/java/org/apache/felix/scr/impl/MockLogger.java b/scr/src/test/java/org/apache/felix/scr/impl/MockLogger.java
index 3a7d8a5..31087ca 100644
--- a/scr/src/test/java/org/apache/felix/scr/impl/MockLogger.java
+++ b/scr/src/test/java/org/apache/felix/scr/impl/MockLogger.java
@@ -18,6 +18,9 @@
*/
package org.apache.felix.scr.impl;
+
+import java.text.MessageFormat;
+
import org.apache.felix.scr.impl.helper.Logger;
import org.apache.felix.scr.impl.metadata.ComponentMetadata;
@@ -27,6 +30,21 @@
String lastMessage;
+ public boolean isLogEnabled( int level )
+ {
+ return true;
+ }
+
+
+ public void log( int level, String pattern, Object[] arguments, ComponentMetadata metadata, Throwable ex )
+ {
+ if ( isLogEnabled( level ) )
+ {
+ log( level, MessageFormat.format( pattern, arguments ), metadata, ex );
+ }
+ }
+
+
public void log( int level, String message, ComponentMetadata metadata, Throwable ex )
{
lastMessage = message;