No; it is perfectly fine to access it when an instance is passed by or obtained from other Jackson components. But it is not designed as something you should (need to) instantiate. But more to specific use case: PropertyNamingStrategy is not designed for external use: it is designed to allow one to customize the way Jackson maps external JSON names to/from POJO property names. It is being passed `AnnotatedField` and `AnnotatedMethod` since this is the representation Jackson uses internally, derived from class definitions. It is not designed as general purpose abstraction for other use.
I am sure there is a way to hack TypeResolutionContext by implementing it; its purpose is to allow for resolution of generic types. This is necessary in cases where type parameter binding for a field or method is defined for the class: neither Field nor Method knows how type is bound, so enclosing class (or its sub-class) needs to be accessed to fully resolve the type. I think `AnnotatedClass` implements this interface. This functionality is probably not necessary for your case, nor would be invoked. So empty implementation should work fine. I hope this helps, -+ Tatu +- On Wed, Aug 10, 2016 at 1:09 AM, JonyD <[email protected]> wrote: > (previous messages deleted because they were not complete) > > @Tatu: > I am creating a PropertyNamingStrategy. > I need the AnnotatedField because it is a dependency of a > PropertyNamingStrategy. > So, something like this: > > private String jsonName(JsonProperty jsonProp, Field field, AnnotationMap > annMap ) { > > PropertyNamingStrategy strategy = getNamingStrategy(); // > getNamingStrategy is my personal method > > > if (strategy != null) { > MapperConfig<?> config = mapper.getSerializationConfig(); > TypeResolutionContext typeResolutionContext = ...; // where do > I get this/ class that implements the TypeResolutionContext interface?? > AnnotatedField annotatedField = new AnnotatedField( > typeResolutionContext, field, annMap); > > > return strategy.nameForField(config, annotatedField, field.getName > ()); > } else { > return field.getName(); > } > } > > > So you are saying that the class that has the AnnotatedField method is > not supposed to be accessed outside of jackson? > Then shouldn't that class be package protected/ protected? Or have a > "warning" in the javadoc saying it is an "internal" class that should be > only used by jackson? > > So, how can I circumvent that then? > > Thanks! > > On Wednesday, August 10, 2016 at 1:36:53 AM UTC+2, Tatu Saloranta wrote: >> >> On Tue, Aug 9, 2016 at 3:03 AM, JonyD <[email protected]> wrote: >> >>> Hi, >>> I will repost the question I did in stackoverflow ( >>> http://stackoverflow.com/questions/38797189/how-to-access- >>> typeresolutioncontext-in-jackson-2-8-1). >>> >>> >>> I am upgrading jackson library in a java project from version 2.4.6 to >>> the latest version (2.8.1). The following AnnotatedField method requires >>> now a new parameter of type TypeResolutionContext >>> >>> // v2.4.6AnnotatedField(Field field, AnnotationMap annMap) >>> // v2.8.1AnnotatedField(TypeResolutionContext contextClass, Field field, >>> AnnotationMap annMap) >>> >>> I read the API (https://fasterxml.github.io/j >>> ackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/ >>> introspect/TypeResolutionContext.html) but can't find how to get this >>> TypeResolutionContext. >>> >>> Only 2 classes implement this TypeResolutionContext (AnnotatedClass and >>> TypeResolutionContext.Basic) but none of them seem to have suitable >>> accessor methods that return a TypeResolutionContext. >>> >>> >>> Anyone knows how can I get it? >>> >> >> This class is not intended to be instantiate by code outside of Jackson >> itself, so there should be no need to pass that. It is something Jackson >> would provide. >> >> So I think the question is rather if there is a way to do whatever you >> are trying to achieve without trying to construct an AnnotatedField >> instance. >> >> -+ 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 [email protected]. > To post to this group, send email to [email protected]. > 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 [email protected]. To post to this group, send email to [email protected]. For more options, visit https://groups.google.com/d/optout.
