Re: Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-30 Thread Raoul Zander
Hi Sven,

okay, I created a jira issue + quickstart:
https://issues.apache.org/jira/browse/WICKET-5655 . Hope that helps :)

Kind regards,
rza

2014-07-29 19:53 GMT+02:00 Sven Meier s...@meiers.net:

 Hi,

 I agree, that look bogus.

 WICKET-3413 tried to improve on a similar issue though:

 https://issues.apache.org/jira/browse/WICKET-3413

 Wouldn't it be easier, just to always clear FLAG_INHERITABLE_MODEL in
 #setDefaultModel(), i.e. when a model is set explicitely?

 Please create a Jira issue.

 Regards
 Sven



 On 07/29/2014 05:26 PM, Raoul Zander wrote:

 Hi,

 the flag is not set to true - that's the problem :)

 See the method Component.setModelImpl(IModel)

 especially (Line 2981 in Wicket-Core 6.16.0):

 if (getFlag(FLAG_INHERITABLE_MODEL)  !(model instanceof
 IComponentInheritedModel))
 {
  setFlag(FLAG_INHERITABLE_MODEL, false);
 }

 Which should probably be

 if (getFlag(FLAG_INHERITABLE_MODEL)  !(model instanceof IWrapModel))
 {
  setFlag(FLAG_INHERITABLE_MODEL, false);
 }

 Regards,
 rza

 2014-07-29 17:09 GMT+02:00 Sven Meier s...@meiers.net:

  Hi,

 if I look for setFlag(FLAG_INHERITABLE_MODEL, true), it is called in
 initModel() only.

 Please paste the relevant code or even better create a quickstart.

 Regards
 Sven


 On 07/29/2014 04:59 PM, Raoul Zander wrote:

  In Component.setModelImpl(IModel)

 - rza

 2014-07-29 16:37 GMT+02:00 Sven Meier s...@meiers.net:

   Hi,


   the setModel(CompoundPropertyModel ...) actually KEEPS the
 FLAG_INHERITABLE_MODEL on true

 where is that?

 Sven



 On 07/29/2014 04:29 PM, Raoul Zander wrote:

   Hi everyone,

 I think there is some kind of bug in the handling of
 CompoundPropertyModel
 (or any IComponentInheritedModel).

 In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to
 true
 whenever a model is inherited from a parent, so that the model can be
 nulled onDetach. Thing is: The same flag is set when a
 IComponentInheritedModel is set as default model (via
 setModelImpl(IModel)).

 This leads to exceptions with chained CompoundPropertyModels as in the
 following scenario:

 (With correct indention and code high lighting:
 http://pastebin.com/5iu0qhWw
 )

 // POJOs (implements Serializable omitted)
 public class Game {
private Data data;
// getters / setters
 }

 public class Data {
private Value value;
// getters / setters
 }


 public class Value {
private int number;
// getters / setters
 }

 // Panels
 public class DataPanel extends GenericPanelData {

public DataPanel(String id) {
super(id);
}

protected void onInitialize() {
super.onInitialize();

setModel(new CompoundPropertyModelData(getModel()));
add(new ValuePanel(value));
}
 }

 public class ValuePanel extends GenericPanelValue {

public ValuePanel(String id) {
super(id);
}

protected void onInitialize() {
super.onInitialize();

setModel(new CompoundPropertyModelValue(getModel()));
add(new Label(number));
}
 }

 // and the page
 public class GamePage extends WebPage {

protected void onInitialize() {
super.onInitialize();

setDefaultModel(new CompoundPropertyModelGame(new
 Game()));
// make Page stateful like it would happen with AJAX links
 and
 alike
setStatelessHint(false);
add(new DataPanel(data));
}
 }

 Markup is irrelevant. The first time the page loads correct but as
 soon
 as
 you refresh the page you'll get the error No get method defined for
 class:
 class Game expression: number.
 Why that? Because the setModel(CompoundPropertyModel ...) actually
 KEEPS
 the FLAG_INHERITABLE_MODEL on true so that our custom set model will
 be
 nulled on the next detach.

 In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true
 if
 (and only if) the current component model was inherited - and not if
 it
 is
 *inheritable*.
 But on the other hand: Maybe i'm using the models the wrong way and
 there's
 a better way to achieve the same result (basically using
 CompoundPorpertyModels on different levels of an object graph)

 Kind regards,
 rza


   
 -

 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org



  -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-29 Thread Raoul Zander
Hi everyone,

