Re: [jackson-user] Are custom serializers cached?

2018-04-16 Thread Tatu Saloranta
On Mon, Apr 16, 2018 at 11:07 AM, Marcel Overdijk  wrote:
> I don’t *require* only 1 instance but want to avoid that many are created as 
> I do need to do some introspection if classes and want to cache that 
> information.
> It is only an annotation in class level so that should be fine, or - maybe to 
> be sure - I could simply register the serializer via a simple module.

In that case standard caching should work fine. If not, that would be a flaw.

-+ Tatu +-



>
>
> Cheers,
> Marcel
>
> --
> You received this message because you are subscribed to the Google Groups 
> "jackson-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to jackson-user+unsubscr...@googlegroups.com.
> To post to this group, send email to jackson-user@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [jackson-user] Are custom serializers cached?

2018-04-16 Thread Marcel Overdijk
I don’t *require* only 1 instance but want to avoid that many are created as I 
do need to do some introspection if classes and want to cache that information.
It is only an annotation in class level so that should be fine, or - maybe to 
be sure - I could simply register the serializer via a simple module.


Cheers,
Marcel

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [jackson-user] Are custom serializers cached?

2018-04-16 Thread Tatu Saloranta
On Sun, Apr 15, 2018 at 10:01 AM, Marcel Overdijk  wrote:
> Hi,
>
> When I have a custom `JsonSerializer` defined via @JsonSerialize does it it
> create only 1 instance of the `JsonSerializer` or multiple?
>
>
> @JsonSerialize(using = JsonapiDocument.JsonapiDocumentSerializer::class)
> class JsonapiDocument
>
> I need to introspect the class to be serialized and want to cache this
> information in the Serializer.
> But to do this I want to make sure that only 1 instance of the Serializer is
> created?
>
>
> In the apidocs of the `JsonSerializer` I could't find any information /
> statement regarding this.

If I understand your case correctly, only one instance is created and
cached for lookup
purposes.
This assumes that annotation is on class; if annotation is on a
property I'd have to check to make
sure whether caching is involved at all.

However: lookup and caching is just the initial part. Many
(de)serializers are further configured by
contextual information (mostly annotations on property accessor(s)) --
if serializer implements
`ContextualSerializer`, then its `createContextual(...)` method is
called when serializer is needed for
specific property (and once for root value, if used for root value).

So, only one instance should be created. I would not count on this as
anything more than as implementation
detail, however -- cache sizes are often bounded (... and in this
particular case, will be bounded in Jackson 3.0;
2.x does not limit it unfortunately) so there is no strict guarantee
that only one instance is ever created.

If such a guarantee is required, it could be achieved in at least 2 ways:

1. Canonicalize in `createContextual()` (that is, verify that `this`
is singleton instance; or if not, return that singleton
  instance)
2. Use `Module` for providing serializer instead.

and I guess I would go with (1). But this is only assuming it is
critical that just one serializer instance is used.

-+ Tatu +-

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[jackson-user] Are custom serializers cached?

2018-04-16 Thread Marcel Overdijk
Hi,

When I have a custom `JsonSerializer` defined via @JsonSerialize does it it 
create only 1 instance of the `JsonSerializer` or multiple?


@JsonSerialize(using = JsonapiDocument.JsonapiDocumentSerializer::class)
class JsonapiDocument



I need to introspect the class to be serialized and want to cache this 
information in the Serializer.
But to do this I want to make sure that only 1 instance of the Serializer 
is created?


In the apidocs of the `JsonSerializer` I could't find any information / 
statement regarding this.


Br,
Marcel

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To post to this group, send email to jackson-user@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.