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 <sberyoz...@gmail.com <mailto:sberyoz...@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.w...@gmail.com
        <mailto:nino.martinez.w...@gmail.com>
        <mailto:nino.martinez.w...@gmail.com
        <mailto:nino.martinez.w...@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.w...@gmail.com
        <mailto:nino.martinez.w...@gmail.com>
        <mailto:nino.martinez.w...@gmail.com
        <mailto:nino.martinez.w...@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
                 <sberyoz...@gmail.com <mailto:sberyoz...@gmail.com>
        <mailto:sberyoz...@gmail.com <mailto:sberyoz...@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.w...@gmail.com <mailto:nino.martinez.w...@gmail.com>
                         <mailto:nino.martinez.w...@gmail.com
        <mailto:nino.martinez.w...@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.w...@gmail.com <mailto:nino.martinez.w...@gmail.com>
                             <mailto:nino.martinez.w...@gmail.com
        <mailto:nino.martinez.w...@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 <sberyoz...@gmail.com
        <mailto:sberyoz...@gmail.com>
                                 <mailto:sberyoz...@gmail.com
        <mailto:sberyoz...@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.w...@gmail.com <mailto:nino.martinez.w...@gmail.com>
<mailto:nino.martinez.w...@gmail.com
        <mailto:nino.martinez.w...@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.w...@gmail.com <mailto:nino.martinez.w...@gmail.com>
<mailto:nino.martinez.w...@gmail.com
        <mailto:nino.martinez.w...@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

Reply via email to