I think there is some kind of bug in the handling of CompoundPropertyModel
(or any IComponentInheritedModel).

In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to true
whenever a model is inherited from a parent, so that the model can be
nulled onDetach. Thing is: The same flag is set when a
IComponentInheritedModel is set as default model (via setModelImpl(IModel)).

This leads to exceptions with chained CompoundPropertyModels as in the
following scenario:

(With correct indention and code high lighting: http://pastebin.com/5iu0qhWw
)

// POJOs (implements Serializable omitted)
public class Game {
private Data data;
// getters / setters
}

public class Data {
private Value value;
// getters / setters
}


public class Value {
private int number;
// getters / setters
}

// Panels
public class DataPanel extends GenericPanelData {

public DataPanel(String id) {
super(id);
}

protected void onInitialize() {
super.onInitialize();

setModel(new CompoundPropertyModelData(getModel()));
add(new ValuePanel(value));
}
}

public class ValuePanel extends GenericPanelValue {

public ValuePanel(String id) {
super(id);
}

protected void onInitialize() {
super.onInitialize();

setModel(new CompoundPropertyModelValue(getModel()));
add(new Label(number));
}
}

// and the page
public class GamePage extends WebPage {

protected void onInitialize() {
super.onInitialize();

setDefaultModel(new CompoundPropertyModelGame(new Game()));
// make Page stateful like it would happen with AJAX links and alike
setStatelessHint(false);
add(new DataPanel(data));
}
}

Markup is irrelevant. The first time the page loads correct but as soon as
you refresh the page you'll get the error No get method defined for class:
class Game expression: number.
Why that? Because the setModel(CompoundPropertyModel ...) actually KEEPS
the FLAG_INHERITABLE_MODEL on true so that our custom set model will be
nulled on the next detach.

In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true if
(and only if) the current component model was inherited - and not if it is
*inheritable*.
But on the other hand: Maybe i'm using the models the wrong way and there's
a better way to achieve the same result (basically using
CompoundPorpertyModels on different levels of an object graph)

Kind regards,
rza


Re: Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-29 Thread Sven Meier

Hi,

 the setModel(CompoundPropertyModel ...) actually KEEPS the 
FLAG_INHERITABLE_MODEL on true


where is that?

Sven


On 07/29/2014 04:29 PM, Raoul Zander wrote:

Hi everyone,

I think there is some kind of bug in the handling of CompoundPropertyModel
(or any IComponentInheritedModel).

In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to true
whenever a model is inherited from a parent, so that the model can be
nulled onDetach. Thing is: The same flag is set when a
IComponentInheritedModel is set as default model (via setModelImpl(IModel)).

This leads to exceptions with chained CompoundPropertyModels as in the
following scenario:

(With correct indention and code high lighting: http://pastebin.com/5iu0qhWw
)

// POJOs (implements Serializable omitted)
public class Game {
 private Data data;
 // getters / setters
}

public class Data {
 private Value value;
 // getters / setters
}


public class Value {
 private int number;
 // getters / setters
}

// Panels
public class DataPanel extends GenericPanelData {

 public DataPanel(String id) {
 super(id);
 }

 protected void onInitialize() {
 super.onInitialize();

 setModel(new CompoundPropertyModelData(getModel()));
 add(new ValuePanel(value));
 }
}

public class ValuePanel extends GenericPanelValue {

 public ValuePanel(String id) {
 super(id);
 }

 protected void onInitialize() {
 super.onInitialize();

 setModel(new CompoundPropertyModelValue(getModel()));
 add(new Label(number));
 }
}

// and the page
public class GamePage extends WebPage {

 protected void onInitialize() {
 super.onInitialize();

 setDefaultModel(new CompoundPropertyModelGame(new Game()));
 // make Page stateful like it would happen with AJAX links and alike
 setStatelessHint(false);
 add(new DataPanel(data));
 }
}

Markup is irrelevant. The first time the page loads correct but as soon as
you refresh the page you'll get the error No get method defined for class:
class Game expression: number.
Why that? Because the setModel(CompoundPropertyModel ...) actually KEEPS
the FLAG_INHERITABLE_MODEL on true so that our custom set model will be
nulled on the next detach.

In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true if
(and only if) the current component model was inherited - and not if it is
*inheritable*.
But on the other hand: Maybe i'm using the models the wrong way and there's
a better way to achieve the same result (basically using
CompoundPorpertyModels on different levels of an object graph)

Kind regards,
rza




