RepositoryBlocker.java
2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* org.apache.felix.scr.annotations.Activate
* org.apache.felix.scr.annotations.Component
* org.apache.felix.scr.annotations.Reference
* org.apache.felix.scr.annotations.ReferenceCardinality
* org.apache.felix.scr.annotations.ReferencePolicy
* org.apache.sling.installer.api.tasks.ResourceTransformer
* org.apache.sling.launchpad.api.StartupHandler
*/
package com.adobe.granite.installer.factory.packages.impl;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.sling.installer.api.tasks.ResourceTransformer;
import org.apache.sling.launchpad.api.StartupHandler;
@Component
@Reference(name="transformer", referenceInterface=ResourceTransformer.class, target="(waitforme=true)", cardinality=ReferenceCardinality.OPTIONAL_UNARY, policy=ReferencePolicy.DYNAMIC)
public class RepositoryBlocker {
@Reference
private volatile StartupHandler handler;
private volatile boolean checked = false;
private volatile boolean initialized = false;
private final Object lock = new Object();
/*
* WARNING - Removed try catching itself - possible behaviour change.
*/
@Activate
protected void activate() {
Object object = this.lock;
synchronized (object) {
if (!this.checked && !this.initialized) {
this.initialized = true;
this.handler.waitWithStartup(true);
}
}
}
/*
* WARNING - Removed try catching itself - possible behaviour change.
*/
protected void bindTransformer(ResourceTransformer rt) {
Object object = this.lock;
synchronized (object) {
if (!this.checked) {
if (this.initialized) {
this.handler.waitWithStartup(false);
} else {
this.initialized = true;
}
this.checked = true;
}
}
}
protected void unbindTransformer(ResourceTransformer rt) {
}
protected void bindHandler(StartupHandler startupHandler) {
this.handler = startupHandler;
}
protected void unbindHandler(StartupHandler startupHandler) {
if (this.handler == startupHandler) {
this.handler = null;
}
}
}