+ private class RepositoryContextStc extends ServiceTracker<RepositoryContext, RepositoryContext> {
+
+ public RepositoryContextStc() {
+ super(bc, RepositoryContext.class, null);
+ }
+
+ @Override
+ public RepositoryContext addingService(ServiceReference<RepositoryContext> reference) {
+ RepositoryContext nodeRepo = bc.getService(reference);
+ Object cn = reference.getProperty(NodeConstants.CN);
+ if (cn != null) {
+ if (cn.equals(NodeConstants.NODE)) {
+ prepareNodeRepository(nodeRepo.getRepository());
+ prepareHomeRepository(nodeRepo.getRepository());
+ nodeAvailable = true;
+ checkReadiness();
+ }else{
+ // TODO standalone
+ }
+ }
+ return nodeRepo;
+ }
+
+ @Override
+ public void modifiedService(ServiceReference<RepositoryContext> reference, RepositoryContext service) {
+ }
+
+ @Override
+ public void removedService(ServiceReference<RepositoryContext> reference, RepositoryContext service) {
+ }
+
+ }
+
+ private class PrepareHttpStc extends ServiceTracker<HttpService, HttpService> {
+ private DataHttp dataHttp;
+ private NodeHttp nodeHttp;
+
+ public PrepareHttpStc() {
+ super(bc, HttpService.class, null);
+ }
+
+ @Override
+ public HttpService addingService(ServiceReference<HttpService> reference) {
+ HttpService httpService = addHttpService(reference);
+ return httpService;
+ }
+
+ @Override
+ public void removedService(ServiceReference<HttpService> reference, HttpService service) {
+ if (dataHttp != null)
+ dataHttp.destroy();
+ dataHttp = null;
+ if (nodeHttp != null)
+ nodeHttp.destroy();
+ nodeHttp = null;
+ }
+
+ private HttpService addHttpService(ServiceReference<HttpService> sr) {
+ HttpService httpService = bc.getService(sr);
+ // TODO find constants
+ Object httpPort = sr.getProperty("http.port");
+ Object httpsPort = sr.getProperty("https.port");
+ dataHttp = new DataHttp(httpService);
+ nodeHttp = new NodeHttp(httpService, bc);
+ log.info(httpPortsMsg(httpPort, httpsPort));
+ httpAvailable = true;
+ checkReadiness();
+ return httpService;
+ }
+
+ private String httpPortsMsg(Object httpPort, Object httpsPort) {
+ return "HTTP " + httpPort + (httpsPort != null ? " - HTTPS " + httpsPort : "");
+ }
+ }
+