-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-29 Thread Raoul Zander
In Component.setModelImpl(IModel)

- rza

2014-07-29 16:37 GMT+02:00 Sven Meier s...@meiers.net:

 Hi,


  the setModel(CompoundPropertyModel ...) actually KEEPS the
 FLAG_INHERITABLE_MODEL on true

 where is that?

 Sven



 On 07/29/2014 04:29 PM, Raoul Zander wrote:

 Hi everyone,

 I think there is some kind of bug in the handling of CompoundPropertyModel
 (or any IComponentInheritedModel).

 In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to true
 whenever a model is inherited from a parent, so that the model can be
 nulled onDetach. Thing is: The same flag is set when a
 IComponentInheritedModel is set as default model (via
 setModelImpl(IModel)).

 This leads to exceptions with chained CompoundPropertyModels as in the
 following scenario:

 (With correct indention and code high lighting:
 http://pastebin.com/5iu0qhWw
 )

 // POJOs (implements Serializable omitted)
 public class Game {
  private Data data;
  // getters / setters
 }

 public class Data {
  private Value value;
  // getters / setters
 }


 public class Value {
  private int number;
  // getters / setters
 }

 // Panels
 public class DataPanel extends GenericPanelData {

  public DataPanel(String id) {
  super(id);
  }

  protected void onInitialize() {
  super.onInitialize();

  setModel(new CompoundPropertyModelData(getModel()));
  add(new ValuePanel(value));
  }
 }

 public class ValuePanel extends GenericPanelValue {

  public ValuePanel(String id) {
  super(id);
  }

  protected void onInitialize() {
  super.onInitialize();

  setModel(new CompoundPropertyModelValue(getModel()));
  add(new Label(number));
  }
 }

 // and the page
 public class GamePage extends WebPage {

  protected void onInitialize() {
  super.onInitialize();

  setDefaultModel(new CompoundPropertyModelGame(new Game()));
  // make Page stateful like it would happen with AJAX links and
 alike
  setStatelessHint(false);
  add(new DataPanel(data));
  }
 }

 Markup is irrelevant. The first time the page loads correct but as soon as
 you refresh the page you'll get the error No get method defined for
 class:
 class Game expression: number.
 Why that? Because the setModel(CompoundPropertyModel ...) actually KEEPS
 the FLAG_INHERITABLE_MODEL on true so that our custom set model will be
 nulled on the next detach.

 In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true if
 (and only if) the current component model was inherited - and not if it is
 *inheritable*.
 But on the other hand: Maybe i'm using the models the wrong way and
 there's
 a better way to achieve the same result (basically using
 CompoundPorpertyModels on different levels of an object graph)

 Kind regards,
 rza



 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




Re: Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-29 Thread Sven Meier

Hi,

if I look for setFlag(FLAG_INHERITABLE_MODEL, true), it is called in 
initModel() only.


Please paste the relevant code or even better create a quickstart.

Regards
Sven

On 07/29/2014 04:59 PM, Raoul Zander wrote:

In Component.setModelImpl(IModel)

- rza

2014-07-29 16:37 GMT+02:00 Sven Meier s...@meiers.net:


Hi,



the setModel(CompoundPropertyModel ...) actually KEEPS the

FLAG_INHERITABLE_MODEL on true

where is that?

Sven



On 07/29/2014 04:29 PM, Raoul Zander wrote:


Hi everyone,

I think there is some kind of bug in the handling of CompoundPropertyModel
(or any IComponentInheritedModel).

In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to true
whenever a model is inherited from a parent, so that the model can be
nulled onDetach. Thing is: The same flag is set when a
IComponentInheritedModel is set as default model (via
setModelImpl(IModel)).

This leads to exceptions with chained CompoundPropertyModels as in the
following scenario:

(With correct indention and code high lighting:
http://pastebin.com/5iu0qhWw
)

// POJOs (implements Serializable omitted)
public class Game {
  private Data data;
  // getters / setters
}

public class Data {
  private Value value;
  // getters / setters
}


public class Value {
  private int number;
  // getters / setters
}

// Panels
public class DataPanel extends GenericPanelData {

  public DataPanel(String id) {
  super(id);
  }

  protected void onInitialize() {
  super.onInitialize();

  setModel(new CompoundPropertyModelData(getModel()));
  add(new ValuePanel(value));
  }
}

public class ValuePanel extends GenericPanelValue {

  public ValuePanel(String id) {
  super(id);
  }

