You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by cz...@apache.org on 2017/10/27 07:19:50 UTC

svn commit: r1813478 [1/2] - in /felix/trunk/osgi-r7/scr/src: main/java/org/apache/felix/scr/impl/inject/ main/java/org/apache/felix/scr/impl/inject/field/ main/java/org/apache/felix/scr/impl/inject/methods/ main/java/org/apache/felix/scr/impl/logger/ ...

Author: cziegeler
Date: Fri Oct 27 07:19:49 2017
New Revision: 1813478

URL: http://svn.apache.org/viewvc?rev=1813478&view=rev
Log:
FELIX-5457 : [R7] Logger Support

Added:
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java   (with props)
Modified:
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BaseParameter.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BindParameters.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ClassUtils.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentConstructorImpl.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethods.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethodsImpl.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/DuplexReferenceMethods.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/InitReferenceMethod.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ValueUtils.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldHandler.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldUtils.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/ActivateMethod.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BaseMethod.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BindMethod.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentActivator.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/ComponentContextImpl.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/MultiplePrototypeRefPair.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/SinglePrototypeRefPair.java
    felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleRefPair.java
    felix/trunk/osgi-r7/scr/src/test/java/org/apache/felix/scr/impl/PackageIsolationTest.java
    felix/trunk/osgi-r7/scr/src/test/java/org/apache/felix/scr/impl/inject/BindMethodTest.java
    felix/trunk/osgi-r7/scr/src/test/java/org/apache/felix/scr/impl/manager/ConfiguredComponentHolderTest.java
    felix/trunk/osgi-r7/scr/src/test/java/org/apache/felix/scr/integration/ComponentFieldActivationTest.java
    felix/trunk/osgi-r7/scr/src/test/java/org/apache/felix/scr/integration/components/ActivatorComponent.java
    felix/trunk/osgi-r7/scr/src/test/java/org/apache/felix/scr/integration/components/FieldActivatorComponent.java

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BaseParameter.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BaseParameter.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BaseParameter.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BaseParameter.java Fri Oct 27 07:19:49 2017
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.scr.impl.inject;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.manager.ComponentContextImpl;
 
 public abstract class BaseParameter
@@ -36,7 +36,7 @@ public abstract class BaseParameter
         return m_componentContext;
     }
 
-    public SimpleLogger getLogger()
+    public ComponentLogger getLogger()
     {
         return m_componentContext.getLogger();
     }

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BindParameters.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BindParameters.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BindParameters.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/BindParameters.java Fri Oct 27 07:19:49 2017
@@ -39,11 +39,11 @@ public class BindParameters extends Base
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public Object getServiceObject() {
-    	return refPair.getServiceObject((ComponentContextImpl)this.getComponentContext());
+      	return refPair.getServiceObject((ComponentContextImpl)this.getComponentContext());
     }
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public boolean getServiceObject(BundleContext context) {
-    	return refPair.getServiceObject((ComponentContextImpl)this.getComponentContext(), context);
+     	return refPair.getServiceObject((ComponentContextImpl)this.getComponentContext(), context);
     }
 }

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ClassUtils.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ClassUtils.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ClassUtils.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ClassUtils.java Fri Oct 27 07:19:49 2017
@@ -22,7 +22,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
 import org.osgi.service.component.ComponentContext;
@@ -83,14 +83,14 @@ public class ClassUtils
     public static Class<?> getClassFromComponentClassLoader(
             final Class<?> componentClass,
             final String className,
-            final SimpleLogger logger )
+            final ComponentLogger logger )
     {
         if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
         {
             logger.log(
                 LogService.LOG_DEBUG,
-                "getReferenceClass: Looking for interface class {0} through loader of {1}",
-                    new Object[] {className, componentClass.getName()}, null );
+                "getReferenceClass: Looking for interface class {0} through loader of {1}", null,
+                    className, componentClass.getName() );
         }
 
         try
@@ -107,7 +107,7 @@ public class ClassUtils
             if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
             {
                 logger.log( LogService.LOG_DEBUG,
-                    "getParameterClass: Found class {0}", new Object[] {referenceClass.getName()}, null );
+                    "getParameterClass: Found class {0}", null, referenceClass.getName() );
             }
             return referenceClass;
         }
@@ -141,14 +141,14 @@ public class ClassUtils
                             logger.log(
                                 LogService.LOG_DEBUG,
                                 "getParameterClass: Checking Bundle {0}/{1}",
-                                    new Object[] {pkg[i].getExportingBundle().getSymbolicName(), pkg[i].getExportingBundle().getBundleId()}, null );
+                                null, pkg[i].getExportingBundle().getSymbolicName(), pkg[i].getExportingBundle().getBundleId() );
                         }
 
                         Class<?> referenceClass = pkg[i].getExportingBundle().loadClass( className );
                         if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
                         {
                             logger.log( LogService.LOG_DEBUG,
-                                    "getParameterClass: Found class {0}", new Object[] {referenceClass.getName()}, null );
+                                    "getParameterClass: Found class {0}", null,referenceClass.getName() );
                         }
                         return referenceClass;
                     }
@@ -161,7 +161,7 @@ public class ClassUtils
             else if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
             {
                 logger.log( LogService.LOG_DEBUG,
-                    "getParameterClass: No bundles exporting package {0} found", new Object[] {referenceClassPackage}, null );
+                    "getParameterClass: No bundles exporting package {0} found", null, referenceClassPackage );
             }
         }
         else if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentConstructorImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentConstructorImpl.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentConstructorImpl.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentConstructorImpl.java Fri Oct 27 07:19:49 2017
@@ -25,9 +25,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
 import org.apache.felix.scr.impl.inject.ValueUtils.ValueType;
 import org.apache.felix.scr.impl.inject.field.FieldUtils;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.manager.ComponentContextImpl;
 import org.apache.felix.scr.impl.manager.RefPair;
 import org.apache.felix.scr.impl.metadata.ComponentMetadata;
@@ -50,7 +50,7 @@ public class ComponentConstructorImpl<T>
     @SuppressWarnings("unchecked")
     public ComponentConstructorImpl(final ComponentMetadata componentMetadata,
             final Class<T> componentClass,
-            final SimpleLogger logger)
+            final ComponentLogger logger)
     {
         // constructor injection
         // get reference parameter map
@@ -64,23 +64,23 @@ public class ComponentConstructorImpl<T>
                 {
                     // if the index (starting at 0) is equal or higher than the number of constructor arguments
                     // we log a warning and ignore the reference
-                    logger.log(LogService.LOG_WARNING,
-                            "Ignoring reference {0} in component {1} for constructor injection. Parameter index is too high.",
-                            new Object[] { refMetadata.getName(), componentMetadata.getName() }, null );
+                    logger.log(LogService.LOG_ERROR,
+                            "Ignoring reference {0} for constructor injection. Parameter index is too high.", null,
+                            refMetadata.getName() );
                 }
                 else if ( !refMetadata.isStatic() )
                 {
                     // if the reference is dynamic, we log a warning and ignore the reference
-                    logger.log(LogService.LOG_WARNING,
-                            "Ignoring reference {0} in component {1} for constructor injection. Reference is dynamic.",
-                            new Object[] { refMetadata.getName(), componentMetadata.getName() }, null );
+                    logger.log(LogService.LOG_ERROR,
+                            "Ignoring reference {0} for constructor injection. Reference is dynamic.", null,
+                            refMetadata.getName() );
                 }
                 else if ( paramMap.get(index) != null )
                 {
                     // duplicate reference for the same index, we log a warning and ignore the duplicates
-                    logger.log(LogService.LOG_WARNING,
-                            "Ignoring reference {0} in component {1} for constructor injection. Another reference has the same index.",
-                            new Object[] { refMetadata.getName(), componentMetadata.getName() }, null );
+                    logger.log(LogService.LOG_ERROR,
+                            "Ignoring reference {0} for constructor injection. Another reference has the same index.", null,
+                            refMetadata.getName() );
                 }
                 else
                 {
@@ -172,6 +172,7 @@ public class ComponentConstructorImpl<T>
                         activationFields[index] = null;
                     }
                 }
