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;
}