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.augmenter;
21
22 import io.wcm.caravan.hal.docs.HalDocsAugmenter;
23 import io.wcm.caravan.hal.docs.HalDocsAugmenterFactory;
24 import io.wcm.caravan.hal.docs.impl.DocsPath;
25 import io.wcm.caravan.hal.docs.impl.reader.ServiceModelReader;
26 import io.wcm.caravan.hal.resource.HalResource;
27
28 import org.apache.felix.scr.annotations.Component;
29 import org.apache.felix.scr.annotations.Service;
30 import org.osgi.framework.Bundle;
31
32
33
34
35 @Component
36 @Service(value = HalDocsAugmenterFactory.class, serviceFactory = true)
37 public class HalDocsAugmenterFactoryImpl implements HalDocsAugmenterFactory {
38
39 private static final HalDocsAugmenter NOOP_AUGMENTER = new HalDocsAugmenter() {
40 @Override
41 public void augment(HalResource resource) {
42
43 }
44 };
45
46 @Override
47 public HalDocsAugmenter create(Bundle bundle) {
48 if (bundle != null) {
49 String docsPath = DocsPath.get(bundle);
50 if (docsPath != null) {
51 io.wcm.caravan.hal.docs.impl.model.Service serviceModel = ServiceModelReader.read(bundle);
52 if (serviceModel != null) {
53 return new HalDocsAugmenterImpl(serviceModel, docsPath);
54 }
55 }
56 }
57 return NOOP_AUGMENTER;
58 }
59
60 }