+
                 index++;
             }
         }
@@ -180,6 +181,13 @@ public class ComponentConstructorImpl<T>
             activationFieldTypes = ValueUtils.EMPTY_VALUE_TYPES;
             activationFields = null;
         }
+
+        if ( constructor == null )
+        {
+            logger.log(LogService.LOG_ERROR,
+                    "Constructor with {0} arguments not found. Component will fail.", null,
+                    componentMetadata.getNumberOfConstructorParameters() );
+        }
     }
 
     @Override
@@ -190,19 +198,7 @@ public class ComponentConstructorImpl<T>
         // no constructor -> throw
         if ( constructor == null )
         {
-            throw new InstantiationException("Constructor not found; Component will fail");
-        }
-
-        // if we have fields and one is in state failure (type == null) we can directly throw
-        int index = 0;
-        for(final ValueType t : activationFieldTypes)
-        {
-            if ( t == null )
-            {
-                throw new InstantiationException("Field " + componentContext.getComponentMetadata().getActivationFields().get(index)
-                        + " not found; Component will fail");
-            }
-            index++;
+            throw new InstantiationException("Constructor not found.");
         }
 
         final Object[] args;
@@ -251,7 +247,7 @@ public class ComponentConstructorImpl<T>
         // activation fields
         for(int i = 0; i<activationFieldTypes.length; i++)
         {
-            if ( activationFieldTypes[i] != ValueType.ignore )
+            if ( activationFieldTypes[i] != null && activationFieldTypes[i] != ValueType.ignore )
             {
                 final Object value = ValueUtils.getValue(constructor.getDeclaringClass().getName(),
                         activationFieldTypes[i],

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethods.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethods.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethods.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethods.java Fri Oct 27 07:19:49 2017
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.scr.impl.inject;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.metadata.ComponentMetadata;
 
 /**
@@ -28,7 +28,7 @@ public interface ComponentMethods<T>
 {
     void initComponentMethods( ComponentMetadata componentMetadata,
             Class<T> implementationObjectClass,
-            SimpleLogger logger);
+            ComponentLogger logger);
 
     LifecycleMethod getActivateMethod();
 

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethodsImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethodsImpl.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethodsImpl.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ComponentMethodsImpl.java Fri Oct 27 07:19:49 2017
@@ -25,12 +25,12 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
 import org.apache.felix.scr.impl.inject.field.FieldMethods;
 import org.apache.felix.scr.impl.inject.methods.ActivateMethod;
 import org.apache.felix.scr.impl.inject.methods.BindMethods;
 import org.apache.felix.scr.impl.inject.methods.DeactivateMethod;
 import org.apache.felix.scr.impl.inject.methods.ModifiedMethod;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.metadata.ComponentMetadata;
 import org.apache.felix.scr.impl.metadata.DSVersion;
 import org.apache.felix.scr.impl.metadata.ReferenceMetadata;
@@ -53,7 +53,7 @@ public class ComponentMethodsImpl<T> imp
 	public synchronized void initComponentMethods(
 	        final ComponentMetadata componentMetadata,
 	        final Class<T> implementationObjectClass,
-	        final SimpleLogger logger)
+	        final ComponentLogger logger)
     {
         if (m_activateMethod != null)
         {

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/DuplexReferenceMethods.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/DuplexReferenceMethods.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/DuplexReferenceMethods.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/DuplexReferenceMethods.java Fri Oct 27 07:19:49 2017
@@ -20,7 +20,7 @@ package org.apache.felix.scr.impl.inject
 
 import java.util.List;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.osgi.framework.BundleContext;
 
 public class DuplexReferenceMethods implements ReferenceMethods
@@ -32,38 +32,38 @@ public class DuplexReferenceMethods impl
 
     public DuplexReferenceMethods(final List<ReferenceMethods> methods)
     {
-    	final ReferenceMethod[] bindList = new ReferenceMethod[methods.size()];
-    	final ReferenceMethod[] updatedList = new ReferenceMethod[methods.size()];
-    	final ReferenceMethod[] unbindList = new ReferenceMethod[methods.size()];
-    	int index = 0;
-    	for(final ReferenceMethods m : methods)
-    	{
-    		bindList[index] = m.getBind();
-    		updatedList[index] = m.getUpdated();
-    		unbindList[index] = m.getUnbind();
-    		index++;
-    	}
+      	final ReferenceMethod[] bindList = new ReferenceMethod[methods.size()];
+    	    final ReferenceMethod[] updatedList = new ReferenceMethod[methods.size()];
+    	    final ReferenceMethod[] unbindList = new ReferenceMethod[methods.size()];
+    	    int index = 0;
+    	    for(final ReferenceMethods m : methods)
+    	    {
+    		    bindList[index] = m.getBind();
+    		    updatedList[index] = m.getUpdated();
+    		    unbindList[index] = m.getUnbind();
+    		    index++;
+    	    }
         this.bind = new DuplexReferenceMethod(bindList);
         this.updated = new DuplexReferenceMethod(updatedList);
         this.unbind = new DuplexReferenceMethod(unbindList);
         this.init = new InitReferenceMethod()
         {
             @Override
-            public boolean init(final Object componentInstance, final SimpleLogger logger)
+            public boolean init(final Object componentInstance, final ComponentLogger logger)
             {
-            	boolean result = true;
-            	for(final ReferenceMethods m : methods)
-            	{
-            		final InitReferenceMethod init = m.getInit();
-            		if ( init != null )
-            		{
-            			result = init.init(componentInstance, logger);
-            			if ( !result )
-            			{
-            				break;
-            			}
-            		}
-            	}
+            	    boolean result = true;
+            	    for(final ReferenceMethods m : methods)
+            	    {
+            		    final InitReferenceMethod init = m.getInit();
+            		    if ( init != null )
+            		    {
+            			    result = init.init(componentInstance, logger);
+            			    if ( !result )
+            			    {
+            				    break;
+            			    }
+            		    }
+              	}
                 return result;
             }
         };
@@ -72,25 +72,25 @@ public class DuplexReferenceMethods impl
     @Override
     public ReferenceMethod getBind()
     {
-    	return this.bind;
+    	    return this.bind;
     }
 
     @Override
     public ReferenceMethod getUnbind()
     {
-    	return this.unbind;
+      	return this.unbind;
     }
 
     @Override
     public ReferenceMethod getUpdated()
     {
-    	return this.updated;
+    	    return this.updated;
     }
 
     @Override
     public InitReferenceMethod getInit()
     {
-    	return this.init;
+      	return this.init;
     }
 
     private static final class DuplexReferenceMethod implements ReferenceMethod
@@ -106,16 +106,17 @@ public class DuplexReferenceMethods impl
         @Override
         public MethodResult invoke(final Object componentInstance,
         		final BindParameters parameters,
-        		final MethodResult methodCallFailureResult) {
-        	MethodResult result = null;
-        	for(final ReferenceMethod m : methods)
-        	{
-        		result = m.invoke(componentInstance, parameters, methodCallFailureResult);
-        		if ( result == null )
-        		{
-        			break;
-        		}
-        	}
+        		final MethodResult methodCallFailureResult)
+        {
+          	MethodResult result = null;
+        	    for(final ReferenceMethod m : methods)
+        	    {
+        		    result = m.invoke(componentInstance, parameters, methodCallFailureResult);
+        		    if ( result == null )
+        		    {
+        			    break;
+        		    }
+        	    }
             return result;
         }
 
@@ -125,15 +126,15 @@ public class DuplexReferenceMethods impl
         		final BundleContext context)
         {
             // only if all return true, we return true
-        	boolean result = false;
-        	for(final ReferenceMethod m : methods)
-        	{
-        		result = m.getServiceObject(parameters, context);
-        		if (!result )
-        		{
-        			break;
-        		}
-        	}
+         	boolean result = false;
+         	for(final ReferenceMethod m : methods)
+        	    {
+        		    result = m.getServiceObject(parameters, context);
+        		    if (!result )
+        		    {
+        			    break;
+        		    }
+        	    }
             return result;
         }
     }

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/InitReferenceMethod.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/InitReferenceMethod.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/InitReferenceMethod.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/InitReferenceMethod.java Fri Oct 27 07:19:49 2017
@@ -18,7 +18,7 @@
  */
 package org.apache.felix.scr.impl.inject;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 
 /**
  * Callback for initializing the reference (field references)
@@ -31,5 +31,5 @@ public interface InitReferenceMethod
      * @param logger The logger
      * @return {@code true} if initialization succeeded
      */
-    boolean init( Object componentInstance, SimpleLogger logger );
+    boolean init( Object componentInstance, ComponentLogger logger );
 }

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ValueUtils.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ValueUtils.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ValueUtils.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/ValueUtils.java Fri Oct 27 07:19:49 2017
@@ -25,7 +25,7 @@ import java.lang.reflect.Modifier;
 import java.util.Map;
 
 import org.apache.felix.scr.impl.helper.ReadOnlyDictionary;
-import org.apache.felix.scr.impl.helper.SimpleLogger;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.manager.ComponentContextImpl;
 import org.apache.felix.scr.impl.manager.RefPair;
 import org.apache.felix.scr.impl.metadata.ReferenceMetadata;
@@ -101,7 +101,7 @@ public class ValueUtils {
             final ReferenceMetadata metadata,
             final Class<?> typeClass,
             final Field field,
-            final SimpleLogger logger )
+            final ComponentLogger logger )
     {
         final Class<?> referenceType = ClassUtils.getClassFromComponentClassLoader(
                 componentClass, metadata.getInterface(), logger);
@@ -150,29 +150,29 @@ public class ValueUtils {
             {
                 if ( field != null )
                 {
-                    logger.log( LogService.LOG_ERROR, "Field {0} in component {1} has unsupported type {2}", new Object[]
-                            {metadata.getField(), componentClass, typeClass.getName()}, null );
+                    logger.log( LogService.LOG_ERROR, "Field {0} in class {1} has unsupported type {2}", null,
+                            metadata.getField(), componentClass, typeClass.getName() );
                 }
                 else
                 {
-                    logger.log( LogService.LOG_ERROR, "Constructor argument {0} in component {1} has unsupported type {2}", new Object[]
-                            {metadata.getParameterIndex(), componentClass, typeClass.getName()}, null );
+                    logger.log( LogService.LOG_ERROR, "Constructor argument {0} in class {1} has unsupported type {2}", null,
+                            metadata.getParameterIndex(), componentClass, typeClass.getName() );
                 }
                 valueType = ValueType.ignore;
             }
 
             // if the field is dynamic, it has to be volatile (field is ignored, case logged) (112.3.8.1)
             if ( field != null && !metadata.isStatic() && !Modifier.isVolatile(field.getModifiers()) ) {
-                logger.log( LogService.LOG_ERROR, "Field {0} in component {1} must be declared volatile to handle a dynamic reference", new Object[]
-                        {metadata.getField(), componentClass}, null );
+                logger.log( LogService.LOG_ERROR, "Field {0} in class {1} must be declared volatile to handle a dynamic reference", null,
+                        metadata.getField(), componentClass );
                 valueType = ValueType.ignore;
             }
 
             // the field must not be final (field is ignored, case logged) (112.3.8.1)
             if ( field != null && Modifier.isFinal(field.getModifiers()) )
             {
-                logger.log( LogService.LOG_ERROR, "Field {0} in component {1} must not be declared as final", new Object[]
-                        {metadata.getField(), componentClass}, null );
+                logger.log( LogService.LOG_ERROR, "Field {0} in class {1} must not be declared as final", null,
+                        metadata.getField(), componentClass );
                 valueType = ValueType.ignore;
             }
         }
@@ -204,13 +204,13 @@ public class ValueUtils {
             {
                 if ( field != null )
                 {
-                    logger.log( LogService.LOG_ERROR, "Field {0} in component {1} has unsupported type {2}", new Object[]
-                            {metadata.getField(), componentClass, typeClass.getName()}, null );
+                    logger.log( LogService.LOG_ERROR, "Field {0} in class {1} has unsupported type {2}", null,
+                            metadata.getField(), componentClass, typeClass.getName() );
                 }
                 else
                 {
-                    logger.log( LogService.LOG_ERROR, "Constructor argument {0} in component {1} has unsupported type {2}", new Object[]
-                            {metadata.getParameterIndex(), componentClass, typeClass.getName()}, null );
+                    logger.log( LogService.LOG_ERROR, "Constructor argument {0} in class {1} has unsupported type {2}", null,
+                            metadata.getParameterIndex(), componentClass, typeClass.getName() );
                 }
                 valueType = ValueType.ignore;
             }
@@ -221,8 +221,8 @@ public class ValueUtils {
                 // if the field is dynamic wit has to be volatile (field is ignored, case logged) (112.3.8.1)
                 if ( !metadata.isStatic() && !Modifier.isVolatile(field.getModifiers()) )
                 {
-                    logger.log( LogService.LOG_ERROR, "Field {0} in component {1} must be declared volatile to handle a dynamic reference", new Object[]
-                            {metadata.getField(), componentClass}, null );
+                    logger.log( LogService.LOG_ERROR, "Field {0} in class {1} must be declared volatile to handle a dynamic reference", null,
+                            metadata.getField(), componentClass );
                     valueType = ValueType.ignore;
                 }
 
@@ -230,16 +230,16 @@ public class ValueUtils {
                 //                   only collection and list allowed
                 if ( typeClass != ClassUtils.LIST_CLASS && typeClass != ClassUtils.COLLECTION_CLASS )
                 {
-                    logger.log( LogService.LOG_ERROR, "Field {0} in component {1} has unsupported type {2}."+
-                            " It must be one of java.util.Collection or java.util.List.",
-                            new Object[] {metadata.getField(), componentClass, typeClass.getName()}, null );
+                    logger.log( LogService.LOG_ERROR, "Field {0} in class {1} has unsupported type {2}."+
+                            " It must be one of java.util.Collection or java.util.List.", null,
+                            metadata.getField(), componentClass, typeClass.getName() );
                     valueType = ValueType.ignore;
 
                 }
                 if ( Modifier.isFinal(field.getModifiers()) )
                 {
-                    logger.log( LogService.LOG_ERROR, "Field {0} in component {1} must not be declared as final", new Object[]
-                            {metadata.getField(), componentClass}, null );
+                    logger.log( LogService.LOG_ERROR, "Field {0} in class {1} must not be declared as final", null,
+                            metadata.getField(), componentClass );
                     valueType = ValueType.ignore;
                 }
             }
@@ -247,8 +247,8 @@ public class ValueUtils {
         // static references only allowed for replace strategy
         if ( metadata.isStatic() && !metadata.isReplace() )
         {
-            logger.log( LogService.LOG_ERROR, "Update strategy for field {0} in component {1} only allowed for non static field references.", new Object[]
-                    {metadata.getField(), componentClass}, null );
+            logger.log( LogService.LOG_ERROR, "Update strategy for field {0} in class {1} only allowed for non static field references.", null,
+                    metadata.getField(), componentClass );
             valueType = ValueType.ignore;
         }
         return valueType;

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldHandler.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldHandler.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldHandler.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldHandler.java Fri Oct 27 07:19:49 2017
@@ -28,7 +28,6 @@ import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
 import org.apache.felix.scr.impl.inject.BindParameters;
 import org.apache.felix.scr.impl.inject.ClassUtils;
 import org.apache.felix.scr.impl.inject.InitReferenceMethod;
@@ -37,6 +36,7 @@ import org.apache.felix.scr.impl.inject.
 import org.apache.felix.scr.impl.inject.ValueUtils;
 import org.apache.felix.scr.impl.inject.ValueUtils.ValueType;
 import org.apache.felix.scr.impl.inject.field.FieldUtils.FieldSearchResult;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.manager.ComponentContextImpl;
 import org.apache.felix.scr.impl.manager.RefPair;
 import org.apache.felix.scr.impl.metadata.ReferenceMetadata;
@@ -86,7 +86,7 @@ public class FieldHandler
 
 
     private boolean initField(final Object componentInstance,
-            final SimpleLogger logger )
+            final ComponentLogger logger )
     {
     	if ( valueType == ValueType.ignore )
     	{
@@ -98,7 +98,7 @@ public class FieldHandler
             {
                 if ( metadata.isReplace()  )
                 {
-                    this.setFieldValue(componentInstance, new CopyOnWriteArrayList<Object>());
+                    this.setFieldValue(componentInstance, new CopyOnWriteArrayList<>());
                 }
                 else
                 {
@@ -111,26 +111,26 @@ public class FieldHandler
                     {
                         if ( Modifier.isFinal(this.field.getModifiers()) )
                         {
-                            logger.log( LogService.LOG_ERROR, "Field {0} in component {1} must not be declared as final", new Object[]
-                                    {metadata.getField(), this.componentClass}, null );
+                            logger.log( LogService.LOG_ERROR, "Field {0} in class {1} must not be declared as final", null,
+                                    metadata.getField(), this.componentClass );
                             valueType = ValueType.ignore;
                             return true;
                         }
                         if ( fieldType != ClassUtils.LIST_CLASS && fieldType != ClassUtils.COLLECTION_CLASS )
                         {
-                            logger.log( LogService.LOG_ERROR, "Field {0} in component {1} has unsupported type {2}."+
-                                " It must be one of java.util.Collection or java.util.List.",
-                                new Object[] {metadata.getField(), this.componentClass, fieldType.getName()}, null );
+                            logger.log( LogService.LOG_ERROR, "Field {0} in class {1} has unsupported type {2}."+
+                                " It must be one of java.util.Collection or java.util.List.", null,
+                                metadata.getField(), this.componentClass, fieldType.getName() );
                             valueType = ValueType.ignore;
                             return true;
                         }
                         if ( fieldType == ClassUtils.LIST_CLASS )
                         {
-                        	this.setFieldValue(componentInstance, new CopyOnWriteArrayList<Object>());
+                        	    this.setFieldValue(componentInstance, new CopyOnWriteArrayList<>());
                         }
                         else
                         {
-                        	this.setFieldValue(componentInstance, new CopyOnWriteArraySet<Object>());
+                        	    this.setFieldValue(componentInstance, new CopyOnWriteArraySet<>());
                         }
                     }
                 }
@@ -149,8 +149,8 @@ public class FieldHandler
         {
             valueType = ValueType.ignore;
 
-            logger.log( LogService.LOG_ERROR, "Field {0} in component {1} can't be initialized.",
-                    new Object[] {metadata.getField(), this.componentClass}, ite );
+            logger.log( LogService.LOG_ERROR, "Field {0} in class {1} can't be initialized.",
+                    ite, metadata.getField(), this.componentClass );
             return false;
 
         }
@@ -159,7 +159,7 @@ public class FieldHandler
 
     private Collection<Object> getReplaceCollection(final BindParameters bp)
     {
-        final List<Object> objects = new ArrayList<Object>();
+        final List<Object> objects = new ArrayList<>();
         for(final Object val : bp.getComponentContext().getBoundValues(metadata.getName()).values())
         {
             objects.add(val);
@@ -336,13 +336,13 @@ public class FieldHandler
     private static interface State
     {
 
-        MethodResult invoke( final FieldHandler handler,
-                final METHOD_TYPE mType,
-                final Object componentInstance,
-                final BindParameters rawParameter)
+        MethodResult invoke( FieldHandler handler,
+                METHOD_TYPE mType,
+                Object componentInstance,
+                BindParameters rawParameter)
         throws InvocationTargetException;
 
-        boolean fieldExists( final FieldHandler handler, final SimpleLogger logger);
+        boolean fieldExists( FieldHandler handler, ComponentLogger logger);
     }
 
     /**
@@ -352,13 +352,12 @@ public class FieldHandler
     {
         private static final State INSTANCE = new NotResolved();
 
-        private void resolve(final FieldHandler handler, final SimpleLogger logger)
+        private void resolve(final FieldHandler handler, final ComponentLogger logger)
         {
-            logger.log( LogService.LOG_DEBUG, "getting field: {0}", new Object[]
-                    {handler.metadata.getField()}, null );
+            logger.log( LogService.LOG_DEBUG, "getting field: {0}", null, handler.metadata.getField() );
 
             // resolve the field
-        	final FieldUtils.FieldSearchResult result = FieldUtils.searchField( handler.componentClass, handler.metadata.getField(), logger );
+        	    final FieldUtils.FieldSearchResult result = FieldUtils.searchField( handler.componentClass, handler.metadata.getField(), logger );
             handler.setSearchResult(result, logger);
         }
 
@@ -374,7 +373,7 @@ public class FieldHandler
         }
 
         @Override
-        public boolean fieldExists( final FieldHandler handler, final SimpleLogger logger)
+        public boolean fieldExists( final FieldHandler handler, final ComponentLogger logger)
         {
             resolve( handler, logger );
             return handler.state.fieldExists( handler, logger );
@@ -394,13 +393,13 @@ public class FieldHandler
                 final Object componentInstance,
                 final BindParameters rawParameter)
         {
-            rawParameter.getLogger().log( LogService.LOG_ERROR, "Field [{0}] not found", new Object[]
-                { handler.metadata.getField() }, null );
+            rawParameter.getLogger().log( LogService.LOG_ERROR, "Field [{0}] not found", null,
+                handler.metadata.getField() );
             return null;
         }
 
         @Override
-        public boolean fieldExists( final FieldHandler handler, final SimpleLogger logger)
+        public boolean fieldExists( final FieldHandler handler, final ComponentLogger logger)
         {
             return false;
         }
@@ -424,26 +423,27 @@ public class FieldHandler
         }
 
         @Override
-        public boolean fieldExists( final FieldHandler handler, final SimpleLogger logger)
+        public boolean fieldExists( final FieldHandler handler, final ComponentLogger logger)
         {
             return true;
         }
     }
 
-    public boolean fieldExists( SimpleLogger logger )
+    public boolean fieldExists( ComponentLogger logger )
     {
         return this.state.fieldExists( this, logger );
     }
 
-    synchronized void setSearchResult(FieldSearchResult result, SimpleLogger logger)
+    synchronized void setSearchResult(FieldSearchResult result, ComponentLogger logger)
     {
         if (result == null)
         {
             field = null;
             valueType = null;
             state = NotFound.INSTANCE;
+            // TODO - will component really fail?
             logger.log(LogService.LOG_ERROR, "Field [{0}] not found; Component will fail",
-                new Object[] { metadata.getField() }, null);
+                    null, metadata.getField());
         }
         else
         {
@@ -459,7 +459,7 @@ public class FieldHandler
             }
             state = Resolved.INSTANCE;
             logger.log(LogService.LOG_DEBUG, "Found field: {0}",
-                new Object[] { result.field }, null);
+                null, result.field );
         }
     }
 
@@ -496,8 +496,8 @@ public class FieldHandler
             }
             catch ( final InvocationTargetException ite )
             {
-                rawParameter.getLogger().log( LogService.LOG_ERROR, "The {0} field has thrown an exception", new Object[]
-                    { handler.metadata.getField() }, ite.getCause() );
+                rawParameter.getLogger().log( LogService.LOG_ERROR, "The {0} field has thrown an exception", null,
+                    handler.metadata.getField() );
             }
 
             return methodCallFailureResult;
@@ -547,7 +547,7 @@ public class FieldHandler
         {
 
             @Override
-            public boolean init(final Object componentInstance, final SimpleLogger logger)
+            public boolean init(final Object componentInstance, final ComponentLogger logger)
             {
                 if ( fieldExists( logger ) )
                 {

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldUtils.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldUtils.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldUtils.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/field/FieldUtils.java Fri Oct 27 07:19:49 2017
@@ -24,8 +24,8 @@ import java.lang.reflect.Modifier;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
 import org.apache.felix.scr.impl.inject.ClassUtils;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.osgi.service.log.LogService;
 
 /**
@@ -34,20 +34,20 @@ import org.osgi.service.log.LogService;
 public class FieldUtils {
 
 	/**
-	 * Return type for {@link FieldUtils#searchField(Class, String, SimpleLogger)}
+	 * Return type for {@link FieldUtils#searchField(Class, String, ComponentLogger)}
 	 */
-    public static final class FieldSearchResult 
+    public static final class FieldSearchResult
 	{
 		public final Field field;
 		public final boolean usable;
-		
+
 		public FieldSearchResult(final Field f, final boolean usable)
 		{
 			this.field = f;
 			this.usable = usable;
 		}
 	}
-	
+
     /**
      * Searches the field named {@code fieldName} in the given
      * {@code targetClass}. If the target class has no acceptable field
@@ -69,7 +69,7 @@ public class FieldUtils {
      */
     public static FieldSearchResult searchField( final Class<?> componentClass,
     		final String fieldName,
-    		final SimpleLogger logger )
+    		final ComponentLogger logger )
     {
         final ClassLoader targetClasslLoader = componentClass.getClassLoader();
         final String targetPackage = ClassUtils.getPackageName( componentClass );
@@ -79,13 +79,10 @@ public class FieldUtils {
         while (true)
         {
 
-            if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
-            {
-                logger.log( LogService.LOG_DEBUG,
-                    "Locating field " + fieldName + " in class " + theClass.getName(), null );
-            }
+            logger.log( LogService.LOG_DEBUG,
+                "Locating field {0} in class {1}", null, fieldName, theClass.getName() );
 
-            try 
+            try
             {
 	            final FieldSearchResult result = getField( componentClass, theClass, fieldName, acceptPrivate, acceptPackage, logger );
 	            if ( result != null )
@@ -95,8 +92,9 @@ public class FieldUtils {
             }
             catch ( final InvocationTargetException ex )
             {
-                logger.log( LogService.LOG_WARNING, "{0} cannot be found in component class {1}", new Object[]
-                        {fieldName, componentClass.getName()}, ex.getTargetException() );
+                logger.log( LogService.LOG_ERROR, "Field {0} cannot be found in component class {1}. The field will be ignored.",
+                        ex.getTargetException(),
+                        fieldName, componentClass.getName()  );
                 return null;
             }
 
@@ -117,9 +115,9 @@ public class FieldUtils {
             acceptPrivate = false;
         }
 
-        // nothing found 
-        logger.log( LogService.LOG_WARNING, "{0} cannot be found in component class {1}", new Object[]
-                        {fieldName, componentClass.getName()}, null );
+        // nothing found
+        logger.log( LogService.LOG_ERROR, "Field {0} cannot be found in component class {1}. The field will be ignored.", null,
+                      fieldName, componentClass.getName() );
         return new FieldSearchResult(null, false);
     }
 
@@ -147,7 +145,7 @@ public class FieldUtils {
     		final String fieldName,
             final boolean acceptPrivate,
             final boolean acceptPackage,
-            final SimpleLogger logger )
+            final ComponentLogger logger )
     throws InvocationTargetException
     {
         try
@@ -164,8 +162,7 @@ public class FieldUtils {
             // parameters
             if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
             {
-                logger.log( LogService.LOG_DEBUG, "Declared Field {0}.{1} not found", new Object[]
-                    { targetClass.getName(), fieldName }, null );
+                logger.log( LogService.LOG_DEBUG, "Declared Field {0}.{1} not found", null, targetClass.getName(), fieldName );
             }
         }
         catch ( Throwable throwable )
@@ -192,7 +189,7 @@ public class FieldUtils {
      * <p>
      * If the field is usable, this method makes the field accessible.
      * <p>
-     * If the field is not usable, a {@code FieldSearchResult} with the usable 
+     * If the field is not usable, a {@code FieldSearchResult} with the usable
      * flag set to {@code false} is returned and an error is logged with
      * the provided logger.
      *
@@ -207,7 +204,7 @@ public class FieldUtils {
     		final Field field,
             final boolean acceptPrivate,
             final boolean acceptPackage,
-            final SimpleLogger logger)
+            final ComponentLogger logger)
     {
         // check modifiers now
         final int mod = field.getModifiers();
@@ -215,8 +212,7 @@ public class FieldUtils {
         // static fields
         if ( Modifier.isStatic( mod ) )
         {
-            logger.log( LogService.LOG_ERROR, "Field {0} must not be static", new Object[]
-                    { toString(componentClass, field) }, null );
+            logger.log( LogService.LOG_ERROR, "Field {0} must not be static", null, toString(componentClass, field) );
             return new FieldSearchResult(field, false);
         }
 
@@ -249,8 +245,7 @@ public class FieldUtils {
         // else don't accept
         // the method would fit the requirements but is not acceptable
         logger.log( LogService.LOG_ERROR,
-                "findField: Suitable but non-accessible field {0}", new Object[]
-                    { toString(componentClass, field) }, null );
+                "findField: Suitable but non-accessible field {0}", null, toString(componentClass, field));
         return new FieldSearchResult(field, false);
     }
 
@@ -263,13 +258,13 @@ public class FieldUtils {
     public static String toString(final Class<?> componentClass,
     		final Field field)
     {
-    	if ( componentClass.getName().equals(field.getDeclaringClass().getName()) ) 
+    	if ( componentClass.getName().equals(field.getDeclaringClass().getName()) )
     	{
     		return field.getName() + " in component class " + componentClass.getName();
     	}
     	return field.getName() + " in class " + field.getDeclaringClass().getName() + ", subclass of component class " + componentClass.getName();
     }
-    
+
     /**
      * Make the field accessible
      * @param field The field
@@ -278,6 +273,7 @@ public class FieldUtils {
     {
         AccessController.doPrivileged( new PrivilegedAction<Object>()
         {
+            @Override
             public Object run()
             {
                 field.setAccessible( true );
@@ -293,10 +289,10 @@ public class FieldUtils {
      * @param value The value to set
      * @param logger The logger
      */
-	public static void setField( final Field f, 
+	public static void setField( final Field f,
     		final Object component,
     		final Object value,
-    		final SimpleLogger logger )
+    		final ComponentLogger logger )
     {
         try
         {
@@ -304,13 +300,11 @@ public class FieldUtils {
         }
         catch ( final IllegalArgumentException iae )
         {
-            logger.log( LogService.LOG_ERROR, "Field {0} in component {1} can't be set", new Object[]
-                    {f.getName(), component.getClass().getName()}, iae );
+            logger.log( LogService.LOG_ERROR, "Field {0} can't be set", iae, f.getName() );
         }
         catch ( final IllegalAccessException iae )
         {
-            logger.log( LogService.LOG_ERROR, "Field {0} in component {1} can't be set", new Object[]
-                    {f.getName(), component.getClass().getName()}, iae );
+            logger.log( LogService.LOG_ERROR, "Field {0} can't be set", iae, f.getName() );
         }
     }
 }

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/ActivateMethod.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/ActivateMethod.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/ActivateMethod.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/ActivateMethod.java Fri Oct 27 07:19:49 2017
@@ -27,12 +27,12 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
 import org.apache.felix.scr.impl.inject.ActivatorParameter;
 import org.apache.felix.scr.impl.inject.Annotations;
 import org.apache.felix.scr.impl.inject.ClassUtils;
 import org.apache.felix.scr.impl.inject.LifecycleMethod;
 import org.apache.felix.scr.impl.inject.MethodResult;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.manager.ComponentContextImpl;
 import org.apache.felix.scr.impl.metadata.DSVersion;
 import org.osgi.service.log.LogService;
@@ -56,7 +56,10 @@ public class ActivateMethod extends Base
 
 
     @Override
-    protected MethodInfo<Object> doFindMethod( Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger )
+    protected MethodInfo<Object> doFindMethod( final Class<?> targetClass,
+            final boolean acceptPrivate,
+            final boolean acceptPackage,
+            final ComponentLogger logger )
         throws SuitableMethodNotAccessibleException, InvocationTargetException
     {
 
@@ -69,7 +72,7 @@ public class ActivateMethod extends Base
                 { ClassUtils.COMPONENT_CONTEXT_CLASS }, acceptPrivate, acceptPackage, logger );
             if ( method != null )
             {
-                return new MethodInfo<Object>(method);
+                return new MethodInfo<>(method);
             }
         }
         catch ( SuitableMethodNotAccessibleException thrown )
@@ -91,7 +94,7 @@ public class ActivateMethod extends Base
                     {
                         if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                         {
-                            return new MethodInfo<Object>(m);
+                            return new MethodInfo<>(m);
                         }
                         suitableMethodNotAccessible = true;
                     }
@@ -99,7 +102,7 @@ public class ActivateMethod extends Base
                     {
                         if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                         {
-                            return new MethodInfo<Object>(m);
+                            return new MethodInfo<>(m);
                         }
                         suitableMethodNotAccessible = true;
                     }
@@ -107,7 +110,7 @@ public class ActivateMethod extends Base
                     {
                         if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                         {
-                            return new MethodInfo<Object>(m);
+                            return new MethodInfo<>(m);
                         }
                         suitableMethodNotAccessible = true;
                     }
@@ -115,7 +118,7 @@ public class ActivateMethod extends Base
                     {
                         if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                         {
-                            return new MethodInfo<Object>(m);
+                            return new MethodInfo<>(m);
                         }
                         suitableMethodNotAccessible = true;
                     }
@@ -123,7 +126,7 @@ public class ActivateMethod extends Base
                     {
                         if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                         {
-                            return new MethodInfo<Object>(m);
+                            return new MethodInfo<>(m);
                         }
                         suitableMethodNotAccessible = true;
                     }
@@ -149,7 +152,7 @@ public class ActivateMethod extends Base
                     {
                         if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                         {
-                            return new MethodInfo<Object>(m);
+                            return new MethodInfo<>(m);
                         }
                         suitableMethodNotAccessible = true;
                     }
@@ -159,7 +162,7 @@ public class ActivateMethod extends Base
                 {
                     if ( accept( m, acceptPrivate, acceptPackage, returnValue() ) )
                     {
-                        return new MethodInfo<Object>(m);
+                        return new MethodInfo<>(m);
                     }
                     suitableMethodNotAccessible = true;
                 }
@@ -194,7 +197,7 @@ public class ActivateMethod extends Base
      */
     List<Method> getSortedMethods(Class<?> targetClass)
     {
-        List<Method> result = new ArrayList<Method>();
+        List<Method> result = new ArrayList<>();
         Method[] methods = targetClass.getDeclaredMethods();
         for (Method m: methods)
         {

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BaseMethod.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BaseMethod.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BaseMethod.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BaseMethod.java Fri Oct 27 07:19:49 2017
@@ -31,6 +31,7 @@ import org.apache.felix.scr.impl.helper.
 import org.apache.felix.scr.impl.inject.BaseParameter;
 import org.apache.felix.scr.impl.inject.ClassUtils;
 import org.apache.felix.scr.impl.inject.MethodResult;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.metadata.DSVersion;
 import org.osgi.service.log.LogService;
 
@@ -107,7 +108,7 @@ public abstract class BaseMethod<P exten
 
     protected abstract void setTypes(T types);
 
-    synchronized void setMethod(MethodInfo<T> methodInfo, SimpleLogger logger)
+    synchronized void setMethod(MethodInfo<T> methodInfo, ComponentLogger logger)
     {
         this.m_method = methodInfo == null ? null : methodInfo.getMethod();
 
@@ -115,21 +116,21 @@ public abstract class BaseMethod<P exten
         {
             setTypes(methodInfo.getTypes());
             m_state = Resolved.INSTANCE;
-            logger.log( LogService.LOG_DEBUG, "Found {0} method: {1}", new Object[]
-                    { getMethodNamePrefix(), m_method }, null);
+            logger.log( LogService.LOG_DEBUG, "Found {0} method: {1}", null,
+                    getMethodNamePrefix(), m_method );
         }
         else if ( m_methodRequired )
         {
             m_state = NotFound.INSTANCE;
             logger.log(LogService.LOG_ERROR, "{0} method [{1}] not found; Component will fail",
-                    new Object[]
-                            { getMethodNamePrefix(), getMethodName() }, null);
+                    null,
+                    getMethodNamePrefix(), getMethodName());
         }
         else
         {
             // optional method not found, log as DEBUG and ignore
-            logger.log( LogService.LOG_DEBUG, "{0} method [{1}] not found, ignoring", new Object[]
-                    { getMethodNamePrefix(), getMethodName() }, null );
+            logger.log( LogService.LOG_DEBUG, "{0} method [{1}] not found, ignoring", null,
+                    getMethodNamePrefix(), getMethodName() );
             m_state = NotApplicable.INSTANCE;
         }
     }
@@ -153,7 +154,7 @@ public abstract class BaseMethod<P exten
      *      trying to find the requested method.
      * @param logger
      */
-    private MethodInfo<T> findMethod(SimpleLogger logger) throws InvocationTargetException
+    private MethodInfo<T> findMethod(final ComponentLogger logger) throws InvocationTargetException
     {
         boolean acceptPrivate = getDSVersion().isDS11();
         boolean acceptPackage = getDSVersion().isDS11();
@@ -186,8 +187,8 @@ public abstract class BaseMethod<P exten
             {
                 // log and return null
                 logger.log( LogService.LOG_ERROR,
-                        "findMethod: Suitable but non-accessible method {0} found in class {1}, subclass of {2}", new Object[]
-                                { getMethodName(), theClass.getName(), targetClass.getName() }, null );
+                        "findMethod: Suitable but non-accessible method {0} found in class {1}, subclass of {2}", null,
+                                getMethodName(), theClass.getName(), targetClass.getName() );
                 break;
             }
 
@@ -213,9 +214,10 @@ public abstract class BaseMethod<P exten
     }
 
 
-    protected abstract MethodInfo<T> doFindMethod(final Class<?> targetClass,
-        final boolean acceptPrivate,
-            final boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException;
+    protected abstract MethodInfo<T> doFindMethod(Class<?> targetClass,
+        boolean acceptPrivate,
+        boolean acceptPackage,
+        ComponentLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException;
 
 
     private MethodResult invokeMethod(final Object componentInstance, final P rawParameter )
@@ -226,18 +228,18 @@ public abstract class BaseMethod<P exten
             if ( componentInstance != null )
             {
                 final Object[] params = getParameters(m_method, rawParameter);
-                rawParameter.getLogger().log( LogService.LOG_DEBUG, "invoking {0}: {1}: parameters {2}", new Object[]
-                        { getMethodNamePrefix(), getMethodName(), Arrays.asList( params ) }, null );
+                rawParameter.getLogger().log( LogService.LOG_DEBUG, "invoking {0}: {1}: parameters {2}", null,
+                        getMethodNamePrefix(), getMethodName(), Arrays.asList( params ) );
                 Object result = m_method.invoke(componentInstance, params);
-                rawParameter.getLogger().log( LogService.LOG_DEBUG, "invoked {0}: {1}", new Object[]
-                        { getMethodNamePrefix(), getMethodName() }, null );
+                rawParameter.getLogger().log( LogService.LOG_DEBUG, "invoked {0}: {1}", null,
+                        getMethodNamePrefix(), getMethodName() );
                 return new MethodResult((m_method.getReturnType() != Void.TYPE), (Map<String, Object>) result);
             }
             else
             {
                 rawParameter.getLogger().log( LogService.LOG_WARNING, "Method {0}: {1} cannot be called on null object",
-                        new Object[]
-                                { getMethodNamePrefix(), getMethodName() }, null );
+                        null,
+                                getMethodNamePrefix(), getMethodName() );
             }
         }
         catch ( IllegalStateException ise )
@@ -250,8 +252,8 @@ public abstract class BaseMethod<P exten
             // 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
-            rawParameter.getLogger().log( LogService.LOG_DEBUG, "Method {0} cannot be called", new Object[]
-                    { getMethodName() }, ex );
+            rawParameter.getLogger().log( LogService.LOG_DEBUG, "Method {0} cannot be called", ex,
+                    getMethodName() );
         }
         catch ( InvocationTargetException ex )
         {
@@ -315,8 +317,12 @@ public abstract class BaseMethod<P exten
      * @throws InvocationTargetException If an unexpected Throwable is caught
      *      trying to access the desired method.
      */
-    public /* static */ Method getMethod( Class<?> clazz, String name, Class[] parameterTypes, boolean acceptPrivate,
-            boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException,
+    public /* static */ Method getMethod( Class<?> clazz,
+            String name,
+            Class[] parameterTypes,
+            boolean acceptPrivate,
+            boolean acceptPackage,
+            ComponentLogger logger ) throws SuitableMethodNotAccessibleException,
     InvocationTargetException
     {
         try
@@ -340,8 +346,8 @@ public abstract class BaseMethod<P exten
             if ( logger.isLogEnabled( LogService.LOG_DEBUG ) )
             {
                 String argList = ( parameterTypes != null ) ? Arrays.asList( parameterTypes ).toString() : "";
-                logger.log( LogService.LOG_DEBUG, "Declared Method {0}.{1}({2}) not found", new Object[]
-                        { clazz.getName(), name, argList }, null );
+                logger.log( LogService.LOG_DEBUG, "Declared Method {0}.{1}({2}) not found", null,
+                        clazz.getName(), name, argList );
             }
         }
         catch ( NoClassDefFoundError cdfe )
@@ -510,8 +516,8 @@ public abstract class BaseMethod<P exten
         }
         catch ( InvocationTargetException ite )
         {
-            rawParameter.getLogger().log( LogService.LOG_ERROR, "The {0} method has thrown an exception", new Object[]
-                    { getMethodName() }, ite.getCause() );
+            rawParameter.getLogger().log( LogService.LOG_ERROR, "The {0} method has thrown an exception", ite.getCause(),
+                    getMethodName() );
             if ( methodCallFailureResult != null && methodCallFailureResult.getResult() != null )
             {
                 methodCallFailureResult.getResult().put("exception", ite.getCause());
@@ -522,7 +528,7 @@ public abstract class BaseMethod<P exten
     }
 
 
-    public boolean methodExists( SimpleLogger logger )
+    public boolean methodExists( ComponentLogger logger )
     {
         return m_state.methodExists( this, logger );
     }
@@ -557,11 +563,11 @@ public abstract class BaseMethod<P exten
     private static interface State
     {
 
-        <P extends BaseParameter, T> MethodResult invoke( final BaseMethod<P, T> baseMethod, final Object componentInstance, final P rawParameter )
+        <P extends BaseParameter, T> MethodResult invoke( BaseMethod<P, T> baseMethod, Object componentInstance, P rawParameter )
                 throws InvocationTargetException;
 
 
-        <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, SimpleLogger logger );
+        <P extends BaseParameter, T> boolean methodExists( BaseMethod<P, T> baseMethod, ComponentLogger logger );
     }
 
     private static class NotApplicable implements State
@@ -578,7 +584,7 @@ public abstract class BaseMethod<P exten
 
 
         @Override
-        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, SimpleLogger logger )
+        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, ComponentLogger logger )
         {
             return true;
         }
@@ -589,10 +595,10 @@ public abstract class BaseMethod<P exten
         private static final State INSTANCE = new NotResolved();
 
 
-        private <P extends BaseParameter, T> void resolve( final BaseMethod<P, T> baseMethod, SimpleLogger logger )
+        private <P extends BaseParameter, T> void resolve( final BaseMethod<P, T> baseMethod, ComponentLogger logger )
         {
-            logger.log( LogService.LOG_DEBUG, "getting {0}: {1}", new Object[]
-                    {baseMethod.getMethodNamePrefix(), baseMethod.getMethodName()}, null );
+            logger.log( LogService.LOG_DEBUG, "getting {0}: {1}", null,
+                    baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() );
 
             // resolve the method
             MethodInfo<T> method = null;
@@ -602,8 +608,8 @@ public abstract class BaseMethod<P exten
             }
             catch ( InvocationTargetException ex )
             {
-                logger.log( LogService.LOG_WARNING, "{0} cannot be found", new Object[]
-                        {baseMethod.getMethodName()}, ex.getTargetException() );
+                logger.log( LogService.LOG_WARNING, "{0} cannot be found", ex.getTargetException(),
+                        baseMethod.getMethodName() );
             }
 
             baseMethod.setMethod( method, logger );
@@ -620,7 +626,7 @@ public abstract class BaseMethod<P exten
 
 
         @Override
-        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, SimpleLogger logger )
+        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, ComponentLogger logger )
         {
             resolve( baseMethod, logger );
             return baseMethod.getState().methodExists( baseMethod, logger );
@@ -638,14 +644,14 @@ public abstract class BaseMethod<P exten
             // 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
-            rawParameter.getLogger().log( LogService.LOG_ERROR, "{0} method [{1}] not found", new Object[]
-                    { baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() }, null );
+            rawParameter.getLogger().log( LogService.LOG_ERROR, "{0} method [{1}] not found", null,
+                    baseMethod.getMethodNamePrefix(), baseMethod.getMethodName() );
             return null;
         }
 
 
         @Override
-        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, SimpleLogger logger )
+        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, ComponentLogger logger )
         {
             return false;
         }
@@ -665,7 +671,7 @@ public abstract class BaseMethod<P exten
 
 
         @Override
-        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, SimpleLogger logger )
+        public <P extends BaseParameter, T> boolean methodExists( final BaseMethod<P, T> baseMethod, ComponentLogger logger )
         {
             return true;
         }

Modified: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BindMethod.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BindMethod.java?rev=1813478&r1=1813477&r2=1813478&view=diff
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BindMethod.java (original)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/inject/methods/BindMethod.java Fri Oct 27 07:19:49 2017
@@ -25,10 +25,10 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.felix.scr.impl.helper.SimpleLogger;
 import org.apache.felix.scr.impl.inject.BindParameters;
 import org.apache.felix.scr.impl.inject.ClassUtils;
 import org.apache.felix.scr.impl.inject.ValueUtils;
+import org.apache.felix.scr.impl.logger.ComponentLogger;
 import org.apache.felix.scr.impl.manager.ComponentContextImpl;
 import org.apache.felix.scr.impl.manager.RefPair;
 import org.apache.felix.scr.impl.metadata.DSVersion;
@@ -79,7 +79,7 @@ implements org.apache.felix.scr.impl.inj
     protected MethodInfo<List<ValueUtils.ValueType>> doFindMethod( final Class<?> targetClass,
             final boolean acceptPrivate,
             final boolean acceptPackage,
-            final SimpleLogger logger )
+            final ComponentLogger logger )
                     throws SuitableMethodNotAccessibleException, InvocationTargetException
     {
         // 112.3.1 The method is searched for using the following priority
@@ -112,7 +112,7 @@ implements org.apache.felix.scr.impl.inj
                 {
                     logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                 }
-                return new MethodInfo<List<ValueUtils.ValueType>>(method, Collections.singletonList(ValueUtils.ValueType.ref_serviceReference));
+                return new MethodInfo<>(method, Collections.singletonList(ValueUtils.ValueType.ref_serviceReference));
             }
         }
         catch ( SuitableMethodNotAccessibleException ex )
@@ -132,7 +132,7 @@ implements org.apache.felix.scr.impl.inj
                     {
                         logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                     }
-                    return new MethodInfo<List<ValueUtils.ValueType>>(method, Collections.singletonList(ValueUtils.ValueType.ref_serviceObjects));
+                    return new MethodInfo<>(method, Collections.singletonList(ValueUtils.ValueType.ref_serviceObjects));
                 }
             }
             catch ( SuitableMethodNotAccessibleException ex )
@@ -164,7 +164,7 @@ implements org.apache.felix.scr.impl.inj
                     {
                         logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                     }
-                    return new MethodInfo<List<ValueUtils.ValueType>>(method,
+                    return new MethodInfo<>(method,
                         Collections.singletonList(ValueUtils.ValueType.ref_serviceType));
                 }
             }