  protected void onInitialize() {
  super.onInitialize();

  setModel(new CompoundPropertyModelValue(getModel()));
  add(new Label(number));
  }
}

// and the page
public class GamePage extends WebPage {

  protected void onInitialize() {
  super.onInitialize();

  setDefaultModel(new CompoundPropertyModelGame(new Game()));
  // make Page stateful like it would happen with AJAX links and
alike
  setStatelessHint(false);
  add(new DataPanel(data));
  }
}

Markup is irrelevant. The first time the page loads correct but as soon as
you refresh the page you'll get the error No get method defined for
class:
class Game expression: number.
Why that? Because the setModel(CompoundPropertyModel ...) actually KEEPS
the FLAG_INHERITABLE_MODEL on true so that our custom set model will be
nulled on the next detach.

In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true if
(and only if) the current component model was inherited - and not if it is
*inheritable*.
But on the other hand: Maybe i'm using the models the wrong way and
there's
a better way to achieve the same result (basically using
CompoundPorpertyModels on different levels of an object graph)

Kind regards,
rza



-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org





-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org



Re: Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-29 Thread Raoul Zander
Hi,

the flag is not set to true - that's the problem :)

See the method Component.setModelImpl(IModel)

especially (Line 2981 in Wicket-Core 6.16.0):

if (getFlag(FLAG_INHERITABLE_MODEL)  !(model instanceof
IComponentInheritedModel))
{
setFlag(FLAG_INHERITABLE_MODEL, false);
}

Which should probably be

if (getFlag(FLAG_INHERITABLE_MODEL)  !(model instanceof IWrapModel))
{
setFlag(FLAG_INHERITABLE_MODEL, false);
}

Regards,
rza

2014-07-29 17:09 GMT+02:00 Sven Meier s...@meiers.net:

 Hi,

 if I look for setFlag(FLAG_INHERITABLE_MODEL, true), it is called in
 initModel() only.

 Please paste the relevant code or even better create a quickstart.

 Regards
 Sven


 On 07/29/2014 04:59 PM, Raoul Zander wrote:

 In Component.setModelImpl(IModel)

 - rza

 2014-07-29 16:37 GMT+02:00 Sven Meier s...@meiers.net:

  Hi,


  the setModel(CompoundPropertyModel ...) actually KEEPS the

 FLAG_INHERITABLE_MODEL on true

 where is that?

 Sven



 On 07/29/2014 04:29 PM, Raoul Zander wrote:

  Hi everyone,

 I think there is some kind of bug in the handling of
 CompoundPropertyModel
 (or any IComponentInheritedModel).

 In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to true
 whenever a model is inherited from a parent, so that the model can be
 nulled onDetach. Thing is: The same flag is set when a
 IComponentInheritedModel is set as default model (via
 setModelImpl(IModel)).

 This leads to exceptions with chained CompoundPropertyModels as in the
 following scenario:

 (With correct indention and code high lighting:
 http://pastebin.com/5iu0qhWw
 )

 // POJOs (implements Serializable omitted)
 public class Game {
   private Data data;
   // getters / setters
 }

 public class Data {
   private Value value;
   // getters / setters
 }


 public class Value {
   private int number;
   // getters / setters
 }

 // Panels
 public class DataPanel extends GenericPanelData {

   public DataPanel(String id) {
   super(id);
   }

   protected void onInitialize() {
   super.onInitialize();

   setModel(new CompoundPropertyModelData(getModel()));
   add(new ValuePanel(value));
   }
 }

 public class ValuePanel extends GenericPanelValue {

   public ValuePanel(String id) {
   super(id);
   }

   protected void onInitialize() {
   super.onInitialize();

   setModel(new CompoundPropertyModelValue(getModel()));
   add(new Label(number));
   }
 }

 // and the page
 public class GamePage extends WebPage {

   protected void onInitialize() {
   super.onInitialize();

   setDefaultModel(new CompoundPropertyModelGame(new Game()));
   // make Page stateful like it would happen with AJAX links and
 alike
   setStatelessHint(false);
   add(new DataPanel(data));
   }
 }

 Markup is irrelevant. The first time the page loads correct but as soon
 as
 you refresh the page you'll get the error No get method defined for
 class:
 class Game expression: number.
 Why that? Because the setModel(CompoundPropertyModel ...) actually KEEPS
 the FLAG_INHERITABLE_MODEL on true so that our custom set model will be
 nulled on the next detach.

 In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true if
 (and only if) the current component model was inherited - and not if it
 is
 *inheritable*.
 But on the other hand: Maybe i'm using the models the wrong way and
 there's
 a better way to achieve the same result (basically using
 CompoundPorpertyModels on different levels of an object graph)

 Kind regards,
 rza


  -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




 -
 To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
 For additional commands, e-mail: users-h...@wicket.apache.org




