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 
<ch...@die-schneider.net<mailto:ch...@die-schneider.net>>:

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 
<osgi-dev@mail.osgi.org<mailto:osgi-dev@mail.osgi.org>>:
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
osgi-dev@mail.osgi.org<mailto:osgi-dev@mail.osgi.org>
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
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to