Hi,

Some examples from a real life project beside serializable and LDM
handling:
- check if a component has a parent .. if not, the component is not part
of the component tree which could be a bad sign
- check for type which should never be serialized (holding stuff in
fields and not in models)

Other Ideas comes in mind:
- check for Model implementation with a overwritten getObject()-method
- check for Model with large stuff in it

Michael:)

Am Mittwoch, den 10.10.2012, 16:17 +0300 schrieb Martin Grigorov:
> Good idea!
> Let's see how this could be improved.
> 
> I didn't say it explicitly in my previous mail but my commit was in a
> separate branch. It is not yet planned for the next release. It should
> be approved first from you.
> 
> On Wed, Oct 10, 2012 at 4:11 PM, Emond Papegaaij
> <[email protected]> wrote:
> > I did not yet replace our checker with the new one. One of the changes we 
> > made
> > to the checker was that we removed a few lines to improve performance. The 
> > old
> > SerializableChecker uses string concatenation all over the place, and a few 
> > of
> > those places introduce a serious performance overhead (I'm talking about
> > minutes, not milliseconds). The most important ones are 'String arrayPos = 
> > "["
> > + i + "]";' and 'String arrayPos = "[" + i + "]";'. A large set (with
> > thousands or records) generates 10th's of thousands string concatenations,
> > which takes a long time. It would be nice if we could fix that as well.
> >
> > Best regards,
> > Emond
> >
> > On Wednesday 10 October 2012 16:00:23 Martin Grigorov wrote:
> >> Hi,
> >>
> >> With
> >> https://git-wip-us.apache.org/repos/asf/wicket/repo?p=wicket.git;a=commitdi
> >> ff;h=6014d8bb92595bf486d69f7a5c1c798bcdc252f1 I extracted the logic for
> >> reading object members with
> >> ObjectStreamClass into a separate class ObjectChecker. This new class
> >> uses implementations of IObjectChecker to do the actual checks. For
> >> now there are two impls:
> >> - check that the class is Serializable (as before)
> >> - check that instances of LoadableDetachableModel are detached before
> >> serialization. This own proved to be quite useful !
> >>
> >> It is quite easy to add your own custom checkers. For example like the
> >> ones explained at
> >> http://wicketinaction.com/2011/11/detect-attached-models-and-entities/
> >> for JPA entities.
> >>
> >> I tried to keep SerializableChecker binary compatible so it has some
> >> baggage which may be removed for Wicket 7.0.
> >> If any of the checkers fail then the pretty print message is used to
> >> show where is the problem and its type.
> >>
> >> The usage is:
> >> JavaSerializer serializer = new JavaSerializer(app.getKey()) {
> >>    @Override
> >>    protected ObjectOutputStream newObjectOutputStream(OutputStream
> >> out) throws IOException {
> >>        return new ObjectCheckerObjectOutputStream(out, new
> >> ObjectSerializationChecker(), new NotDetachedModelChecker(), new
> >> MyOwnChecker());
> >>    }
> >> }
> >> app.getFrameworkSettings().setSerializer(serializer);
> >>
> >> Please have a look and give your opinion. Any suggestions are welcome!
> 
> 
> 


Reply via email to