[
https://issues.apache.org/jira/browse/FELIX-4455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13933001#comment-13933001
]
Benjamin Debeerst edited comment on FELIX-4455 at 3/13/14 8:36 AM:
-------------------------------------------------------------------
Yes, I recompiled with {{mvn clean package}} each time. I used manipulator
version 1.11.1 (maven plugin), but the same also happenend for 1.10.1.
The [project on
GitHub|https://github.com/BenjaminDebeerst/ipojo-component-constructor-sample]
is a proper maven project, so it should be possible to simply clone, build and
run it.
was (Author: benjamindebeerst):
Yes, I recompiled with {{mvn clean package}} each time. I used manipulator
version 1.11.1 (maven plugin), but the same also happenend for 1.10.1.
The project on GitHub is a proper maven project, so it should be possible to
simply build and run it.
> Missing default constructor creates invalid class instances
> -----------------------------------------------------------
>
> Key: FELIX-4455
> URL: https://issues.apache.org/jira/browse/FELIX-4455
> Project: Felix
> Issue Type: Bug
> Components: iPOJO
> Affects Versions: ipojo-manipulator-1.10.1, ipojo-manipulator-1.11.1
> Reporter: Benjamin Debeerst
>
> Consider the following component definition:
> @Component
> @Instantiate
> public class ComponentWithoutDefaultConstructor
> {
> private Object internal = new Object();
> @Property
> private String property;
> /* Constructor for unit tests */
> public ComponentWithoutDefaultConstructor(String property)
> {
> System.out.println("Non-default constructor call!");
> this.property = property;
> }
> @Validate
> public void activate()
> {
> System.out.println("ComponentWithoutDefaultConstructor: activating!");
> System.out.println(this.internal);
> }
> }
> As per definition, I would expect every instance of this class to have a
> non-null member {{internal}} at class creation. This is all fine for my unit
> tests in a non-OSGi environment.
> However, having this processes by iPOJO and putting this in an OSGi
> container, the component outputs
> ComponentWithoutDefaultConstructor: activating!
> null
> The existing non-default constructor is not called, while it seems that a
> separate constructor has been created that does non instantiate the member
> variable.
> If I extend the code by an empty default constructor, that one is called and
> all works perfectly fine.
> I have no idea how iPOJO creates the object instance anyways, as it should
> not be possible to create such an invalid object instance. I don't know much
> about the reflection APIs or byte code manipulation though.
> I have put a sample maven project on GitHub[1], which can be built and
> droppped into a fresh Karaf container + iPOJO, which shows the problem.
> If there is no constructor iPOJO can use, I would expect iPOJO to either A)
> throw a warning/error (and build or runtime) and fail to instantiate the
> component or B) synthesize the default constructor properly, including the
> implicit instantiation of member variables.
> I encountered this problem both with iPOJO 1.10.1 and 1.11.1.
> [1] https://github.com/BenjaminDebeerst/ipojo-component-constructor-sample
--
This message was sent by Atlassian JIRA
(v6.2#6252)