ReplicationAgentProviderImpl.java
4.61 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* com.day.cq.replication.AgentConfig
* com.day.cq.replication.ReplicationException
* com.day.cq.replication.ReplicationLog
* com.scene7.is.catalog.service.publish.atomic.PublishingService
* com.scene7.is.catalog.service.publish.atomic.PublishingServiceHttp
* com.scene7.is.util.callbacks.Proc1
* com.scene7.is.util.error.Unchecked
* org.apache.commons.httpclient.HttpClient
* org.apache.felix.scr.annotations.Component
* org.apache.felix.scr.annotations.Reference
* org.apache.felix.scr.annotations.Service
* org.apache.sling.api.resource.ValueMap
* org.jetbrains.annotations.NotNull
*/
package com.adobe.cq.dam.aod.replication.transport_config;
import com.adobe.cq.dam.aod.replication.PublishingAgent;
import com.adobe.cq.dam.aod.replication.Util;
import com.adobe.cq.dam.aod.replication.transport_config.HttpClientProvider;
import com.adobe.cq.dam.aod.replication.transport_config.ReplicationAgentProvider;
import com.day.cq.replication.AgentConfig;
import com.day.cq.replication.ReplicationException;
import com.day.cq.replication.ReplicationLog;
import com.scene7.is.catalog.service.publish.atomic.PublishingService;
import com.scene7.is.catalog.service.publish.atomic.PublishingServiceHttp;
import com.scene7.is.util.callbacks.Proc1;
import com.scene7.is.util.error.Unchecked;
import java.net.URL;
import org.apache.commons.httpclient.HttpClient;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.ValueMap;
import org.jetbrains.annotations.NotNull;
@Service(value={ReplicationAgentProvider.class})
@Component(immediate=1)
public final class ReplicationAgentProviderImpl
implements ReplicationAgentProvider {
@Reference
@NotNull
private final HttpClientProvider httpClientProvider;
public static ReplicationAgentProvider replicationAgentProvider(HttpClientProvider httpClientProvider) {
return new ReplicationAgentProviderImpl(httpClientProvider);
}
public static ReplicationAgentProvider replicationAgentProvider() {
return new ReplicationAgentProvider(){
@Override
public PublishingService getAgent(AgentConfig config, ReplicationLog log) throws ReplicationException {
URL serverUrl = Util.serverUrl(config.getTransportURI());
String tenantId = ReplicationAgentProviderImpl.tenantId(config);
PublishingServiceHttp service = PublishingServiceHttp.publishingClient((URL)serverUrl, (Proc1)ReplicationAgentProviderImpl.doLog(log));
return PublishingAgent.publishingAgent(tenantId, (PublishingService)service);
}
};
}
@Override
public PublishingService getAgent(AgentConfig config, ReplicationLog log) throws ReplicationException {
URL serverUrl = Util.serverUrl(config.getTransportURI());
String tenantId = ReplicationAgentProviderImpl.tenantId(config);
HttpClient httpClient = this.httpClientProvider.getHttpClient(config, log);
PublishingServiceHttp service = PublishingServiceHttp.publishingClient((HttpClient)httpClient, (String)serverUrl.toString(), ReplicationAgentProviderImpl.doLog(log));
return PublishingAgent.publishingAgent(tenantId, (PublishingService)service);
}
private static String tenantId(AgentConfig config) {
ValueMap props = config.getProperties();
String tenantId = (String)props.get("companyName", String.class);
if (tenantId == null || tenantId.isEmpty()) {
throw Unchecked.unchecked((Throwable)new ReplicationException("companyName (tenantId) property in replication agent configuration must be defined and non empty"));
}
return tenantId;
}
private ReplicationAgentProviderImpl(@NotNull HttpClientProvider httpClientProvider) {
this.httpClientProvider = httpClientProvider;
}
private static Proc1<String> doLog(final ReplicationLog log) {
return new Proc1<String>(){
protected void run(String s) {
log.info(s);
}
};
}
public ReplicationAgentProviderImpl() {
this.httpClientProvider = (HttpClientProvider)Util.initRef();
}
protected void bindHttpClientProvider(HttpClientProvider httpClientProvider) {
this.httpClientProvider = httpClientProvider;
}
protected void unbindHttpClientProvider(HttpClientProvider httpClientProvider) {
if (this.httpClientProvider == httpClientProvider) {
this.httpClientProvider = null;
}
}
}