1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package io.wcm.caravan.hal.docs.impl.reader;
21
22 import io.wcm.caravan.hal.docs.impl.model.Service;
23
24 import java.io.InputStream;
25 import java.net.URL;
26
27 import org.osgi.framework.Bundle;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31
32
33
34 public final class ServiceModelReader {
35
36
37
38
39 public static final String DOCS_CLASSPATH_PREFIX = "HAL-DOCS-INF";
40
41
42
43
44 public static final String SERVICE_DOC_FILE = "serviceDoc.json";
45
46 private static final Logger log = LoggerFactory.getLogger(ServiceModelReader.class);
47
48 private ServiceModelReader() {
49
50 }
51
52
53
54
55
56
57 public static Service read(Bundle bundle) {
58 String resourcePath = DOCS_CLASSPATH_PREFIX + "/" + SERVICE_DOC_FILE;
59 URL bundleResource = bundle.getResource(resourcePath);
60 if (bundleResource == null) {
61 return null;
62 }
63 try (InputStream is = bundleResource.openStream()) {
64 return new ServiceJson().read(is);
65 }
66 catch (Throwable ex) {
67 log.error("Unable to parse JSON file " + resourcePath + " from bundle " + bundle.getSymbolicName());
68 return null;
69 }
70 }
71
72 }