1
2
3
4
5
6
7
8
9
10
11 package org.eclipse.jgit.transport;
12
13 import java.io.IOException;
14 import java.util.List;
15
16
17
18
19
20
21
22
23
24
25
26 public class AdvertiseRefsHookChain implements AdvertiseRefsHook {
27 private final AdvertiseRefsHook[] hooks;
28 private final int count;
29
30
31
32
33
34
35
36
37 public static AdvertiseRefsHook newChain(List<? extends AdvertiseRefsHook> hooks) {
38 AdvertiseRefsHook[] newHooks = new AdvertiseRefsHook[hooks.size()];
39 int i = 0;
40 for (AdvertiseRefsHook hook : hooks)
41 if (hook != AdvertiseRefsHook.DEFAULT)
42 newHooks[i++] = hook;
43 switch (i) {
44 case 0:
45 return AdvertiseRefsHook.DEFAULT;
46 case 1:
47 return newHooks[0];
48 default:
49 return new AdvertiseRefsHookChain(newHooks, i);
50 }
51 }
52
53
54
55
56 @Override
57 public void advertiseRefs(ReceivePack rp)
58 throws IOException {
59 for (int i = 0; i < count; i++)
60 hooks[i].advertiseRefs(rp);
61 }
62
63
64 @Override
65 public void advertiseRefs(UploadPack rp)
66 throws ServiceMayNotContinueException {
67 for (int i = 0; i < count; i++)
68 hooks[i].advertiseRefs(rp);
69 }
70
71 private AdvertiseRefsHookChain(AdvertiseRefsHook[] hooks, int count) {
72 this.hooks = hooks;
73 this.count = count;
74 }
75 }