You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by nino martinez wael <ni...@gmail.com> on 2017/11/30 09:38:20 UTC

CXF 3.2.1 swagger generation are wrong for json

So I have a bean CXF accepts only this interpretation for my endpoint:

{
    "contactList": [
        {
            "campaignId": "2",
            "id":"",
            "indexNumber": "",
            "accountNumber": "232",
            "queueNumber": "0",
            "balance": 0,
            "personalIdentificationNumber1": "string",
            "firstName1": "string",
            "lastName1": "string",
            "personalIdentificationNumber2": "string",
            "firstName2": "string",
            "lastName2": "string",
            "address": "string",
            "zipCode": "string",
            "city": "string",
            "homePhone": "+4521",
            "mobilePhone": "+45122",
            "campaing": "string",
            "dateForExtract": "string"

        }
    ]
}

However the swagger feature are generating this as example:

{
  "minimalContacts": [
    {
      "campaignId": "string",
      "id": 0,
      "indexNumber": "string",
      "accountNumber": "string",
      "queueNumber": "string",
      "balance": 0,
      "personalIdentificationNumber1": "string",
      "firstName1": "string",
      "lastName1": "string",
      "personalIdentificationNumber2": "string",
      "firstName2": "string",
      "lastName2": "string",
      "address": "string",
      "zipCode": "string",
      "city": "string",
      "homePhone": "string",
      "mobilePhone": "string",
      "campaing": "string",
      "dateForExtract": "string"
    }
  ]
}

MinimalContactWrapper

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "contacts")
public class MinimalContactWrapper {

    @XmlElementWrapper
    @XmlElementRef
    @Valid
    @NotNull
    @Size(min = 1)
    private List<MinimalContact> contactList=new ArrayList<>();

    public List<MinimalContact> getMinimalContacts() {
        return contactList;
    }

    public void setMinimalContacts(List<MinimalContact> minimalContacts) {
        this.contactList = minimalContacts;
    }


MinimalContact

@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name="minimalcontact")
public class MinimalContact {

    @NotNull
    @Size(min=1, max=240)
    private String campaignId;

    private Long id;
    @Size(min=1, max=240)
    private String indexNumber;
    @Size(min=1, max=20)
    @NotNull
    private String accountNumber;
    @Size(min=1, max=8)
    private String queueNumber;


    private Float balance;

    @Size(min=0, max=11)
    private String personalIdentificationNumber1;

    @Size(min=0, max=55)
    private String firstName1;

    @Size(min=0, max=55)
    private String lastName1;

    @Size(min=0, max=11)
    private String personalIdentificationNumber2;

    private String firstName2;

    private String lastName2;

    private String address;

    private String zipCode;
    private String city;

    @NotNull
    @Size(min=0, max=20)
    private String homePhone;

    @NotNull
    @Size(min=0, max=20)
    private String mobilePhone;

    private String campaing;

