@Override public void startup() throws Exception { patientEndpoint = new PatientEndpointImpl(patientDataProvider, encounterDataProvider); encounterEndpoint = new EncounterEndpointImpl(encounterDataProvider); ObjectMapper mapper = new ObjectMapper(); mapper.getSerializationConfig().setDateFormat(new SimpleDateFormat("MM/dd/yyyy")); JAXRSApplication app = new JAXRSApplication(); app.addClass(ApiListingResource.class); app.addClass(ApiDeclarationProvider.class); app.addClass(ApiListingResourceJSON.class); app.addClass(ResourceListingProvider.class); //app.addClass(PatientEndpoint.class); //app.addClass(EncounterEndpoint.class); app.addSingletons(patientEndpoint, encounterEndpoint); app.addSingleton(new JacksonJsonProvider(mapper)); app.addSingleton(new AccessControlResponseFilter(true)); service.registerApplication(ALIAS, app); BeanConfig beanConfig = new BeanConfig(); beanConfig.setVersion("0.0.1"); beanConfig.setBasePath(ALIAS); beanConfig.setResourcePackage("com.lexmark.healthcare.lhcdb.endpoint.rs"); beanConfig.setDescription("Healthcare Database resources"); beanConfig.setTitle("Healthcare Database REST API"); beanConfig.setScan(true); ScannerFactory.setScanner(new DefaultJaxrsScanner()); //ScannerFactory.setScanner(new ReflectiveJaxrsScanner()); ClassReaders.setReader(new DefaultJaxrsApiReader()); }
{"apiVersion":"0.0.1","swaggerVersion":"1.2","info":{"title":"Healthcare Database REST API","description":"Healthcare Database resources"}}
{"apiVersion":"0.0.1","swaggerVersion":"1.2","apis":[{"path":"/patients","description":"Operations about patients"},{"path":"/encounters","description":"Operations about encounters"}],"info":{"title":"Healthcare Database REST API","description":"Healthcare Database resources"}}
@Path("/patients")@Api(value="/patients", description="Operations about patients")@Produces(MediaType.APPLICATION_JSON)
public interface PatientEndpoint {
@GET @Path("/{facilityId}/{mrn}") @ApiOperation(value="Find patient by Facility ID and MRN", notes="Requires both the Facility ID and MRN to return a patient.") @ApiResponses(value={@ApiResponse(code=400, message="Invalid ID combination supplied"), @ApiResponse(code=404, message="Patient not found")}) //TODO: Fix later for facilityId public Patient getPatient(@ApiParam(value="MRN of patient that needs to be fetched", required=true) @PathParam("mrn") String mrn, @ApiParam(value="Facility ID of patient that needs to be fetched", required=true) @PathParam("facilityId") String facilityId);
...
}
public class PatientEndpointImpl implements PatientEndpoint{ private static SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("MM/dd/yyyy"); private PatientDataProvider patientDataProvider; private EncounterDataProvider encounterDataProvider; public PatientEndpointImpl (PatientDataProvider patientDataProvider, EncounterDataProvider encounterDataProvider) { this.patientDataProvider = patientDataProvider; this.encounterDataProvider = encounterDataProvider; } Logger logger = LoggerFactory.getLogger(PatientEndpointImpl.class);
@Override public Patient[] getPatients(String firstName, String middleName, String lastName, String dob, int maxResults) { ... }
...
}
Caused by: java.lang.NullPointerException
at org.eclipse.osgi.internal.loader.BundleLoader.findResources(BundleLoader.java:661)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findResources(DefaultClassLoader.java:162)
at java.lang.ClassLoader.getResources(Unknown Source)
at org.reflections.util.ClasspathHelper.forResource(ClasspathHelper.java:108)
at org.reflections.util.ClasspathHelper.forPackage(ClasspathHelper.java:86)
at com.wordnik.swagger.jaxrs.config.ReflectiveJaxrsScanner.classesFromContext(ReflectiveJaxrsScanner.scala:35)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$$anonfun$listing$1$$anonfun$apply$1$$anonfun$apply$2.apply(ApiListing.scala:42)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$$anonfun$listing$1$$anonfun$apply$1$$anonfun$apply$2.apply(ApiListing.scala:40)
at scala.Option.map(Option.scala:145)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$$anonfun$listing$1$$anonfun$apply$1.apply(ApiListing.scala:40)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$$anonfun$listing$1$$anonfun$apply$1.apply(ApiListing.scala:39)
at scala.Option.map(Option.scala:145)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$$anonfun$listing$1.apply(ApiListing.scala:39)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$$anonfun$listing$1.apply(ApiListing.scala:37)
at scala.Option.orElse(Option.scala:257)
at com.wordnik.swagger.jaxrs.listing.ApiListingCache$.listing(ApiListing.scala:37)
at com.wordnik.swagger.jaxrs.listing.ApiListingResource.resourceListing(ApiListing.scala:85)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
... 37 more
com.lexmark.healthcare.lhcdb.endpoint.rs the package of your implementations, interfaces or both?
--
You received this message because you are subscribed to the Google Groups "Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggersocket+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.
However, if I change the configuration so that I add my own resources as classes, I get a list of apis back from the api-docs endpoint.
JAXRSApplication app = new JAXRSApplication(); app.addClass(ApiListingResource.class); app.addClass(ApiDeclarationProvider.class); app.addClass(ApiListingResourceJSON.class); app.addClass(ResourceListingProvider.class);
//app.addClass(PatientEndpoint.class); //app.addClass(EncounterEndpoint.class); app.addSingletons(patientEndpoint, encounterEndpoint);
JAXRSApplication app = new JAXRSApplication(); app.addClass(ApiListingResource.class); app.addClass(ApiDeclarationProvider.class); app.addClass(ApiListingResourceJSON.class);
app.addClass(ResourceListingProvider.class);
app.addClass(PatientEndpoint.class); app.addClass(EncounterEndpoint.class); //app.addSingletons(patientEndpoint, encounterEndpoint);
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggersocket+unsubscri...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to swagger-swaggers...@googlegroups.com.