0

The Java abstract classes:

public abstract class ActionProcessorExtensionPoint<A extends Action<?>> extends ExtensionPoint

public abstract class ActionProcessorExtensionBase<A extends Action<?>> extends ActionProcessorExtensionPoint<A> {
    protected final Log log = LogFactory.getLog(getClass());
    private final Set<Class<? extends A>> supportedClasses; 

    public ActionProcessorExtensionBase(Class<? extends A> actionClass) {
        supportedClasses = computeClasses(actionClass);
    }

}

The Scala class:

@Component(immediate = true)
@Provides(specifications = Array(classOf[ActionProcessorExtensionPoint[_ <:Action[T] forSome {type T}]]))
@Instantiate
class ActionPolicyDefinitionCreateProcessorExtension(
  val actionClass: Class[ActionPolicyDefinitionCreate]
) extends ActionProcessorExtensionBase[ActionPolicyDefinitionCreate](actionClass) { 

    def this() {
      this(classOf[ActionPolicyDefinitionCreate])
    }
 }

The error:

[ActionPolicyDefinitionCreateProcessorExtension-0] createInstance -> The POJO constructor invocation failed : Bad type on operand stack



Exception Details:

 Location:

   ActionPolicyDefinitionCreateProcessorExtension.<init>(Lorg/apache/felix/ipojo/InstanceManager;Ljava/lang/Class;)V @2: invokevirtual

 Reason:

   Type uninitializedThis (current frame, stack[0]) is not assignable to 'ActionPolicyDefinitionCreateProcessorExtension'

 Current Frame:

   bci: @2

   flags: { flagThisUninit }

   locals: { uninitializedThis, 'org/apache/felix/ipojo/InstanceManager', 'java/lang/Class' }

   stack: { uninitializedThis, 'java/lang/Class' }

 Bytecode:

   0x0000000: 2a2c b600 f02a 2cb7 00f2 2a2b b700 f6b1

   0x0000010:                                        

java.lang.VerifyError: Bad type on operand stack Exception Details: Location: ActionPolicyDefinitionCreateProcessorExtension.<init>(Lorg/apache/felix/ipojo/InstanceManager;Ljava/lang/Class;)V @2: invokevirtual 

1 Answer 1

0

The problem was the ActionPolicyDefinitionCreateProcessorExtension which should not have constructors with parameters given it is an IPOJO component. The solution is rewriting it to:

@Component(immediate = true)
@Provides(specifications = Array(classOf[ActionProcessorExtensionPoint[_ <:Action[T] forSome {type T}]]))
@Instantiate
class ActionPolicyDefinitionCreateProcessorExtension
  extends ActionProcessorExtensionBase[ActionPolicyDefinitionCreate](classOf[ActionPolicyDefinitionCreate]) { ... }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.