Re: Possible error with IComponentInheritedModel(s) and stateful pages

2014-07-29 Thread Sven Meier

Hi,

I agree, that look bogus.

WICKET-3413 tried to improve on a similar issue though:

https://issues.apache.org/jira/browse/WICKET-3413

Wouldn't it be easier, just to always clear FLAG_INHERITABLE_MODEL in 
#setDefaultModel(), i.e. when a model is set explicitely?


Please create a Jira issue.

Regards
Sven


On 07/29/2014 05:26 PM, Raoul Zander wrote:

Hi,

the flag is not set to true - that's the problem :)

See the method Component.setModelImpl(IModel)

especially (Line 2981 in Wicket-Core 6.16.0):

if (getFlag(FLAG_INHERITABLE_MODEL)  !(model instanceof
IComponentInheritedModel))
{
 setFlag(FLAG_INHERITABLE_MODEL, false);
}

Which should probably be

if (getFlag(FLAG_INHERITABLE_MODEL)  !(model instanceof IWrapModel))
{
 setFlag(FLAG_INHERITABLE_MODEL, false);
}

Regards,
rza

2014-07-29 17:09 GMT+02:00 Sven Meier s...@meiers.net:


Hi,

if I look for setFlag(FLAG_INHERITABLE_MODEL, true), it is called in
initModel() only.

Please paste the relevant code or even better create a quickstart.

Regards
Sven


On 07/29/2014 04:59 PM, Raoul Zander wrote:


In Component.setModelImpl(IModel)

- rza

2014-07-29 16:37 GMT+02:00 Sven Meier s...@meiers.net:

  Hi,


  the setModel(CompoundPropertyModel ...) actually KEEPS the
FLAG_INHERITABLE_MODEL on true

where is that?

Sven



On 07/29/2014 04:29 PM, Raoul Zander wrote:

  Hi everyone,

I think there is some kind of bug in the handling of
CompoundPropertyModel
(or any IComponentInheritedModel).

In Component exists a Flag FLAG_INHERITABLE_MODEL - which is set to true
whenever a model is inherited from a parent, so that the model can be
nulled onDetach. Thing is: The same flag is set when a
IComponentInheritedModel is set as default model (via
setModelImpl(IModel)).

This leads to exceptions with chained CompoundPropertyModels as in the
following scenario:

(With correct indention and code high lighting:
http://pastebin.com/5iu0qhWw
)

// POJOs (implements Serializable omitted)
public class Game {
   private Data data;
   // getters / setters
}

public class Data {
   private Value value;
   // getters / setters
}


public class Value {
   private int number;
   // getters / setters
}

// Panels
public class DataPanel extends GenericPanelData {

   public DataPanel(String id) {
   super(id);
   }

   protected void onInitialize() {
   super.onInitialize();

   setModel(new CompoundPropertyModelData(getModel()));
   add(new ValuePanel(value));
   }
}

public class ValuePanel extends GenericPanelValue {

   public ValuePanel(String id) {
   super(id);
   }

   protected void onInitialize() {
   super.onInitialize();

   setModel(new CompoundPropertyModelValue(getModel()));
   add(new Label(number));
   }
}

// and the page
public class GamePage extends WebPage {

   protected void onInitialize() {
   super.onInitialize();

   setDefaultModel(new CompoundPropertyModelGame(new Game()));
   // make Page stateful like it would happen with AJAX links and
alike
   setStatelessHint(false);
   add(new DataPanel(data));
   }
}

Markup is irrelevant. The first time the page loads correct but as soon
as
you refresh the page you'll get the error No get method defined for
class:
class Game expression: number.
Why that? Because the setModel(CompoundPropertyModel ...) actually KEEPS
the FLAG_INHERITABLE_MODEL on true so that our custom set model will be
nulled on the next detach.

In my opinion this is a bug as FLAG_INHERITABLE_MODEL should be true if
(and only if) the current component model was inherited - and not if it
is
*inheritable*.
But on the other hand: Maybe i'm using the models the wrong way and
there's
a better way to achieve the same result (basically using
CompoundPorpertyModels on different levels of an object graph)

Kind regards,
rza


  -

To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org




-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org





-
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org