Skip to content

Commit d3ad80c

Browse files
committed
♻️ Altered the Spring FluentForms code to use RestClient
The default RestClient currently is the Jersey RestClient implementation, however it should eventually be a Spring RestClient implementation.
1 parent bebaed3 commit d3ad80c

2 files changed

Lines changed: 39 additions & 21 deletions

File tree

spring/fluentforms-spring-boot-autoconfigure/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@
8080
<artifactId>rest-services.client</artifactId>
8181
<version>${fluentforms.version}</version>
8282
</dependency>
83+
<dependency>
84+
<groupId>com._4point.aem.docservices.rest-services</groupId>
85+
<artifactId>rest-services.jersey-client</artifactId>
86+
<version>${fluentforms.version}</version>
87+
</dependency>
8388
<!-- Testing Dependencies -->
8489
<dependency>
8590
<groupId>org.springframework.boot</groupId>

spring/fluentforms-spring-boot-autoconfigure/src/main/java/com/_4point/aem/fluentforms/spring/FluentFormsAutoConfiguration.java

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import com._4point.aem.docservices.rest_services.client.forms.RestServicesFormsServiceAdapter;
1919
import com._4point.aem.docservices.rest_services.client.generatePDF.RestServicesGeneratePDFServiceAdapter;
2020
import com._4point.aem.docservices.rest_services.client.helpers.Builder;
21+
import com._4point.aem.docservices.rest_services.client.helpers.Builder.RestClientFactory;
2122
import com._4point.aem.docservices.rest_services.client.helpers.FormsFeederUrlFilterBuilder;
2223
import com._4point.aem.docservices.rest_services.client.helpers.StandardFormsFeederUrlFilters;
2324
import com._4point.aem.docservices.rest_services.client.html5.Html5FormsService;
25+
import com._4point.aem.docservices.rest_services.client.jersey.JerseyRestClient;
2426
import com._4point.aem.docservices.rest_services.client.output.RestServicesOutputServiceAdapter;
2527
import com._4point.aem.docservices.rest_services.client.pdfUtility.RestServicesPdfUtilityServiceAdapter;
2628
import com._4point.aem.fluentforms.api.DocumentFactory;
@@ -41,6 +43,8 @@
4143
import com._4point.aem.fluentforms.impl.output.OutputServiceImpl;
4244
import com._4point.aem.fluentforms.impl.pdfUtility.PdfUtilityServiceImpl;
4345