@@ -183,7 +183,7 @@ implements org.apache.felix.scr.impl.inj
                     {
                         logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                     }
-                    return new MethodInfo<List<ValueUtils.ValueType>>(method,
+                    return new MethodInfo<>(method,
                         Collections.singletonList(ValueUtils.ValueType.ref_serviceType));
                 }
             }
@@ -204,7 +204,7 @@ implements org.apache.felix.scr.impl.inj
                         {
                             logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                         }
-                        return new MethodInfo<List<ValueUtils.ValueType>>(method,
+                        return new MethodInfo<>(method,
                             Collections.singletonList(ValueUtils.ValueType.ref_map));
                     }
                 }
@@ -228,10 +228,10 @@ implements org.apache.felix.scr.impl.inj
                         {
                             logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                         }
-                        List<ValueUtils.ValueType> paramTypes = new ArrayList<ValueUtils.ValueType>(2);
+                        List<ValueUtils.ValueType> paramTypes = new ArrayList<>(2);
                         paramTypes.add(ValueUtils.ValueType.ref_serviceType);
                         paramTypes.add(ValueUtils.ValueType.ref_map);
-                        return new MethodInfo<List<ValueUtils.ValueType>>(method, paramTypes);
+                        return new MethodInfo<>(method, paramTypes);
                     }
                 }
                 catch ( SuitableMethodNotAccessibleException ex )