    @NotNull
    private String dateForExtract;






-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
Yes I think so.. Although I have no proof it works on non osgi systems..

On Wed, 6 Dec 2017, 12:35 Sergey Beryozkin, <sb...@gmail.com> wrote:

> Hi Nino
>
> So it is a pure OSGI issue now, right ?
> Lets ask Christian as well, Christian, can you advise how to overcome
> this annotations issue ?
>
> Cheers, Sergey
> On 06/12/17 11:30, nino martinez wael wrote:
> > No change after getting the javax.xml.bind.annotation.. I can see I can
> > change how some of the interpretations are done when adding jackson
> > specific json annotations.. But it's still not correct. :(
> >
> > On Wed, Dec 6, 2017 at 7:07 AM, nino martinez wael
> > <nino.martinez.wael@gmail.com <ma...@gmail.com>>
> wrote:
> >
> >     Okay after adding swagger annotations as an export from my bundle.
> >     The swagger json are now including whatever I describe in the
> >     annotations. However the maven bundle plugin keeps removing my
> >     export for javax.xml.bind.annotation and so I cannot test if this
> >     also have an impact on swagger ignoring my javax.xml.bind.annotation
> >     configurations, however it does seem logical.. Digging further.
> >
> >
> >     regards Nino
> >
> >     On Tue, Dec 5, 2017 at 8:07 AM, nino martinez wael
> >     <nino.martinez.wael@gmail.com <ma...@gmail.com>>
> >     wrote:
> >
> >         I've started testing that idea, and it seems to have an impact..
> >         I will return once I know more!!
> >
> >         Thanks!
> >
> >         On Mon, Dec 4, 2017 at 5:08 PM, Sergey Beryozkin
> >         <sberyozkin@gmail.com <ma...@gmail.com>> wrote:
> >
> >             CXF Swagger feature itself is not importing Swagger
> >             annotations because it does not work with them, I'm not
> >             sure, may be you need to have your application bundle
> >             exporting the annotations to make the visible...
> >
> >             Sergey
> >             On 04/12/17 15:06, nino martinez wael wrote:
> >
> >                 No, no namespaces....
> >
> >                 And I am still pussled on why it does not do it the
> >                 "right" way.. Currently I am experimenting putting in
> >                 io.swagger.annotations BUT they seem to have no effect
> >                 on the generated swagger describtion when placed in our
> >                 backend models, they are in another bundle, im wondering
> >                 if the swagger feature somehow are not able to read the
> >                 annotations across the bundles, that would very much
> >                 explain why its not working..?
> >
> >                 On Mon, Dec 4, 2017 at 11:46 AM, Sergey Beryozkin
> >                 <sberyozkin@gmail.com <ma...@gmail.com>
> >                 <mailto:sberyozkin@gmail.com
> >                 <ma...@gmail.com>>> wrote:
> >
> >                      Nice,
> >                      Just out of curiosity, what does Swagger set the
> >                 XML Object's
> >                      namespace to ? Is it initialized ?
> >
> >                      Sergey
> >
> >                      On 04/12/17 06:03, nino martinez wael wrote:
> >
> >                          Okay so I've looked into this a bit. And turned
> >                 the problem
> >                          upside down. Instead of trying to make the cxf
> >                 swagger feature
> >                          use jackson, just taking a look at the outcome
> >                 and play around
> >                          trying to change it.. Again if there is any way
> >                 to see what the
> >                          swagger feature plugin are using runtime to
> >                 process file with,
> >                          it would very helpfull..
> >
> >                          It seems that the swagger feature are partially
> >                 ignoring my
> >                          annotations, so picking up @xmlrootelement but
> >                 partially
> >                          ignoring the list annotations..
> >
> >                          @XmlAccessorType(XmlAccessType.FIELD)
> >                          @XmlRootElement(name = "contacts")
> >                          public class MinimalContactWrapper {
> >
> >                                @XmlElementWrapper(name = "wrap")
> >                                @XmlElement(name = "minimalcontact")
> >                                private List<MinimalContact> contactList;
> >
> >                                public List<MinimalContact>
> >                 getMinimalContacts() {
> >                                    return contactList;
> >                                }
> >
> >                                public void
> >                 setMinimalContacts(List<MinimalContact>
> >                          minimalContacts) {
> >                                    this.contactList = minimalContacts;
> >                                }
> >
> >                          }
> >
> >
> >                          to
> >
> >                          @XmlAccessorType(XmlAccessType.FIELD)
> >                          @XmlRootElement(name ="contacts")
> >                          public class MinimalContactWrapper {
> >
> >                                @XmlElementRef(name ="minimalContact")
> >                                @Valid
> >                          @NotNull
> >                          @Size(min =1)
> >                                private
> >                 List<MinimalContact>minimalContacts=new ArrayList<>();
> >
> >                                public List<MinimalContact>
> >                 getMinimalContacts() {
> >                                    return minimalContacts;
> >                                }
> >
> >                                public void
> >                 setMinimalContacts(List<MinimalContact>
> >                          minimalContacts) {
> >                                    this.minimalContacts =
> minimalContacts;
> >                                }
> >
> >                          }
> >
> >                          Made the xml results required equal in the
> >                 swagger feature to
> >                          what CXF and enunciate feels it should be...
> >                 Namely this:
> >
> >
> >
>  <contacts><minimalcontact><dateForExtract>...</dateForExtract><indexNumber>...</indexNumber><accountNumber>...</accountNumber><queueNumber>...</queueNumber><personalIdentificationNumber1>...</personalIdentificationNumber1><firstName1>...</firstName1><lastName1>...</lastName1><personalIdentificationNumber2>...</personalIdentificationNumber2><firstName2>...</firstName2><lastName2>...</lastName2><address>...</address><zipCode>...</zipCode><city>...</city><homePhone>...</homePhone><mobilePhone>...</mobilePhone><id>...</id><campaignId>...</campaignId></minimalcontact></contacts>
> >
> >
> >                          Instead of something like this:
> >
> >                          <?xml version="1.0" encoding="UTF-8"?>
> >                          <contacts>
> >                          <minimalContacts>
> >                          <minimalcontact>
> >                          <campaignId>string</campaignId>
> >                          <id>0</id>
> >                          <indexNumber>string</indexNumber>
> >                          <accountNumber>string</accountNumber>
> >                          <queueNumber>string</queueNumber>
> >                          <balance>0</balance>
> >
> >
>  <personalIdentificationNumber1>string</personalIdentificationNumber1>
> >                          <firstName1>string</firstName1>
> >                          <lastName1>string</lastName1>
> >
> >
>  <personalIdentificationNumber2>string</personalIdentificationNumber2>
> >                          <firstName2>string</firstName2>
> >                          <lastName2>string</lastName2>
> >                          <address>string</address>
> >                          <zipCode>string</zipCode>
> >                          <city>string</city>
> >                          <homePhone>string</homePhone>
> >                          <mobilePhone>string</mobilePhone>
> >                          <dateForExtract>string</dateForExtract>
> >                          </minimalcontact>
> >                          </minimalContacts>
> >                          </contacts>
> >
> >
> >
> >
> >                          On Thu, Nov 30, 2017 at 1:43 PM, nino martinez
> wael
> >                          <nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>>> wrote:
> >
> >                               No change without setting
> swagger2customizer..
> >
> >                               I'll let it rest for a day..
> >
> >                               On Thu, Nov 30, 2017 at 1:30 PM, nino
> >                 martinez wael
> >                               <nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>>>
> >                               wrote:
> >
> >                                   yup have set
> >                 skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>
> >                          <http://skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>>
> >                                   <http://skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>
> >                          <http://skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>>>gistration..
> >
> >                                   But no matter what I do it has no
> >                 effect on what the
> >                          swagger
> >                                   feature generates.. Where it's
> >                 changing the json
> >                          provider or
> >                                   removing it all together..
> >
> >                                   Trying it now without
> >                 setting swagger2Customizer..
> >
> >
> >                                   On Thu, Nov 30, 2017 at 1:04 PM,
> >                 Sergey Beryozkin
> >                                   <sberyozkin@gmail.com
> >                 <ma...@gmail.com>
> >                 <mailto:sberyozkin@gmail.com <mailto:
> sberyozkin@gmail.com>>
> >                          <mailto:sberyozkin@gmail.com
> >                 <ma...@gmail.com>
> >                 <mailto:sberyozkin@gmail.com
> >                 <ma...@gmail.com>>>> wrote:
> >
> >                                       Just FYI, removing Jettison lib
> >                 will ensure it's not
> >                                       auto-installed by CXF, and if it
> >                 is not possible to
> >                          remove
> >                                       then the other option is to set
> >                                       a "skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>
> >                          <http://skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>>
> >
> >                 <http://skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>
> >                          <http://skip.default.json.provider.re
> >                 <http://skip.default.json.provider.re>>>gistration" bus
> >                 property.
> >
> >                                       However it's not related to
> >                 Swagger at all, Jettison if
> >                                       installed will only affect the way
> >                 JSON is
> >                          generated for
> >                                       service responses
> >
> >                                       Sergey
> >
> >                                       On 30/11/17 11:57, nino martinez
> >                 wael wrote:
> >
> >                                           It does not seem to be a
> >                 jettison problem.. And
> >                          neither
> >                                           an problem with
> >                                           jackson versions, I just wiped
> >                 all jettison and
> >                                           jackson(except 2.9.1 )
> >                                           versions from my running
> >                 environment..
> >
> >                                           Looking into of it could be
> >                 something with
> >                                           JacksonJaxbJsonProvider vs
> >                                           JacksonJsonProvider
> >
> >                                           On Thu, Nov 30, 2017 at 12:45
> >                 PM, nino martinez
> >                          wael <
> >                 nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>
> >
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>>> wrote:
> >
> >                                               IS there somewhere while
> >                 on runtime where I can
> >                                               print current registered
> >                                               providers for cxf, I have
> >                 a feeling that it
> >                          somehow
> >                                               are using jettison for
> >                                               json...
> >
> >                                               On Thu, Nov 30, 2017 at
> >                 12:17 PM, nino
> >                          martinez wael <
> >                 nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>
> >
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>>> wrote:
> >
> >                                                   Okay I will check into
> >                 libraries whats
> >                          on class
> >                                                   path.. I have the same
> >                                                   gut feeling that it
> >                 could be something
> >                          like that.
> >
> >                                                   I have enunciate up
> >                 and working on the
> >                          side..
> >
> >                                                   On Thu, Nov 30, 2017
> >                 at 11:18 AM, Sergey
> >                                                   Beryozkin
> >                 <sberyozkin@gmail.com <ma...@gmail.com>
> >                          <mailto:sberyozkin@gmail.com
> >                 <ma...@gmail.com>>
> >
> >                 <mailto:sberyozkin@gmail.com <mailto:
> sberyozkin@gmail.com>
> >
> >                          <mailto:sberyozkin@gmail.com
> >                 <ma...@gmail.com>>>>
> >
> >                                                   wrote:
> >
> >                                                       Yes, the minor
> >                 Swagger version
> >                          caused this
> >                                                       change, what was
> >                 working
> >                                                       3.1.x,
> >                 specifically the serializers
> >                                                       approach, was not
> >                 working any longer
> >                                                       with the new
> >                 Swagger version, hence
> >                          this update.
> >
> >                                                       I honestly do not
> >                 know why exactly
> >                          a JAXB
> >                                                       annotated bean is
> not
> >                                                       correctly
> >                 represented in the
> >                                                       Swagger-generated
> >                 #definitions,
> >                          it's obviously
> >                                                       something to do
> >                 with the way
> >                          Jackson and
> >                                                       JAXB interacts.
> >                                                       Perhaps Jackson
> >                 you register with
> >                          DOSGI is
> >                                                       not the same
> version
> >                                                       installed by the
> >                 CXF swagger2 feature,
> >                                                       perhaps some diff
> >                 JAXB versions are
> >                                                       involved, please
> >                 keep experimenting
> >
> >                                                       Sergey
> >
> >
> >                 defaultSwagger2Serializers.setJavadocProvider(new
> >                                                       JavaDocProvider());
> >
> >
> >
>  swagger.setSwagger2Serializers(defaultSwagger2Serializers);
> >
> >                                                           I think this
> >                 could be the same:
> >
> >
> Swagger2Customizer
> >                          swagger2Customizer =
> >                                                           new
> >                 Swagger2Customizer();
> >
> >                 swagger2Customizer.setJavadocProvider(new
> >                 JavaDocProvider());
> >
> >
> >
> >                 swagger.setCustomizer(swagger2Customizer);
> >
> >
> >                                                           I have setup
> >                 CXF to use JACKSON
> >
> >                 (JacksonJaxbJsonProvider)
> >
> >
> >                                                           How can I tell
> >                 swagger to do
> >                          the same? I
> >                                                           think that's
> >                 the problem..
> >
> >
> >
> >                                                           regards Nino
> >
> >
> >
> >
> >                                                           On Thu, Nov
> >                 30, 2017 at 10:50
> >                          AM, nino
> >                                                           martinez wael <
> >                 nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>
> >
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>>>
> >                                                           wrote:
> >
> >                                                           Im wondering
> >                 if this could be
> >                          the problem :
> >
> >
> >                 https://github.com/swagger-api/swagger-core/issues/960
> >                 <https://github.com/swagger-api/swagger-core/issues/960>
> >
> >                 <https://github.com/swagger-api/swagger-core/issues/960
> >                 <https://github.com/swagger-api/swagger-core/issues/960
> >>
> >
> >                 <https://github.com/swagger-api/swagger-core/issues/960
> >                 <https://github.com/swagger-api/swagger-core/issues/960>
> >
> >                 <https://github.com/swagger-api/swagger-core/issues/960
> >                 <https://github.com/swagger-api/swagger-core/issues/960
> >>>
> >
> >                                                               On Thu,
> >                 Nov 30, 2017 at
> >                          10:38 AM,
> >                                                               nino
> >                 martinez wael <
> >                 nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>
> >
> >                 <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>
> >
> >                          <mailto:nino.martinez.wael@gmail.com
> >                 <ma...@gmail.com>>>>
> >
> >                                                               wrote:
> >
> >                                                               So I have
> >                 a bean CXF
> >                          accepts only
> >                                                               this
> >                 interpretation for my
> >                          endpoint:
> >
> >
> >                                                                   {
> >
> >                 "contactList": [
> >
> >                      {
> >
> >                                 "campaignId": "2",
> >
> >                          "id":"",
> >
> >                                 "indexNumber": "",
> >
> >                                 "accountNumber":
> >                                                                   "232",
> >
> >                                 "queueNumber": "0",
> >
> >                                 "balance": 0,
> >
> >
> >                 "personalIdentificationNumber1":
> >
> "string",
> >
> >                                 "firstName1":
> >
> "string",
> >
> >                          "lastName1":
> >
> "string",
> >
> >
> >                 "personalIdentificationNumber2":
> >
> "string",
> >
> >                                 "firstName2":
> >
> "string",
> >
> >                          "lastName2":
> >
> "string",
> >
> >                                 "address": "string",
> >
> >                                 "zipCode": "string",
> >
> >                          "city":
> >                          "string",
> >
> >                                 "homePhone": "+4521",
> >
> >                                 "mobilePhone":
> >
> "+45122",
> >
> >                                 "campaing": "string",
> >
> >                                 "dateForExtract":
> >
> "string"
> >
> >
> >                      }
> >
> ]
> >                                                                   }
> >
> >
> >                 However the swagger
> >                          feature are
> >
> >                 generating this as example:
> >
> >                                                                   {
> >
> >                 "minimalContacts": [
> >
> {
> >
> >                    "campaignId":
> >                          "string",
> >
> >                    "id": 0,
> >
> >                    "indexNumber":
> >                          "string",
> >
> >                           "accountNumber": "string",
> >
> >                    "queueNumber":
> >                          "string",
> >
> >                    "balance": 0,
> >
> >
> >                 "personalIdentificationNumber1":
> >
> "string",
> >
> >                    "firstName1":
> >                          "string",
> >
> >                    "lastName1":
> >                          "string",
> >
> >
> >                 "personalIdentificationNumber2":
> >
> "string",
> >
> >                    "firstName2":
> >                          "string",
> >
> >                    "lastName2":
> >                          "string",
> >
> >                    "address":
> >                          "string",
> >
> >                    "zipCode":
> >                          "string",
> >
> >                    "city": "string",
> >
> >                    "homePhone":
> >                          "string",
> >
> >                    "mobilePhone":
> >                          "string",
> >
> >                    "campaing":
> >                          "string",
> >
> >                           "dateForExtract": "string"
> >
> }
> >                                                                        ]
> >                                                                   }
> >
> >
> >                 MinimalContactWrapper
> >
> >
> >                 @XmlAccessorType(XmlAccessType.FIELD)
> >
> >                 @XmlRootElement(name =
> >                          "contacts")
> >                                                                   public
> >                 class
> >                          MinimalContactWrapper {
> >
> >
> >                 @XmlElementWrapper
> >
> >                 @XmlElementRef
> >
> >                 @Valid
> >
> >                 @NotNull
> >
> >                 @Size(min = 1)
> >
> >                 private
> >
> >                 List<MinimalContact>
> >
> >                 contactList=new
> >                          ArrayList<>();
> >
> >
> >                 public
> >
> >                 List<MinimalContact>
> >
> >                 getMinimalContacts() {
> >
> >                      return
> >                          contactList;
> >
> }
> >
> >
> >                 public void
> >
> >                 setMinimalContacts(List<MinimalContact>
> >
> >                 minimalContacts) {
> >
> >                             this.contactList =
> >
> >                 minimalContacts;
> >
> }
> >
> >
> >
> >                 MinimalContact
> >
> >
> >                 @XmlAccessorType(XmlAccessType.PROPERTY)
> >
> >                 @XmlRootElement(name="minimalcontact")
> >                                                                   public
> >                 class
> >                          MinimalContact {
> >
> >
> >                 @NotNull
> >
> >                 @Size(min=1,
> >                          max=240)
> >
> >                 private String
> >                          campaignId;
> >
> >
> >                 private Long id;
> >
> >                 @Size(min=1,
> >                          max=240)
> >
> >                 private String
> >                          indexNumber;
> >
> >                 @Size(min=1, max=20)
> >
> >                 @NotNull
> >
> >                 private String
> >                          accountNumber;
> >
> >                 @Size(min=1, max=8)
> >
> >                 private String
> >                          queueNumber;
> >
> >
> >
> >                 private Float
> >                          balance;
> >
> >
> >                 @Size(min=0, max=11)
> >
> >                 private String
> >
> >                 personalIdentificationNumber1;
> >
> >
> >                 @Size(min=0, max=55)
> >
> >                 private String
> >                          firstName1;
> >
> >
> >                 @Size(min=0, max=55)
> >
> >                 private String
> >                          lastName1;
> >
> >
> >                 @Size(min=0, max=11)
> >
> >                 private String
> >
> >                 personalIdentificationNumber2;
> >
> >
> >                 private String
> >                          firstName2;
> >
> >
> >                 private String
> >                          lastName2;
> >
> >
> >                 private String
> >                          address;
> >
> >
> >                 private String
> >                          zipCode;
> >
> >                 private String city;
> >
> >
> >                 @NotNull
> >
> >                 @Size(min=0, max=20)
> >
> >                 private String
> >                          homePhone;
> >
> >
> >                 @NotNull
> >
> >                 @Size(min=0, max=20)
> >
> >                 private String
> >                          mobilePhone;
> >
> >
> >                 private String
> >                          campaing;
> >
> >
> >                 @NotNull
> >
> >                 private String
> >
> >                 dateForExtract;
> >
> >
> >
> >
> >
> >
> >                                                                   --
> >                                                                   Best
> >                 regards / Med
> >                          venlig hilsen
> >                                                                   Nino
> >                 Martinez
> >
> >
> >
> >
> >                                                               --
> >                                                               Best
> >                 regards / Med venlig
> >                          hilsen
> >                                                               Nino
> Martinez
> >
> >
> >
> >
> >
> >
> >
> >                                                   --
> >                                                   Best regards / Med
> >                 venlig hilsen
> >                                                   Nino Martinez
> >
> >
> >
> >
> >                                               --
> >                                               Best regards / Med venlig
> >                 hilsen
> >                                               Nino Martinez
> >
> >
> >
> >
> >
> >
> >
> >                                   --         Best regards / Med venlig
> >                 hilsen
> >                                   Nino Martinez
> >
> >
> >
> >
> >                               --     Best regards / Med venlig hilsen
> >                               Nino Martinez
> >
> >
> >
> >
> >                          --         Best regards / Med venlig hilsen
> >                          Nino Martinez
> >
> >
> >
> >
> >                 --
> >                 Best regards / Med venlig hilsen
> >                 Nino Martinez
> >
> >
> >
> >
> >         --
> >         Best regards / Med venlig hilsen
> >         Nino Martinez
> >
> >
> >
> >
> >     --
> >     Best regards / Med venlig hilsen
> >     Nino Martinez
> >
> >
> >
> >
> > --
> > Best regards / Med venlig hilsen
> > Nino Martinez
>
>

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi Nino

So it is a pure OSGI issue now, right ?
Lets ask Christian as well, Christian, can you advise how to overcome 
this annotations issue ?

Cheers, Sergey
On 06/12/17 11:30, nino martinez wael wrote:
> No change after getting the javax.xml.bind.annotation.. I can see I can 
> change how some of the interpretations are done when adding jackson 
> specific json annotations.. But it's still not correct. :(
> 
> On Wed, Dec 6, 2017 at 7:07 AM, nino martinez wael 
> <nino.martinez.wael@gmail.com <ma...@gmail.com>> wrote:
> 
>     Okay after adding swagger annotations as an export from my bundle.
>     The swagger json are now including whatever I describe in the
>     annotations. However the maven bundle plugin keeps removing my
>     export for javax.xml.bind.annotation and so I cannot test if this
>     also have an impact on swagger ignoring my javax.xml.bind.annotation
>     configurations, however it does seem logical.. Digging further.
> 
> 
>     regards Nino
> 
>     On Tue, Dec 5, 2017 at 8:07 AM, nino martinez wael
>     <nino.martinez.wael@gmail.com <ma...@gmail.com>>
>     wrote:
> 
>         I've started testing that idea, and it seems to have an impact..
>         I will return once I know more!!
> 
>         Thanks!
> 
>         On Mon, Dec 4, 2017 at 5:08 PM, Sergey Beryozkin
>         <sberyozkin@gmail.com <ma...@gmail.com>> wrote:
> 
>             CXF Swagger feature itself is not importing Swagger
>             annotations because it does not work with them, I'm not
>             sure, may be you need to have your application bundle
>             exporting the annotations to make the visible...
> 
>             Sergey
>             On 04/12/17 15:06, nino martinez wael wrote:
> 
>                 No, no namespaces....
> 
>                 And I am still pussled on why it does not do it the
>                 "right" way.. Currently I am experimenting putting in
>                 io.swagger.annotations BUT they seem to have no effect
>                 on the generated swagger describtion when placed in our
>                 backend models, they are in another bundle, im wondering
>                 if the swagger feature somehow are not able to read the
>                 annotations across the bundles, that would very much
>                 explain why its not working..?
> 
>                 On Mon, Dec 4, 2017 at 11:46 AM, Sergey Beryozkin
>                 <sberyozkin@gmail.com <ma...@gmail.com>
>                 <mailto:sberyozkin@gmail.com
>                 <ma...@gmail.com>>> wrote:
> 
>                      Nice,
>                      Just out of curiosity, what does Swagger set the
>                 XML Object's
>                      namespace to ? Is it initialized ?
> 
>                      Sergey
> 
>                      On 04/12/17 06:03, nino martinez wael wrote:
> 
>                          Okay so I've looked into this a bit. And turned
>                 the problem
>                          upside down. Instead of trying to make the cxf
>                 swagger feature
>                          use jackson, just taking a look at the outcome
>                 and play around
>                          trying to change it.. Again if there is any way
>                 to see what the
>                          swagger feature plugin are using runtime to
>                 process file with,
>                          it would very helpfull..
> 
>                          It seems that the swagger feature are partially
>                 ignoring my
>                          annotations, so picking up @xmlrootelement but
>                 partially
>                          ignoring the list annotations..
> 
>                          @XmlAccessorType(XmlAccessType.FIELD)
>                          @XmlRootElement(name = "contacts")
>                          public class MinimalContactWrapper {
> 
>                                @XmlElementWrapper(name = "wrap")
>                                @XmlElement(name = "minimalcontact")
>                                private List<MinimalContact> contactList;
> 
>                                public List<MinimalContact>
>                 getMinimalContacts() {
>                                    return contactList;
>                                }
> 
>                                public void
>                 setMinimalContacts(List<MinimalContact>
>                          minimalContacts) {
>                                    this.contactList = minimalContacts;
>                                }
> 
>                          }
> 
> 
>                          to
> 
>                          @XmlAccessorType(XmlAccessType.FIELD)
>                          @XmlRootElement(name ="contacts")
>                          public class MinimalContactWrapper {
> 
>                                @XmlElementRef(name ="minimalContact")
>                                @Valid
>                          @NotNull
>                          @Size(min =1)
>                                private
>                 List<MinimalContact>minimalContacts=new ArrayList<>();
> 
>                                public List<MinimalContact>
>                 getMinimalContacts() {
>                                    return minimalContacts;
>                                }
> 
>                                public void
>                 setMinimalContacts(List<MinimalContact>
>                          minimalContacts) {
>                                    this.minimalContacts = minimalContacts;
>                                }
> 
>                          }
> 
>                          Made the xml results required equal in the
>                 swagger feature to
>                          what CXF and enunciate feels it should be...
>                 Namely this:
> 
>                         
>                 <contacts><minimalcontact><dateForExtract>...</dateForExtract><indexNumber>...</indexNumber><accountNumber>...</accountNumber><queueNumber>...</queueNumber><personalIdentificationNumber1>...</personalIdentificationNumber1><firstName1>...</firstName1><lastName1>...</lastName1><personalIdentificationNumber2>...</personalIdentificationNumber2><firstName2>...</firstName2><lastName2>...</lastName2><address>...</address><zipCode>...</zipCode><city>...</city><homePhone>...</homePhone><mobilePhone>...</mobilePhone><id>...</id><campaignId>...</campaignId></minimalcontact></contacts>
> 
> 
>                          Instead of something like this:
> 
>                          <?xml version="1.0" encoding="UTF-8"?>
>                          <contacts>
>                          <minimalContacts>
>                          <minimalcontact>
>                          <campaignId>string</campaignId>
>                          <id>0</id>
>                          <indexNumber>string</indexNumber>
>                          <accountNumber>string</accountNumber>
>                          <queueNumber>string</queueNumber>
>                          <balance>0</balance>
>                         
>                 <personalIdentificationNumber1>string</personalIdentificationNumber1>
>                          <firstName1>string</firstName1>
>                          <lastName1>string</lastName1>
>                         
>                 <personalIdentificationNumber2>string</personalIdentificationNumber2>
>                          <firstName2>string</firstName2>
>                          <lastName2>string</lastName2>
>                          <address>string</address>
>                          <zipCode>string</zipCode>
>                          <city>string</city>
>                          <homePhone>string</homePhone>
>                          <mobilePhone>string</mobilePhone>
>                          <dateForExtract>string</dateForExtract>
>                          </minimalcontact>
>                          </minimalContacts>
>                          </contacts>
> 
> 
> 
> 
>                          On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael
>                          <nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>>> wrote:
> 
>                               No change without setting swagger2customizer..
> 
>                               I'll let it rest for a day..
> 
>                               On Thu, Nov 30, 2017 at 1:30 PM, nino
>                 martinez wael
>                               <nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>>>
>                               wrote:
> 
>                                   yup have set
>                 skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>
>                          <http://skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>>
>                                   <http://skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>
>                          <http://skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>>>gistration..
> 
>                                   But no matter what I do it has no
>                 effect on what the
>                          swagger
>                                   feature generates.. Where it's
>                 changing the json
>                          provider or
>                                   removing it all together..
> 
>                                   Trying it now without
>                 setting swagger2Customizer..
> 
> 
>                                   On Thu, Nov 30, 2017 at 1:04 PM,
>                 Sergey Beryozkin
>                                   <sberyozkin@gmail.com
>                 <ma...@gmail.com>
>                 <mailto:sberyozkin@gmail.com <ma...@gmail.com>>
>                          <mailto:sberyozkin@gmail.com
>                 <ma...@gmail.com>
>                 <mailto:sberyozkin@gmail.com
>                 <ma...@gmail.com>>>> wrote:
> 
>                                       Just FYI, removing Jettison lib
>                 will ensure it's not
>                                       auto-installed by CXF, and if it
>                 is not possible to
>                          remove
>                                       then the other option is to set
>                                       a "skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>
>                          <http://skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>>
>                                      
>                 <http://skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>
>                          <http://skip.default.json.provider.re
>                 <http://skip.default.json.provider.re>>>gistration" bus
>                 property.
> 
>                                       However it's not related to
>                 Swagger at all, Jettison if
>                                       installed will only affect the way
>                 JSON is
>                          generated for
>                                       service responses
> 
>                                       Sergey
> 
>                                       On 30/11/17 11:57, nino martinez
>                 wael wrote:
> 
>                                           It does not seem to be a
>                 jettison problem.. And
>                          neither
>                                           an problem with
>                                           jackson versions, I just wiped
>                 all jettison and
>                                           jackson(except 2.9.1 )
>                                           versions from my running
>                 environment..
> 
>                                           Looking into of it could be
>                 something with
>                                           JacksonJaxbJsonProvider vs
>                                           JacksonJsonProvider
> 
>                                           On Thu, Nov 30, 2017 at 12:45
>                 PM, nino martinez
>                          wael <
>                 nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>
>                                          
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>>> wrote:
> 
>                                               IS there somewhere while
>                 on runtime where I can
>                                               print current registered
>                                               providers for cxf, I have
>                 a feeling that it
>                          somehow
>                                               are using jettison for
>                                               json...
> 
>                                               On Thu, Nov 30, 2017 at
>                 12:17 PM, nino
>                          martinez wael <
>                 nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>
>                                              
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>>> wrote:
> 
>                                                   Okay I will check into
>                 libraries whats
>                          on class
>                                                   path.. I have the same
>                                                   gut feeling that it
>                 could be something
>                          like that.
> 
>                                                   I have enunciate up
>                 and working on the
>                          side..
> 
>                                                   On Thu, Nov 30, 2017
>                 at 11:18 AM, Sergey
>                                                   Beryozkin
>                 <sberyozkin@gmail.com <ma...@gmail.com>
>                          <mailto:sberyozkin@gmail.com
>                 <ma...@gmail.com>>
>                                                  
>                 <mailto:sberyozkin@gmail.com <ma...@gmail.com>
> 
>                          <mailto:sberyozkin@gmail.com
>                 <ma...@gmail.com>>>>
> 
>                                                   wrote:
> 
>                                                       Yes, the minor
>                 Swagger version
>                          caused this
>                                                       change, what was
>                 working
>                                                       3.1.x,
>                 specifically the serializers
>                                                       approach, was not
>                 working any longer
>                                                       with the new
>                 Swagger version, hence
>                          this update.
> 
>                                                       I honestly do not
>                 know why exactly
>                          a JAXB
>                                                       annotated bean is not
>                                                       correctly
>                 represented in the
>                                                       Swagger-generated
>                 #definitions,
>                          it's obviously
>                                                       something to do
>                 with the way
>                          Jackson and
>                                                       JAXB interacts.
>                                                       Perhaps Jackson
>                 you register with
>                          DOSGI is
>                                                       not the same version
>                                                       installed by the
>                 CXF swagger2 feature,
>                                                       perhaps some diff
>                 JAXB versions are
>                                                       involved, please
>                 keep experimenting
> 
>                                                       Sergey
> 
>                                                             
>                 defaultSwagger2Serializers.setJavadocProvider(new
>                                                       JavaDocProvider());
> 
>                                                                 
>                 swagger.setSwagger2Serializers(defaultSwagger2Serializers);
> 
>                                                           I think this
>                 could be the same:
> 
>                                                           Swagger2Customizer
>                          swagger2Customizer =
>                                                           new
>                 Swagger2Customizer();
>                                                                 
>                 swagger2Customizer.setJavadocProvider(new
>                 JavaDocProvider());
> 
> 
>                                                                 
>                 swagger.setCustomizer(swagger2Customizer);
> 
> 
>                                                           I have setup
>                 CXF to use JACKSON
>                                                          
>                 (JacksonJaxbJsonProvider)
> 
> 
>                                                           How can I tell
>                 swagger to do
>                          the same? I
>                                                           think that's
>                 the problem..
> 
> 
> 
>                                                           regards Nino
> 
> 
> 
> 
>                                                           On Thu, Nov
>                 30, 2017 at 10:50
>                          AM, nino
>                                                           martinez wael <
>                 nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>
>                                                                 
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>>>
>                                                           wrote:
> 
>                                                           Im wondering
>                 if this could be
>                          the problem :
> 
> 
>                 https://github.com/swagger-api/swagger-core/issues/960
>                 <https://github.com/swagger-api/swagger-core/issues/960>
>                         
>                 <https://github.com/swagger-api/swagger-core/issues/960
>                 <https://github.com/swagger-api/swagger-core/issues/960>>
>                                                                     
>                 <https://github.com/swagger-api/swagger-core/issues/960
>                 <https://github.com/swagger-api/swagger-core/issues/960>
>                         
>                 <https://github.com/swagger-api/swagger-core/issues/960
>                 <https://github.com/swagger-api/swagger-core/issues/960>>>
> 
>                                                               On Thu,
>                 Nov 30, 2017 at
>                          10:38 AM,
>                                                               nino
>                 martinez wael <
>                 nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>
>                                                                     
>                 <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>
> 
>                          <mailto:nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>>>>
> 
>                                                               wrote:
> 
>                                                               So I have
>                 a bean CXF
>                          accepts only
>                                                               this
>                 interpretation for my
>                          endpoint:
> 
> 
>                                                                   {
>                                                                         
>                 "contactList": [
>                                                                         
>                      {
>                                                                         
>                                 "campaignId": "2",
>                                                                         
>                          "id":"",
>                                                                         
>                                 "indexNumber": "",
>                                                                         
>                                 "accountNumber":
>                                                                   "232",
>                                                                         
>                                 "queueNumber": "0",
>                                                                         
>                                 "balance": 0,
>                                                                         
>                                                                        
>                 "personalIdentificationNumber1":
>                                                                   "string",
>                                                                         
>                                 "firstName1":
>                                                                   "string",
>                                                                         
>                          "lastName1":
>                                                                   "string",
>                                                                         
>                                                                        
>                 "personalIdentificationNumber2":
>                                                                   "string",
>                                                                         
>                                 "firstName2":
>                                                                   "string",
>                                                                         
>                          "lastName2":
>                                                                   "string",
>                                                                         
>                                 "address": "string",
>                                                                         
>                                 "zipCode": "string",
>                                                                         
>                          "city":
>                          "string",
>                                                                         
>                                 "homePhone": "+4521",
>                                                                         
>                                 "mobilePhone":
>                                                                   "+45122",
>                                                                         
>                                 "campaing": "string",
>                                                                         
>                                 "dateForExtract":
>                                                                   "string"
> 
>                                                                         
>                      }
>                                                                          ]
>                                                                   }
> 
>                                                                  
>                 However the swagger
>                          feature are
>                                                                  
>                 generating this as example:
> 
>                                                                   {
>                                                                       
>                 "minimalContacts": [
>                                                                          {
>                                                                         
>                    "campaignId":
>                          "string",
>                                                                         
>                    "id": 0,
>                                                                         
>                    "indexNumber":
>                          "string",
>                                                                         
>                           "accountNumber": "string",
>                                                                         
>                    "queueNumber":
>                          "string",
>                                                                         
>                    "balance": 0,
>                                                                         
>                                                                  
>                 "personalIdentificationNumber1":
>                                                                   "string",
>                                                                         
>                    "firstName1":
>                          "string",
>                                                                         
>                    "lastName1":
>                          "string",
>                                                                         
>                                                                  
>                 "personalIdentificationNumber2":
>                                                                   "string",
>                                                                         
>                    "firstName2":
>                          "string",
>                                                                         
>                    "lastName2":
>                          "string",
>                                                                         
>                    "address":
>                          "string",
>                                                                         
>                    "zipCode":
>                          "string",
>                                                                         
>                    "city": "string",
>                                                                         
>                    "homePhone":
>                          "string",
>                                                                         
>                    "mobilePhone":
>                          "string",
>                                                                         
>                    "campaing":
>                          "string",
>                                                                         
>                           "dateForExtract": "string"
>                                                                          }
>                                                                        ]
>                                                                   }
> 
>                                                                  
>                 MinimalContactWrapper
> 
>                                                                         
>                 @XmlAccessorType(XmlAccessType.FIELD)
>                                                                  
>                 @XmlRootElement(name =
>                          "contacts")
>                                                                   public
>                 class
>                          MinimalContactWrapper {
> 
>                                                                         
>                 @XmlElementWrapper
>                                                                         
>                 @XmlElementRef
>                                                                         
>                 @Valid
>                                                                         
>                 @NotNull
>                                                                         
>                 @Size(min = 1)
>                                                                         
>                 private
>                                                                  
>                 List<MinimalContact>
>                                                                  
>                 contactList=new
>                          ArrayList<>();
> 
>                                                                         
>                 public
>                                                                  
>                 List<MinimalContact>
>                                                                  
>                 getMinimalContacts() {
>                                                                         
>                      return
>                          contactList;
>                                                                          }
> 
>                                                                         
>                 public void
>                                                                         
>                 setMinimalContacts(List<MinimalContact>
>                                                                  
>                 minimalContacts) {
>                                                                         
>                             this.contactList =
>                                                                  
>                 minimalContacts;
>                                                                          }
> 
> 
>                                                                  
>                 MinimalContact
> 
>                                                                         
>                 @XmlAccessorType(XmlAccessType.PROPERTY)
>                                                                         
>                 @XmlRootElement(name="minimalcontact")
>                                                                   public
>                 class
>                          MinimalContact {
> 
>                                                                         
>                 @NotNull
>                                                                         
>                 @Size(min=1,
>                          max=240)
>                                                                         
>                 private String
>                          campaignId;
> 
>                                                                         
>                 private Long id;
>                                                                         
>                 @Size(min=1,
>                          max=240)
>                                                                         
>                 private String
>                          indexNumber;
>                                                                         
>                 @Size(min=1, max=20)
>                                                                         
>                 @NotNull
>                                                                         
>                 private String
>                          accountNumber;
>                                                                         
>                 @Size(min=1, max=8)
>                                                                         
>                 private String
>                          queueNumber;
> 
> 
>                                                                         
>                 private Float
>                          balance;
> 
>                                                                         
>                 @Size(min=0, max=11)
>                                                                         
>                 private String
>                                                                         
>                 personalIdentificationNumber1;
> 
>                                                                         
>                 @Size(min=0, max=55)
>                                                                         
>                 private String
>                          firstName1;
> 
>                                                                         
>                 @Size(min=0, max=55)
>                                                                         
>                 private String
>                          lastName1;
> 
>                                                                         
>                 @Size(min=0, max=11)
>                                                                         
>                 private String
>                                                                         
>                 personalIdentificationNumber2;
> 
>                                                                         
>                 private String
>                          firstName2;
> 
>                                                                         
>                 private String
>                          lastName2;
> 
>                                                                         
>                 private String
>                          address;
> 
>                                                                         
>                 private String
>                          zipCode;
>                                                                         
>                 private String city;
> 
>                                                                         
>                 @NotNull
>                                                                         
>                 @Size(min=0, max=20)
>                                                                         
>                 private String
>                          homePhone;
> 
>                                                                         
>                 @NotNull
>                                                                         
>                 @Size(min=0, max=20)
>                                                                         
>                 private String
>                          mobilePhone;
> 
>                                                                         
>                 private String
>                          campaing;
> 
>                                                                         
>                 @NotNull
>                                                                         
>                 private String
>                                                                  
>                 dateForExtract;
> 
> 
> 
> 
> 
> 
>                                                                   --
>                                                                   Best
>                 regards / Med
>                          venlig hilsen
>                                                                   Nino
>                 Martinez
> 
> 
> 
> 
>                                                               --
>                                                               Best
>                 regards / Med venlig
>                          hilsen
>                                                               Nino Martinez
> 
> 
> 
> 
> 
> 
> 
>                                                   --
>                                                   Best regards / Med
>                 venlig hilsen
>                                                   Nino Martinez
> 
> 
> 
> 
>                                               --
>                                               Best regards / Med venlig
>                 hilsen
>                                               Nino Martinez
> 
> 
> 
> 
> 
> 
> 
>                                   --         Best regards / Med venlig
>                 hilsen
>                                   Nino Martinez
> 
> 
> 
> 
>                               --     Best regards / Med venlig hilsen
>                               Nino Martinez
> 
> 
> 
> 
>                          --         Best regards / Med venlig hilsen
>                          Nino Martinez
> 
> 
> 
> 
>                 -- 
>                 Best regards / Med venlig hilsen
>                 Nino Martinez
> 
> 
> 
> 
>         -- 
>         Best regards / Med venlig hilsen
>         Nino Martinez
> 
> 
> 
> 
>     -- 
>     Best regards / Med venlig hilsen
>     Nino Martinez
> 
> 
> 
> 
> -- 
> Best regards / Med venlig hilsen
> Nino Martinez



Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
Okay after adding swagger annotations as an export from my bundle. The
swagger json are now including whatever I describe in the annotations.
However the maven bundle plugin keeps removing my export for
javax.xml.bind.annotation
and so I cannot test if this also have an impact on swagger ignoring
my javax.xml.bind.annotation
configurations, however it does seem logical.. Digging further.


regards Nino

On Tue, Dec 5, 2017 at 8:07 AM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> I've started testing that idea, and it seems to have an impact.. I will
> return once I know more!!
>
> Thanks!
>
> On Mon, Dec 4, 2017 at 5:08 PM, Sergey Beryozkin <sb...@gmail.com>
> wrote:
>
>> CXF Swagger feature itself is not importing Swagger annotations because
>> it does not work with them, I'm not sure, may be you need to have your
>> application bundle exporting the annotations to make the visible...
>>
>> Sergey
>> On 04/12/17 15:06, nino martinez wael wrote:
>>
>>> No, no namespaces....
>>>
>>> And I am still pussled on why it does not do it the "right" way..
>>> Currently I am experimenting putting in io.swagger.annotations BUT they
>>> seem to have no effect on the generated swagger describtion when placed in
>>> our backend models, they are in another bundle, im wondering if the swagger
>>> feature somehow are not able to read the annotations across the bundles,
>>> that would very much explain why its not working..?
>>>
>>> On Mon, Dec 4, 2017 at 11:46 AM, Sergey Beryozkin <sberyozkin@gmail.com
>>> <ma...@gmail.com>> wrote:
>>>
>>>     Nice,
>>>     Just out of curiosity, what does Swagger set the XML Object's
>>>     namespace to ? Is it initialized ?
>>>
>>>     Sergey
>>>
>>>     On 04/12/17 06:03, nino martinez wael wrote:
>>>
>>>         Okay so I've looked into this a bit. And turned the problem
>>>         upside down. Instead of trying to make the cxf swagger feature
>>>         use jackson, just taking a look at the outcome and play around
>>>         trying to change it.. Again if there is any way to see what the
>>>         swagger feature plugin are using runtime to process file with,
>>>         it would very helpfull..
>>>
>>>         It seems that the swagger feature are partially ignoring my
>>>         annotations, so picking up @xmlrootelement but partially
>>>         ignoring the list annotations..
>>>
>>>         @XmlAccessorType(XmlAccessType.FIELD)
>>>         @XmlRootElement(name = "contacts")
>>>         public class MinimalContactWrapper {
>>>
>>>               @XmlElementWrapper(name = "wrap")
>>>               @XmlElement(name = "minimalcontact")
>>>               private List<MinimalContact> contactList;
>>>
>>>               public List<MinimalContact> getMinimalContacts() {
>>>                   return contactList;
>>>               }
>>>
>>>               public void setMinimalContacts(List<MinimalContact>
>>>         minimalContacts) {
>>>                   this.contactList = minimalContacts;
>>>               }
>>>
>>>         }
>>>
>>>
>>>         to
>>>
>>>         @XmlAccessorType(XmlAccessType.FIELD)
>>>         @XmlRootElement(name ="contacts")
>>>         public class MinimalContactWrapper {
>>>
>>>               @XmlElementRef(name ="minimalContact")
>>>               @Valid
>>>         @NotNull
>>>         @Size(min =1)
>>>               private List<MinimalContact>minimalContacts=new
>>> ArrayList<>();
>>>
>>>               public List<MinimalContact> getMinimalContacts() {
>>>                   return minimalContacts;
>>>               }
>>>
>>>               public void setMinimalContacts(List<MinimalContact>
>>>         minimalContacts) {
>>>                   this.minimalContacts = minimalContacts;
>>>               }
>>>
>>>         }
>>>
>>>         Made the xml results required equal in the swagger feature to
>>>         what CXF and enunciate feels it should be... Namely this:
>>>
>>>         <contacts><minimalcontact><dateForExtract>...</dateForExtrac
>>> t><indexNumber>...</indexNumber><accountNumber>...</
>>> accountNumber><queueNumber>...</queueNumber><personalIdentif
>>> icationNumber1>...</personalIdentificationNumber1><firstName
>>> 1>...</firstName1><lastName1>...</lastName1><personalIdentif
>>> icationNumber2>...</personalIdentificationNumber2><firstName
>>> 2>...</firstName2><lastName2>...</lastName2><address>...</
>>> address><zipCode>...</zipCode><city>...</city><homePhone>...
>>> </homePhone><mobilePhone>...</mobilePhone><id>...</id><
>>> campaignId>...</campaignId></minimalcontact></contacts>
>>>
>>>
>>>         Instead of something like this:
>>>
>>>         <?xml version="1.0" encoding="UTF-8"?>
>>>         <contacts>
>>>         <minimalContacts>
>>>         <minimalcontact>
>>>         <campaignId>string</campaignId>
>>>         <id>0</id>
>>>         <indexNumber>string</indexNumber>
>>>         <accountNumber>string</accountNumber>
>>>         <queueNumber>string</queueNumber>
>>>         <balance>0</balance>
>>>         <personalIdentificationNumber1>string</personalIdentificatio
>>> nNumber1>
>>>         <firstName1>string</firstName1>
>>>         <lastName1>string</lastName1>
>>>         <personalIdentificationNumber2>string</personalIdentificatio
>>> nNumber2>
>>>         <firstName2>string</firstName2>
>>>         <lastName2>string</lastName2>
>>>         <address>string</address>
>>>         <zipCode>string</zipCode>
>>>         <city>string</city>
>>>         <homePhone>string</homePhone>
>>>         <mobilePhone>string</mobilePhone>
>>>         <dateForExtract>string</dateForExtract>
>>>         </minimalcontact>
>>>         </minimalContacts>
>>>         </contacts>
>>>
>>>
>>>
>>>
>>>         On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael
>>>         <nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>
>>>         <mailto:nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>>> wrote:
>>>
>>>              No change without setting swagger2customizer..
>>>
>>>              I'll let it rest for a day..
>>>
>>>              On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael
>>>              <nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>
>>>         <mailto:nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>>>
>>>              wrote:
>>>
>>>                  yup have set skip.default.json.provider.re
>>>         <http://skip.default.json.provider.re>
>>>                  <http://skip.default.json.provider.re
>>>         <http://skip.default.json.provider.re>>gistration..
>>>
>>>                  But no matter what I do it has no effect on what the
>>>         swagger
>>>                  feature generates.. Where it's changing the json
>>>         provider or
>>>                  removing it all together..
>>>
>>>                  Trying it now without setting swagger2Customizer..
>>>
>>>
>>>                  On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin
>>>                  <sberyozkin@gmail.com <ma...@gmail.com>
>>>         <mailto:sberyozkin@gmail.com <ma...@gmail.com>>>
>>> wrote:
>>>
>>>                      Just FYI, removing Jettison lib will ensure it's not
>>>                      auto-installed by CXF, and if it is not possible to
>>>         remove
>>>                      then the other option is to set
>>>                      a "skip.default.json.provider.re
>>>         <http://skip.default.json.provider.re>
>>>                      <http://skip.default.json.provider.re
>>>         <http://skip.default.json.provider.re>>gistration" bus property.
>>>
>>>                      However it's not related to Swagger at all,
>>> Jettison if
>>>                      installed will only affect the way JSON is
>>>         generated for
>>>                      service responses
>>>
>>>                      Sergey
>>>
>>>                      On 30/11/17 11:57, nino martinez wael wrote:
>>>
>>>                          It does not seem to be a jettison problem.. And
>>>         neither
>>>                          an problem with
>>>                          jackson versions, I just wiped all jettison and
>>>                          jackson(except 2.9.1 )
>>>                          versions from my running environment..
>>>
>>>                          Looking into of it could be something with
>>>                          JacksonJaxbJsonProvider vs
>>>                          JacksonJsonProvider
>>>
>>>                          On Thu, Nov 30, 2017 at 12:45 PM, nino martinez
>>>         wael <
>>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gma
>>> il.com>
>>>                          <mailto:nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>>> wrote:
>>>
>>>                              IS there somewhere while on runtime where I
>>> can
>>>                              print current registered
>>>                              providers for cxf, I have a feeling that it
>>>         somehow
>>>                              are using jettison for
>>>                              json...
>>>
>>>                              On Thu, Nov 30, 2017 at 12:17 PM, nino
>>>         martinez wael <
>>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gma
>>> il.com>
>>>                              <mailto:nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>>> wrote:
>>>
>>>                                  Okay I will check into libraries whats
>>>         on class
>>>                                  path.. I have the same
>>>                                  gut feeling that it could be something
>>>         like that.
>>>
>>>                                  I have enunciate up and working on the
>>>         side..
>>>
>>>                                  On Thu, Nov 30, 2017 at 11:18 AM, Sergey
>>>                                  Beryozkin <sberyozkin@gmail.com
>>>         <ma...@gmail.com>
>>>                                  <mailto:sberyozkin@gmail.com
>>>
>>>         <ma...@gmail.com>>>
>>>
>>>                                  wrote:
>>>
>>>                                      Yes, the minor Swagger version
>>>         caused this
>>>                                      change, what was working
>>>                                      3.1.x, specifically the serializers
>>>                                      approach, was not working any longer
>>>                                      with the new Swagger version, hence
>>>         this update.
>>>
>>>                                      I honestly do not know why exactly
>>>         a JAXB
>>>                                      annotated bean is not
>>>                                      correctly represented in the
>>>                                      Swagger-generated #definitions,
>>>         it's obviously
>>>                                      something to do with the way
>>>         Jackson and
>>>                                      JAXB interacts.
>>>                                      Perhaps Jackson you register with
>>>         DOSGI is
>>>                                      not the same version
>>>                                      installed by the CXF swagger2
>>> feature,
>>>                                      perhaps some diff JAXB versions are
>>>                                      involved, please keep experimenting
>>>
>>>                                      Sergey
>>>
>>>
>>> defaultSwagger2Serializers.setJavadocProvider(new
>>>                                      JavaDocProvider());
>>>
>>>
>>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>>
>>>                                          I think this could be the same:
>>>
>>>                                          Swagger2Customizer
>>>         swagger2Customizer =
>>>                                          new Swagger2Customizer();
>>>
>>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>>
>>>
>>>
>>> swagger.setCustomizer(swagger2Customizer);
>>>
>>>
>>>                                          I have setup CXF to use JACKSON
>>>                                          (JacksonJaxbJsonProvider)
>>>
>>>
>>>                                          How can I tell swagger to do
>>>         the same? I
>>>                                          think that's the problem..
>>>
>>>
>>>
>>>                                          regards Nino
>>>
>>>
>>>
>>>
>>>                                          On Thu, Nov 30, 2017 at 10:50
>>>         AM, nino
>>>                                          martinez wael <
>>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gma
>>> il.com>
>>>                                                 <mailto:
>>> nino.martinez.wael@gmail.com
>>>         <ma...@gmail.com>>>
>>>                                          wrote:
>>>
>>>                                          Im wondering if this could be
>>>         the problem :
>>>
>>>
>>>         https://github.com/swagger-api/swagger-core/issues/960
>>>         <https://github.com/swagger-api/swagger-core/issues/960>
>>>                                                     <
>>> https://github.com/swagger-api/swagger-core/issues/960
>>>         <https://github.com/swagger-api/swagger-core/issues/960>>
>>>
>>>                                              On Thu, Nov 30, 2017 at
>>>         10:38 AM,
>>>                                              nino martinez wael <
>>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gma
>>> il.com>
>>>                                                     <mailto:
>>> nino.martinez.wael@gmail.com
>>>
>>>         <ma...@gmail.com>>>
>>>
>>>                                              wrote:
>>>
>>>                                              So I have a bean CXF
>>>         accepts only
>>>                                              this interpretation for my
>>>         endpoint:
>>>
>>>
>>>                                                  {
>>>                                                         "contactList": [
>>>                                                             {
>>>
>>>  "campaignId": "2",
>>>                                                                 "id":"",
>>>
>>>  "indexNumber": "",
>>>
>>>  "accountNumber":
>>>                                                  "232",
>>>
>>>  "queueNumber": "0",
>>>
>>>  "balance": 0,
>>>
>>>                                        "personalIdentificationNumber1":
>>>                                                  "string",
>>>
>>>  "firstName1":
>>>                                                  "string",
>>>
>>> "lastName1":
>>>                                                  "string",
>>>
>>>                                        "personalIdentificationNumber2":
>>>                                                  "string",
>>>
>>>  "firstName2":
>>>                                                  "string",
>>>
>>> "lastName2":
>>>                                                  "string",
>>>
>>>  "address": "string",
>>>
>>>  "zipCode": "string",
>>>                                                                 "city":
>>>         "string",
>>>
>>>  "homePhone": "+4521",
>>>
>>>  "mobilePhone":
>>>                                                  "+45122",
>>>
>>>  "campaing": "string",
>>>
>>>  "dateForExtract":
>>>                                                  "string"
>>>
>>>                                                             }
>>>                                                         ]
>>>                                                  }
>>>
>>>                                                  However the swagger
>>>         feature are
>>>                                                  generating this as
>>> example:
>>>
>>>                                                  {
>>>                                                       "minimalContacts":
>>> [
>>>                                                         {
>>>                                                           "campaignId":
>>>         "string",
>>>                                                           "id": 0,
>>>                                                           "indexNumber":
>>>         "string",
>>>
>>>  "accountNumber": "string",
>>>                                                           "queueNumber":
>>>         "string",
>>>                                                           "balance": 0,
>>>
>>>                                  "personalIdentificationNumber1":
>>>                                                  "string",
>>>                                                           "firstName1":
>>>         "string",
>>>                                                           "lastName1":
>>>         "string",
>>>
>>>                                  "personalIdentificationNumber2":
>>>                                                  "string",
>>>                                                           "firstName2":
>>>         "string",
>>>                                                           "lastName2":
>>>         "string",
>>>                                                           "address":
>>>         "string",
>>>                                                           "zipCode":
>>>         "string",
>>>                                                           "city":
>>> "string",
>>>                                                           "homePhone":
>>>         "string",
>>>                                                           "mobilePhone":
>>>         "string",
>>>                                                           "campaing":
>>>         "string",
>>>
>>>  "dateForExtract": "string"
>>>                                                         }
>>>                                                       ]
>>>                                                  }
>>>
>>>                                                  MinimalContactWrapper
>>>
>>>
>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>                                                  @XmlRootElement(name =
>>>         "contacts")
>>>                                                  public class
>>>         MinimalContactWrapper {
>>>
>>>
>>> @XmlElementWrapper
>>>                                                         @XmlElementRef
>>>                                                         @Valid
>>>                                                         @NotNull
>>>                                                         @Size(min = 1)
>>>                                                         private
>>>                                                  List<MinimalContact>
>>>                                                  contactList=new
>>>         ArrayList<>();
>>>
>>>                                                         public
>>>                                                  List<MinimalContact>
>>>                                                  getMinimalContacts() {
>>>                                                             return
>>>         contactList;
>>>                                                         }
>>>
>>>                                                         public void
>>>
>>> setMinimalContacts(List<MinimalContact>
>>>                                                  minimalContacts) {
>>>
>>>  this.contactList =
>>>                                                  minimalContacts;
>>>                                                         }
>>>
>>>
>>>                                                  MinimalContact
>>>
>>>
>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>
>>> @XmlRootElement(name="minimalcontact")
>>>                                                  public class
>>>         MinimalContact {
>>>
>>>                                                         @NotNull
>>>                                                         @Size(min=1,
>>>         max=240)
>>>                                                         private String
>>>         campaignId;
>>>
>>>                                                         private Long id;
>>>                                                         @Size(min=1,
>>>         max=240)
>>>                                                         private String
>>>         indexNumber;
>>>                                                         @Size(min=1,
>>> max=20)
>>>                                                         @NotNull
>>>                                                         private String
>>>         accountNumber;
>>>                                                         @Size(min=1,
>>> max=8)
>>>                                                         private String
>>>         queueNumber;
>>>
>>>
>>>                                                         private Float
>>>         balance;
>>>
>>>                                                         @Size(min=0,
>>> max=11)
>>>                                                         private String
>>>
>>> personalIdentificationNumber1;
>>>
>>>                                                         @Size(min=0,
>>> max=55)
>>>                                                         private String
>>>         firstName1;
>>>
>>>                                                         @Size(min=0,
>>> max=55)
>>>                                                         private String
>>>         lastName1;
>>>
>>>                                                         @Size(min=0,
>>> max=11)
>>>                                                         private String
>>>
>>> personalIdentificationNumber2;
>>>
>>>                                                         private String
>>>         firstName2;
>>>
>>>                                                         private String
>>>         lastName2;
>>>
>>>                                                         private String
>>>         address;
>>>
>>>                                                         private String
>>>         zipCode;
>>>                                                         private String
>>> city;
>>>
>>>                                                         @NotNull
>>>                                                         @Size(min=0,
>>> max=20)
>>>                                                         private String
>>>         homePhone;
>>>
>>>                                                         @NotNull
>>>                                                         @Size(min=0,
>>> max=20)
>>>                                                         private String
>>>         mobilePhone;
>>>
>>>                                                         private String
>>>         campaing;
>>>
>>>                                                         @NotNull
>>>                                                         private String
>>>                                                  dateForExtract;
>>>
>>>
>>>
>>>
>>>
>>>
>>>                                                  --
>>>                                                  Best regards / Med
>>>         venlig hilsen
>>>                                                  Nino Martinez
>>>
>>>
>>>
>>>
>>>                                              --
>>>                                              Best regards / Med venlig
>>>         hilsen
>>>                                              Nino Martinez
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>                                  --
>>>                                  Best regards / Med venlig hilsen
>>>                                  Nino Martinez
>>>
>>>
>>>
>>>
>>>                              --
>>>                              Best regards / Med venlig hilsen
>>>                              Nino Martinez
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>                  --         Best regards / Med venlig hilsen
>>>                  Nino Martinez
>>>
>>>
>>>
>>>
>>>              --     Best regards / Med venlig hilsen
>>>              Nino Martinez
>>>
>>>
>>>
>>>
>>>         --         Best regards / Med venlig hilsen
>>>         Nino Martinez
>>>
>>>
>>>
>>>
>>> --
>>> Best regards / Med venlig hilsen
>>> Nino Martinez
>>>
>>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
I've started testing that idea, and it seems to have an impact.. I will
return once I know more!!

Thanks!

On Mon, Dec 4, 2017 at 5:08 PM, Sergey Beryozkin <sb...@gmail.com>
wrote:

> CXF Swagger feature itself is not importing Swagger annotations because it
> does not work with them, I'm not sure, may be you need to have your
> application bundle exporting the annotations to make the visible...
>
> Sergey
> On 04/12/17 15:06, nino martinez wael wrote:
>
>> No, no namespaces....
>>
>> And I am still pussled on why it does not do it the "right" way..
>> Currently I am experimenting putting in io.swagger.annotations BUT they
>> seem to have no effect on the generated swagger describtion when placed in
>> our backend models, they are in another bundle, im wondering if the swagger
>> feature somehow are not able to read the annotations across the bundles,
>> that would very much explain why its not working..?
>>
>> On Mon, Dec 4, 2017 at 11:46 AM, Sergey Beryozkin <sberyozkin@gmail.com
>> <ma...@gmail.com>> wrote:
>>
>>     Nice,
>>     Just out of curiosity, what does Swagger set the XML Object's
>>     namespace to ? Is it initialized ?
>>
>>     Sergey
>>
>>     On 04/12/17 06:03, nino martinez wael wrote:
>>
>>         Okay so I've looked into this a bit. And turned the problem
>>         upside down. Instead of trying to make the cxf swagger feature
>>         use jackson, just taking a look at the outcome and play around
>>         trying to change it.. Again if there is any way to see what the
>>         swagger feature plugin are using runtime to process file with,
>>         it would very helpfull..
>>
>>         It seems that the swagger feature are partially ignoring my
>>         annotations, so picking up @xmlrootelement but partially
>>         ignoring the list annotations..
>>
>>         @XmlAccessorType(XmlAccessType.FIELD)
>>         @XmlRootElement(name = "contacts")
>>         public class MinimalContactWrapper {
>>
>>               @XmlElementWrapper(name = "wrap")
>>               @XmlElement(name = "minimalcontact")
>>               private List<MinimalContact> contactList;
>>
>>               public List<MinimalContact> getMinimalContacts() {
>>                   return contactList;
>>               }
>>
>>               public void setMinimalContacts(List<MinimalContact>
>>         minimalContacts) {
>>                   this.contactList = minimalContacts;
>>               }
>>
>>         }
>>
>>
>>         to
>>
>>         @XmlAccessorType(XmlAccessType.FIELD)
>>         @XmlRootElement(name ="contacts")
>>         public class MinimalContactWrapper {
>>
>>               @XmlElementRef(name ="minimalContact")
>>               @Valid
>>         @NotNull
>>         @Size(min =1)
>>               private List<MinimalContact>minimalContacts=new
>> ArrayList<>();
>>
>>               public List<MinimalContact> getMinimalContacts() {
>>                   return minimalContacts;
>>               }
>>
>>               public void setMinimalContacts(List<MinimalContact>
>>         minimalContacts) {
>>                   this.minimalContacts = minimalContacts;
>>               }
>>
>>         }
>>
>>         Made the xml results required equal in the swagger feature to
>>         what CXF and enunciate feels it should be... Namely this:
>>
>>         <contacts><minimalcontact><dateForExtract>...</dateForExtrac
>> t><indexNumber>...</indexNumber><accountNumber>...
>> </accountNumber><queueNumber>...</queueNumber><personalIdent
>> ificationNumber1>...</personalIdentificationNumber1><
>> firstName1>...</firstName1><lastName1>...</lastName1><person
>> alIdentificationNumber2>...</personalIdentificationNumber2><
>> firstName2>...</firstName2><lastName2>...</lastName2><addres
>> s>...</address><zipCode>...</zipCode><city>...</city><homeP
>> hone>...</homePhone><mobilePhone>...</mobilePhone><id>...</
>> id><campaignId>...</campaignId></minimalcontact></contacts>
>>
>>
>>         Instead of something like this:
>>
>>         <?xml version="1.0" encoding="UTF-8"?>
>>         <contacts>
>>         <minimalContacts>
>>         <minimalcontact>
>>         <campaignId>string</campaignId>
>>         <id>0</id>
>>         <indexNumber>string</indexNumber>
>>         <accountNumber>string</accountNumber>
>>         <queueNumber>string</queueNumber>
>>         <balance>0</balance>
>>         <personalIdentificationNumber1>string</personalIdentificatio
>> nNumber1>
>>         <firstName1>string</firstName1>
>>         <lastName1>string</lastName1>
>>         <personalIdentificationNumber2>string</personalIdentificatio
>> nNumber2>
>>         <firstName2>string</firstName2>
>>         <lastName2>string</lastName2>
>>         <address>string</address>
>>         <zipCode>string</zipCode>
>>         <city>string</city>
>>         <homePhone>string</homePhone>
>>         <mobilePhone>string</mobilePhone>
>>         <dateForExtract>string</dateForExtract>
>>         </minimalcontact>
>>         </minimalContacts>
>>         </contacts>
>>
>>
>>
>>
>>         On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael
>>         <nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>
>>         <mailto:nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>>> wrote:
>>
>>              No change without setting swagger2customizer..
>>
>>              I'll let it rest for a day..
>>
>>              On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael
>>              <nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>
>>         <mailto:nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>>>
>>              wrote:
>>
>>                  yup have set skip.default.json.provider.re
>>         <http://skip.default.json.provider.re>
>>                  <http://skip.default.json.provider.re
>>         <http://skip.default.json.provider.re>>gistration..
>>
>>                  But no matter what I do it has no effect on what the
>>         swagger
>>                  feature generates.. Where it's changing the json
>>         provider or
>>                  removing it all together..
>>
>>                  Trying it now without setting swagger2Customizer..
>>
>>
>>                  On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin
>>                  <sberyozkin@gmail.com <ma...@gmail.com>
>>         <mailto:sberyozkin@gmail.com <ma...@gmail.com>>>
>> wrote:
>>
>>                      Just FYI, removing Jettison lib will ensure it's not
>>                      auto-installed by CXF, and if it is not possible to
>>         remove
>>                      then the other option is to set
>>                      a "skip.default.json.provider.re
>>         <http://skip.default.json.provider.re>
>>                      <http://skip.default.json.provider.re
>>         <http://skip.default.json.provider.re>>gistration" bus property.
>>
>>                      However it's not related to Swagger at all, Jettison
>> if
>>                      installed will only affect the way JSON is
>>         generated for
>>                      service responses
>>
>>                      Sergey
>>
>>                      On 30/11/17 11:57, nino martinez wael wrote:
>>
>>                          It does not seem to be a jettison problem.. And
>>         neither
>>                          an problem with
>>                          jackson versions, I just wiped all jettison and
>>                          jackson(except 2.9.1 )
>>                          versions from my running environment..
>>
>>                          Looking into of it could be something with
>>                          JacksonJaxbJsonProvider vs
>>                          JacksonJsonProvider
>>
>>                          On Thu, Nov 30, 2017 at 12:45 PM, nino martinez
>>         wael <
>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gmail.com
>> >
>>                          <mailto:nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>>> wrote:
>>
>>                              IS there somewhere while on runtime where I
>> can
>>                              print current registered
>>                              providers for cxf, I have a feeling that it
>>         somehow
>>                              are using jettison for
>>                              json...
>>
>>                              On Thu, Nov 30, 2017 at 12:17 PM, nino
>>         martinez wael <
>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gmail.com
>> >
>>                              <mailto:nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>>> wrote:
>>
>>                                  Okay I will check into libraries whats
>>         on class
>>                                  path.. I have the same
>>                                  gut feeling that it could be something
>>         like that.
>>
>>                                  I have enunciate up and working on the
>>         side..
>>
>>                                  On Thu, Nov 30, 2017 at 11:18 AM, Sergey
>>                                  Beryozkin <sberyozkin@gmail.com
>>         <ma...@gmail.com>
>>                                  <mailto:sberyozkin@gmail.com
>>
>>         <ma...@gmail.com>>>
>>
>>                                  wrote:
>>
>>                                      Yes, the minor Swagger version
>>         caused this
>>                                      change, what was working
>>                                      3.1.x, specifically the serializers
>>                                      approach, was not working any longer
>>                                      with the new Swagger version, hence
>>         this update.
>>
>>                                      I honestly do not know why exactly
>>         a JAXB
>>                                      annotated bean is not
>>                                      correctly represented in the
>>                                      Swagger-generated #definitions,
>>         it's obviously
>>                                      something to do with the way
>>         Jackson and
>>                                      JAXB interacts.
>>                                      Perhaps Jackson you register with
>>         DOSGI is
>>                                      not the same version
>>                                      installed by the CXF swagger2
>> feature,
>>                                      perhaps some diff JAXB versions are
>>                                      involved, please keep experimenting
>>
>>                                      Sergey
>>
>>                                             defaultSwagger2Serializers.set
>> JavadocProvider(new
>>                                      JavaDocProvider());
>>
>>
>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>
>>                                          I think this could be the same:
>>
>>                                          Swagger2Customizer
>>         swagger2Customizer =
>>                                          new Swagger2Customizer();
>>
>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>
>>
>>
>> swagger.setCustomizer(swagger2Customizer);
>>
>>
>>                                          I have setup CXF to use JACKSON
>>                                          (JacksonJaxbJsonProvider)
>>
>>
>>                                          How can I tell swagger to do
>>         the same? I
>>                                          think that's the problem..
>>
>>
>>
>>                                          regards Nino
>>
>>
>>
>>
>>                                          On Thu, Nov 30, 2017 at 10:50
>>         AM, nino
>>                                          martinez wael <
>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gmail.com
>> >
>>                                                 <mailto:
>> nino.martinez.wael@gmail.com
>>         <ma...@gmail.com>>>
>>                                          wrote:
>>
>>                                          Im wondering if this could be
>>         the problem :
>>
>>
>>         https://github.com/swagger-api/swagger-core/issues/960
>>         <https://github.com/swagger-api/swagger-core/issues/960>
>>                                                     <
>> https://github.com/swagger-api/swagger-core/issues/960
>>         <https://github.com/swagger-api/swagger-core/issues/960>>
>>
>>                                              On Thu, Nov 30, 2017 at
>>         10:38 AM,
>>                                              nino martinez wael <
>>         nino.martinez.wael@gmail.com <mailto:nino.martinez.wael@gmail.com
>> >
>>                                                     <mailto:
>> nino.martinez.wael@gmail.com
>>
>>         <ma...@gmail.com>>>
>>
>>                                              wrote:
>>
>>                                              So I have a bean CXF
>>         accepts only
>>                                              this interpretation for my
>>         endpoint:
>>
>>
>>                                                  {
>>                                                         "contactList": [
>>                                                             {
>>
>>  "campaignId": "2",
>>                                                                 "id":"",
>>
>>  "indexNumber": "",
>>
>>  "accountNumber":
>>                                                  "232",
>>
>>  "queueNumber": "0",
>>
>>  "balance": 0,
>>
>>                                      "personalIdentificationNumber1":
>>                                                  "string",
>>
>>  "firstName1":
>>                                                  "string",
>>
>> "lastName1":
>>                                                  "string",
>>
>>                                      "personalIdentificationNumber2":
>>                                                  "string",
>>
>>  "firstName2":
>>                                                  "string",
>>
>> "lastName2":
>>                                                  "string",
>>
>>  "address": "string",
>>
>>  "zipCode": "string",
>>                                                                 "city":
>>         "string",
>>
>>  "homePhone": "+4521",
>>
>>  "mobilePhone":
>>                                                  "+45122",
>>
>>  "campaing": "string",
>>
>>  "dateForExtract":
>>                                                  "string"
>>
>>                                                             }
>>                                                         ]
>>                                                  }
>>
>>                                                  However the swagger
>>         feature are
>>                                                  generating this as
>> example:
>>
>>                                                  {
>>                                                       "minimalContacts": [
>>                                                         {
>>                                                           "campaignId":
>>         "string",
>>                                                           "id": 0,
>>                                                           "indexNumber":
>>         "string",
>>
>>  "accountNumber": "string",
>>                                                           "queueNumber":
>>         "string",
>>                                                           "balance": 0,
>>
>>                                "personalIdentificationNumber1":
>>                                                  "string",
>>                                                           "firstName1":
>>         "string",
>>                                                           "lastName1":
>>         "string",
>>
>>                                "personalIdentificationNumber2":
>>                                                  "string",
>>                                                           "firstName2":
>>         "string",
>>                                                           "lastName2":
>>         "string",
>>                                                           "address":
>>         "string",
>>                                                           "zipCode":
>>         "string",
>>                                                           "city":
>> "string",
>>                                                           "homePhone":
>>         "string",
>>                                                           "mobilePhone":
>>         "string",
>>                                                           "campaing":
>>         "string",
>>
>>  "dateForExtract": "string"
>>                                                         }
>>                                                       ]
>>                                                  }
>>
>>                                                  MinimalContactWrapper
>>
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>>                                                  @XmlRootElement(name =
>>         "contacts")
>>                                                  public class
>>         MinimalContactWrapper {
>>
>>                                                         @XmlElementWrapper
>>                                                         @XmlElementRef
>>                                                         @Valid
>>                                                         @NotNull
>>                                                         @Size(min = 1)
>>                                                         private
>>                                                  List<MinimalContact>
>>                                                  contactList=new
>>         ArrayList<>();
>>
>>                                                         public
>>                                                  List<MinimalContact>
>>                                                  getMinimalContacts() {
>>                                                             return
>>         contactList;
>>                                                         }
>>
>>                                                         public void
>>
>> setMinimalContacts(List<MinimalContact>
>>                                                  minimalContacts) {
>>
>>  this.contactList =
>>                                                  minimalContacts;
>>                                                         }
>>
>>
>>                                                  MinimalContact
>>
>>
>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>
>> @XmlRootElement(name="minimalcontact")
>>                                                  public class
>>         MinimalContact {
>>
>>                                                         @NotNull
>>                                                         @Size(min=1,
>>         max=240)
>>                                                         private String
>>         campaignId;
>>
>>                                                         private Long id;
>>                                                         @Size(min=1,
>>         max=240)
>>                                                         private String
>>         indexNumber;
>>                                                         @Size(min=1,
>> max=20)
>>                                                         @NotNull
>>                                                         private String
>>         accountNumber;
>>                                                         @Size(min=1,
>> max=8)
>>                                                         private String
>>         queueNumber;
>>
>>
>>                                                         private Float
>>         balance;
>>
>>                                                         @Size(min=0,
>> max=11)
>>                                                         private String
>>
>> personalIdentificationNumber1;
>>
>>                                                         @Size(min=0,
>> max=55)
>>                                                         private String
>>         firstName1;
>>
>>                                                         @Size(min=0,
>> max=55)
>>                                                         private String
>>         lastName1;
>>
>>                                                         @Size(min=0,
>> max=11)
>>                                                         private String
>>
>> personalIdentificationNumber2;
>>
>>                                                         private String
>>         firstName2;
>>
>>                                                         private String
>>         lastName2;
>>
>>                                                         private String
>>         address;
>>
>>                                                         private String
>>         zipCode;
>>                                                         private String
>> city;
>>
>>                                                         @NotNull
>>                                                         @Size(min=0,
>> max=20)
>>                                                         private String
>>         homePhone;
>>
>>                                                         @NotNull
>>                                                         @Size(min=0,
>> max=20)
>>                                                         private String
>>         mobilePhone;
>>
>>                                                         private String
>>         campaing;
>>
>>                                                         @NotNull
>>                                                         private String
>>                                                  dateForExtract;
>>
>>
>>
>>
>>
>>
>>                                                  --
>>                                                  Best regards / Med
>>         venlig hilsen
>>                                                  Nino Martinez
>>
>>
>>
>>
>>                                              --
>>                                              Best regards / Med venlig
>>         hilsen
>>                                              Nino Martinez
>>
>>
>>
>>
>>
>>
>>
>>                                  --
>>                                  Best regards / Med venlig hilsen
>>                                  Nino Martinez
>>
>>
>>
>>
>>                              --
>>                              Best regards / Med venlig hilsen
>>                              Nino Martinez
>>
>>
>>
>>
>>
>>
>>
>>                  --         Best regards / Med venlig hilsen
>>                  Nino Martinez
>>
>>
>>
>>
>>              --     Best regards / Med venlig hilsen
>>              Nino Martinez
>>
>>
>>
>>
>>         --         Best regards / Med venlig hilsen
>>         Nino Martinez
>>
>>
>>
>>
>> --
>> Best regards / Med venlig hilsen
>> Nino Martinez
>>
>


-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by Sergey Beryozkin <sb...@gmail.com>.
CXF Swagger feature itself is not importing Swagger annotations because 
it does not work with them, I'm not sure, may be you need to have your 
application bundle exporting the annotations to make the visible...

Sergey
On 04/12/17 15:06, nino martinez wael wrote:
> No, no namespaces....
> 
> And I am still pussled on why it does not do it the "right" way.. 
> Currently I am experimenting putting in io.swagger.annotations BUT they 
> seem to have no effect on the generated swagger describtion when placed 
> in our backend models, they are in another bundle, im wondering if the 
> swagger feature somehow are not able to read the annotations across the 
> bundles, that would very much explain why its not working..?
> 
> On Mon, Dec 4, 2017 at 11:46 AM, Sergey Beryozkin <sberyozkin@gmail.com 
> <ma...@gmail.com>> wrote:
> 
>     Nice,
>     Just out of curiosity, what does Swagger set the XML Object's
>     namespace to ? Is it initialized ?
> 
>     Sergey
> 
>     On 04/12/17 06:03, nino martinez wael wrote:
> 
>         Okay so I've looked into this a bit. And turned the problem
>         upside down. Instead of trying to make the cxf swagger feature
>         use jackson, just taking a look at the outcome and play around
>         trying to change it.. Again if there is any way to see what the
>         swagger feature plugin are using runtime to process file with,
>         it would very helpfull..
> 
>         It seems that the swagger feature are partially ignoring my
>         annotations, so picking up @xmlrootelement but partially
>         ignoring the list annotations..
> 
>         @XmlAccessorType(XmlAccessType.FIELD)
>         @XmlRootElement(name = "contacts")
>         public class MinimalContactWrapper {
> 
>               @XmlElementWrapper(name = "wrap")
>               @XmlElement(name = "minimalcontact")
>               private List<MinimalContact> contactList;
> 
>               public List<MinimalContact> getMinimalContacts() {
>                   return contactList;
>               }
> 
>               public void setMinimalContacts(List<MinimalContact>
>         minimalContacts) {
>                   this.contactList = minimalContacts;
>               }
> 
>         }
> 
> 
>         to
> 
>         @XmlAccessorType(XmlAccessType.FIELD)
>         @XmlRootElement(name ="contacts")
>         public class MinimalContactWrapper {
> 
>               @XmlElementRef(name ="minimalContact")
>               @Valid
>         @NotNull
>         @Size(min =1)
>               private List<MinimalContact>minimalContacts=new ArrayList<>();
> 
>               public List<MinimalContact> getMinimalContacts() {
>                   return minimalContacts;
>               }
> 
>               public void setMinimalContacts(List<MinimalContact>
>         minimalContacts) {
>                   this.minimalContacts = minimalContacts;
>               }
> 
>         }
> 
>         Made the xml results required equal in the swagger feature to
>         what CXF and enunciate feels it should be... Namely this:
> 
>         <contacts><minimalcontact><dateForExtract>...</dateForExtract><indexNumber>...</indexNumber><accountNumber>...</accountNumber><queueNumber>...</queueNumber><personalIdentificationNumber1>...</personalIdentificationNumber1><firstName1>...</firstName1><lastName1>...</lastName1><personalIdentificationNumber2>...</personalIdentificationNumber2><firstName2>...</firstName2><lastName2>...</lastName2><address>...</address><zipCode>...</zipCode><city>...</city><homePhone>...</homePhone><mobilePhone>...</mobilePhone><id>...</id><campaignId>...</campaignId></minimalcontact></contacts>
> 
> 
>         Instead of something like this:
> 
>         <?xml version="1.0" encoding="UTF-8"?>
>         <contacts>
>         <minimalContacts>
>         <minimalcontact>
>         <campaignId>string</campaignId>
>         <id>0</id>
>         <indexNumber>string</indexNumber>
>         <accountNumber>string</accountNumber>
>         <queueNumber>string</queueNumber>
>         <balance>0</balance>
>         <personalIdentificationNumber1>string</personalIdentificationNumber1>
>         <firstName1>string</firstName1>
>         <lastName1>string</lastName1>
>         <personalIdentificationNumber2>string</personalIdentificationNumber2>
>         <firstName2>string</firstName2>
>         <lastName2>string</lastName2>
>         <address>string</address>
>         <zipCode>string</zipCode>
>         <city>string</city>
>         <homePhone>string</homePhone>
>         <mobilePhone>string</mobilePhone>
>         <dateForExtract>string</dateForExtract>
>         </minimalcontact>
>         </minimalContacts>
>         </contacts>
> 
> 
> 
> 
>         On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael
>         <nino.martinez.wael@gmail.com
>         <ma...@gmail.com>
>         <mailto:nino.martinez.wael@gmail.com
>         <ma...@gmail.com>>> wrote:
> 
>              No change without setting swagger2customizer..
> 
>              I'll let it rest for a day..
> 
>              On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael
>              <nino.martinez.wael@gmail.com
>         <ma...@gmail.com>
>         <mailto:nino.martinez.wael@gmail.com
>         <ma...@gmail.com>>>
>              wrote:
> 
>                  yup have set skip.default.json.provider.re
>         <http://skip.default.json.provider.re>
>                  <http://skip.default.json.provider.re
>         <http://skip.default.json.provider.re>>gistration..
> 
>                  But no matter what I do it has no effect on what the
>         swagger
>                  feature generates.. Where it's changing the json
>         provider or
>                  removing it all together..
> 
>                  Trying it now without setting swagger2Customizer..
> 
> 
>                  On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin
>                  <sberyozkin@gmail.com <ma...@gmail.com>
>         <mailto:sberyozkin@gmail.com <ma...@gmail.com>>> wrote:
> 
>                      Just FYI, removing Jettison lib will ensure it's not
>                      auto-installed by CXF, and if it is not possible to
>         remove
>                      then the other option is to set
>                      a "skip.default.json.provider.re
>         <http://skip.default.json.provider.re>
>                      <http://skip.default.json.provider.re
>         <http://skip.default.json.provider.re>>gistration" bus property.
> 
>                      However it's not related to Swagger at all, Jettison if
>                      installed will only affect the way JSON is
>         generated for
>                      service responses
> 
>                      Sergey
> 
>                      On 30/11/17 11:57, nino martinez wael wrote:
> 
>                          It does not seem to be a jettison problem.. And
>         neither
>                          an problem with
>                          jackson versions, I just wiped all jettison and
>                          jackson(except 2.9.1 )
>                          versions from my running environment..
> 
>                          Looking into of it could be something with
>                          JacksonJaxbJsonProvider vs
>                          JacksonJsonProvider
> 
>                          On Thu, Nov 30, 2017 at 12:45 PM, nino martinez
>         wael <
>         nino.martinez.wael@gmail.com <ma...@gmail.com>
>                          <mailto:nino.martinez.wael@gmail.com
>         <ma...@gmail.com>>> wrote:
> 
>                              IS there somewhere while on runtime where I can
>                              print current registered
>                              providers for cxf, I have a feeling that it
>         somehow
>                              are using jettison for
>                              json...
> 
>                              On Thu, Nov 30, 2017 at 12:17 PM, nino
>         martinez wael <
>         nino.martinez.wael@gmail.com <ma...@gmail.com>
>                              <mailto:nino.martinez.wael@gmail.com
>         <ma...@gmail.com>>> wrote:
> 
>                                  Okay I will check into libraries whats
>         on class
>                                  path.. I have the same
>                                  gut feeling that it could be something
>         like that.
> 
>                                  I have enunciate up and working on the
>         side..
> 
>                                  On Thu, Nov 30, 2017 at 11:18 AM, Sergey
>                                  Beryozkin <sberyozkin@gmail.com
>         <ma...@gmail.com>
>                                  <mailto:sberyozkin@gmail.com
>         <ma...@gmail.com>>>
> 
>                                  wrote:
> 
>                                      Yes, the minor Swagger version
>         caused this
>                                      change, what was working
>                                      3.1.x, specifically the serializers
>                                      approach, was not working any longer
>                                      with the new Swagger version, hence
>         this update.
> 
>                                      I honestly do not know why exactly
>         a JAXB
>                                      annotated bean is not
>                                      correctly represented in the
>                                      Swagger-generated #definitions,
>         it's obviously
>                                      something to do with the way
>         Jackson and
>                                      JAXB interacts.
>                                      Perhaps Jackson you register with
>         DOSGI is
>                                      not the same version
>                                      installed by the CXF swagger2 feature,
>                                      perhaps some diff JAXB versions are
>                                      involved, please keep experimenting
> 
>                                      Sergey
> 
>                                     
>         defaultSwagger2Serializers.setJavadocProvider(new
>                                      JavaDocProvider());
> 
>                                         
>         swagger.setSwagger2Serializers(defaultSwagger2Serializers);
> 
>                                          I think this could be the same:
> 
>                                          Swagger2Customizer
>         swagger2Customizer =
>                                          new Swagger2Customizer();
>                                         
>         swagger2Customizer.setJavadocProvider(new JavaDocProvider());
> 
> 
>                                         
>         swagger.setCustomizer(swagger2Customizer);
> 
> 
>                                          I have setup CXF to use JACKSON
>                                          (JacksonJaxbJsonProvider)
> 
> 
>                                          How can I tell swagger to do
>         the same? I
>                                          think that's the problem..
> 
> 
> 
>                                          regards Nino
> 
> 
> 
> 
>                                          On Thu, Nov 30, 2017 at 10:50
>         AM, nino
>                                          martinez wael <
>         nino.martinez.wael@gmail.com <ma...@gmail.com>
>                                         
>         <mailto:nino.martinez.wael@gmail.com
>         <ma...@gmail.com>>>
>                                          wrote:
> 
>                                          Im wondering if this could be
>         the problem :
> 
> 
>         https://github.com/swagger-api/swagger-core/issues/960
>         <https://github.com/swagger-api/swagger-core/issues/960>
>                                             
>         <https://github.com/swagger-api/swagger-core/issues/960
>         <https://github.com/swagger-api/swagger-core/issues/960>>
> 
>                                              On Thu, Nov 30, 2017 at
>         10:38 AM,
>                                              nino martinez wael <
>         nino.martinez.wael@gmail.com <ma...@gmail.com>
>                                             
>         <mailto:nino.martinez.wael@gmail.com
>         <ma...@gmail.com>>>
> 
>                                              wrote:
> 
>                                              So I have a bean CXF
>         accepts only
>                                              this interpretation for my
>         endpoint:
> 
> 
>                                                  {
>                                                         "contactList": [
>                                                             {
>                                                                
>         "campaignId": "2",
>                                                                 "id":"",
>                                                                
>         "indexNumber": "",
>                                                                
>         "accountNumber":
>                                                  "232",
>                                                                
>         "queueNumber": "0",
>                                                                
>         "balance": 0,
>                                                                         
>                                        "personalIdentificationNumber1":
>                                                  "string",
>                                                                
>         "firstName1":
>                                                  "string",
>                                                                 "lastName1":
>                                                  "string",
>                                                                         
>                                        "personalIdentificationNumber2":
>                                                  "string",
>                                                                
>         "firstName2":
>                                                  "string",
>                                                                 "lastName2":
>                                                  "string",
>                                                                
>         "address": "string",
>                                                                
>         "zipCode": "string",
>                                                                 "city":
>         "string",
>                                                                
>         "homePhone": "+4521",
>                                                                
>         "mobilePhone":
>                                                  "+45122",
>                                                                
>         "campaing": "string",
>                                                                
>         "dateForExtract":
>                                                  "string"
> 
>                                                             }
>                                                         ]
>                                                  }
> 
>                                                  However the swagger
>         feature are
>                                                  generating this as example:
> 
>                                                  {
>                                                       "minimalContacts": [
>                                                         {
>                                                           "campaignId":
>         "string",
>                                                           "id": 0,
>                                                           "indexNumber":
>         "string",
>                                                          
>         "accountNumber": "string",
>                                                           "queueNumber":
>         "string",
>                                                           "balance": 0,
>                                                                         
>                                  "personalIdentificationNumber1":
>                                                  "string",
>                                                           "firstName1":
>         "string",
>                                                           "lastName1":
>         "string",
>                                                                         
>                                  "personalIdentificationNumber2":
>                                                  "string",
>                                                           "firstName2":
>         "string",
>                                                           "lastName2":
>         "string",
>                                                           "address":
>         "string",
>                                                           "zipCode":
>         "string",
>                                                           "city": "string",
>                                                           "homePhone":
>         "string",
>                                                           "mobilePhone":
>         "string",
>                                                           "campaing":
>         "string",
>                                                          
>         "dateForExtract": "string"
>                                                         }
>                                                       ]
>                                                  }
> 
>                                                  MinimalContactWrapper
> 
>                                                 
>         @XmlAccessorType(XmlAccessType.FIELD)
>                                                  @XmlRootElement(name =
>         "contacts")
>                                                  public class
>         MinimalContactWrapper {
> 
>                                                         @XmlElementWrapper
>                                                         @XmlElementRef
>                                                         @Valid
>                                                         @NotNull
>                                                         @Size(min = 1)
>                                                         private
>                                                  List<MinimalContact>
>                                                  contactList=new
>         ArrayList<>();
> 
>                                                         public
>                                                  List<MinimalContact>
>                                                  getMinimalContacts() {
>                                                             return
>         contactList;
>                                                         }
> 
>                                                         public void
>                                                 
>         setMinimalContacts(List<MinimalContact>
>                                                  minimalContacts) {
>                                                            
>         this.contactList =
>                                                  minimalContacts;
>                                                         }
> 
> 
>                                                  MinimalContact
> 
>                                                 
>         @XmlAccessorType(XmlAccessType.PROPERTY)
>                                                 
>         @XmlRootElement(name="minimalcontact")
>                                                  public class
>         MinimalContact {
> 
>                                                         @NotNull
>                                                         @Size(min=1,
>         max=240)
>                                                         private String
>         campaignId;
> 
>                                                         private Long id;
>                                                         @Size(min=1,
>         max=240)
>                                                         private String
>         indexNumber;
>                                                         @Size(min=1, max=20)
>                                                         @NotNull
>                                                         private String
>         accountNumber;
>                                                         @Size(min=1, max=8)
>                                                         private String
>         queueNumber;
> 
> 
>                                                         private Float
>         balance;
> 
>                                                         @Size(min=0, max=11)
>                                                         private String
>                                                 
>         personalIdentificationNumber1;
> 
>                                                         @Size(min=0, max=55)
>                                                         private String
>         firstName1;
> 
>                                                         @Size(min=0, max=55)
>                                                         private String
>         lastName1;
> 
>                                                         @Size(min=0, max=11)
>                                                         private String
>                                                 
>         personalIdentificationNumber2;
> 
>                                                         private String
>         firstName2;
> 
>                                                         private String
>         lastName2;
> 
>                                                         private String
>         address;
> 
>                                                         private String
>         zipCode;
>                                                         private String city;
> 
>                                                         @NotNull
>                                                         @Size(min=0, max=20)
>                                                         private String
>         homePhone;
> 
>                                                         @NotNull
>                                                         @Size(min=0, max=20)
>                                                         private String
>         mobilePhone;
> 
>                                                         private String
>         campaing;
> 
>                                                         @NotNull
>                                                         private String
>                                                  dateForExtract;
> 
> 
> 
> 
> 
> 
>                                                  --
>                                                  Best regards / Med
>         venlig hilsen
>                                                  Nino Martinez
> 
> 
> 
> 
>                                              --
>                                              Best regards / Med venlig
>         hilsen
>                                              Nino Martinez
> 
> 
> 
> 
> 
> 
> 
>                                  --
>                                  Best regards / Med venlig hilsen
>                                  Nino Martinez
> 
> 
> 
> 
>                              --
>                              Best regards / Med venlig hilsen
>                              Nino Martinez
> 
> 
> 
> 
> 
> 
> 
>                  --         Best regards / Med venlig hilsen
>                  Nino Martinez
> 
> 
> 
> 
>              --     Best regards / Med venlig hilsen
>              Nino Martinez
> 
> 
> 
> 
>         -- 
>         Best regards / Med venlig hilsen
>         Nino Martinez
> 
> 
> 
> 
> -- 
> Best regards / Med venlig hilsen
> Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
No, no namespaces....

And I am still pussled on why it does not do it the "right" way.. Currently
I am experimenting putting in io.swagger.annotations BUT they seem to have
no effect on the generated swagger describtion when placed in our backend
models, they are in another bundle, im wondering if the swagger feature
somehow are not able to read the annotations across the bundles, that would
very much explain why its not working..?

On Mon, Dec 4, 2017 at 11:46 AM, Sergey Beryozkin <sb...@gmail.com>
wrote:

> Nice,
> Just out of curiosity, what does Swagger set the XML Object's namespace to
> ? Is it initialized ?
>
> Sergey
>
> On 04/12/17 06:03, nino martinez wael wrote:
>
>> Okay so I've looked into this a bit. And turned the problem upside down.
>> Instead of trying to make the cxf swagger feature use jackson, just taking
>> a look at the outcome and play around trying to change it.. Again if there
>> is any way to see what the swagger feature plugin are using runtime to
>> process file with, it would very helpfull..
>>
>> It seems that the swagger feature are partially ignoring my annotations,
>> so picking up @xmlrootelement but partially ignoring the list annotations..
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>> @XmlRootElement(name = "contacts")
>> public class MinimalContactWrapper {
>>
>>      @XmlElementWrapper(name = "wrap")
>>      @XmlElement(name = "minimalcontact")
>>      private List<MinimalContact> contactList;
>>
>>      public List<MinimalContact> getMinimalContacts() {
>>          return contactList;
>>      }
>>
>>      public void setMinimalContacts(List<MinimalContact>
>> minimalContacts) {
>>          this.contactList = minimalContacts;
>>      }
>>
>> }
>>
>>
>> to
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>> @XmlRootElement(name ="contacts")
>> public class MinimalContactWrapper {
>>
>>      @XmlElementRef(name ="minimalContact")
>>      @Valid
>> @NotNull
>> @Size(min =1)
>>      private List<MinimalContact>minimalContacts=new ArrayList<>();
>>
>>      public List<MinimalContact> getMinimalContacts() {
>>          return minimalContacts;
>>      }
>>
>>      public void setMinimalContacts(List<MinimalContact>
>> minimalContacts) {
>>          this.minimalContacts = minimalContacts;
>>      }
>>
>> }
>>
>> Made the xml results required equal in the swagger feature to what CXF
>> and enunciate feels it should be... Namely this:
>>
>> <contacts><minimalcontact><dateForExtract>...</dateForExtrac
>> t><indexNumber>...</indexNumber><accountNumber>...
>> </accountNumber><queueNumber>...</queueNumber><personalIdent
>> ificationNumber1>...</personalIdentificationNumber1><
>> firstName1>...</firstName1><lastName1>...</lastName1><person
>> alIdentificationNumber2>...</personalIdentificationNumber2><
>> firstName2>...</firstName2><lastName2>...</lastName2><addres
>> s>...</address><zipCode>...</zipCode><city>...</city><homeP
>> hone>...</homePhone><mobilePhone>...</mobilePhone><id>...</
>> id><campaignId>...</campaignId></minimalcontact></contacts>
>>
>>
>> Instead of something like this:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <contacts>
>> <minimalContacts>
>> <minimalcontact>
>> <campaignId>string</campaignId>
>> <id>0</id>
>> <indexNumber>string</indexNumber>
>> <accountNumber>string</accountNumber>
>> <queueNumber>string</queueNumber>
>> <balance>0</balance>
>> <personalIdentificationNumber1>string</personalIdentificationNumber1>
>> <firstName1>string</firstName1>
>> <lastName1>string</lastName1>
>> <personalIdentificationNumber2>string</personalIdentificationNumber2>
>> <firstName2>string</firstName2>
>> <lastName2>string</lastName2>
>> <address>string</address>
>> <zipCode>string</zipCode>
>> <city>string</city>
>> <homePhone>string</homePhone>
>> <mobilePhone>string</mobilePhone>
>> <dateForExtract>string</dateForExtract>
>> </minimalcontact>
>> </minimalContacts>
>> </contacts>
>>
>>
>>
>>
>> On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael <
>> nino.martinez.wael@gmail.com <ma...@gmail.com>>
>> wrote:
>>
>>     No change without setting swagger2customizer..
>>
>>     I'll let it rest for a day..
>>
>>     On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael
>>     <nino.martinez.wael@gmail.com <ma...@gmail.com>>
>>     wrote:
>>
>>         yup have set skip.default.json.provider.re
>>         <http://skip.default.json.provider.re>gistration..
>>
>>         But no matter what I do it has no effect on what the swagger
>>         feature generates.. Where it's changing the json provider or
>>         removing it all together..
>>
>>         Trying it now without setting swagger2Customizer..
>>
>>
>>         On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin
>>         <sberyozkin@gmail.com <ma...@gmail.com>> wrote:
>>
>>             Just FYI, removing Jettison lib will ensure it's not
>>             auto-installed by CXF, and if it is not possible to remove
>>             then the other option is to set
>>             a "skip.default.json.provider.re
>>             <http://skip.default.json.provider.re>gistration" bus
>> property.
>>
>>             However it's not related to Swagger at all, Jettison if
>>             installed will only affect the way JSON is generated for
>>             service responses
>>
>>             Sergey
>>
>>             On 30/11/17 11:57, nino martinez wael wrote:
>>
>>                 It does not seem to be a jettison problem.. And neither
>>                 an problem with
>>                 jackson versions, I just wiped all jettison and
>>                 jackson(except 2.9.1 )
>>                 versions from my running environment..
>>
>>                 Looking into of it could be something with
>>                 JacksonJaxbJsonProvider vs
>>                 JacksonJsonProvider
>>
>>                 On Thu, Nov 30, 2017 at 12:45 PM, nino martinez wael <
>>                 nino.martinez.wael@gmail.com
>>                 <ma...@gmail.com>> wrote:
>>
>>                     IS there somewhere while on runtime where I can
>>                     print current registered
>>                     providers for cxf, I have a feeling that it somehow
>>                     are using jettison for
>>                     json...
>>
>>                     On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
>>                     nino.martinez.wael@gmail.com
>>                     <ma...@gmail.com>> wrote:
>>
>>                         Okay I will check into libraries whats on class
>>                         path.. I have the same
>>                         gut feeling that it could be something like that.
>>
>>                         I have enunciate up and working on the side..
>>
>>                         On Thu, Nov 30, 2017 at 11:18 AM, Sergey
>>                         Beryozkin <sberyozkin@gmail.com
>>                         <ma...@gmail.com>>
>>
>>                         wrote:
>>
>>                             Yes, the minor Swagger version caused this
>>                             change, what was working
>>                             3.1.x, specifically the serializers
>>                             approach, was not working any longer
>>                             with the new Swagger version, hence this
>> update.
>>
>>                             I honestly do not know why exactly a JAXB
>>                             annotated bean is not
>>                             correctly represented in the
>>                             Swagger-generated #definitions, it's obviously
>>                             something to do with the way Jackson and
>>                             JAXB interacts.
>>                             Perhaps Jackson you register with DOSGI is
>>                             not the same version
>>                             installed by the CXF swagger2 feature,
>>                             perhaps some diff JAXB versions are
>>                             involved, please keep experimenting
>>
>>                             Sergey
>>
>>                             defaultSwagger2Serializers.set
>> JavadocProvider(new
>>                             JavaDocProvider());
>>
>>                                 swagger.setSwagger2Serializers
>> (defaultSwagger2Serializers);
>>
>>                                 I think this could be the same:
>>
>>                                 Swagger2Customizer swagger2Customizer =
>>                                 new Swagger2Customizer();
>>                                 swagger2Customizer.setJavadocProvider(new
>> JavaDocProvider());
>>
>>
>>                                 swagger.setCustomizer(swagger2
>> Customizer);
>>
>>
>>                                 I have setup CXF to use JACKSON
>>                                 (JacksonJaxbJsonProvider)
>>
>>
>>                                 How can I tell swagger to do the same? I
>>                                 think that's the problem..
>>
>>
>>
>>                                 regards Nino
>>
>>
>>
>>
>>                                 On Thu, Nov 30, 2017 at 10:50 AM, nino
>>                                 martinez wael <
>>                                 nino.martinez.wael@gmail.com
>>                                 <ma...@gmail.com>>
>>                                 wrote:
>>
>>                                 Im wondering if this could be the problem
>> :
>>
>>
>>                                     https://github.com/swagger-api
>> /swagger-core/issues/960
>>                                     <https://github.com/swagger-ap
>> i/swagger-core/issues/960>
>>
>>                                     On Thu, Nov 30, 2017 at 10:38 AM,
>>                                     nino martinez wael <
>>                                     nino.martinez.wael@gmail.com
>>                                     <mailto:nino.martinez.wael@gmail.com
>> >>
>>
>>                                     wrote:
>>
>>                                     So I have a bean CXF accepts only
>>                                     this interpretation for my endpoint:
>>
>>
>>                                         {
>>                                                "contactList": [
>>                                                    {
>>                                                        "campaignId": "2",
>>                                                        "id":"",
>>                                                        "indexNumber": "",
>>                                                        "accountNumber":
>>                                         "232",
>>                                                        "queueNumber": "0",
>>                                                        "balance": 0,
>>
>>                     "personalIdentificationNumber1":
>>                                         "string",
>>                                                        "firstName1":
>>                                         "string",
>>                                                        "lastName1":
>>                                         "string",
>>
>>                     "personalIdentificationNumber2":
>>                                         "string",
>>                                                        "firstName2":
>>                                         "string",
>>                                                        "lastName2":
>>                                         "string",
>>                                                        "address":
>> "string",
>>                                                        "zipCode":
>> "string",
>>                                                        "city": "string",
>>                                                        "homePhone":
>> "+4521",
>>                                                        "mobilePhone":
>>                                         "+45122",
>>                                                        "campaing":
>> "string",
>>                                                        "dateForExtract":
>>                                         "string"
>>
>>                                                    }
>>                                                ]
>>                                         }
>>
>>                                         However the swagger feature are
>>                                         generating this as example:
>>
>>                                         {
>>                                              "minimalContacts": [
>>                                                {
>>                                                  "campaignId": "string",
>>                                                  "id": 0,
>>                                                  "indexNumber": "string",
>>                                                  "accountNumber":
>> "string",
>>                                                  "queueNumber": "string",
>>                                                  "balance": 0,
>>
>>               "personalIdentificationNumber1":
>>                                         "string",
>>                                                  "firstName1": "string",
>>                                                  "lastName1": "string",
>>
>>               "personalIdentificationNumber2":
>>                                         "string",
>>                                                  "firstName2": "string",
>>                                                  "lastName2": "string",
>>                                                  "address": "string",
>>                                                  "zipCode": "string",
>>                                                  "city": "string",
>>                                                  "homePhone": "string",
>>                                                  "mobilePhone": "string",
>>                                                  "campaing": "string",
>>                                                  "dateForExtract":
>> "string"
>>                                                }
>>                                              ]
>>                                         }
>>
>>                                         MinimalContactWrapper
>>
>>                                         @XmlAccessorType(XmlAccessType
>> .FIELD)
>>                                         @XmlRootElement(name = "contacts")
>>                                         public class
>> MinimalContactWrapper {
>>
>>                                                @XmlElementWrapper
>>                                                @XmlElementRef
>>                                                @Valid
>>                                                @NotNull
>>                                                @Size(min = 1)
>>                                                private
>>                                         List<MinimalContact>
>>                                         contactList=new ArrayList<>();
>>
>>                                                public
>>                                         List<MinimalContact>
>>                                         getMinimalContacts() {
>>                                                    return contactList;
>>                                                }
>>
>>                                                public void
>>                                         setMinimalContacts(List<Minima
>> lContact>
>>                                         minimalContacts) {
>>                                                    this.contactList =
>>                                         minimalContacts;
>>                                                }
>>
>>
>>                                         MinimalContact
>>
>>                                         @XmlAccessorType(XmlAccessType
>> .PROPERTY)
>>                                         @XmlRootElement(name="minimalc
>> ontact")
>>                                         public class MinimalContact {
>>
>>                                                @NotNull
>>                                                @Size(min=1, max=240)
>>                                                private String campaignId;
>>
>>                                                private Long id;
>>                                                @Size(min=1, max=240)
>>                                                private String indexNumber;
>>                                                @Size(min=1, max=20)
>>                                                @NotNull
>>                                                private String
>> accountNumber;
>>                                                @Size(min=1, max=8)
>>                                                private String queueNumber;
>>
>>
>>                                                private Float balance;
>>
>>                                                @Size(min=0, max=11)
>>                                                private String
>>                                         personalIdentificationNumber1;
>>
>>                                                @Size(min=0, max=55)
>>                                                private String firstName1;
>>
>>                                                @Size(min=0, max=55)
>>                                                private String lastName1;
>>
>>                                                @Size(min=0, max=11)
>>                                                private String
>>                                         personalIdentificationNumber2;
>>
>>                                                private String firstName2;
>>
>>                                                private String lastName2;
>>
>>                                                private String address;
>>
>>                                                private String zipCode;
>>                                                private String city;
>>
>>                                                @NotNull
>>                                                @Size(min=0, max=20)
>>                                                private String homePhone;
>>
>>                                                @NotNull
>>                                                @Size(min=0, max=20)
>>                                                private String mobilePhone;
>>
>>                                                private String campaing;
>>
>>                                                @NotNull
>>                                                private String
>>                                         dateForExtract;
>>
>>
>>
>>
>>
>>
>>                                         --
>>                                         Best regards / Med venlig hilsen
>>                                         Nino Martinez
>>
>>
>>
>>
>>                                     --
>>                                     Best regards / Med venlig hilsen
>>                                     Nino Martinez
>>
>>
>>
>>
>>
>>
>>
>>                         --
>>                         Best regards / Med venlig hilsen
>>                         Nino Martinez
>>
>>
>>
>>
>>                     --
>>                     Best regards / Med venlig hilsen
>>                     Nino Martinez
>>
>>
>>
>>
>>
>>
>>
>>         --         Best regards / Med venlig hilsen
>>         Nino Martinez
>>
>>
>>
>>
>>     --     Best regards / Med venlig hilsen
>>     Nino Martinez
>>
>>
>>
>>
>> --
>> Best regards / Med venlig hilsen
>> Nino Martinez
>>
>


-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by Sergey Beryozkin <sb...@gmail.com>.
Nice,
Just out of curiosity, what does Swagger set the XML Object's namespace 
to ? Is it initialized ?

Sergey
On 04/12/17 06:03, nino martinez wael wrote:
> Okay so I've looked into this a bit. And turned the problem upside down. 
> Instead of trying to make the cxf swagger feature use jackson, just 
> taking a look at the outcome and play around trying to change it.. Again 
> if there is any way to see what the swagger feature plugin are using 
> runtime to process file with, it would very helpfull..
> 
> It seems that the swagger feature are partially ignoring my annotations, 
> so picking up @xmlrootelement but partially ignoring the list annotations..
> 
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlRootElement(name = "contacts")
> public class MinimalContactWrapper {
> 
>      @XmlElementWrapper(name = "wrap")
>      @XmlElement(name = "minimalcontact")
>      private List<MinimalContact> contactList;
> 
>      public List<MinimalContact> getMinimalContacts() {
>          return contactList;
>      }
> 
>      public void setMinimalContacts(List<MinimalContact> minimalContacts) {
>          this.contactList = minimalContacts;
>      }
> 
> }
> 
> 
> to
> 
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlRootElement(name ="contacts")
> public class MinimalContactWrapper {
> 
>      @XmlElementRef(name ="minimalContact")
>      @Valid
> @NotNull
> @Size(min =1)
>      private List<MinimalContact>minimalContacts=new ArrayList<>();
> 
>      public List<MinimalContact> getMinimalContacts() {
>          return minimalContacts;
>      }
> 
>      public void setMinimalContacts(List<MinimalContact> minimalContacts) {
>          this.minimalContacts = minimalContacts;
>      }
> 
> }
> 
> Made the xml results required equal in the swagger feature to what CXF 
> and enunciate feels it should be... Namely this:
> 
> <contacts><minimalcontact><dateForExtract>...</dateForExtract><indexNumber>...</indexNumber><accountNumber>...</accountNumber><queueNumber>...</queueNumber><personalIdentificationNumber1>...</personalIdentificationNumber1><firstName1>...</firstName1><lastName1>...</lastName1><personalIdentificationNumber2>...</personalIdentificationNumber2><firstName2>...</firstName2><lastName2>...</lastName2><address>...</address><zipCode>...</zipCode><city>...</city><homePhone>...</homePhone><mobilePhone>...</mobilePhone><id>...</id><campaignId>...</campaignId></minimalcontact></contacts>
> 
> 
> Instead of something like this:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <contacts>
> <minimalContacts>
> <minimalcontact>
> <campaignId>string</campaignId>
> <id>0</id>
> <indexNumber>string</indexNumber>
> <accountNumber>string</accountNumber>
> <queueNumber>string</queueNumber>
> <balance>0</balance>
> <personalIdentificationNumber1>string</personalIdentificationNumber1>
> <firstName1>string</firstName1>
> <lastName1>string</lastName1>
> <personalIdentificationNumber2>string</personalIdentificationNumber2>
> <firstName2>string</firstName2>
> <lastName2>string</lastName2>
> <address>string</address>
> <zipCode>string</zipCode>
> <city>string</city>
> <homePhone>string</homePhone>
> <mobilePhone>string</mobilePhone>
> <dateForExtract>string</dateForExtract>
> </minimalcontact>
> </minimalContacts>
> </contacts>
> 
> 
> 
> 
> On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael 
> <nino.martinez.wael@gmail.com <ma...@gmail.com>> wrote:
> 
>     No change without setting swagger2customizer..
> 
>     I'll let it rest for a day..
> 
>     On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael
>     <nino.martinez.wael@gmail.com <ma...@gmail.com>>
>     wrote:
> 
>         yup have set skip.default.json.provider.re
>         <http://skip.default.json.provider.re>gistration..
> 
>         But no matter what I do it has no effect on what the swagger
>         feature generates.. Where it's changing the json provider or
>         removing it all together..
> 
>         Trying it now without setting swagger2Customizer..
> 
> 
>         On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin
>         <sberyozkin@gmail.com <ma...@gmail.com>> wrote:
> 
>             Just FYI, removing Jettison lib will ensure it's not
>             auto-installed by CXF, and if it is not possible to remove
>             then the other option is to set
>             a "skip.default.json.provider.re
>             <http://skip.default.json.provider.re>gistration" bus property.
> 
>             However it's not related to Swagger at all, Jettison if
>             installed will only affect the way JSON is generated for
>             service responses
> 
>             Sergey
> 
>             On 30/11/17 11:57, nino martinez wael wrote:
> 
>                 It does not seem to be a jettison problem.. And neither
>                 an problem with
>                 jackson versions, I just wiped all jettison and
>                 jackson(except 2.9.1 )
>                 versions from my running environment..
> 
>                 Looking into of it could be something with
>                 JacksonJaxbJsonProvider vs
>                 JacksonJsonProvider
> 
>                 On Thu, Nov 30, 2017 at 12:45 PM, nino martinez wael <
>                 nino.martinez.wael@gmail.com
>                 <ma...@gmail.com>> wrote:
> 
>                     IS there somewhere while on runtime where I can
>                     print current registered
>                     providers for cxf, I have a feeling that it somehow
>                     are using jettison for
>                     json...
> 
>                     On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
>                     nino.martinez.wael@gmail.com
>                     <ma...@gmail.com>> wrote:
> 
>                         Okay I will check into libraries whats on class
>                         path.. I have the same
>                         gut feeling that it could be something like that.
> 
>                         I have enunciate up and working on the side..
> 
>                         On Thu, Nov 30, 2017 at 11:18 AM, Sergey
>                         Beryozkin <sberyozkin@gmail.com
>                         <ma...@gmail.com>>
>                         wrote:
> 
>                             Yes, the minor Swagger version caused this
>                             change, what was working
>                             3.1.x, specifically the serializers
>                             approach, was not working any longer
>                             with the new Swagger version, hence this update.
> 
>                             I honestly do not know why exactly a JAXB
>                             annotated bean is not
>                             correctly represented in the
>                             Swagger-generated #definitions, it's obviously
>                             something to do with the way Jackson and
>                             JAXB interacts.
>                             Perhaps Jackson you register with DOSGI is
>                             not the same version
>                             installed by the CXF swagger2 feature,
>                             perhaps some diff JAXB versions are
>                             involved, please keep experimenting
> 
>                             Sergey
> 
>                             defaultSwagger2Serializers.setJavadocProvider(new
>                             JavaDocProvider());
> 
>                                 swagger.setSwagger2Serializers(defaultSwagger2Serializers);
> 
>                                 I think this could be the same:
> 
>                                 Swagger2Customizer swagger2Customizer =
>                                 new Swagger2Customizer();
>                                 swagger2Customizer.setJavadocProvider(new JavaDocProvider());
> 
> 
>                                 swagger.setCustomizer(swagger2Customizer);
> 
> 
>                                 I have setup CXF to use JACKSON
>                                 (JacksonJaxbJsonProvider)
> 
> 
>                                 How can I tell swagger to do the same? I
>                                 think that's the problem..
> 
> 
> 
>                                 regards Nino
> 
> 
> 
> 
>                                 On Thu, Nov 30, 2017 at 10:50 AM, nino
>                                 martinez wael <
>                                 nino.martinez.wael@gmail.com
>                                 <ma...@gmail.com>>
>                                 wrote:
> 
>                                 Im wondering if this could be the problem :
> 
> 
>                                     https://github.com/swagger-api/swagger-core/issues/960
>                                     <https://github.com/swagger-api/swagger-core/issues/960>
> 
>                                     On Thu, Nov 30, 2017 at 10:38 AM,
>                                     nino martinez wael <
>                                     nino.martinez.wael@gmail.com
>                                     <ma...@gmail.com>>
>                                     wrote:
> 
>                                     So I have a bean CXF accepts only
>                                     this interpretation for my endpoint:
> 
> 
>                                         {
>                                                "contactList": [
>                                                    {
>                                                        "campaignId": "2",
>                                                        "id":"",
>                                                        "indexNumber": "",
>                                                        "accountNumber":
>                                         "232",
>                                                        "queueNumber": "0",
>                                                        "balance": 0,
>                                                       
>                                         "personalIdentificationNumber1":
>                                         "string",
>                                                        "firstName1":
>                                         "string",
>                                                        "lastName1":
>                                         "string",
>                                                       
>                                         "personalIdentificationNumber2":
>                                         "string",
>                                                        "firstName2":
>                                         "string",
>                                                        "lastName2":
>                                         "string",
>                                                        "address": "string",
>                                                        "zipCode": "string",
>                                                        "city": "string",
>                                                        "homePhone": "+4521",
>                                                        "mobilePhone":
>                                         "+45122",
>                                                        "campaing": "string",
>                                                        "dateForExtract":
>                                         "string"
> 
>                                                    }
>                                                ]
>                                         }
> 
>                                         However the swagger feature are
>                                         generating this as example:
> 
>                                         {
>                                              "minimalContacts": [
>                                                {
>                                                  "campaignId": "string",
>                                                  "id": 0,
>                                                  "indexNumber": "string",
>                                                  "accountNumber": "string",
>                                                  "queueNumber": "string",
>                                                  "balance": 0,
>                                                 
>                                         "personalIdentificationNumber1":
>                                         "string",
>                                                  "firstName1": "string",
>                                                  "lastName1": "string",
>                                                 
>                                         "personalIdentificationNumber2":
>                                         "string",
>                                                  "firstName2": "string",
>                                                  "lastName2": "string",
>                                                  "address": "string",
>                                                  "zipCode": "string",
>                                                  "city": "string",
>                                                  "homePhone": "string",
>                                                  "mobilePhone": "string",
>                                                  "campaing": "string",
>                                                  "dateForExtract": "string"
>                                                }
>                                              ]
>                                         }
> 
>                                         MinimalContactWrapper
> 
>                                         @XmlAccessorType(XmlAccessType.FIELD)
>                                         @XmlRootElement(name = "contacts")
>                                         public class MinimalContactWrapper {
> 
>                                                @XmlElementWrapper
>                                                @XmlElementRef
>                                                @Valid
>                                                @NotNull
>                                                @Size(min = 1)
>                                                private
>                                         List<MinimalContact>
>                                         contactList=new ArrayList<>();
> 
>                                                public
>                                         List<MinimalContact>
>                                         getMinimalContacts() {
>                                                    return contactList;
>                                                }
> 
>                                                public void
>                                         setMinimalContacts(List<MinimalContact>
>                                         minimalContacts) {
>                                                    this.contactList =
>                                         minimalContacts;
>                                                }
> 
> 
>                                         MinimalContact
> 
>                                         @XmlAccessorType(XmlAccessType.PROPERTY)
>                                         @XmlRootElement(name="minimalcontact")
>                                         public class MinimalContact {
> 
>                                                @NotNull
>                                                @Size(min=1, max=240)
>                                                private String campaignId;
> 
>                                                private Long id;
>                                                @Size(min=1, max=240)
>                                                private String indexNumber;
>                                                @Size(min=1, max=20)
>                                                @NotNull
>                                                private String accountNumber;
>                                                @Size(min=1, max=8)
>                                                private String queueNumber;
> 
> 
>                                                private Float balance;
> 
>                                                @Size(min=0, max=11)
>                                                private String
>                                         personalIdentificationNumber1;
> 
>                                                @Size(min=0, max=55)
>                                                private String firstName1;
> 
>                                                @Size(min=0, max=55)
>                                                private String lastName1;
> 
>                                                @Size(min=0, max=11)
>                                                private String
>                                         personalIdentificationNumber2;
> 
>                                                private String firstName2;
> 
>                                                private String lastName2;
> 
>                                                private String address;
> 
>                                                private String zipCode;
>                                                private String city;
> 
>                                                @NotNull
>                                                @Size(min=0, max=20)
>                                                private String homePhone;
> 
>                                                @NotNull
>                                                @Size(min=0, max=20)
>                                                private String mobilePhone;
> 
>                                                private String campaing;
> 
>                                                @NotNull
>                                                private String
>                                         dateForExtract;
> 
> 
> 
> 
> 
> 
>                                         --
>                                         Best regards / Med venlig hilsen
>                                         Nino Martinez
> 
> 
> 
> 
>                                     --
>                                     Best regards / Med venlig hilsen
>                                     Nino Martinez
> 
> 
> 
> 
> 
> 
> 
>                         --
>                         Best regards / Med venlig hilsen
>                         Nino Martinez
> 
> 
> 
> 
>                     --
>                     Best regards / Med venlig hilsen
>                     Nino Martinez
> 
> 
> 
> 
> 
> 
> 
>         -- 
>         Best regards / Med venlig hilsen
>         Nino Martinez
> 
> 
> 
> 
>     -- 
>     Best regards / Med venlig hilsen
>     Nino Martinez
> 
> 
> 
> 
> -- 
> Best regards / Med venlig hilsen
> Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
Okay so I've looked into this a bit. And turned the problem upside down.
Instead of trying to make the cxf swagger feature use jackson, just taking
a look at the outcome and play around trying to change it.. Again if there
is any way to see what the swagger feature plugin are using runtime to
process file with, it would very helpfull..

It seems that the swagger feature are partially ignoring my annotations, so
picking up @xmlrootelement but partially ignoring the list annotations..

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "contacts")
public class MinimalContactWrapper {

    @XmlElementWrapper(name = "wrap")
    @XmlElement(name = "minimalcontact")
    private List<MinimalContact> contactList;

    public List<MinimalContact> getMinimalContacts() {
        return contactList;
    }

    public void setMinimalContacts(List<MinimalContact> minimalContacts) {
        this.contactList = minimalContacts;
    }

}


to

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "contacts")
public class MinimalContactWrapper {

    @XmlElementRef(name = "minimalContact")
    @Valid
    @NotNull
    @Size(min = 1)
    private List<MinimalContact> minimalContacts=new ArrayList<>();

    public List<MinimalContact> getMinimalContacts() {
        return minimalContacts;
    }

    public void setMinimalContacts(List<MinimalContact> minimalContacts) {
        this.minimalContacts = minimalContacts;
    }

}

Made the xml results required equal in the swagger feature to what CXF and
enunciate feels it should be... Namely this:

<contacts>
  <minimalcontact>
    <dateForExtract>...</dateForExtract>
    <indexNumber>...</indexNumber>
    <accountNumber>...</accountNumber>
    <queueNumber>...</queueNumber>
    <personalIdentificationNumber1>...</personalIdentificationNumber1>
    <firstName1>...</firstName1>
    <lastName1>...</lastName1>
    <personalIdentificationNumber2>...</personalIdentificationNumber2>
    <firstName2>...</firstName2>
    <lastName2>...</lastName2>
    <address>...</address>
    <zipCode>...</zipCode>
    <city>...</city>
    <homePhone>...</homePhone>
    <mobilePhone>...</mobilePhone>
    <id>...</id>
    <campaignId>...</campaignId>
  </minimalcontact></contacts>


Instead of something like this:

<?xml version="1.0" encoding="UTF-8"?>
<contacts>
<minimalContacts>
<minimalcontact>
<campaignId>string</campaignId>
<id>0</id>
<indexNumber>string</indexNumber>
<accountNumber>string</accountNumber>
<queueNumber>string</queueNumber>
<balance>0</balance>
<personalIdentificationNumber1>string</personalIdentificationNumber1>
<firstName1>string</firstName1>
<lastName1>string</lastName1>
<personalIdentificationNumber2>string</personalIdentificationNumber2>
<firstName2>string</firstName2>
<lastName2>string</lastName2>
<address>string</address>
<zipCode>string</zipCode>
<city>string</city>
<homePhone>string</homePhone>
<mobilePhone>string</mobilePhone>
<dateForExtract>string</dateForExtract>
</minimalcontact>
</minimalContacts>
</contacts>




On Thu, Nov 30, 2017 at 1:43 PM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> No change without setting swagger2customizer..
>
> I'll let it rest for a day..
>
> On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael <
> nino.martinez.wael@gmail.com> wrote:
>
>> yup have set skip.default.json.provider.registration..
>>
>> But no matter what I do it has no effect on what the swagger feature
>> generates.. Where it's changing the json provider or removing it all
>> together..
>>
>> Trying it now without setting swagger2Customizer..
>>
>>
>> On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin <sb...@gmail.com>
>> wrote:
>>
>>> Just FYI, removing Jettison lib will ensure it's not auto-installed by
>>> CXF, and if it is not possible to remove then the other option is to set
>>> a "skip.default.json.provider.registration" bus property.
>>>
>>> However it's not related to Swagger at all, Jettison if installed will
>>> only affect the way JSON is generated for service responses
>>>
>>> Sergey
>>>
>>> On 30/11/17 11:57, nino martinez wael wrote:
>>>
>>>> It does not seem to be a jettison problem.. And neither an problem with
>>>> jackson versions, I just wiped all jettison and jackson(except 2.9.1 )
>>>> versions from my running environment..
>>>>
>>>> Looking into of it could be something with JacksonJaxbJsonProvider vs
>>>> JacksonJsonProvider
>>>>
>>>> On Thu, Nov 30, 2017 at 12:45 PM, nino martinez wael <
>>>> nino.martinez.wael@gmail.com> wrote:
>>>>
>>>> IS there somewhere while on runtime where I can print current registered
>>>>> providers for cxf, I have a feeling that it somehow are using jettison
>>>>> for
>>>>> json...
>>>>>
>>>>> On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>
>>>>> Okay I will check into libraries whats on class path.. I have the same
>>>>>> gut feeling that it could be something like that.
>>>>>>
>>>>>> I have enunciate up and working on the side..
>>>>>>
>>>>>> On Thu, Nov 30, 2017 at 11:18 AM, Sergey Beryozkin <
>>>>>> sberyozkin@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> Yes, the minor Swagger version caused this change, what was working
>>>>>>> 3.1.x, specifically the serializers approach, was not working any
>>>>>>> longer
>>>>>>> with the new Swagger version, hence this update.
>>>>>>>
>>>>>>> I honestly do not know why exactly a JAXB annotated bean is not
>>>>>>> correctly represented in the Swagger-generated #definitions, it's
>>>>>>> obviously
>>>>>>> something to do with the way Jackson and JAXB interacts.
>>>>>>> Perhaps Jackson you register with DOSGI is not the same version
>>>>>>> installed by the CXF swagger2 feature, perhaps some diff JAXB
>>>>>>> versions are
>>>>>>> involved, please keep experimenting
>>>>>>>
>>>>>>> Sergey
>>>>>>>
>>>>>>> defaultSwagger2Serializers.setJavadocProvider(new
>>>>>>> JavaDocProvider());
>>>>>>>
>>>>>>>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>>>>>>>
>>>>>>>> I think this could be the same:
>>>>>>>>
>>>>>>>> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
>>>>>>>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>>>>>>>
>>>>>>>>
>>>>>>>> swagger.setCustomizer(swagger2Customizer);
>>>>>>>>
>>>>>>>>
>>>>>>>> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
>>>>>>>>
>>>>>>>>
>>>>>>>> How can I tell swagger to do the same? I think that's the problem..
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> regards Nino
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
>>>>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>>>>
>>>>>>>> Im wondering if this could be the problem :
>>>>>>>>
>>>>>>>>>
>>>>>>>>> https://github.com/swagger-api/swagger-core/issues/960
>>>>>>>>>
>>>>>>>>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>>>>>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>> So I have a bean CXF accepts only this interpretation for my
>>>>>>>>> endpoint:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> {
>>>>>>>>>>       "contactList": [
>>>>>>>>>>           {
>>>>>>>>>>               "campaignId": "2",
>>>>>>>>>>               "id":"",
>>>>>>>>>>               "indexNumber": "",
>>>>>>>>>>               "accountNumber": "232",
>>>>>>>>>>               "queueNumber": "0",
>>>>>>>>>>               "balance": 0,
>>>>>>>>>>               "personalIdentificationNumber1": "string",
>>>>>>>>>>               "firstName1": "string",
>>>>>>>>>>               "lastName1": "string",
>>>>>>>>>>               "personalIdentificationNumber2": "string",
>>>>>>>>>>               "firstName2": "string",
>>>>>>>>>>               "lastName2": "string",
>>>>>>>>>>               "address": "string",
>>>>>>>>>>               "zipCode": "string",
>>>>>>>>>>               "city": "string",
>>>>>>>>>>               "homePhone": "+4521",
>>>>>>>>>>               "mobilePhone": "+45122",
>>>>>>>>>>               "campaing": "string",
>>>>>>>>>>               "dateForExtract": "string"
>>>>>>>>>>
>>>>>>>>>>           }
>>>>>>>>>>       ]
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> However the swagger feature are generating this as example:
>>>>>>>>>>
>>>>>>>>>> {
>>>>>>>>>>     "minimalContacts": [
>>>>>>>>>>       {
>>>>>>>>>>         "campaignId": "string",
>>>>>>>>>>         "id": 0,
>>>>>>>>>>         "indexNumber": "string",
>>>>>>>>>>         "accountNumber": "string",
>>>>>>>>>>         "queueNumber": "string",
>>>>>>>>>>         "balance": 0,
>>>>>>>>>>         "personalIdentificationNumber1": "string",
>>>>>>>>>>         "firstName1": "string",
>>>>>>>>>>         "lastName1": "string",
>>>>>>>>>>         "personalIdentificationNumber2": "string",
>>>>>>>>>>         "firstName2": "string",
>>>>>>>>>>         "lastName2": "string",
>>>>>>>>>>         "address": "string",
>>>>>>>>>>         "zipCode": "string",
>>>>>>>>>>         "city": "string",
>>>>>>>>>>         "homePhone": "string",
>>>>>>>>>>         "mobilePhone": "string",
>>>>>>>>>>         "campaing": "string",
>>>>>>>>>>         "dateForExtract": "string"
>>>>>>>>>>       }
>>>>>>>>>>     ]
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> MinimalContactWrapper
>>>>>>>>>>
>>>>>>>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>>>>>>>> @XmlRootElement(name = "contacts")
>>>>>>>>>> public class MinimalContactWrapper {
>>>>>>>>>>
>>>>>>>>>>       @XmlElementWrapper
>>>>>>>>>>       @XmlElementRef
>>>>>>>>>>       @Valid
>>>>>>>>>>       @NotNull
>>>>>>>>>>       @Size(min = 1)
>>>>>>>>>>       private List<MinimalContact> contactList=new ArrayList<>();
>>>>>>>>>>
>>>>>>>>>>       public List<MinimalContact> getMinimalContacts() {
>>>>>>>>>>           return contactList;
>>>>>>>>>>       }
>>>>>>>>>>
>>>>>>>>>>       public void setMinimalContacts(List<MinimalContact>
>>>>>>>>>> minimalContacts) {
>>>>>>>>>>           this.contactList = minimalContacts;
>>>>>>>>>>       }
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> MinimalContact
>>>>>>>>>>
>>>>>>>>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>>>>>>>> @XmlRootElement(name="minimalcontact")
>>>>>>>>>> public class MinimalContact {
>>>>>>>>>>
>>>>>>>>>>       @NotNull
>>>>>>>>>>       @Size(min=1, max=240)
>>>>>>>>>>       private String campaignId;
>>>>>>>>>>
>>>>>>>>>>       private Long id;
>>>>>>>>>>       @Size(min=1, max=240)
>>>>>>>>>>       private String indexNumber;
>>>>>>>>>>       @Size(min=1, max=20)
>>>>>>>>>>       @NotNull
>>>>>>>>>>       private String accountNumber;
>>>>>>>>>>       @Size(min=1, max=8)
>>>>>>>>>>       private String queueNumber;
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>       private Float balance;
>>>>>>>>>>
>>>>>>>>>>       @Size(min=0, max=11)
>>>>>>>>>>       private String personalIdentificationNumber1;
>>>>>>>>>>
>>>>>>>>>>       @Size(min=0, max=55)
>>>>>>>>>>       private String firstName1;
>>>>>>>>>>
>>>>>>>>>>       @Size(min=0, max=55)
>>>>>>>>>>       private String lastName1;
>>>>>>>>>>
>>>>>>>>>>       @Size(min=0, max=11)
>>>>>>>>>>       private String personalIdentificationNumber2;
>>>>>>>>>>
>>>>>>>>>>       private String firstName2;
>>>>>>>>>>
>>>>>>>>>>       private String lastName2;
>>>>>>>>>>
>>>>>>>>>>       private String address;
>>>>>>>>>>
>>>>>>>>>>       private String zipCode;
>>>>>>>>>>       private String city;
>>>>>>>>>>
>>>>>>>>>>       @NotNull
>>>>>>>>>>       @Size(min=0, max=20)
>>>>>>>>>>       private String homePhone;
>>>>>>>>>>
>>>>>>>>>>       @NotNull
>>>>>>>>>>       @Size(min=0, max=20)
>>>>>>>>>>       private String mobilePhone;
>>>>>>>>>>
>>>>>>>>>>       private String campaing;
>>>>>>>>>>
>>>>>>>>>>       @NotNull
>>>>>>>>>>       private String dateForExtract;
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Best regards / Med venlig hilsen
>>>>>>>>>> Nino Martinez
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Best regards / Med venlig hilsen
>>>>>>>>> Nino Martinez
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards / Med venlig hilsen
>>>>>> Nino Martinez
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards / Med venlig hilsen
>>>>> Nino Martinez
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>>
>> --
>> Best regards / Med venlig hilsen
>> Nino Martinez
>>
>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
No change without setting swagger2customizer..

I'll let it rest for a day..

On Thu, Nov 30, 2017 at 1:30 PM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> yup have set skip.default.json.provider.registration..
>
> But no matter what I do it has no effect on what the swagger feature
> generates.. Where it's changing the json provider or removing it all
> together..
>
> Trying it now without setting swagger2Customizer..
>
>
> On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin <sb...@gmail.com>
> wrote:
>
>> Just FYI, removing Jettison lib will ensure it's not auto-installed by
>> CXF, and if it is not possible to remove then the other option is to set
>> a "skip.default.json.provider.registration" bus property.
>>
>> However it's not related to Swagger at all, Jettison if installed will
>> only affect the way JSON is generated for service responses
>>
>> Sergey
>>
>> On 30/11/17 11:57, nino martinez wael wrote:
>>
>>> It does not seem to be a jettison problem.. And neither an problem with
>>> jackson versions, I just wiped all jettison and jackson(except 2.9.1 )
>>> versions from my running environment..
>>>
>>> Looking into of it could be something with JacksonJaxbJsonProvider vs
>>> JacksonJsonProvider
>>>
>>> On Thu, Nov 30, 2017 at 12:45 PM, nino martinez wael <
>>> nino.martinez.wael@gmail.com> wrote:
>>>
>>> IS there somewhere while on runtime where I can print current registered
>>>> providers for cxf, I have a feeling that it somehow are using jettison
>>>> for
>>>> json...
>>>>
>>>> On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
>>>> nino.martinez.wael@gmail.com> wrote:
>>>>
>>>> Okay I will check into libraries whats on class path.. I have the same
>>>>> gut feeling that it could be something like that.
>>>>>
>>>>> I have enunciate up and working on the side..
>>>>>
>>>>> On Thu, Nov 30, 2017 at 11:18 AM, Sergey Beryozkin <
>>>>> sberyozkin@gmail.com>
>>>>> wrote:
>>>>>
>>>>> Yes, the minor Swagger version caused this change, what was working
>>>>>> 3.1.x, specifically the serializers approach, was not working any
>>>>>> longer
>>>>>> with the new Swagger version, hence this update.
>>>>>>
>>>>>> I honestly do not know why exactly a JAXB annotated bean is not
>>>>>> correctly represented in the Swagger-generated #definitions, it's
>>>>>> obviously
>>>>>> something to do with the way Jackson and JAXB interacts.
>>>>>> Perhaps Jackson you register with DOSGI is not the same version
>>>>>> installed by the CXF swagger2 feature, perhaps some diff JAXB
>>>>>> versions are
>>>>>> involved, please keep experimenting
>>>>>>
>>>>>> Sergey
>>>>>>
>>>>>> defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
>>>>>>
>>>>>>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>>>>>>
>>>>>>> I think this could be the same:
>>>>>>>
>>>>>>> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
>>>>>>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>>>>>>
>>>>>>>
>>>>>>> swagger.setCustomizer(swagger2Customizer);
>>>>>>>
>>>>>>>
>>>>>>> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
>>>>>>>
>>>>>>>
>>>>>>> How can I tell swagger to do the same? I think that's the problem..
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> regards Nino
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
>>>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>>>
>>>>>>> Im wondering if this could be the problem :
>>>>>>>
>>>>>>>>
>>>>>>>> https://github.com/swagger-api/swagger-core/issues/960
>>>>>>>>
>>>>>>>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>>>>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>>>>
>>>>>>>> So I have a bean CXF accepts only this interpretation for my
>>>>>>>> endpoint:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> {
>>>>>>>>>       "contactList": [
>>>>>>>>>           {
>>>>>>>>>               "campaignId": "2",
>>>>>>>>>               "id":"",
>>>>>>>>>               "indexNumber": "",
>>>>>>>>>               "accountNumber": "232",
>>>>>>>>>               "queueNumber": "0",
>>>>>>>>>               "balance": 0,
>>>>>>>>>               "personalIdentificationNumber1": "string",
>>>>>>>>>               "firstName1": "string",
>>>>>>>>>               "lastName1": "string",
>>>>>>>>>               "personalIdentificationNumber2": "string",
>>>>>>>>>               "firstName2": "string",
>>>>>>>>>               "lastName2": "string",
>>>>>>>>>               "address": "string",
>>>>>>>>>               "zipCode": "string",
>>>>>>>>>               "city": "string",
>>>>>>>>>               "homePhone": "+4521",
>>>>>>>>>               "mobilePhone": "+45122",
>>>>>>>>>               "campaing": "string",
>>>>>>>>>               "dateForExtract": "string"
>>>>>>>>>
>>>>>>>>>           }
>>>>>>>>>       ]
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> However the swagger feature are generating this as example:
>>>>>>>>>
>>>>>>>>> {
>>>>>>>>>     "minimalContacts": [
>>>>>>>>>       {
>>>>>>>>>         "campaignId": "string",
>>>>>>>>>         "id": 0,
>>>>>>>>>         "indexNumber": "string",
>>>>>>>>>         "accountNumber": "string",
>>>>>>>>>         "queueNumber": "string",
>>>>>>>>>         "balance": 0,
>>>>>>>>>         "personalIdentificationNumber1": "string",
>>>>>>>>>         "firstName1": "string",
>>>>>>>>>         "lastName1": "string",
>>>>>>>>>         "personalIdentificationNumber2": "string",
>>>>>>>>>         "firstName2": "string",
>>>>>>>>>         "lastName2": "string",
>>>>>>>>>         "address": "string",
>>>>>>>>>         "zipCode": "string",
>>>>>>>>>         "city": "string",
>>>>>>>>>         "homePhone": "string",
>>>>>>>>>         "mobilePhone": "string",
>>>>>>>>>         "campaing": "string",
>>>>>>>>>         "dateForExtract": "string"
>>>>>>>>>       }
>>>>>>>>>     ]
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> MinimalContactWrapper
>>>>>>>>>
>>>>>>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>>>>>>> @XmlRootElement(name = "contacts")
>>>>>>>>> public class MinimalContactWrapper {
>>>>>>>>>
>>>>>>>>>       @XmlElementWrapper
>>>>>>>>>       @XmlElementRef
>>>>>>>>>       @Valid
>>>>>>>>>       @NotNull
>>>>>>>>>       @Size(min = 1)
>>>>>>>>>       private List<MinimalContact> contactList=new ArrayList<>();
>>>>>>>>>
>>>>>>>>>       public List<MinimalContact> getMinimalContacts() {
>>>>>>>>>           return contactList;
>>>>>>>>>       }
>>>>>>>>>
>>>>>>>>>       public void setMinimalContacts(List<MinimalContact>
>>>>>>>>> minimalContacts) {
>>>>>>>>>           this.contactList = minimalContacts;
>>>>>>>>>       }
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> MinimalContact
>>>>>>>>>
>>>>>>>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>>>>>>> @XmlRootElement(name="minimalcontact")
>>>>>>>>> public class MinimalContact {
>>>>>>>>>
>>>>>>>>>       @NotNull
>>>>>>>>>       @Size(min=1, max=240)
>>>>>>>>>       private String campaignId;
>>>>>>>>>
>>>>>>>>>       private Long id;
>>>>>>>>>       @Size(min=1, max=240)
>>>>>>>>>       private String indexNumber;
>>>>>>>>>       @Size(min=1, max=20)
>>>>>>>>>       @NotNull
>>>>>>>>>       private String accountNumber;
>>>>>>>>>       @Size(min=1, max=8)
>>>>>>>>>       private String queueNumber;
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>       private Float balance;
>>>>>>>>>
>>>>>>>>>       @Size(min=0, max=11)
>>>>>>>>>       private String personalIdentificationNumber1;
>>>>>>>>>
>>>>>>>>>       @Size(min=0, max=55)
>>>>>>>>>       private String firstName1;
>>>>>>>>>
>>>>>>>>>       @Size(min=0, max=55)
>>>>>>>>>       private String lastName1;
>>>>>>>>>
>>>>>>>>>       @Size(min=0, max=11)
>>>>>>>>>       private String personalIdentificationNumber2;
>>>>>>>>>
>>>>>>>>>       private String firstName2;
>>>>>>>>>
>>>>>>>>>       private String lastName2;
>>>>>>>>>
>>>>>>>>>       private String address;
>>>>>>>>>
>>>>>>>>>       private String zipCode;
>>>>>>>>>       private String city;
>>>>>>>>>
>>>>>>>>>       @NotNull
>>>>>>>>>       @Size(min=0, max=20)
>>>>>>>>>       private String homePhone;
>>>>>>>>>
>>>>>>>>>       @NotNull
>>>>>>>>>       @Size(min=0, max=20)
>>>>>>>>>       private String mobilePhone;
>>>>>>>>>
>>>>>>>>>       private String campaing;
>>>>>>>>>
>>>>>>>>>       @NotNull
>>>>>>>>>       private String dateForExtract;
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Best regards / Med venlig hilsen
>>>>>>>>> Nino Martinez
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards / Med venlig hilsen
>>>>>>>> Nino Martinez
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>>> --
>>>>> Best regards / Med venlig hilsen
>>>>> Nino Martinez
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards / Med venlig hilsen
>>>> Nino Martinez
>>>>
>>>>
>>>
>>>
>>>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
yup have set skip.default.json.provider.registration..

But no matter what I do it has no effect on what the swagger feature
generates.. Where it's changing the json provider or removing it all
together..

Trying it now without setting swagger2Customizer..


On Thu, Nov 30, 2017 at 1:04 PM, Sergey Beryozkin <sb...@gmail.com>
wrote:

> Just FYI, removing Jettison lib will ensure it's not auto-installed by
> CXF, and if it is not possible to remove then the other option is to set
> a "skip.default.json.provider.registration" bus property.
>
> However it's not related to Swagger at all, Jettison if installed will
> only affect the way JSON is generated for service responses
>
> Sergey
>
> On 30/11/17 11:57, nino martinez wael wrote:
>
>> It does not seem to be a jettison problem.. And neither an problem with
>> jackson versions, I just wiped all jettison and jackson(except 2.9.1 )
>> versions from my running environment..
>>
>> Looking into of it could be something with JacksonJaxbJsonProvider vs
>> JacksonJsonProvider
>>
>> On Thu, Nov 30, 2017 at 12:45 PM, nino martinez wael <
>> nino.martinez.wael@gmail.com> wrote:
>>
>> IS there somewhere while on runtime where I can print current registered
>>> providers for cxf, I have a feeling that it somehow are using jettison
>>> for
>>> json...
>>>
>>> On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
>>> nino.martinez.wael@gmail.com> wrote:
>>>
>>> Okay I will check into libraries whats on class path.. I have the same
>>>> gut feeling that it could be something like that.
>>>>
>>>> I have enunciate up and working on the side..
>>>>
>>>> On Thu, Nov 30, 2017 at 11:18 AM, Sergey Beryozkin <
>>>> sberyozkin@gmail.com>
>>>> wrote:
>>>>
>>>> Yes, the minor Swagger version caused this change, what was working
>>>>> 3.1.x, specifically the serializers approach, was not working any
>>>>> longer
>>>>> with the new Swagger version, hence this update.
>>>>>
>>>>> I honestly do not know why exactly a JAXB annotated bean is not
>>>>> correctly represented in the Swagger-generated #definitions, it's
>>>>> obviously
>>>>> something to do with the way Jackson and JAXB interacts.
>>>>> Perhaps Jackson you register with DOSGI is not the same version
>>>>> installed by the CXF swagger2 feature, perhaps some diff JAXB versions
>>>>> are
>>>>> involved, please keep experimenting
>>>>>
>>>>> Sergey
>>>>>
>>>>> defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
>>>>>
>>>>>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>>>>>
>>>>>> I think this could be the same:
>>>>>>
>>>>>> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
>>>>>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>>>>>
>>>>>>
>>>>>> swagger.setCustomizer(swagger2Customizer);
>>>>>>
>>>>>>
>>>>>> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
>>>>>>
>>>>>>
>>>>>> How can I tell swagger to do the same? I think that's the problem..
>>>>>>
>>>>>>
>>>>>>
>>>>>> regards Nino
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
>>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>>
>>>>>> Im wondering if this could be the problem :
>>>>>>
>>>>>>>
>>>>>>> https://github.com/swagger-api/swagger-core/issues/960
>>>>>>>
>>>>>>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>>>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>>>
>>>>>>> So I have a bean CXF accepts only this interpretation for my
>>>>>>> endpoint:
>>>>>>>
>>>>>>>>
>>>>>>>> {
>>>>>>>>       "contactList": [
>>>>>>>>           {
>>>>>>>>               "campaignId": "2",
>>>>>>>>               "id":"",
>>>>>>>>               "indexNumber": "",
>>>>>>>>               "accountNumber": "232",
>>>>>>>>               "queueNumber": "0",
>>>>>>>>               "balance": 0,
>>>>>>>>               "personalIdentificationNumber1": "string",
>>>>>>>>               "firstName1": "string",
>>>>>>>>               "lastName1": "string",
>>>>>>>>               "personalIdentificationNumber2": "string",
>>>>>>>>               "firstName2": "string",
>>>>>>>>               "lastName2": "string",
>>>>>>>>               "address": "string",
>>>>>>>>               "zipCode": "string",
>>>>>>>>               "city": "string",
>>>>>>>>               "homePhone": "+4521",
>>>>>>>>               "mobilePhone": "+45122",
>>>>>>>>               "campaing": "string",
>>>>>>>>               "dateForExtract": "string"
>>>>>>>>
>>>>>>>>           }
>>>>>>>>       ]
>>>>>>>> }
>>>>>>>>
>>>>>>>> However the swagger feature are generating this as example:
>>>>>>>>
>>>>>>>> {
>>>>>>>>     "minimalContacts": [
>>>>>>>>       {
>>>>>>>>         "campaignId": "string",
>>>>>>>>         "id": 0,
>>>>>>>>         "indexNumber": "string",
>>>>>>>>         "accountNumber": "string",
>>>>>>>>         "queueNumber": "string",
>>>>>>>>         "balance": 0,
>>>>>>>>         "personalIdentificationNumber1": "string",
>>>>>>>>         "firstName1": "string",
>>>>>>>>         "lastName1": "string",
>>>>>>>>         "personalIdentificationNumber2": "string",
>>>>>>>>         "firstName2": "string",
>>>>>>>>         "lastName2": "string",
>>>>>>>>         "address": "string",
>>>>>>>>         "zipCode": "string",
>>>>>>>>         "city": "string",
>>>>>>>>         "homePhone": "string",
>>>>>>>>         "mobilePhone": "string",
>>>>>>>>         "campaing": "string",
>>>>>>>>         "dateForExtract": "string"
>>>>>>>>       }
>>>>>>>>     ]
>>>>>>>> }
>>>>>>>>
>>>>>>>> MinimalContactWrapper
>>>>>>>>
>>>>>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>>>>>> @XmlRootElement(name = "contacts")
>>>>>>>> public class MinimalContactWrapper {
>>>>>>>>
>>>>>>>>       @XmlElementWrapper
>>>>>>>>       @XmlElementRef
>>>>>>>>       @Valid
>>>>>>>>       @NotNull
>>>>>>>>       @Size(min = 1)
>>>>>>>>       private List<MinimalContact> contactList=new ArrayList<>();
>>>>>>>>
>>>>>>>>       public List<MinimalContact> getMinimalContacts() {
>>>>>>>>           return contactList;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>       public void setMinimalContacts(List<MinimalContact>
>>>>>>>> minimalContacts) {
>>>>>>>>           this.contactList = minimalContacts;
>>>>>>>>       }
>>>>>>>>
>>>>>>>>
>>>>>>>> MinimalContact
>>>>>>>>
>>>>>>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>>>>>> @XmlRootElement(name="minimalcontact")
>>>>>>>> public class MinimalContact {
>>>>>>>>
>>>>>>>>       @NotNull
>>>>>>>>       @Size(min=1, max=240)
>>>>>>>>       private String campaignId;
>>>>>>>>
>>>>>>>>       private Long id;
>>>>>>>>       @Size(min=1, max=240)
>>>>>>>>       private String indexNumber;
>>>>>>>>       @Size(min=1, max=20)
>>>>>>>>       @NotNull
>>>>>>>>       private String accountNumber;
>>>>>>>>       @Size(min=1, max=8)
>>>>>>>>       private String queueNumber;
>>>>>>>>
>>>>>>>>
>>>>>>>>       private Float balance;
>>>>>>>>
>>>>>>>>       @Size(min=0, max=11)
>>>>>>>>       private String personalIdentificationNumber1;
>>>>>>>>
>>>>>>>>       @Size(min=0, max=55)
>>>>>>>>       private String firstName1;
>>>>>>>>
>>>>>>>>       @Size(min=0, max=55)
>>>>>>>>       private String lastName1;
>>>>>>>>
>>>>>>>>       @Size(min=0, max=11)
>>>>>>>>       private String personalIdentificationNumber2;
>>>>>>>>
>>>>>>>>       private String firstName2;
>>>>>>>>
>>>>>>>>       private String lastName2;
>>>>>>>>
>>>>>>>>       private String address;
>>>>>>>>
>>>>>>>>       private String zipCode;
>>>>>>>>       private String city;
>>>>>>>>
>>>>>>>>       @NotNull
>>>>>>>>       @Size(min=0, max=20)
>>>>>>>>       private String homePhone;
>>>>>>>>
>>>>>>>>       @NotNull
>>>>>>>>       @Size(min=0, max=20)
>>>>>>>>       private String mobilePhone;
>>>>>>>>
>>>>>>>>       private String campaing;
>>>>>>>>
>>>>>>>>       @NotNull
>>>>>>>>       private String dateForExtract;
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards / Med venlig hilsen
>>>>>>>> Nino Martinez
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards / Med venlig hilsen
>>>>>>> Nino Martinez
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> --
>>>> Best regards / Med venlig hilsen
>>>> Nino Martinez
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards / Med venlig hilsen
>>> Nino Martinez
>>>
>>>
>>
>>
>>


-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
It does not seem to be a jettison problem.. And neither an problem with
jackson versions, I just wiped all jettison and jackson(except 2.9.1 )
versions from my running environment..

Looking into of it could be something with JacksonJaxbJsonProvider vs
JacksonJsonProvider

On Thu, Nov 30, 2017 at 12:45 PM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> IS there somewhere while on runtime where I can print current registered
> providers for cxf, I have a feeling that it somehow are using jettison for
> json...
>
> On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
> nino.martinez.wael@gmail.com> wrote:
>
>> Okay I will check into libraries whats on class path.. I have the same
>> gut feeling that it could be something like that.
>>
>> I have enunciate up and working on the side..
>>
>> On Thu, Nov 30, 2017 at 11:18 AM, Sergey Beryozkin <sb...@gmail.com>
>> wrote:
>>
>>> Yes, the minor Swagger version caused this change, what was working
>>> 3.1.x, specifically the serializers approach, was not working any longer
>>> with the new Swagger version, hence this update.
>>>
>>> I honestly do not know why exactly a JAXB annotated bean is not
>>> correctly represented in the Swagger-generated #definitions, it's obviously
>>> something to do with the way Jackson and JAXB interacts.
>>> Perhaps Jackson you register with DOSGI is not the same version
>>> installed by the CXF swagger2 feature, perhaps some diff JAXB versions are
>>> involved, please keep experimenting
>>>
>>> Sergey
>>>
>>> defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
>>>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>>>
>>>> I think this could be the same:
>>>>
>>>> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
>>>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>>>
>>>>
>>>> swagger.setCustomizer(swagger2Customizer);
>>>>
>>>>
>>>> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
>>>>
>>>>
>>>> How can I tell swagger to do the same? I think that's the problem..
>>>>
>>>>
>>>>
>>>> regards Nino
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
>>>> nino.martinez.wael@gmail.com> wrote:
>>>>
>>>> Im wondering if this could be the problem :
>>>>>
>>>>> https://github.com/swagger-api/swagger-core/issues/960
>>>>>
>>>>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>>>>> nino.martinez.wael@gmail.com> wrote:
>>>>>
>>>>> So I have a bean CXF accepts only this interpretation for my endpoint:
>>>>>>
>>>>>> {
>>>>>>      "contactList": [
>>>>>>          {
>>>>>>              "campaignId": "2",
>>>>>>              "id":"",
>>>>>>              "indexNumber": "",
>>>>>>              "accountNumber": "232",
>>>>>>              "queueNumber": "0",
>>>>>>              "balance": 0,
>>>>>>              "personalIdentificationNumber1": "string",
>>>>>>              "firstName1": "string",
>>>>>>              "lastName1": "string",
>>>>>>              "personalIdentificationNumber2": "string",
>>>>>>              "firstName2": "string",
>>>>>>              "lastName2": "string",
>>>>>>              "address": "string",
>>>>>>              "zipCode": "string",
>>>>>>              "city": "string",
>>>>>>              "homePhone": "+4521",
>>>>>>              "mobilePhone": "+45122",
>>>>>>              "campaing": "string",
>>>>>>              "dateForExtract": "string"
>>>>>>
>>>>>>          }
>>>>>>      ]
>>>>>> }
>>>>>>
>>>>>> However the swagger feature are generating this as example:
>>>>>>
>>>>>> {
>>>>>>    "minimalContacts": [
>>>>>>      {
>>>>>>        "campaignId": "string",
>>>>>>        "id": 0,
>>>>>>        "indexNumber": "string",
>>>>>>        "accountNumber": "string",
>>>>>>        "queueNumber": "string",
>>>>>>        "balance": 0,
>>>>>>        "personalIdentificationNumber1": "string",
>>>>>>        "firstName1": "string",
>>>>>>        "lastName1": "string",
>>>>>>        "personalIdentificationNumber2": "string",
>>>>>>        "firstName2": "string",
>>>>>>        "lastName2": "string",
>>>>>>        "address": "string",
>>>>>>        "zipCode": "string",
>>>>>>        "city": "string",
>>>>>>        "homePhone": "string",
>>>>>>        "mobilePhone": "string",
>>>>>>        "campaing": "string",
>>>>>>        "dateForExtract": "string"
>>>>>>      }
>>>>>>    ]
>>>>>> }
>>>>>>
>>>>>> MinimalContactWrapper
>>>>>>
>>>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>>>> @XmlRootElement(name = "contacts")
>>>>>> public class MinimalContactWrapper {
>>>>>>
>>>>>>      @XmlElementWrapper
>>>>>>      @XmlElementRef
>>>>>>      @Valid
>>>>>>      @NotNull
>>>>>>      @Size(min = 1)
>>>>>>      private List<MinimalContact> contactList=new ArrayList<>();
>>>>>>
>>>>>>      public List<MinimalContact> getMinimalContacts() {
>>>>>>          return contactList;
>>>>>>      }
>>>>>>
>>>>>>      public void setMinimalContacts(List<MinimalContact>
>>>>>> minimalContacts) {
>>>>>>          this.contactList = minimalContacts;
>>>>>>      }
>>>>>>
>>>>>>
>>>>>> MinimalContact
>>>>>>
>>>>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>>>> @XmlRootElement(name="minimalcontact")
>>>>>> public class MinimalContact {
>>>>>>
>>>>>>      @NotNull
>>>>>>      @Size(min=1, max=240)
>>>>>>      private String campaignId;
>>>>>>
>>>>>>      private Long id;
>>>>>>      @Size(min=1, max=240)
>>>>>>      private String indexNumber;
>>>>>>      @Size(min=1, max=20)
>>>>>>      @NotNull
>>>>>>      private String accountNumber;
>>>>>>      @Size(min=1, max=8)
>>>>>>      private String queueNumber;
>>>>>>
>>>>>>
>>>>>>      private Float balance;
>>>>>>
>>>>>>      @Size(min=0, max=11)
>>>>>>      private String personalIdentificationNumber1;
>>>>>>
>>>>>>      @Size(min=0, max=55)
>>>>>>      private String firstName1;
>>>>>>
>>>>>>      @Size(min=0, max=55)
>>>>>>      private String lastName1;
>>>>>>
>>>>>>      @Size(min=0, max=11)
>>>>>>      private String personalIdentificationNumber2;
>>>>>>
>>>>>>      private String firstName2;
>>>>>>
>>>>>>      private String lastName2;
>>>>>>
>>>>>>      private String address;
>>>>>>
>>>>>>      private String zipCode;
>>>>>>      private String city;
>>>>>>
>>>>>>      @NotNull
>>>>>>      @Size(min=0, max=20)
>>>>>>      private String homePhone;
>>>>>>
>>>>>>      @NotNull
>>>>>>      @Size(min=0, max=20)
>>>>>>      private String mobilePhone;
>>>>>>
>>>>>>      private String campaing;
>>>>>>
>>>>>>      @NotNull
>>>>>>      private String dateForExtract;
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards / Med venlig hilsen
>>>>>> Nino Martinez
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards / Med venlig hilsen
>>>>> Nino Martinez
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>
>>
>> --
>> Best regards / Med venlig hilsen
>> Nino Martinez
>>
>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
IS there somewhere while on runtime where I can print current registered
providers for cxf, I have a feeling that it somehow are using jettison for
json...

On Thu, Nov 30, 2017 at 12:17 PM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> Okay I will check into libraries whats on class path.. I have the same gut
> feeling that it could be something like that.
>
> I have enunciate up and working on the side..
>
> On Thu, Nov 30, 2017 at 11:18 AM, Sergey Beryozkin <sb...@gmail.com>
> wrote:
>
>> Yes, the minor Swagger version caused this change, what was working
>> 3.1.x, specifically the serializers approach, was not working any longer
>> with the new Swagger version, hence this update.
>>
>> I honestly do not know why exactly a JAXB annotated bean is not correctly
>> represented in the Swagger-generated #definitions, it's obviously something
>> to do with the way Jackson and JAXB interacts.
>> Perhaps Jackson you register with DOSGI is not the same version installed
>> by the CXF swagger2 feature, perhaps some diff JAXB versions are involved,
>> please keep experimenting
>>
>> Sergey
>>
>> defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
>>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>>
>>> I think this could be the same:
>>>
>>> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
>>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>>
>>>
>>> swagger.setCustomizer(swagger2Customizer);
>>>
>>>
>>> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
>>>
>>>
>>> How can I tell swagger to do the same? I think that's the problem..
>>>
>>>
>>>
>>> regards Nino
>>>
>>>
>>>
>>>
>>> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
>>> nino.martinez.wael@gmail.com> wrote:
>>>
>>> Im wondering if this could be the problem :
>>>>
>>>> https://github.com/swagger-api/swagger-core/issues/960
>>>>
>>>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>>>> nino.martinez.wael@gmail.com> wrote:
>>>>
>>>> So I have a bean CXF accepts only this interpretation for my endpoint:
>>>>>
>>>>> {
>>>>>      "contactList": [
>>>>>          {
>>>>>              "campaignId": "2",
>>>>>              "id":"",
>>>>>              "indexNumber": "",
>>>>>              "accountNumber": "232",
>>>>>              "queueNumber": "0",
>>>>>              "balance": 0,
>>>>>              "personalIdentificationNumber1": "string",
>>>>>              "firstName1": "string",
>>>>>              "lastName1": "string",
>>>>>              "personalIdentificationNumber2": "string",
>>>>>              "firstName2": "string",
>>>>>              "lastName2": "string",
>>>>>              "address": "string",
>>>>>              "zipCode": "string",
>>>>>              "city": "string",
>>>>>              "homePhone": "+4521",
>>>>>              "mobilePhone": "+45122",
>>>>>              "campaing": "string",
>>>>>              "dateForExtract": "string"
>>>>>
>>>>>          }
>>>>>      ]
>>>>> }
>>>>>
>>>>> However the swagger feature are generating this as example:
>>>>>
>>>>> {
>>>>>    "minimalContacts": [
>>>>>      {
>>>>>        "campaignId": "string",
>>>>>        "id": 0,
>>>>>        "indexNumber": "string",
>>>>>        "accountNumber": "string",
>>>>>        "queueNumber": "string",
>>>>>        "balance": 0,
>>>>>        "personalIdentificationNumber1": "string",
>>>>>        "firstName1": "string",
>>>>>        "lastName1": "string",
>>>>>        "personalIdentificationNumber2": "string",
>>>>>        "firstName2": "string",
>>>>>        "lastName2": "string",
>>>>>        "address": "string",
>>>>>        "zipCode": "string",
>>>>>        "city": "string",
>>>>>        "homePhone": "string",
>>>>>        "mobilePhone": "string",
>>>>>        "campaing": "string",
>>>>>        "dateForExtract": "string"
>>>>>      }
>>>>>    ]
>>>>> }
>>>>>
>>>>> MinimalContactWrapper
>>>>>
>>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>>> @XmlRootElement(name = "contacts")
>>>>> public class MinimalContactWrapper {
>>>>>
>>>>>      @XmlElementWrapper
>>>>>      @XmlElementRef
>>>>>      @Valid
>>>>>      @NotNull
>>>>>      @Size(min = 1)
>>>>>      private List<MinimalContact> contactList=new ArrayList<>();
>>>>>
>>>>>      public List<MinimalContact> getMinimalContacts() {
>>>>>          return contactList;
>>>>>      }
>>>>>
>>>>>      public void setMinimalContacts(List<MinimalContact>
>>>>> minimalContacts) {
>>>>>          this.contactList = minimalContacts;
>>>>>      }
>>>>>
>>>>>
>>>>> MinimalContact
>>>>>
>>>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>>> @XmlRootElement(name="minimalcontact")
>>>>> public class MinimalContact {
>>>>>
>>>>>      @NotNull
>>>>>      @Size(min=1, max=240)
>>>>>      private String campaignId;
>>>>>
>>>>>      private Long id;
>>>>>      @Size(min=1, max=240)
>>>>>      private String indexNumber;
>>>>>      @Size(min=1, max=20)
>>>>>      @NotNull
>>>>>      private String accountNumber;
>>>>>      @Size(min=1, max=8)
>>>>>      private String queueNumber;
>>>>>
>>>>>
>>>>>      private Float balance;
>>>>>
>>>>>      @Size(min=0, max=11)
>>>>>      private String personalIdentificationNumber1;
>>>>>
>>>>>      @Size(min=0, max=55)
>>>>>      private String firstName1;
>>>>>
>>>>>      @Size(min=0, max=55)
>>>>>      private String lastName1;
>>>>>
>>>>>      @Size(min=0, max=11)
>>>>>      private String personalIdentificationNumber2;
>>>>>
>>>>>      private String firstName2;
>>>>>
>>>>>      private String lastName2;
>>>>>
>>>>>      private String address;
>>>>>
>>>>>      private String zipCode;
>>>>>      private String city;
>>>>>
>>>>>      @NotNull
>>>>>      @Size(min=0, max=20)
>>>>>      private String homePhone;
>>>>>
>>>>>      @NotNull
>>>>>      @Size(min=0, max=20)
>>>>>      private String mobilePhone;
>>>>>
>>>>>      private String campaing;
>>>>>
>>>>>      @NotNull
>>>>>      private String dateForExtract;
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards / Med venlig hilsen
>>>>> Nino Martinez
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards / Med venlig hilsen
>>>> Nino Martinez
>>>>
>>>>
>>>
>>>
>>>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
Okay I will check into libraries whats on class path.. I have the same gut
feeling that it could be something like that.

I have enunciate up and working on the side..

On Thu, Nov 30, 2017 at 11:18 AM, Sergey Beryozkin <sb...@gmail.com>
wrote:

> Yes, the minor Swagger version caused this change, what was working 3.1.x,
> specifically the serializers approach, was not working any longer with the
> new Swagger version, hence this update.
>
> I honestly do not know why exactly a JAXB annotated bean is not correctly
> represented in the Swagger-generated #definitions, it's obviously something
> to do with the way Jackson and JAXB interacts.
> Perhaps Jackson you register with DOSGI is not the same version installed
> by the CXF swagger2 feature, perhaps some diff JAXB versions are involved,
> please keep experimenting
>
> Sergey
>
> defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
>> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
>>
>> I think this could be the same:
>>
>> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
>> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
>>
>>
>> swagger.setCustomizer(swagger2Customizer);
>>
>>
>> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
>>
>>
>> How can I tell swagger to do the same? I think that's the problem..
>>
>>
>>
>> regards Nino
>>
>>
>>
>>
>> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
>> nino.martinez.wael@gmail.com> wrote:
>>
>> Im wondering if this could be the problem :
>>>
>>> https://github.com/swagger-api/swagger-core/issues/960
>>>
>>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>>> nino.martinez.wael@gmail.com> wrote:
>>>
>>> So I have a bean CXF accepts only this interpretation for my endpoint:
>>>>
>>>> {
>>>>      "contactList": [
>>>>          {
>>>>              "campaignId": "2",
>>>>              "id":"",
>>>>              "indexNumber": "",
>>>>              "accountNumber": "232",
>>>>              "queueNumber": "0",
>>>>              "balance": 0,
>>>>              "personalIdentificationNumber1": "string",
>>>>              "firstName1": "string",
>>>>              "lastName1": "string",
>>>>              "personalIdentificationNumber2": "string",
>>>>              "firstName2": "string",
>>>>              "lastName2": "string",
>>>>              "address": "string",
>>>>              "zipCode": "string",
>>>>              "city": "string",
>>>>              "homePhone": "+4521",
>>>>              "mobilePhone": "+45122",
>>>>              "campaing": "string",
>>>>              "dateForExtract": "string"
>>>>
>>>>          }
>>>>      ]
>>>> }
>>>>
>>>> However the swagger feature are generating this as example:
>>>>
>>>> {
>>>>    "minimalContacts": [
>>>>      {
>>>>        "campaignId": "string",
>>>>        "id": 0,
>>>>        "indexNumber": "string",
>>>>        "accountNumber": "string",
>>>>        "queueNumber": "string",
>>>>        "balance": 0,
>>>>        "personalIdentificationNumber1": "string",
>>>>        "firstName1": "string",
>>>>        "lastName1": "string",
>>>>        "personalIdentificationNumber2": "string",
>>>>        "firstName2": "string",
>>>>        "lastName2": "string",
>>>>        "address": "string",
>>>>        "zipCode": "string",
>>>>        "city": "string",
>>>>        "homePhone": "string",
>>>>        "mobilePhone": "string",
>>>>        "campaing": "string",
>>>>        "dateForExtract": "string"
>>>>      }
>>>>    ]
>>>> }
>>>>
>>>> MinimalContactWrapper
>>>>
>>>> @XmlAccessorType(XmlAccessType.FIELD)
>>>> @XmlRootElement(name = "contacts")
>>>> public class MinimalContactWrapper {
>>>>
>>>>      @XmlElementWrapper
>>>>      @XmlElementRef
>>>>      @Valid
>>>>      @NotNull
>>>>      @Size(min = 1)
>>>>      private List<MinimalContact> contactList=new ArrayList<>();
>>>>
>>>>      public List<MinimalContact> getMinimalContacts() {
>>>>          return contactList;
>>>>      }
>>>>
>>>>      public void setMinimalContacts(List<MinimalContact>
>>>> minimalContacts) {
>>>>          this.contactList = minimalContacts;
>>>>      }
>>>>
>>>>
>>>> MinimalContact
>>>>
>>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>>> @XmlRootElement(name="minimalcontact")
>>>> public class MinimalContact {
>>>>
>>>>      @NotNull
>>>>      @Size(min=1, max=240)
>>>>      private String campaignId;
>>>>
>>>>      private Long id;
>>>>      @Size(min=1, max=240)
>>>>      private String indexNumber;
>>>>      @Size(min=1, max=20)
>>>>      @NotNull
>>>>      private String accountNumber;
>>>>      @Size(min=1, max=8)
>>>>      private String queueNumber;
>>>>
>>>>
>>>>      private Float balance;
>>>>
>>>>      @Size(min=0, max=11)
>>>>      private String personalIdentificationNumber1;
>>>>
>>>>      @Size(min=0, max=55)
>>>>      private String firstName1;
>>>>
>>>>      @Size(min=0, max=55)
>>>>      private String lastName1;
>>>>
>>>>      @Size(min=0, max=11)
>>>>      private String personalIdentificationNumber2;
>>>>
>>>>      private String firstName2;
>>>>
>>>>      private String lastName2;
>>>>
>>>>      private String address;
>>>>
>>>>      private String zipCode;
>>>>      private String city;
>>>>
>>>>      @NotNull
>>>>      @Size(min=0, max=20)
>>>>      private String homePhone;
>>>>
>>>>      @NotNull
>>>>      @Size(min=0, max=20)
>>>>      private String mobilePhone;
>>>>
>>>>      private String campaing;
>>>>
>>>>      @NotNull
>>>>      private String dateForExtract;
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Best regards / Med venlig hilsen
>>>> Nino Martinez
>>>>
>>>>
>>>
>>>
>>> --
>>> Best regards / Med venlig hilsen
>>> Nino Martinez
>>>
>>>
>>
>>
>>


-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by Sergey Beryozkin <sb...@gmail.com>.
Yes, the minor Swagger version caused this change, what was working 
3.1.x, specifically the serializers approach, was not working any longer 
with the new Swagger version, hence this update.

I honestly do not know why exactly a JAXB annotated bean is not 
correctly represented in the Swagger-generated #definitions, it's 
obviously something to do with the way Jackson and JAXB interacts.
Perhaps Jackson you register with DOSGI is not the same version 
installed by the CXF swagger2 feature, perhaps some diff JAXB versions 
are involved, please keep experimenting

Sergey
> defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
> swagger.setSwagger2Serializers(defaultSwagger2Serializers);
> 
> I think this could be the same:
> 
> Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
> swagger2Customizer.setJavadocProvider(new JavaDocProvider());
> 
> 
> swagger.setCustomizer(swagger2Customizer);
> 
> 
> I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)
> 
> 
> How can I tell swagger to do the same? I think that's the problem..
> 
> 
> 
> regards Nino
> 
> 
> 
> 
> On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
> nino.martinez.wael@gmail.com> wrote:
> 
>> Im wondering if this could be the problem :
>>
>> https://github.com/swagger-api/swagger-core/issues/960
>>
>> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
>> nino.martinez.wael@gmail.com> wrote:
>>
>>> So I have a bean CXF accepts only this interpretation for my endpoint:
>>>
>>> {
>>>      "contactList": [
>>>          {
>>>              "campaignId": "2",
>>>              "id":"",
>>>              "indexNumber": "",
>>>              "accountNumber": "232",
>>>              "queueNumber": "0",
>>>              "balance": 0,
>>>              "personalIdentificationNumber1": "string",
>>>              "firstName1": "string",
>>>              "lastName1": "string",
>>>              "personalIdentificationNumber2": "string",
>>>              "firstName2": "string",
>>>              "lastName2": "string",
>>>              "address": "string",
>>>              "zipCode": "string",
>>>              "city": "string",
>>>              "homePhone": "+4521",
>>>              "mobilePhone": "+45122",
>>>              "campaing": "string",
>>>              "dateForExtract": "string"
>>>
>>>          }
>>>      ]
>>> }
>>>
>>> However the swagger feature are generating this as example:
>>>
>>> {
>>>    "minimalContacts": [
>>>      {
>>>        "campaignId": "string",
>>>        "id": 0,
>>>        "indexNumber": "string",
>>>        "accountNumber": "string",
>>>        "queueNumber": "string",
>>>        "balance": 0,
>>>        "personalIdentificationNumber1": "string",
>>>        "firstName1": "string",
>>>        "lastName1": "string",
>>>        "personalIdentificationNumber2": "string",
>>>        "firstName2": "string",
>>>        "lastName2": "string",
>>>        "address": "string",
>>>        "zipCode": "string",
>>>        "city": "string",
>>>        "homePhone": "string",
>>>        "mobilePhone": "string",
>>>        "campaing": "string",
>>>        "dateForExtract": "string"
>>>      }
>>>    ]
>>> }
>>>
>>> MinimalContactWrapper
>>>
>>> @XmlAccessorType(XmlAccessType.FIELD)
>>> @XmlRootElement(name = "contacts")
>>> public class MinimalContactWrapper {
>>>
>>>      @XmlElementWrapper
>>>      @XmlElementRef
>>>      @Valid
>>>      @NotNull
>>>      @Size(min = 1)
>>>      private List<MinimalContact> contactList=new ArrayList<>();
>>>
>>>      public List<MinimalContact> getMinimalContacts() {
>>>          return contactList;
>>>      }
>>>
>>>      public void setMinimalContacts(List<MinimalContact> minimalContacts) {
>>>          this.contactList = minimalContacts;
>>>      }
>>>
>>>
>>> MinimalContact
>>>
>>> @XmlAccessorType(XmlAccessType.PROPERTY)
>>> @XmlRootElement(name="minimalcontact")
>>> public class MinimalContact {
>>>
>>>      @NotNull
>>>      @Size(min=1, max=240)
>>>      private String campaignId;
>>>
>>>      private Long id;
>>>      @Size(min=1, max=240)
>>>      private String indexNumber;
>>>      @Size(min=1, max=20)
>>>      @NotNull
>>>      private String accountNumber;
>>>      @Size(min=1, max=8)
>>>      private String queueNumber;
>>>
>>>
>>>      private Float balance;
>>>
>>>      @Size(min=0, max=11)
>>>      private String personalIdentificationNumber1;
>>>
>>>      @Size(min=0, max=55)
>>>      private String firstName1;
>>>
>>>      @Size(min=0, max=55)
>>>      private String lastName1;
>>>
>>>      @Size(min=0, max=11)
>>>      private String personalIdentificationNumber2;
>>>
>>>      private String firstName2;
>>>
>>>      private String lastName2;
>>>
>>>      private String address;
>>>
>>>      private String zipCode;
>>>      private String city;
>>>
>>>      @NotNull
>>>      @Size(min=0, max=20)
>>>      private String homePhone;
>>>
>>>      @NotNull
>>>      @Size(min=0, max=20)
>>>      private String mobilePhone;
>>>
>>>      private String campaing;
>>>
>>>      @NotNull
>>>      private String dateForExtract;
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Best regards / Med venlig hilsen
>>> Nino Martinez
>>>
>>
>>
>>
>> --
>> Best regards / Med venlig hilsen
>> Nino Martinez
>>
> 
> 
> 

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
Okay I think something changed from cxf swagger 3.1.x to 3.2.x Earlier on I
could specify this :

DefaultSwagger2Serializers defaultSwagger2Serializers = new
DefaultSwagger2Serializers();
defaultSwagger2Serializers.setJavadocProvider(new JavaDocProvider());
swagger.setSwagger2Serializers(defaultSwagger2Serializers);

I think this could be the same:

Swagger2Customizer swagger2Customizer = new Swagger2Customizer();
swagger2Customizer.setJavadocProvider(new JavaDocProvider());


swagger.setCustomizer(swagger2Customizer);


I have setup CXF to use JACKSON (JacksonJaxbJsonProvider)


How can I tell swagger to do the same? I think that's the problem..



regards Nino




On Thu, Nov 30, 2017 at 10:50 AM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> Im wondering if this could be the problem :
>
> https://github.com/swagger-api/swagger-core/issues/960
>
> On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
> nino.martinez.wael@gmail.com> wrote:
>
>> So I have a bean CXF accepts only this interpretation for my endpoint:
>>
>> {
>>     "contactList": [
>>         {
>>             "campaignId": "2",
>>             "id":"",
>>             "indexNumber": "",
>>             "accountNumber": "232",
>>             "queueNumber": "0",
>>             "balance": 0,
>>             "personalIdentificationNumber1": "string",
>>             "firstName1": "string",
>>             "lastName1": "string",
>>             "personalIdentificationNumber2": "string",
>>             "firstName2": "string",
>>             "lastName2": "string",
>>             "address": "string",
>>             "zipCode": "string",
>>             "city": "string",
>>             "homePhone": "+4521",
>>             "mobilePhone": "+45122",
>>             "campaing": "string",
>>             "dateForExtract": "string"
>>
>>         }
>>     ]
>> }
>>
>> However the swagger feature are generating this as example:
>>
>> {
>>   "minimalContacts": [
>>     {
>>       "campaignId": "string",
>>       "id": 0,
>>       "indexNumber": "string",
>>       "accountNumber": "string",
>>       "queueNumber": "string",
>>       "balance": 0,
>>       "personalIdentificationNumber1": "string",
>>       "firstName1": "string",
>>       "lastName1": "string",
>>       "personalIdentificationNumber2": "string",
>>       "firstName2": "string",
>>       "lastName2": "string",
>>       "address": "string",
>>       "zipCode": "string",
>>       "city": "string",
>>       "homePhone": "string",
>>       "mobilePhone": "string",
>>       "campaing": "string",
>>       "dateForExtract": "string"
>>     }
>>   ]
>> }
>>
>> MinimalContactWrapper
>>
>> @XmlAccessorType(XmlAccessType.FIELD)
>> @XmlRootElement(name = "contacts")
>> public class MinimalContactWrapper {
>>
>>     @XmlElementWrapper
>>     @XmlElementRef
>>     @Valid
>>     @NotNull
>>     @Size(min = 1)
>>     private List<MinimalContact> contactList=new ArrayList<>();
>>
>>     public List<MinimalContact> getMinimalContacts() {
>>         return contactList;
>>     }
>>
>>     public void setMinimalContacts(List<MinimalContact> minimalContacts) {
>>         this.contactList = minimalContacts;
>>     }
>>
>>
>> MinimalContact
>>
>> @XmlAccessorType(XmlAccessType.PROPERTY)
>> @XmlRootElement(name="minimalcontact")
>> public class MinimalContact {
>>
>>     @NotNull
>>     @Size(min=1, max=240)
>>     private String campaignId;
>>
>>     private Long id;
>>     @Size(min=1, max=240)
>>     private String indexNumber;
>>     @Size(min=1, max=20)
>>     @NotNull
>>     private String accountNumber;
>>     @Size(min=1, max=8)
>>     private String queueNumber;
>>
>>
>>     private Float balance;
>>
>>     @Size(min=0, max=11)
>>     private String personalIdentificationNumber1;
>>
>>     @Size(min=0, max=55)
>>     private String firstName1;
>>
>>     @Size(min=0, max=55)
>>     private String lastName1;
>>
>>     @Size(min=0, max=11)
>>     private String personalIdentificationNumber2;
>>
>>     private String firstName2;
>>
>>     private String lastName2;
>>
>>     private String address;
>>
>>     private String zipCode;
>>     private String city;
>>
>>     @NotNull
>>     @Size(min=0, max=20)
>>     private String homePhone;
>>
>>     @NotNull
>>     @Size(min=0, max=20)
>>     private String mobilePhone;
>>
>>     private String campaing;
>>
>>     @NotNull
>>     private String dateForExtract;
>>
>>
>>
>>
>>
>>
>> --
>> Best regards / Med venlig hilsen
>> Nino Martinez
>>
>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez

Re: CXF 3.2.1 swagger generation are wrong for json

Posted by nino martinez wael <ni...@gmail.com>.
Im wondering if this could be the problem :

https://github.com/swagger-api/swagger-core/issues/960

On Thu, Nov 30, 2017 at 10:38 AM, nino martinez wael <
nino.martinez.wael@gmail.com> wrote:

> So I have a bean CXF accepts only this interpretation for my endpoint:
>
> {
>     "contactList": [
>         {
>             "campaignId": "2",
>             "id":"",
>             "indexNumber": "",
>             "accountNumber": "232",
>             "queueNumber": "0",
>             "balance": 0,
>             "personalIdentificationNumber1": "string",
>             "firstName1": "string",
>             "lastName1": "string",
>             "personalIdentificationNumber2": "string",
>             "firstName2": "string",
>             "lastName2": "string",
>             "address": "string",
>             "zipCode": "string",
>             "city": "string",
>             "homePhone": "+4521",
>             "mobilePhone": "+45122",
>             "campaing": "string",
>             "dateForExtract": "string"
>
>         }
>     ]
> }
>
> However the swagger feature are generating this as example:
>
> {
>   "minimalContacts": [
>     {
>       "campaignId": "string",
>       "id": 0,
>       "indexNumber": "string",
>       "accountNumber": "string",
>       "queueNumber": "string",
>       "balance": 0,
>       "personalIdentificationNumber1": "string",
>       "firstName1": "string",
>       "lastName1": "string",
>       "personalIdentificationNumber2": "string",
>       "firstName2": "string",
>       "lastName2": "string",
>       "address": "string",
>       "zipCode": "string",
>       "city": "string",
>       "homePhone": "string",
>       "mobilePhone": "string",
>       "campaing": "string",
>       "dateForExtract": "string"
>     }
>   ]
> }
>
> MinimalContactWrapper
>
> @XmlAccessorType(XmlAccessType.FIELD)
> @XmlRootElement(name = "contacts")
> public class MinimalContactWrapper {
>
>     @XmlElementWrapper
>     @XmlElementRef
>     @Valid
>     @NotNull
>     @Size(min = 1)
>     private List<MinimalContact> contactList=new ArrayList<>();
>
>     public List<MinimalContact> getMinimalContacts() {
>         return contactList;
>     }
>
>     public void setMinimalContacts(List<MinimalContact> minimalContacts) {
>         this.contactList = minimalContacts;
>     }
>
>
> MinimalContact
>
> @XmlAccessorType(XmlAccessType.PROPERTY)
> @XmlRootElement(name="minimalcontact")
> public class MinimalContact {
>
>     @NotNull
>     @Size(min=1, max=240)
>     private String campaignId;
>
>     private Long id;
>     @Size(min=1, max=240)
>     private String indexNumber;
>     @Size(min=1, max=20)
>     @NotNull
>     private String accountNumber;
>     @Size(min=1, max=8)
>     private String queueNumber;
>
>
>     private Float balance;
>
>     @Size(min=0, max=11)
>     private String personalIdentificationNumber1;
>
>     @Size(min=0, max=55)
>     private String firstName1;
>
>     @Size(min=0, max=55)
>     private String lastName1;
>
>     @Size(min=0, max=11)
>     private String personalIdentificationNumber2;
>
>     private String firstName2;
>
>     private String lastName2;
>
>     private String address;
>
>     private String zipCode;
>     private String city;
>
>     @NotNull
>     @Size(min=0, max=20)
>     private String homePhone;
>
>     @NotNull
>     @Size(min=0, max=20)
>     private String mobilePhone;
>
>     private String campaing;
>
>     @NotNull
>     private String dateForExtract;
>
>
>
>
>
>
> --
> Best regards / Med venlig hilsen
> Nino Martinez
>



-- 
Best regards / Med venlig hilsen
Nino Martinez