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 2018/09/16 08:21:30 UTC

svn commit: r1840988 - in /felix/trunk/scr: ./ src/main/java/org/apache/felix/scr/impl/manager/ src/main/java/org/apache/felix/scr/impl/runtime/

Author: cziegeler
Date: Sun Sep 16 08:21:30 2018
New Revision: 1840988

URL: http://svn.apache.org/viewvc?rev=1840988&view=rev
Log:
FELIX-5929 : Failed activation state not reported in DTOs

Modified:
    felix/trunk/scr/changelog.txt
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java

Modified: felix/trunk/scr/changelog.txt
URL: http://svn.apache.org/viewvc/felix/trunk/scr/changelog.txt?rev=1840988&r1=1840987&r2=1840988&view=diff
==============================================================================
--- felix/trunk/scr/changelog.txt (original)
+++ felix/trunk/scr/changelog.txt Sun Sep 16 08:21:30 2018
@@ -3,6 +3,7 @@ Changes in 2.1.8
 ** Bug
     * [FELIX-5927] - Single element Annotation type does not incorporate PREFIX_
     * [FELIX-5926] - Logger instance is not set for constructor and reference injection
+    * [FELIX-5929] - Failed activation state not reported in DTOs
 
 
 Changes in 2.1.6

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java?rev=1840988&r1=1840987&r2=1840988&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/AbstractComponentManager.java Sun Sep 16 08:21:30 2018
@@ -81,8 +81,7 @@ public abstract class AbstractComponentM
         disabled(-1, false, false, false),
         unsatisfiedReference(ComponentConfigurationDTO.UNSATISFIED_REFERENCE, true, false, false),
         satisfied(ComponentConfigurationDTO.SATISFIED, true, true, false),
-        active(ComponentConfigurationDTO.ACTIVE, true, true, true),
-        failed(ComponentConfigurationDTO.FAILED_ACTIVATION, true, true, false);
+        active(ComponentConfigurationDTO.ACTIVE, true, true, true);
 
         private final int specState;
 
@@ -1373,24 +1372,25 @@ public abstract class AbstractComponentM
         return this.failureReason;
     }
 
+    /**
+     * Set the activation failure reason
+     * @param e The exception which caused the activation to fail
+     */
     public void setFailureReason(final Throwable e)
     {
-        if ( e != null )
-        {
-            final StringWriter sw = new StringWriter();
-            final PrintWriter pw = new PrintWriter(sw);
-            e.printStackTrace(pw);
-            pw.flush();
-            this.failureReason = sw.toString();
-        }
+        final StringWriter sw = new StringWriter();
+        final PrintWriter pw = new PrintWriter(sw);
+        e.printStackTrace(pw);
+        pw.flush();
+        this.failureReason = sw.toString();
     }
 
-    void setState(State previousState, State newState)
+    void setState(final State previousState, final State newState)
     {
         if (state.compareAndSet(previousState, newState))
         {
             m_container.getLogger().log(LogService.LOG_DEBUG, "Changed state from {0} to {1}", null, previousState, newState );
-            if ( newState != State.failed )
+            if ( newState == State.active || newState == State.unsatisfiedReference )
             {
                 this.failureReason = null;
             }

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java?rev=1840988&r1=1840987&r2=1840988&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/ServiceFactoryComponentManager.java Sun Sep 16 08:21:30 2018
@@ -142,8 +142,6 @@ public class ServiceFactoryComponentMana
             // log that the service factory component cannot be created (we don't
             // know why at this moment; this should already have been logged)
             getLogger().log( LogService.LOG_DEBUG, "Failed creating the component instance; see log for reason", null );
-            setState(previousState, State.failed);
-
         }
         else
         {

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java?rev=1840988&r1=1840987&r2=1840988&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/SingleComponentManager.java Sun Sep 16 08:21:30 2018
@@ -920,7 +920,6 @@ public class SingleComponentManager<S> e
                     if ( result == null )
                     {
                         success = false;
-                        setState(previousState, State.failed);
                     }
                     else
                     {

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java?rev=1840988&r1=1840987&r2=1840988&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/runtime/ServiceComponentRuntimeImpl.java Sun Sep 16 08:21:30 2018
@@ -209,13 +209,15 @@ public class ServiceComponentRuntimeImpl
         dto.properties = new HashMap<>(manager.getProperties());//TODO deep copy?
         dto.state = manager.getSpecState();
         // DS 1.4
-        if ( dto.state == ComponentConfigurationDTO.FAILED_ACTIVATION )
+        if ( dto.state == ComponentConfigurationDTO.ACTIVE
+                || dto.state == ComponentConfigurationDTO.SATISFIED )
         {
-            dto.failure = manager.getFailureReason();
+               dto.service = serviceReferenceToDTO(manager.getRegisteredServiceReference());
         }
-        else if ( dto.state == ComponentConfigurationDTO.ACTIVE || dto.state == ComponentConfigurationDTO.SATISFIED )
+        if ( manager.getFailureReason() != null )
         {
-            dto.service = serviceReferenceToDTO(manager.getRegisteredServiceReference());
+            dto.state = ComponentConfigurationDTO.FAILED_ACTIVATION;
+            dto.failure = manager.getFailureReason();
         }
         return dto;
     }