@@ -250,10 +250,10 @@ implements org.apache.felix.scr.impl.inj
                         {
                             logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + method, null );
                         }
-                        List<ValueUtils.ValueType> paramTypes = new ArrayList<ValueUtils.ValueType>(2);
+                        List<ValueUtils.ValueType> paramTypes = new ArrayList<>(2);
                         paramTypes.add(ValueUtils.ValueType.ref_serviceType);
                         paramTypes.add(ValueUtils.ValueType.ref_map);
-                        return new MethodInfo<List<ValueUtils.ValueType>>(method,
+                        return new MethodInfo<>(method,
                             paramTypes);
                     }
                 }
@@ -272,7 +272,7 @@ implements org.apache.felix.scr.impl.inj
                         Class<?>[] parameterTypes = m.getParameterTypes();
                         boolean matches = true;
                         boolean specialMatch = true;
-                        List<ValueUtils.ValueType> paramTypes = new ArrayList<ValueUtils.ValueType>(parameterTypes.length);
+                        List<ValueUtils.ValueType> paramTypes = new ArrayList<>(parameterTypes.length);
                         for (Class<?> paramType: parameterTypes) {
                             if (paramType == ClassUtils.SERVICE_REFERENCE_CLASS)
                             {
@@ -345,7 +345,7 @@ implements org.apache.felix.scr.impl.inj
                                 {
                                     logger.log( LogService.LOG_DEBUG, "doFindMethod: Found Method " + m, null );
                                 }
-                                return new MethodInfo<List<ValueUtils.ValueType>>(m, paramTypes);
+                                return new MethodInfo<>(m, paramTypes);
                             }
                             suitableMethodNotAccessible = true;
                         }
