enclosed some snippets about the client.
The path interface, created with swagger from a yaml-file via 'java -jar
swagger-codegen-cli.jar generate -l jaxrs-cxf-client -i ...'
import javax.ws.rs.POST;
import javax.ws.rs.Path;
…
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
...
@Path("/")
@Api(value = "/", description = "")
public interface IsybaseApi {
@GET
@Path("/rncs/cnt")
@Produces({ "application/json" })
@ApiOperation(value = "returns total number of rncs", tags = {})
@ApiResponses(value = { @ApiResponse(code = 200, message = "number of RNCs",
response = Count.class) })
public Count getCount();
}
The IntentsProvider:
@Component(property =
"org.apache.cxf.dosgi.IntentName=com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider")
public class JacksonIntent implements IntentsProvider{
@Override
public List<?> getIntents(){
return Arrays.asList((Object) new JacksonJsonProvider());
}
}
The class count, also generated from swagger:
public class Count {
@ApiModelProperty(value = "")
private Long count = null;
public Long getCount() {
return count;
}
public void setCount(Long count) {
this.count = count;
}
public Count count(Long count) {
this.count = count;
return this;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class Count {\n");
sb.append(" count: ").append(toIndentedString(count)).append("\n");
sb.append("}");
return sb.toString();
}
private static String toIndentedString(java.lang.Object o) {
if (o == null) {
return "null";
}
return o.toString().replace("\n", "\n ");
}
}
The client, for example a gogo command:
@Component(service = IsybaseApiCommands.class, property =
{
Debug.COMMAND_SCOPE + "=omnisybase",
Debug.COMMAND_FUNCTION + "=count"
}, name = "de.apollon.restclient.omn.isybase.command")
public class IsybaseApiCommands{
@Reference
private IsybaseApi omnapi;
@Descriptor("gets the number of RNCs")
public Count count() throws Exception{
return omnapi.getCount();
}
}
}
The client can do valid rest calls and de deserialization is running.
As I told I am not able to set the authorization header.
Kind regards,
Michael
Am 02.03.2018 um 07:26 schrieb Christian Schneider
<[email protected]<mailto:[email protected]>>:
The cleanest way to add authorization or any other technical capability like
logging is to add a CXF feature to the client. If you are lucky then there is
already a suitable feature. If not then you have to create your own feature and
interceptor for adding the header.
How do you create the client?
Christian
2018-03-01 19:43 GMT+01:00 Michael Wirth via osgi-dev
<[email protected]<mailto:[email protected]>>:
I’m using Apache CXF in an OSGi-Application to call REST-Services provided from
another (spring) application.
I give the path-interface (generated with swagger) to my
osgi-client-appliation. While runtime, Apache CXF generates the client proxy
interface, calls the REST-Service and deserialize the returned json to the
swagger generated objects. All works fine :-)
Now I miss one thing. For Authorization I have to add a header. Because I do
not have the ‚Client‘-Instanze (WebTarget for instance) I’m not able to add an
header. Is there some property, configuration or a service which can be used?
Best Regards,
Michael
_______________________________________________
OSGi Developer Mail List
[email protected]<mailto:[email protected]>
https://mail.osgi.org/mailman/listinfo/osgi-dev
--
--
Christian Schneider
http://www.liquid-reality.de<http://www.liquid-reality.de/>
Computer Scientist
http://www.adobe.com<http://www.adobe.com/>
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev