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 <[email protected]> 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 <[email protected] >> <mailto:[email protected]>> 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 >> <[email protected] >> <mailto:[email protected]> >> <mailto:[email protected] >> <mailto:[email protected]>>> 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 >> <[email protected] >> <mailto:[email protected]> >> <mailto:[email protected] >> <mailto:[email protected]>>> >> 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 >> <[email protected] <mailto:[email protected]> >> <mailto:[email protected] <mailto:[email protected]>>> >> 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 < >> [email protected] <mailto:[email protected] >> > >> <mailto:[email protected] >> <mailto:[email protected]>>> 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 < >> [email protected] <mailto:[email protected] >> > >> <mailto:[email protected] >> <mailto:[email protected]>>> 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 <[email protected] >> <mailto:[email protected]> >> <mailto:[email protected] >> >> <mailto:[email protected]>>> >> >> 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 < >> [email protected] <mailto:[email protected] >> > >> <mailto: >> [email protected] >> <mailto:[email protected]>>> >> 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 < >> [email protected] <mailto:[email protected] >> > >> <mailto: >> [email protected] >> >> <mailto:[email protected]>>> >> >> 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