@@ -366,8 +366,8 @@ implements org.apache.felix.scr.impl.inj
         if ( suitableMethodNotAccessible )
         {
             logger.log( LogService.LOG_ERROR,
-                    "doFindMethod: Suitable but non-accessible method found in class {0}", new Object[]
-                            { targetClass.getName() }, null );
+                    "doFindMethod: Suitable but non-accessible method found in class {0}",null,
+                            targetClass.getName() );
             throw new SuitableMethodNotAccessibleException();
         }
 
@@ -400,14 +400,14 @@ implements org.apache.felix.scr.impl.inj
      * @throws InvocationTargetException If an unexpected Throwable is caught
      *      trying to find the requested method.
      */
-    private Method getServiceReferenceMethod( final Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger )
+    private Method getServiceReferenceMethod( final Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger )
             throws SuitableMethodNotAccessibleException, InvocationTargetException
     {
         return getMethod( targetClass, getMethodName(), new Class[]
                 { ClassUtils.SERVICE_REFERENCE_CLASS }, acceptPrivate, acceptPackage, logger );
     }
 
-    private Method getComponentObjectsMethod( final Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger )
+    private Method getComponentObjectsMethod( final Class<?> targetClass, boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger )
             throws SuitableMethodNotAccessibleException, InvocationTargetException
     {
         return getMethod(targetClass, getMethodName(),
@@ -436,7 +436,7 @@ implements org.apache.felix.scr.impl.inj
      *      trying to find the requested method.
      */
     private Method getServiceObjectMethod( final Class<?> targetClass, final Class<?> parameterClass, boolean acceptPrivate,
-            boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException
+            boolean acceptPackage, ComponentLogger logger ) throws SuitableMethodNotAccessibleException, InvocationTargetException
     {
         return getMethod( targetClass, getMethodName(), new Class[]
                 { parameterClass }, acceptPrivate, acceptPackage, logger );
@@ -462,7 +462,7 @@ implements org.apache.felix.scr.impl.inj
      *      found which is not accessible
      */
     private Method getServiceObjectAssignableMethod( final Class<?> targetClass, final Class<?> parameterClass,
-            boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException
+            boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger ) throws SuitableMethodNotAccessibleException
     {
         // Get all potential bind methods
         Method candidateBindMethods[] = targetClass.getDeclaredMethods();
@@ -559,7 +559,7 @@ implements org.apache.felix.scr.impl.inj
      *      trying to find the requested method.
      */
     private Method getServiceObjectWithMapMethod( final Class<?> targetClass, final Class<?> parameterClass,
-            boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException,
+            boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger ) throws SuitableMethodNotAccessibleException,
     InvocationTargetException
     {
         return getMethod( targetClass, getMethodName(), new Class[]
@@ -644,7 +644,7 @@ implements org.apache.felix.scr.impl.inj
      *      trying to find the requested method.
      */
     private Method getMapMethod( final Class<?> targetClass, final Class<?> parameterClass,
-            boolean acceptPrivate, boolean acceptPackage, SimpleLogger logger ) throws SuitableMethodNotAccessibleException,
+            boolean acceptPrivate, boolean acceptPackage, ComponentLogger logger ) throws SuitableMethodNotAccessibleException,
     InvocationTargetException
     {
         return getMethod( targetClass, getMethodName(), new Class[]

Added: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java
URL: http://svn.apache.org/viewvc/felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java?rev=1813478&view=auto
==============================================================================
--- felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java (added)
+++ felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java Fri Oct 27 07:19:49 2017
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.felix.scr.impl.logger;
+
+/**
+ * The <code>ComponentLogger</code> interface defines a simple API to enable some logging
+ * for a component. This avoids avoids that all clients doing logging on behalf of
+ * a component need to pass in things like {@code ComponentMetadata} or the component Id.
+ */
+public interface ComponentLogger
+{
+
+    /**
+     * Returns {@code true} 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} message format
+     *      string for preparing the message
+     * @param ex An optional <code>Throwable</code> whose stack trace is written,
+     * @param arguments The format arguments for the <code>pattern</code>
+     *      string.
+     */
+    void log( int level, String pattern, Throwable ex, Object... arguments );
+
+
+    /**
+     * Writes a messages for the given <code>ComponentMetadata</code>.
+     *
+     * @param level The log level of the messages. This corresponds to the log
+     *          levels defined by the OSGi LogService.
+     * @param message The message to print
+     * @param ex The <code>Throwable</code> causing the message to be logged.
+     */
+    void log( int level, String message, Throwable ex );
+
+}

Propchange: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/osgi-r7/scr/src/main/java/org/apache/felix/scr/impl/logger/ComponentLogger.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision rev url