46+
import jakarta.ws.rs.client.Client;
47+
4448
/**
4549
* AutoConfiguration for the FluentForms Rest Services Client library.
4650
*
@@ -52,21 +56,30 @@
5256
@AutoConfiguration
5357
@EnableConfigurationProperties(AemConfiguration.class)
5458
public class FluentFormsAutoConfiguration {
55-
59+
// // TODO: Either call JerseuRestClient.factory(JerseyClientFactory.createClient(sslBundles, aemConfig.sslBundle())) or create SpringRestClient
60+
// private static final BiFunction<SslBundles, String, RestClientFactory> restClientFactory = (b, s)->JerseyRestClient.factory(JerseyClientFactory.createClient(b, s));
61+
5662
@SuppressWarnings("unchecked")
57-
private <T extends Builder> T setAemFields(T builder, AemConfiguration aemConfig, SslBundles sslBundles) {
63+
private <T extends Builder> T setAemFields(T builder, AemConfiguration aemConfig) {
5864
return (T)(builder.machineName(aemConfig.servername())
5965
.port(aemConfig.port())
6066
.basicAuthentication(aemConfig.user(), aemConfig.password())
6167
.useSsl(aemConfig.useSsl())
62-
.clientFactory(()->JerseyClientFactory.createClient(sslBundles, aemConfig.sslBundle()))
68+
// .clientFactory(()->JerseyClientFactory.createClient(sslBundles, aemConfig.sslBundle()))
6369
);
6470
}
6571

6672
@ConditionalOnMissingBean
6773
@Bean
68-
public AdaptiveFormsService adaptiveFormsService(AemConfiguration aemConfig, Function<InputStream, InputStream> afInputStreamFilter, @Autowired(required = false) SslBundles sslBundles) {
69-
return setAemFields(AdaptiveFormsService.builder(), aemConfig, sslBundles)
74+
public RestClientFactory restClientFactory(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
75+
Client jerseyClient = JerseyClientFactory.createClient(sslBundles, aemConfig.sslBundle()); // Create custom Jersey Client with SSL bundle
76+
return JerseyRestClient.factory(jerseyClient); // Create a RestClientFactory using JerseyClient implementation
77+
}
78+
79+
@ConditionalOnMissingBean
80+
@Bean
81+
public AdaptiveFormsService adaptiveFormsService(AemConfiguration aemConfig, Function<InputStream, InputStream> afInputStreamFilter, RestClientFactory restClientFactory) {
82+
return setAemFields(AdaptiveFormsService.builder(restClientFactory), aemConfig)
7083
.addRenderResultFilter(afInputStreamFilter)
7184
.build();
7285
}
@@ -86,58 +99,58 @@ private Function<InputStream, InputStream> buildInputFilter(String aemPrefix, St
8699

87100
@ConditionalOnMissingBean
88101
@Bean
89-
public AssemblerService assemblerService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
90-
RestServicesDocAssemblerServiceAdapter adapter = setAemFields(RestServicesDocAssemblerServiceAdapter.builder(), aemConfig, sslBundles).build();
102+
public AssemblerService assemblerService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
103+
RestServicesDocAssemblerServiceAdapter adapter = setAemFields(RestServicesDocAssemblerServiceAdapter.builder(restClientFactory), aemConfig).build();
91104
return new AssemblerServiceImpl(adapter, UsageContext.CLIENT_SIDE);
92105
}
93106

94107
@ConditionalOnMissingBean
95108
@Bean
96-
public DocAssuranceService docAssuranceService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
97-
RestServicesDocAssuranceServiceAdapter adapter = setAemFields(RestServicesDocAssuranceServiceAdapter.builder(), aemConfig, sslBundles).build();
109+
public DocAssuranceService docAssuranceService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
110+
RestServicesDocAssuranceServiceAdapter adapter = setAemFields(RestServicesDocAssuranceServiceAdapter.builder(restClientFactory), aemConfig).build();
98111
return new DocAssuranceServiceImpl(adapter);
99112
}
100113

101114
@ConditionalOnMissingBean
102115
@Bean
103-
public FormsService formsService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
104-
RestServicesFormsServiceAdapter adapter = setAemFields(RestServicesFormsServiceAdapter.builder(), aemConfig, sslBundles).build();
116+
public FormsService formsService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
117+
RestServicesFormsServiceAdapter adapter = setAemFields(RestServicesFormsServiceAdapter.builder(restClientFactory), aemConfig).build();
105118
return new FormsServiceImpl(adapter, UsageContext.CLIENT_SIDE);
106119
}
107120

108121
@ConditionalOnMissingBean
109122
@Bean
110-
public GeneratePDFService generatePDFService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
111-
RestServicesGeneratePDFServiceAdapter adapter = setAemFields(RestServicesGeneratePDFServiceAdapter.builder(), aemConfig, sslBundles).build();
123+
public GeneratePDFService generatePDFService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
124+
RestServicesGeneratePDFServiceAdapter adapter = setAemFields(RestServicesGeneratePDFServiceAdapter.builder(restClientFactory), aemConfig).build();
112125
return new GeneratePDFServiceImpl(adapter);
113126
}
114127

115128
@ConditionalOnMissingBean
116129
@Bean
117-
public Html5FormsService html5FormsService(AemConfiguration aemConfig, AemProxyConfiguration aemProxyConfig, @Autowired(required = false) SslBundles sslBundles) {
118-
return setAemFields(Html5FormsService.builder(), aemConfig, sslBundles)
130+
public Html5FormsService html5FormsService(AemConfiguration aemConfig, AemProxyConfiguration aemProxyConfig, RestClientFactory restClientFactory) {
131+
return setAemFields(Html5FormsService.builder(restClientFactory), aemConfig)
119132
.addRenderResultFilter(afInputStreamFilter(aemProxyConfig))
120133
.build();
121134
}
122135

123136
@ConditionalOnMissingBean
124137
@Bean
125-
public OutputService outputService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
126-
RestServicesOutputServiceAdapter adapter = setAemFields(RestServicesOutputServiceAdapter.builder(), aemConfig, sslBundles).build();
138+
public OutputService outputService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
139+
RestServicesOutputServiceAdapter adapter = setAemFields(RestServicesOutputServiceAdapter.builder(restClientFactory), aemConfig).build();
127140
return new OutputServiceImpl(adapter, UsageContext.CLIENT_SIDE);
128141
}
129142

130143
@ConditionalOnMissingBean
131144
@Bean
132-
public PdfUtilityService pdfUtilityService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
133-
RestServicesPdfUtilityServiceAdapter adapter = setAemFields(RestServicesPdfUtilityServiceAdapter.builder(), aemConfig, sslBundles).build();
145+
public PdfUtilityService pdfUtilityService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
146+
RestServicesPdfUtilityServiceAdapter adapter = setAemFields(RestServicesPdfUtilityServiceAdapter.builder(restClientFactory), aemConfig).build();
134147
return new PdfUtilityServiceImpl(adapter);
135148
}
136149

137150
@ConditionalOnMissingBean
138151
@Bean
139-
public ConvertPdfService convertPdfService(AemConfiguration aemConfig, @Autowired(required = false) SslBundles sslBundles) {
140-
RestServicesConvertPdfServiceAdapter adapter = setAemFields(RestServicesConvertPdfServiceAdapter.builder(), aemConfig, sslBundles).build();
152+
public ConvertPdfService convertPdfService(AemConfiguration aemConfig, RestClientFactory restClientFactory) {
153+
RestServicesConvertPdfServiceAdapter adapter = setAemFields(RestServicesConvertPdfServiceAdapter.builder(restClientFactory), aemConfig).build();
141154
return new ConvertPdfServiceImpl(adapter);
142155
}
143156

0 commit comments

Comments
 (0)